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

* V5-4-patches:
  Fix commit 7f4a7b891332899cea26e95be0337aae01648742: dont mix code and declarations.
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..72c5233 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,137 +1,318 @@
 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.5.2*
 
     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 2835577]: Replace SNMP_ZERO of arrays with a memset.
       - [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
+      - [PATCH 3526599]: Don't hang on retried failing SNMPv3 responses
+      - Avoid unnecessary casts when using netsnmp_set_row_column()
+      - Declare "type" argument of se_store_xxx() as const
+      - Make it explicit that MAX_SUBID is an unsigned constant
+      - Prevent gcc ped-warning for NETSNMP_REMOVE_CONST
+      - Simplify implementation of functions manipulating 64-bit numbers.
+      - Simplify the se_store_enum_list() implementation
 
     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 3439234]: Correct dependencies of ucd-snmp/{pass,pass_persist}
+      - [BUG 3439234]: Move netsnmp_pass_str_to_errno to pass_common
+      - [BUG 3440752]: Report speed correctly for unusual E'net interfaces
+      - [BUG 3463767]: Handle parsing subidentifiers > 2^31
+      - [BUG 3526549]: CVE-2012-2141 Array index error leading to crash
+      - [BUG 3532090]: Fix high ifIndex values crashing hrDeviceDescr
+      - [PATCH 3175640]: Use IP_RECVDSTADDR sockopt where available (*BSD)
+      - [PATCH 3198781]: Fix compilation of disman/{ping,traceroute} modules
+      - [PATCH 3402376]: Recognise ReiserFS systems
+      - [PATCH 3410050]: Skip already-'processed' varbinds
+      - [PATCH 3410059]: Fix sparsely augmenting trigger tables
+      - [PATCH 3447444]: Fix SIG_PIPE handling
+      - [PATCH 3447671]: Fix override handling of OID values
+      - [PATCH 3453868]: Factor common code into pass_common
+      - [PATCH 3479740]: Fix hrSWRunPerf statistics
+      - [PATCH 3487919]: Fix compilation when caching is disabled
+      - [PATCH 3487867]: Don't skip missing ifXTable entries (ifConnectorPresent FALSE)
+      - [PATCH 3495697]: Store persistent snmpTarget table changes
+      - Added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
+      - DISMAN-SCHEDULER-MIB: Handle 32-char contextName values correctly.
+      - IF-MIB::ifType: Report InfiniBand interfaces correctly
+      - UDP-MIB: Report proper address in udpLocalAddress instead of 0.0.0.0.
+      - Eliminate various dead variables
+      - Return error instead of exiting on init problems
+      - Make the configuration of the dlmod module fail rather than
+	generate a dummy module if the dlopen function isn't available.
+      - Smux: simplify smux_list_detach()
+
+    snmpdx:
+      - [PATCH 3445437]: Log AgentX disconnections (in line with connections)
+
+    snmptrapd:
+      - Add missing newline character in a log message
+      - Avoid crash during shutdown due to invoking perl_destruct(NULL)
+      - Invoke shutdown_perl() when shutting down
+      - Don't invoke shutdown_perl() from SIGTERM handler
+      - Handle changes to libmysqlclient API (affects Fedora 15/16)
+
+    apps :
+      - [PATCH 2835577]: Replace SNMP_ZERO of arrays with a memset.
+
+    mib2c:
+      - [PATCH 3211484]: Support enumerations in notification varbinds
+
+    perl:
+      - Eliminate various dead variables
+      - Fix spelling in the documentation of the SNMP module
+      - Fixed segmentation fault when handler registration fails.
+      - Make sure constant SNMP_DEFAULT_RETRIES is recognized
+      - Add constants NETSNMP_CALLBACK_OP_{RECEIVED_MESSAGE,TIMED_OUT}
+
+    python:
+      - [PATCH 3185085]: Fix segfault on 64-bit systems
+
+    Build/install:
+      - Install util_funcs subheaders
+
+    man:
+      - [BUG 3190725]: Document snmp{,_sess}synch_response & snmp_async_send
+
+    testing:
+      - Fix Perl regression test failures
+      - Don't fail skipped Perl tests.
+
+    BSD:
+      - [PATCH 3383965]: Fix if-mib agent compile warnings on *BSD
+
+    FreeBSD:
+      - [PATCH 3489387]: Install FreeBSD 10 header file (plus other missing versions)
+    Linux:
+      - [PATCH 3525998]: Don't use an uninitialised value in error message
+
+    MinGW:
+      - Avoid "pragma comment" warnings in <net-snmp/net-snmp-config.h>
+      - Header file <net-snmp/net-snmp-config.h> now usable with MinGW
+      - Made regression test output independent of Windows registry settings
+
+    Windows:
+      - Avoid problems if Net-SNMP Perl modules are built with a different
+        version of Microsoft Visual Studio than that used for ActivePerl
+      - Avoid problems with PACKAGE_* macros, when using GNU autotools
+      - Now builds correctly with a 64-bit compiler
+      - build.bat: Generate PDB files in release mode
+      - build.bat: Install netsnmp.dll before running Perl regression tests
+      - Make linking with recent OpenSSL binaries succeed.
+      - Make netsnmp_large_fd_set_resize() robust against memalloc failures.
+      - Perl modules build now with IPv6 enabled.
+      - Snmpd: Remove dlmod
+      - Snmptrapd: Make the IP address to hostname conversion work
+
+
+*5.5.1*
+
+    snmplib:
+      - [BUG 2838243]: Correct the output of unsigned values
+      - [BUG 2919320]: Avoid accessing freed memory Reported by Tomasz Lis
+      - [BUG 2922390]: Fix test for missing contextName parameter
+      - [BUG 3093199]: Fixed bugs in 64-bit integer parsing
+      - [BUG 3134323]: Fix crash when comparing invalid OIDs
+      - [BUG 3171878]: Using SNMPv3 context does not work
+      - [PATCH 2871747]: plug memory leak in OID processing
+      - [PATCH 2952140]: Fix overflow of counter32 and gauge32 on 64bit systems
+      - [PATCH 2971270]: refuse to parse ASN.1 tokens with wrong type field
+      - [PATCH 3067540]: Fix IPv4 OID indexes on 64-bit big-endian systems.
+      - [PATCH 3058645]: Use MSG_DONTWAIT for the unix domain socket
+      - [PATCH 3165878]: Catch buffer overrun on 64-bit systems
+      - [PATCH 3203806]: Add function netsnmp_large_fd_set_select()
+      - Added function netsnmp_delete_table_data_set()
+      - Added netsnmp_xxx() memory allocation functions
+      - Added macro netsnmp_static_assert().
+      - Added snmp_sess_session_lookup().
+      - Avoid Valgrind complaints about uninitialized data
+      - Change the parsing of ranges to accept all valid values.
+      - Fix __cplusplus extern "C" wrapping
+      - Fix agent crash when sending encrypted SNMPv3 traps.
+      - Fix double free crash when releasing duplicated handlers
+      - Fix duplicate se_add_pair_to_list() memory leak
+      - Fix issue with USM using inactive users
+      - Fix potential buffer overflow when generating temp. file names
+      - Fix various problems with se_clear_slist()
+      - Force a ; at the end of the static_assert macro.
+      - Handle memory allocation failures in netsnmp_create_data_list
+      - Make sure that a mask is given to open when O_CREAT is specified
+
+    snmpd:
+      - [BUG 1840230]: Don't include the index object as (pseudo-)accessible column
+      - [BUG 2822360]: Fix memory leak when building table OIDs
+      - [BUG 2841008]: Protect against crash following failed AgentX response
+      - [BUG 2873858]: Fix handling of schedOwner index
+      - [BUG 2894059]: Handle errors when counting interfaces
+      - [BUG 2897000]: Suppress 32-bit counter truncation warnings
+      - [BUG 2900078]: Add support for OID variables with size in elements
+	               instead of bytes, correct sysObjectID to use this
+      - [BUG 2924140]: Fix termination of CPU/FPU types
+      - [BUG 2972579]: Fix checking of snmpTargetAddrRowStatus SET requests
+      - [BUG 3003981]: Protect against buffer overflow
+      - [BUG 3058101]: 64-bit systems only support writeable 'long' instances (not int)
       - [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
+      - [BUG 3185528]: shutdown_master_agent didn't close UDP socket
       - [PATCH 2119725]: Fix skipNFSInHostResources handling of hrStorageTable
       - [PATCH 2825653]: Fix sendmail.cf parsing in certain conditions
+      - [PATCH 2835576]: Fix endianness issues in pass/pass_persist
+      - [PATCH 2877518]: Fix handling of scoped AgentX variables
+      - [PATCH 2883155]: Fix memory leak in proxy handling
+      - [PATCH 2883220]: Fix compilation problems when ifXTable is not included
+      - [PATCH 2887816]: Protect against division-by-zero crash
+      - [PATCH 2901029]: Fix compiler warning on CloseHandle()
+      - [PATCH 2903092]: Fix broken handling of broadcast entries.
       - [PATCH 2904900]: Documentation plus assorted handler code fixes
+      - [PATCH 2911323]: Fix agent lockup when monitoring AgentX-delegated information
       - [PATCH 2911361]: Remove redundant variables
+      - [PATCH 2911970]: Properly terminate linked list of registrations
       - [PATCH 2941811]: Handle successful requests with reqID 0
+      - [PATCH 2967400]: Retrieve error counters for the EtherLike-MIB
+      - [PATCH 2968642]: Catch overflow of pass-through command buffer
       - [PATCH 2975254]: Avoid callback re-use of closed sessions
+      - [PATCH 3044512]: Fix sysobjectid directive
+      - [PATCH 3053428]: Fix get_pid_from_inode when the inode is not found
       - [PATCH 3053436]: Fix tcpConnectionTable_data_access invalid memory access
-      - [PATCH 3062526]: Fix security engineID setting in the trapsess directive
-      - [PATCH 3066862]: Fix comparison of large unsigned indexes (disk/extend tables)
+      - [PATCH 3058140]: Check that inode is non-zero
+      - [PATCH 3062526]: Fix security engineID setting in 'trapsess' directive
+      - [PATCH 3074918]: Avoid memory leaks following CONTAINER_INSERT failures
       - [PATCH 3096725]: Don't register v1Trap callback, if SNMPv1 not supported
-      - [PATCH 3096725]: 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
+      - [PATCH 3096725]: sysORTable registation for notification log mib  
+      - [PATCH 3141462]: fix agentx subagent issues with multiple-object requests
+      - [PATCH 3152412]: Handle (and report) problems reading /proc/vmstat
 
       - Add newly created/destroyed interfaces to ipv6IfTable
-      - 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
+      - Don't let MIB modules second-guess the cache handler
+      - Fix adding new addresses to ipAddressTable
+      - Fix engineID generation on outgoing v3 traps from the agent
+      - Fix erroneous "64bit wrap" warnings when computing ipSystemStats
+      - Fix invalid access to memory in TCP-MIB
+      - Fix IP-MIB::ipIfStatsReasmReqds value (typo)
+      - Fix IPv6 forwarding MIB object (boolean, not TruthValue)
+      - Fix rare race condition when reading RPM database
+      - Fixed race condition in hrSWRunTable
       - Fix VACM persistant storage.
-      - 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.
+      - Fix various memory & file-descriptor leaks
+      - Handle I/Fs without broadcast addresses (IF/IP-MIBs)
+      - Improve agent shutdown processing
+      - Improve error logging when freeing active caches
+      - Make sure that a mask is given to open when O_CREAT is specified
+      - Report GFS filesystems in hrStorageTable and hrFSTable
+      - Report real ifSpeed of (down) network interface (where possible)
+      - Skip non-AF_INET interfaces when loading ipv4 addrs
+      - Support N/W interfaces with HW address >6 bytes (e.g. InfiniBand)
+        in ipNetToMediaTable and ipNetToPhysicalTable.
+      - Support views with indexes values>255
+      - Suppress 32-bit truncation warnings (IP-MIB & TCP-MIB)
+      - Suppress missing iquerySecName warning if it won't be needed
 
-    snmptranslate:
-      - Fixed printing of ranges with UNSIGNED type
+    snmpdx:
+      - changed default TCP target from 0.0.0.0:705 to localhost:705
 
     snmptrapd:
       - [BUG 3151254]: Fix crash with invalid traphandle directive
-      - Fixed a double free, triggered by cleaning up embedded Perl data structure.
+      - Fixed assorted double free at exit problems
+
+    snmptable:
+      - [BUG 2837998]: Handle missing instance subidentifiers in results
+      - [PATCH 2850067]: Suppress extraneous "index" header token
+
+    snmptranslate:
+      - fixed printing of ranges with UNSIGNED type.
 
     snmpusm:
-      - Correct ifdefs, remove dead variables
+      - Correct ifdefs, remove dead variables.
+
+    snmpwalk:
+      - Fix handling of end OID being longer than the starting OID
 
     build:
-      - [BUG 3102904]: Compile all source files with -fno-strict-aliasing
+      - [BUG 3102904]: Build with -fno-strict-aliasing (if supported)
+      - Add detection of lm_sensors version
+      - Avoid use of "tail -1" (non POSIX-compliant)
       - Do not call VACM APIs if VACM module is not included
-      - Fix autoconf detection of strcasecmp
-      - Fix building of static applications using net-snmp-config -*libs
-      - Fix definition of VERSION (number, not expression)
+      - Fix building static applications using net-snmp-config
+      - Fix compilation with rpm-4.6 (using legacy API)
+      - Fix 'make test TESTOPTS="-P tcp"'
+      - Fix order of rpmlib detection and agent module configuration
+      - Run rpm configure checks for (rpm-based) hr_swinst rewrite
+      - Use a sensible default for system location (if no domain name found)
 
     man:
-      - [BUG 3190725]: Document snmp{,_sess}synch_response and snmp_async_send
-      - clean up manual pages (from Debian patch 56_manpage)
+      - [BUG 2972860]: Update broken references
+      - Clean up manual pages (from Debian patch 56_manpage)
 
     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
+      - [BUG 2888569]: Fix generation of table columns array
+      - Remove unnecessary casts to u_char*
+      - make the mib2c foreach ranges work as advertised in the comments
 
     mibs:
+      - [BUG 2973890]: Fix imports, DiskIOEntry list and revision histories
       - [PATCH 2974716]: Fix issues in the SMUX-MIB
 
+    misc:
+      - [PATCH 2836112]: Use the right modifier for size_t/ssize_t variables
+      - [PATCH 2952034]: Return of the Great SuSE 'sprintf' Hunt... 
+
     perl:
+      - [PATCH 2890931]: Better handling of Counter64 values
+      - [PATCH 2995098]: Fix creation of SNMPv3 sessions with API_SINGLE
       - [PATCH 3046371]: Fix memory leak in SNMPv1 trap handling
-      - [PATCH 3049029]: Fix 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]: Fix memory leak with snmp bulkwalks
+      - Don't automatically open stderr (breaks embedded perl within the agent)
+      - Fix various other memory leaks, out-of-bounds array access
+            and uninitialized variable access issues
+      - Fix several "Free to wrong pool" errors
 
     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 2919379]: Initialise SNMP sessions properly
+      - [BUG 3088360]: Ensure python modules are built against the correct libraries
+      - [PATCH 2001656]: Handle null-termination of string values properly.
+      - [PATCH 3035328]: Detect failures in session creation
+      - [PATCH 3035578]: Update error codes
+      - Support null-bytes in octet strings
 
-    testing:
+    test:
+      - [PATCH 2952020]: Explicitly set permission on output directories
       - Support dynamic analysis of regression tests
+      - Fix tests (T030) for MinGW
+
+    Cygwin:
+      - [BUG 2997492]: byte order of udpLocalPort is now correct
+      - Enabled Unix transport
+      - Fix building with IPv6, OpenSSL & embedded Perl support
+      - Fix building with remotely mounted source files
+      - Fix free UDP port detection in regression tests
+      - Fix out-of-range array access in 'interfaces' table
+      - libnetsnmp now builds as a DLL when configured with --enable-shared
+      - Omit inet_ntop.c and inet_pton.c
+      - perl modules do now build (--with-perl-modules).
+      - Removed winpipe.c from the list of source files
+
+    HP-UX:
+      - fix build error on HP-UX 10.20
 
     Linux:
-      - [PATCH 3074918]: check for CONTAINER_INSERT failures
+      - [BUG 2985915]: Fix build without embedded Perl
+      - [PATCH 2926374]: Fix reading of ipAddressTable from /proc/net/if_inet6
+      - [PATCH 2959811]: Reimplement Netlink IPv6 prefix listener
       - [PATCH 3083027]: Fix RPM spec file to support CentOS
-      - [PATCH 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
+      - [PATCH 3107003]: Suppress ipNetToPhysicalTable error messages
+                         for tunnel and similar (non-physical) interfaces
+      - Fix calculation of ifHCInUcastPkts on 32-bit Linux
+      - Fix udpTable indexes on big-endian 64bit Linux
+      - Fix value of IP-MIB::ipv6InterfaceForwarding
+      - Fixed 32-bit truncation warning on UCD-SNMP-MIB::systemStats
+      - Improved EtherLike-MIB support 
+      - Pass correct path to rpmdbOpen, and log errors
+      - snmpd is again single-threaded.
 
     NetBSD:
       - DragonFly support
@@ -139,568 +320,685 @@
       - 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)
-
-    MinGW:
-      - Make regression tests independent of registry settings
-      - Use <net-snmp/net-snmp-config.h> header file under WinGW
-
-      
-* 5.4.3 *
-
-    snmplib:
-      - [BUG 2838243]: Correct the output of unsigned values.
-      - [BUG 2919320]: Avoid accessing freed memory
-      - [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
-
-    snmpd:
-      - [BUG 1693039]: Be silent when insert fails.
-      - [BUG 2822360]: Fix memory leak when building table OIDs
-      - [BUG 2841008]: Protect against crash following failed AgentX response
-      - [BUG 2873858]: Fix handling of schedOwner index.
-      - [BUG 2894059]: Handle errors when counting interfaces
-      - [BUG 2897000]: Suppress 32-bit counter truncation warnings.
-      - [BUG 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
-      - [PATCH 2877518]: Fix handling of scoped AgentX variables
-      - [PATCH 2883155]: Fix memory leak in proxy handling.
-      - [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)
-
-    snmptrapd:
-      - [PATCH 2726302]: Pass results of Perl trap handlers to trap daemon
-      - Remove glibc-specific printf-formatting tokens
-
-    snmptable:
-      - [BUG 2837998]: Handle missing instance subidentifiers in results
-      - [PATCH 2850067]: Suppress extraneous "index" header token
-
-    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
-
-    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
-
-    docs:
-      - [PATCH 2788072]: Document 'logmatch' functionality.
-      - [PATCH 2795739]: Fix incorrect disk/file size descriptions & unit specifiers
-
-    mib2c:
-      - [BUG 2827269]: Suppress non-ordered TODO comments
-      - [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.
-
-    mibs:
-      - [BUG 2973890]: Fix imports, DiskIOEntry list and revision histories
-
-    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.
-
-    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
-
-
-    AIX:
-      - [BUG 2712670]: Agent crashes on AIX with hrStorage
-
-    *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
-
-    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
+      - Fix order of headers when checking <netinet/in_pcb.h>
+      - Support updating the routing table
+      - Update SWRun code to use kvm_getproc2
 
     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
+      - Fix crash triggered by missing package version information 
 
     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
+      - [BUG 2969872]: Ensure SOCK_STARTUP is invoked before init_agent
+      - [BUG 2971257]: Fixed winExtDLL handling of multi-varbind getNext
+	               requests with OIDs in reverse lexicographical order
+      - Avoid test failure (T200) on known MS SNMP extension DLL bugs
+      - Fix and improve batch build using recent versions of Visual Studio
       - Fix build under MinGW
-      - Fix 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
+      - Fix build with 64-bit compiler
+      - Fix building with IPv6 and OpenSSL support
+      - Fix handling of strtoull (both MSVC 6.0, and 2002 & above)
+      - Fix handling of winExtDLL multi-varbind SET requests
+      - Fix MIB output truncation with winExtDLL GETNEXT requests
+      - Fix out-of-range array access in 'interfaces' table
+      - Halt agent on key press, when run in command prompt window (to aid debugging)
+      - Improve Net-SNMP DLL build
+      - Improve support for winExtDLL build
+      - Suppress/remove various compilation warnings
+      - winExtDLL: Don't trigger an assertion if no extension DLLs loaded
+      - winExtDLL: Improve RFC-compliance of response error codes 
+      - winExtDLL: Log the reason why loading an extension DLL fails
+      - winExtDLL: Fix a memory leak when SnmpExtensionQuery(Ex) fails
 
-
-* 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
 
     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)
 
     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
+
+    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)
+
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..907caa1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,132 +1,4783 @@
--------------------------------------------------------------------------------
-Changes: V5.4.3 -> V5.4.4
+----------------------------------------------------------------------
 
-2011-06-24 12:38  dts12
+Changes: V5.5.1 -> V5.5.2
 
-   * configure, configure.in, include/net-snmp/net-snmp-config.h.in:
+commit 42b5afb3cd6d06adb426f1dbaa98358f2b2e8a53
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 10:46:47 2012 +0100
 
-   Missing check for rpmts.h
+    V5-5-patches out of Release Candidate
 
-2011-06-24 12:20  dts12
+commit 8bd440c43e365a0b77d47f582cade9f97c7bfce7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 10:46:28 2012 +0100
 
-   * configure:
+    Version number update: 5.5.2
 
-   Version number update
+commit 6e0855a3157198499411ac52b46d5f32aad5b9fa
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 09:51:32 2012 +0100
 
-2011-06-24 12:08  dts12
+    Add missing return type in function declaration
 
-   *  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:
+commit 07d825e8bb35eea9ac6b1cb82cbb234fe66b1ab6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 09:51:32 2012 +0100
 
-   documentation update
+    Add missing return type in function declaration
 
-2011-06-24 12:02  dts12
+commit 5db70036ef675635647e5b7c7253456838836647
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 11 14:55:38 2012 -0700
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
+    don't use --rebase
 
-   Version number update
+commit 17277689b629f4586d5d714d87ce6bc11f887668
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 11 14:55:38 2012 -0700
 
-2011-06-23 15:41  dts12
+    don't use --rebase
 
-   *  agent/mibgroup/host/hr_swinst.c, configure, configure.in,   
-      include/net-snmp/net-snmp-config.h.in:
+commit 5206d25d4cb94d4b0dd331a5a4113d4d87782c42
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 2 12:14:39 2012 -0700
 
-   Tweak RPM handling to work with library version 4.9
-   Based on a patch by Jan Safranek
+    better description of --disable-set-support
 
-2011-06-22 14:27  dts12
+commit f92853281477ee724a51a9967f37d3f1dd1b0f7e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 2 12:09:50 2012 -0700
 
-   * agent/mibgroup/host/hr_swinst.c:
+    remove duplicate definitions causing a problem
 
-   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.
+commit 5be27368751691fc1ab55fe62b4106d8d99b8704
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 2 12:06:58 2012 -0700
 
-2011-06-17 19:06  bvassche
+    after pulling all the branches, switch back to the initial one
 
-   * agent/helpers/cache_handler.c:
+commit e72e205fdcef787ef840c8c928ed27351a69544b
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:58:07 2012 +0100
 
-   Use %p to print a pointer instead of %ld
+    Release Candidate for V5-6-patches
 
-2011-06-01 15:57  dts12
+commit f79a54f2472508b167d977f367c3864b5621e89d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:42:53 2012 +0100
 
-   * CHANGES:
+    version update for 5.5.2.rc3
 
-   version update
+commit 56ef5f0db51cfd55226f82f94f3f3d2450e4feb5
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:39:32 2012 +0100
 
-2011-06-01 15:48  dts12
+    version update for 5.5.2.rc3
 
-   * ChangeLog:
+commit fe107794e7400d239e8af3da8b4a3fbef06b5da9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:28:37 2012 +0100
 
-   version update
+    Release Candidate for V5-5-patches
 
-2011-06-01 15:47  dts12
+commit b6953b52c4ec426491146e1cc0f560b2173695b0
+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 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 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 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 2670ba6a5b0027d11ec3a5e18fe87db385f5e0e4
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:05:39 2012 +0100
+
+    make depend for 5.5.2.rc2
+
+commit e79e387b3e18b487ef4172c9d24eb9523404d0ad
+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 3f2111de6733a04e12d910d306a34d671e008762
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:46:11 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit cefc6f7bd4fee0f5057e49300a6b1d15d2fd4f58
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:45:59 2012 +0100
+
+    Version number update: 5.5.2.rc2
+
+commit ccf8ff2c4db60122d41302e4aeb700e0b868105f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 28 10:18:43 2012 +0100
+
+    CHANGES: snmplib: PATCHES: 3526599: Don't hang on retried failing SNMPv3 responses
+
+commit 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 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 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 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 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 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 cecd4869deb68f3d4c71e768d5b40dd576446925
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:29:31 2012 +0200
+
+    Running autoheader / autoconf
+
+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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 13:37:49 2011 +0100
+
+    Fix format specifiers to avoid warnings
+
+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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 96ea2d1a8ebffb348673a865d486f31e635e62bd
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Sun Aug 21 01:51:49 2011 +0200
+
+    autoreconf
+
+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 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 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 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 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)
+
+commit ffa05b051ac3e2b197195a9989cc7a91fe8d9282
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 8 13:55:38 2011 -0700
+
+    a new macro nsautoconf to run the right version
+
+commit b451607dca015c111e96fdfeb2ddb0661fb4f724
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Aug 8 21:20:32 2011 +0100
+
+    Fix capitalisation of Net-SNMP
+
+commit c94813044a4c4a608e98e80223075c6faf04ee11
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Aug 8 21:56:15 2011 +0200
+
+    Revert "CHANGES: Windows: Avoid that if the Net-SNMP Perl modules have been built with another version of Microsoft Visual Studio than ActivePerl that using one of these Perl modules triggers a "Free to wrong pool" crash. This regression was caused by commit 3b14c59cf8278d410207ff42debda2636426a468 (the netsnmp_free() into SNMP_FREE() changes in the *.xs files)."
+    
+    This reverts commit 7f42d0d93320484152271427cc9808cbda49bbd0 because that commit is not suitable for the 5.4 branch.
+
+commit 58ca73d03589b0974d926bdfdc3927099fba2115
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 8 11:24:09 2011 -0700
+
+    display the branch we'll commit to
+
+commit 1d1bfd5f451c2bc420b710c98c79d04bdef4391b
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 8 11:10:52 2011 -0700
+
+    nssfpatchapply: split the displayed git commit command into multiple segments
+
+commit d373c4fd8c391afe0b9e02a60b5cd661bc9039dc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Aug 8 17:23:43 2011 +0200
+
+    CHANGES: snmplib: Fix a crash that could be triggered by calling _mibindex_add() with the second argument not equal to -1.
+
+commit 8ca7ff1e692caec4186b788c9ae2d27be213290f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 8 10:33:56 2011 -0700
+
+    fix another function typo
+
+commit 556e938e82a7ee2c10fa8c0b7c7a34e9e65a6d5a
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 8 10:05:20 2011 -0700
+
+    fix function name typo
+
+commit 969e866af983d986a26bebca85fef0f6c623ce26
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 8 09:56:43 2011 -0700
+
+    make nspull/nspush check for a clean repo
+
+commit 7e6fdc8b2a3d86a79543673435371621a2858737
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 8 09:56:13 2011 -0700
+
+    new function "nsmakeall" to test building on every branch
+
+commit e25be7c82d5545d88abea10e4e255c92bed3de6e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 8 09:53:03 2011 -0700
+
+    default to merge
+
+commit bcb81b796dd6a92195d6db13177ad30f05fc63f7
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 8 09:51:26 2011 -0700
+
+    separate nssync into nspull and nspush
+
+commit 7f42d0d93320484152271427cc9808cbda49bbd0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Aug 8 09:50:51 2011 +0200
+
+    CHANGES: Windows: Avoid that if the Net-SNMP Perl modules have been built with another version of Microsoft Visual Studio than ActivePerl that using one of these Perl modules triggers a "Free to wrong pool" crash. This regression was caused by commit 3b14c59cf8278d410207ff42debda2636426a468 (the netsnmp_free() into SNMP_FREE() changes in the *.xs files).
+
+commit a3b8654a232c563bc97cc9925cd98590a30c5bc5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Aug 8 17:24:18 2011 +0200
+
+    Fix a recently introduced MinGW compiler warning
+
+commit a0dd3caf25926e43465718bf417a464c2fb36366
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Aug 7 10:17:01 2011 +0200
+
+    find \( -name '*.[ch]' -o -name '*.in' -o -name '*.dsp' \) -perm -u+x | xargs -r chmod a-x
+
+commit a9a252522fbe7dc1ed70ff2721a4f81583c0d92a
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 5 10:20:51 2011 -0700
+
+    make rollup and sync support --rebase and change the default back to merge
+
+commit 96f5f47ad427972d8d9a6ce06c5e16147362083b
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 5 09:25:25 2011 -0700
+
+    try a multiple branch push
+
+commit 0dbc869fec07d8e90dbd1c95493ee7cbc623c95c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 5 12:40:31 2011 +0200
+
+    CHANGES: Windows: build.bat: Generate PDB files in release mode.
+    
+    CHANGES: Windows: build.bat: Write PDB files to the output directory instead of the intermediate directory.
+
+commit 5b0291f91ed94835f8ae7d9436b15f40afb19473
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 5 13:17:19 2011 +0200
+
+    .gitignore: Add perl/agent/default_store/default_store.def and perl/SNMP/t
+
+commit 2f8d4f5796cbc1c7e967acdaa8019b24f1520a36
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 5 12:02:51 2011 +0200
+
+    CHANGES: Windows: Avoid that running the Perl regression tests makes snmpd crash
+
+commit 0c7507a1e0101f4b135a3ed8a961635b87093f1a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 5 10:57:33 2011 +0200
+
+    Unbreak the V5-4-patches - revert commit d2c4768bd2efb48664434a831425c2dda85d7133 (CHANGES: libnetsnmp: PATCH 3362233: from yaberauneya: Mute unnecessary cannot find module noise).
+
+commit 9b7ff4abfc9529bb9e18a3b874201520bc0e7141
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 5 11:07:55 2011 +0200
+
+    Unbreak the V5-4-patches branch - was broken by commit bf7178b0b22587d43d1a80c269cd216bd5930214 (agent: change type of snmp_enableauthentraps to long)
+
+commit 03049e1036c2c06cbd6e5ed5fe084999d5468a5f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 5 10:56:48 2011 +0200
+
+    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).
+
+commit 3aa949fbdfc1a94a8340ad8baf8b314756a0bb9d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 5 10:26:15 2011 +0200
+
+    Win32 makefile whitespace cleanup
+
+commit 943930e1e124385fd94738b6dcda37d29dc7ac7f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 10:41:41 2011 -0700
+
+    CHANGES: agent: PATCH 3324769: from hardaker: Fix -Wunused warning
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 90c0e75f3e0de73d6aaab3e3d7146f18a8f9e187
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Aug 4 19:12:24 2011 +0200
+
+    snmpusm: Fix recently introduced compiler warnings
+
+commit 2dd9ed0858daa982b4160b4d2a7d5a2b80944171
+Author: Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
+Date:   Thu Aug 4 10:06:57 2011 -0700
+
+    CHANGES: openbsd: PATCH 3357932: from t0jw2fu0kmg: Cleaning in memory_netbsd.c
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit f8f6f7071644b7e771df8e62a93227cf960a04e7
+Author: Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+Date:   Thu Aug 4 09:56:29 2011 -0700
+
+    CHANGES: agent: PATCH 3386147: from wulf2001: fix UCD-SNMP-MIB::dskUsed
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 2101bb2d7ad6db038c755aa9193c8ace0dbd4f58
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 09:28:06 2011 -0700
+
+    added the missing freebsd9.h file from the freebsd9 patch
+
+commit b6a481fa3062893e589bf6163c9d06d0f2053240
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 09:27:05 2011 -0700
+
+    ignore *.orig and *.rej
+
+commit cc5134e53d1c233dc41e31fbb78faab098f09361
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 09:26:44 2011 -0700
+
+    help output describes rebase vs merge better
+
+commit b372e5ab30aa155741e94df22e0752535c59e4bb
+Author: Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
+Date:   Thu Aug 4 09:22:28 2011 -0700
+
+    CHANGES: openbsd: PATCH 3357927: from t0jw2fu0kmg: Recognise openbsd5
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 0548a4e97b2a1f0399e58c4efc004c9497398cd6
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 09:22:15 2011 -0700
+
+    fix where arguments are set
+
+commit 3b3780bca9adeebf4ef7508aee6b8ebcb94f656c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 09:20:40 2011 -0700
+
+    split nssfpatchapply into two parts: apply and commiting
+
+commit 0422514a62bcaae6005017d7e9ed485075fe701c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 09:15:25 2011 -0700
+
+    patch using -N
+
+commit dc755a6aeb9b9c889727d9fc842fc89f729e6ec0
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 08:33:25 2011 -0700
+
+    added spacing to match the later branches
+
+commit 7b726e103c1960f4c8603859c9a8d8aa8c404520
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 08:32:23 2011 -0700
+
+    removed accidentially duplicated code
+
+commit ecbab0a98a02fde6bbca7dd370bcd9c3ca76affe
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 08:27:41 2011 -0700
+
+    nssync supports --merge now
+
+commit e7dd1c437afe6e26a55aa772d468012655741d31
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Thu Aug 4 08:23:22 2011 -0700
+
+    CHANGES: libnetsnmp: PATCH 3362233: from yaberauneya: Mute unnecessary cannot find module noise
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit c53d8c3525f590f2213d35b0da94123862f3e366
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Thu Aug 4 08:19:16 2011 -0700
+
+    CHANGES: freebsd: PATCH 3363308: from yaberauneya: Fix compilation on FreeBSD 9.x with recent header shuffling
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 3b8c8b85085aae2d1a1c7ca35e7d066d3d74fa9f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 08:15:17 2011 -0700
+
+    allow nsrollup to take a --merge flag for merging instead of rebasing
+
+commit 7100aedffd98cda4b05164bccf17876020196e79
+Author: Sachin Surendran <sachinsurendran@users.sourceforge.net>
+Date:   Thu Aug 4 08:12:09 2011 -0700
+
+    CHANGES: snmptrapd: PATCH 3383441: from sachinsurendran: Fix crash on 5.4.4 due to access of freed memory
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit d2c4768bd2efb48664434a831425c2dda85d7133
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Thu Aug 4 08:23:22 2011 -0700
+
+    CHANGES: libnetsnmp: PATCH 3362233: from yaberauneya: Mute unnecessary cannot find module noise
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit d19b8fca2384077f732a30f2946ab0c03bc0e738
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 08:15:17 2011 -0700
+
+    allow nsrollup to take a --merge flag for merging instead of rebasing
+
+commit 0e6842fe080cec853b08cd2323015ababc381ce1
+Author: Sachin Surendran <sachinsurendran@users.sourceforge.net>
+Date:   Thu Aug 4 08:12:09 2011 -0700
+
+    CHANGES: snmptrapd: PATCH 3383441: from sachinsurendran: Fix crash on 5.4.4 due to access of freed memory
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 25988be836924a33020113c94aa02614d1dbf1be
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 07:36:36 2011 -0700
+
+    autoconf
+
+commit 4db6b64509dc350839d596e32504b2d80ca0c7b0
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Thu Aug 4 07:36:10 2011 -0700
+
+    CHANGES: building: PATCH 3383949: from yaberauneya: Fix autoconf tests for sys/mbuf.h
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit f3bc55184d96c58dcfd58953796c10f7354dd4a7
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 06:54:22 2011 -0700
+
+    prompt for patch and an area, and use the proper CHANGES line format
+
+commit ad696ba1249d3c4bc12c0eb38481ff0fc433f8a1
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 06:42:42 2011 -0700
+
+    Use fetch --all and rebase as suggested by Bart for speed improvements
+
+commit 44969b4e57c27194e5bd357bc45275feb8695d22
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jul 8 20:52:25 2011 +0200
+
+    CHANGES: Win32: Fix the compiler warnings triggered by the winExtDLL source code and that are triggered by the change of the "oid" typedef from uint32_t to u_long.
+
+commit ea58b67b4f318acf1f9e852582bccad47b4d8e67
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jul 8 20:52:25 2011 +0200
+
+    CHANGES: Win32: winExtDLL: Invoke SnmpUtilOidFree() before SnmpUtilOidCpy(). It's not clear yet why the original code did not make snmpwalk trigger a memory leak.
+
+commit 8a01ec6423d400c4a13ccac68a3791d0218a0885
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Aug 4 11:19:17 2011 +0200
+
+    CHANGES: Windows: Make linking with recent OpenSSL binaries succeed.
+
+commit e21eef2fc5cfdc1200479118a2c5b29a70b0df60
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Aug 4 08:52:43 2011 +0200
+
+    CHANGES: agent: Avoid that a MIB walk on the host resources MIB triggers a crash on Fedora 15
+
+commit d8b2052a0359ad9d1a68d8d587bc6be156158d20
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Aug 3 11:00:31 2011 -0700
+
+    at end of nsrollup mention that now would be a good time to run nssync
+
+commit 4eea9ee38f06e000a95dc209d0a71ce60da494b9
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Aug 3 10:56:14 2011 -0700
+
+    a new nssync() function for push/pulling active branches
+
+commit 284f5fb79e056a272f73b90937d7bf057c2af021
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Aug 3 11:06:23 2011 -0700
+
+    added a comment
+
+commit 8c0432a74fedf8a1385c8ad0ff1fb429a28eab99
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Aug 3 11:00:31 2011 -0700
+
+    at end of nsrollup mention that now would be a good time to run nssync
+
+commit ca3ad3a28f81f59dffa3dbb809a770147241e3e5
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Aug 3 10:56:14 2011 -0700
+
+    a new nssync() function for push/pulling active branches
+
+commit 2fa7d87d3979ec0fbb835bcfff898e6bec2abbd9
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Aug 3 10:23:00 2011 -0700
+
+    A new function: nssfpatchapply that auto-pulls git command line info from SF
+
+commit 73e76574ae728a4a4a30623597ec0b95fa2797c5
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 2 14:43:52 2011 -0700
+
+    added variables names to the generated error messages.
+
+commit b24a4f0c9565335220ee217d0c0b51321cc1a44f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 2 13:22:38 2011 -0700
+
+    Wording changes to help describe contexts better
+
+commit e837c7cb62c676a0059d2846e02e32f5bb63c1b1
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 2 13:22:21 2011 -0700
+
+    Added the missing U64 m2i file
+
+commit 9736234b3798ba5462a0a74943ede80e90a6485b
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Aug 3 10:23:00 2011 -0700
+
+    A new function: nssfpatchapply that auto-pulls git command line info from SF
+
+commit bf7178b0b22587d43d1a80c269cd216bd5930214
+Author: Ilya Yanok <yanok@emcraft.com>
+Date:   Mon Jul 18 04:31:08 2011 +0400
+
+    agent: change type of snmp_enableauthentraps to long
+    
+    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>
+
+commit 16c02d69cc9ce4fd4e7710a0bf9430f52175ed50
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 2 14:43:52 2011 -0700
+
+    added variables names to the generated error messages.
+
+commit 7fed61bf0af1477eb740a0588f6a11a12b723595
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 2 13:22:38 2011 -0700
+
+    Wording changes to help describe contexts better
+
+commit 9380612fdcb4f9bb081c4a46746692124abede50
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 2 13:22:21 2011 -0700
+
+    Added the missing U64 m2i file
+
+commit 61b178f1ee8952aa03aa3b1ba51f4a6655e47f01
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 3 18:09:47 2011 +0200
+
+    CHANGES: Windows: Perl modules build now with IPv6 enabled.
+
+commit 7fcc0b8032f8da5b7bc30059af0ba656eae71091
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Aug 1 14:11:28 2011 +0200
+
+    smux: Fix recently reintroduced compiler warnings about size_t <> ssize_t mismatches
+
+commit b484b88d6e57b425a8467f5a39333312fed2acf2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Aug 2 09:31:50 2011 +0200
+
+    Fix a compiler warning in agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
+
+commit 944612ef56ad2564aafe14df6d08e048b7228b86
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Aug 1 14:49:41 2011 +0200
+
+    .gitignore: Add file names and patterns for output files generated during the Windows build
+
+commit 26009012785f828bbfc8759afbbbfc58700ff1f6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jul 29 09:59:31 2011 +0200
+
+    .gitignore: Sort alphabetically
+
+commit 5e3ff5596648e0907d571d7a4d3a3a8c2402d8ee
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jul 29 08:43:19 2011 +0200
+
+    .gitignore: Add apps/sshtosnmp
+
+commit 31a3a2a0624046511ca07ec1f521a22d7966db80
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Aug 1 13:38:01 2011 +0200
+
+    Remove two generated Perl files.
+
+commit adadcb99e57b93be670a7c517fc989dffe7396e9
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Tue Aug 2 00:56:49 2011 +0200
+
+    suppress "ok" test output in nsb
+
+commit ae9ac6c9812824bf5b848dc1f3ccf7227c436d0d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jul 31 09:11:28 2011 +0200
+
+    Fix an incorrect source code comment: there is no requirement in the ANSI C standard that stack variables should be initialized to zero.
+
+commit 82d73fb11be3ae31f39c9d618d5388dc9b1006d7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jul 29 20:51:27 2011 +0200
+
+    Unbreak the Windows build
+
+commit 9e47ac439333d2bb7c80686241db7331a88770fb
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Sat Jul 30 00:18:14 2011 +0200
+
+    minor nsb fixes/enhancements from my old svn tree
+
+commit c48173c06a9eaadbf81e6b4962d55ef0a54db251
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jul 29 10:27:39 2011 +0200
+
+    Fix a bug in a debug statement
+
+commit eca1b9a25450cd875b2012c51c090ba2b97e0628
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jul 29 10:04:02 2011 +0200
+
+    Rerun autoreconf
+
+commit 69aa9e032caf5eb713bb00745134640fe9fd0235
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jul 29 09:59:31 2011 +0200
+
+    .gitignore: Sort alphabetically
+
+commit c38597dfa0b1d367d52bbdc0aeaadff0155850ad
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jul 29 08:43:19 2011 +0200
+
+    .gitignore: Add apps/sshtosnmp
+
+commit 774d0b66ee0acafeafa21fc8d993864779e50e63
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jul 29 07:43:54 2011 +0200
+
+    Fix two filenames in host mib source code comments.
+
+commit 3458128b4a3c5971998894f9d9d8ccc6c76d3c9b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 28 16:16:15 2011 +0200
+
+    Fix potential sigsegv when an ifTable entry is removed as result of both interface_replace_old and interface_fadeout at the same time.
+
+commit a2f9ece06cf00ee47ce7e85672210c1b5786f311
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 28 15:19:22 2011 +0200
+
+    CHANGES: snmpd: Restore storage tables on Linux
+
+commit d62a0eb9070b4d8d9fe2bcfdb4d53d37ef814f9b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 28 14:49:08 2011 +0200
+
+    Document interface_replace_old option.
+
+commit f660b8c0d8c2707bd73142f076079c9169f35956
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 28 14:40:27 2011 +0200
+
+    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.
+
+commit 406cab818926499c3121dece4377d67638894042
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 28 14:32:57 2011 +0200
+
+    Document the interface_fadeout option.
+
+commit 42b883ce18e58ca89fdfd514ec698e2f7ffd1f63
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 28 14:32:38 2011 +0200
+
+    Allow ifTable entries to be deleted immediately when appropriate interface
+    disappears (i.e. interface_fadeout = 0 works as expected).
+
+commit 45062ea47be1cd8df4933a0de7f72f8cf9183aae
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 28 12:24:10 2011 +0200
+
+    CHANGES: snmpd: added 'interface_fadeout' configuration option to set lifetime of ifTable entries of removed interfaces.
+    
+    Previous lifetime was hardcoded 5 minutes, now it's configurable.
+
+commit 31fa07cd9ffde46d41d2b5838c3fc4d01548bfb5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jul 27 14:45:47 2011 +0200
+
+    CHANGES: snmpd: purge zombies of pass_persist child processes.
+    
+    If pass_persist process ends, we should process its sigchild signal.
+
+commit 11bd6e032d15ffb11d72e352ca6bc95023c3371a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jul 27 14:45:09 2011 +0200
+
+    CHANGES: snmpd: run signal handlers when select() is interrupted.
+    
+    This behavior is indicated in comment on line 1244, but it was not actually done.
+
+commit cd6e382beda8d40edd0664e8faec8db224e5d5d6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jul 26 16:16:46 2011 +0200
+
+    Clarify an IPv6 source code comment
+
+commit 2cec624792af8546505fba02ca0a2e2116a559e7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jul 26 14:59:33 2011 +0200
+
+    Spelling fix: definedy -> defined
+
+commit f95a1f380ea18ff633f273a9aa5e9eb27627010e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jul 26 14:19:14 2011 +0200
+
+    Spelling fix: aleviate -> alleviate
+
+commit c5a8464c42a94c250ee2dfa2a473109a734203d8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jul 26 14:24:55 2011 +0200
+
+    CHANGES: python: PATCH: 3310375: from Erinn Looney-Triggs: fixed parsing of varbinds with MIB names
+
+commit ebdd216c074bf41cd3a084bd14689cf01c887b31
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 19 18:36:11 2011 -0700
+
+    remove broken whitespace lines that leads to reading confusion
+
+commit d65c7b14a0f91560bbf65274f62e48db97a34b3e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 19 18:46:10 2011 -0700
+
+    updated gitignore to ignore a number of auto-generated files
+
+commit ab1d887ba383c33d853aa4d348bbceab981aa245
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 19 18:36:11 2011 -0700
+
+    remove broken whitespace lines that leads to reading confusion
+
+commit 70dee4b8dd37e8b1d59db03cd7f631fe356f19e4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jul 19 09:38:16 2011 +0200
+
+    CHANGES: snmpd: PATCH: 3369680: from Ilya Yanok: change snmp_enableauthentraps from int to long such that modifying the corresponding MIB object does not overwrite memory in 64-bit builds.
+
+commit 690ea7dc45c6fe1a7bbfa1584ed9bf921f19b28f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jul 19 08:28:59 2011 +0200
+
+    CHANGES: snmptrapd: Add missing newline character in a log message
+
+commit dd2fc2ed88d0f9bb81de35dbe1f9bd3bbbbb3d90
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jul 19 08:28:13 2011 +0200
+
+    CHANGES: snmptrapd: Invoke shutdown_perl() when shutting down
+
+commit 6deec1a89048c8db26523517af98ddd397fc77c3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jul 19 08:23:05 2011 +0200
+
+    Spelling fix: branket -> bracket
+
+commit 8d9dcc806eab37fe2ddf9cc34cf86467265b62cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jul 17 11:38:58 2011 +0200
+
+    Run autoreconf. Fixes build breakage caused by patch d588ec853bd0531f212fcbf51b962b96c6828b59 (RPM 4.9 support)
+
+commit a56721a3e7754e389daa7e8a3d5792899edc9de3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jul 14 16:18:32 2011 +0200
+
+    Add autom4te.cache and stamp-h to .gitignore
+
+commit 851bcf53fcd13cdf0ba9f12e5d603e73f8bb9611
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Jul 15 15:32:49 2011 -0700
+
+    mentione the 'before' part of the injectHandler line
+
+commit 9f793630162cb7713ac4b68c9aabe50e67514071
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Jul 14 07:31:30 2011 -0700
+
+    fix a typo
+
+commit edc2c88375feccb176bcadeb58810dd57bd97fb7
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 11 19:33:03 2011 -0700
+
+    added a copy of the shell-functions to the older branch
+
+commit 964d63514982d6dd9fa95020d24a3e88b22f2d0c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 11 19:30:29 2011 -0700
+
+    a copy of the release file applied to the older branches
+
+commit 196e110b314e37e73a74edb03c43da0299ea8b44
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 11 19:34:06 2011 -0700
+
+    added 5.7 patches
+
+commit a2ac24dd4b5b709773fe827687c85982775d9998
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 11 19:33:03 2011 -0700
+
+    added a copy of the shell-functions to the older branch
+
+commit 8ad32cefb37c62080c4f3d74443884bec1c49add
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 11 19:30:29 2011 -0700
+
+    a copy of the release file applied to the older branches
+
+commit 9ff471439e326255066377c76d995e1aaf296bd2
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jun 29 23:15:42 2011 -0700
+
+    fix tag pushing
+
+commit f9a65385b23d06dbbe9430a23c8ebcf68d12127e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jun 29 22:32:10 2011 -0700
+
+    misc publication fixes found while publishing
+
+commit df9cf9a1e293d05a24786694f68c05a2be13a9b3
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jun 29 16:34:11 2011 -0700
+
+    xml fixes
+
+commit ee8d160416c2f7d1941863e7d37512658e3f2f36
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jun 29 16:33:50 2011 -0700
+
+    use git2cl to generate the ChangeLog file; needs much more work.
+
+commit 5d4bb80113ddcce5cee293a4e537b201fafcab83
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jun 29 14:48:39 2011 -0700
+
+    use the new run-autoconf script
+
+commit 61ffef6268675a91e230d44b3407a3d0c3ffc89d
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jun 29 14:47:56 2011 -0700
+
+    A script to invoke the correct version of the autoconf tool
+
+commit d0f6f8de37292b7fbc9e05793690b5784a041d46
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jun 29 08:41:45 2011 -0700
+
+    remaining command line changes for svn -> git
+
+commit 16560840020dc5e0c4b28cc2e30bb2cd034ce0d0
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jun 29 07:26:55 2011 -0700
+
+    make the branch echo output and svn update converted to git equivalents
+
+commit f775bcd6a7a50f33782526ecdb1beea55e3fe823
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jun 29 07:11:29 2011 -0700
+
+    pull the branch info from git
+
+commit d588ec853bd0531f212fcbf51b962b96c6828b59
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jun 29 16:07:00 2011 +0200
+
+    Tweak RPM handling to work with library version 4.9
+
+commit af8b235234f72944a649a76f0d30cff95ac2e895
+Author: Wes Hardaker <opensource@hardakers.net>
+Date:   Tue Jun 28 13:11:19 2011 -0700
+
+    Mention the Git wiki page
+
+commit 9bc82e4ca4837f00072dba86b9497a27186909f9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jun 28 19:13:35 2011 +0200
+
+    Add .gitignore
+
+commit f2df8a2b0165e0137fd017b41c7d04e3a5e168e6
+Author: Wes Hardaker <opensource@hardakers.net>
+Date:   Tue Jun 28 08:29:08 2011 -0700
+
+    We're now using git!
+
+commit 7d917cfc8f74574032564815ab0fb483b691864e
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri Jun 24 13:00:50 2011 +0000
+
+    version update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20524 06827809-a52a-0410-b366-d66718629ded
+
+commit a162e931f29931ce03d40d73dd969f6086083b80
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri Jun 24 12:38:14 2011 +0000
+
+    Missing check for rpmts.h
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20523 06827809-a52a-0410-b366-d66718629ded
+
+commit 0787ff1f632e08440e8bb240dabca5c5e63fd82d
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri Jun 24 12:20:20 2011 +0000
+
+    Version number update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20522 06827809-a52a-0410-b366-d66718629ded
+
+commit 4530d877531083bfffd3bbca4a82c30009bef8fd
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri Jun 24 12:08:23 2011 +0000
+
+    documentation update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20521 06827809-a52a-0410-b366-d66718629ded
+
+commit 49575f136b40d08d21a168a0d545d85f59c58701
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri Jun 24 12:02:15 2011 +0000
+
+    Version number update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20520 06827809-a52a-0410-b366-d66718629ded
+
+commit 599e3cdff9e78622535683a69f42977df4089ba9
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Jun 23 15:41:38 2011 +0000
+
+    Tweak RPM handling to work with library version 4.9
+    Based on a patch by Jan Safranek
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20519 06827809-a52a-0410-b366-d66718629ded
+
+commit 5c2a691bd29ea343046d218621502a66bc96a1bb
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 22 14:27:39 2011 +0000
+
+    Provide a framework for reading RPM package information from
+    a cache directory (rather than querying the RPMdb directly).
+    
+    My apologies to Jeff Johnson for the delay in adding this functionality.
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20518 06827809-a52a-0410-b366-d66718629ded
+
+commit 2707435ef5e011c3637f37981cbe4d50f2e729dc
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 22 13:26:45 2011 +0000
+
+    version update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20516 06827809-a52a-0410-b366-d66718629ded
+
+commit 272f96aec937ed74cc4db980745d2dbe00ca53a0
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 22 13:06:45 2011 +0000
+
+    Version number update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20515 06827809-a52a-0410-b366-d66718629ded
+
+commit 9e471adc2a40212b4c017cbced6e25882e306a4d
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 22 13:04:12 2011 +0000
+
+    Version number update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20514 06827809-a52a-0410-b366-d66718629ded
+
+commit 8a5ac775de575416070665c30bc3d77336e12bcb
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Tue Jun 21 14:28:48 2011 +0000
+
+    Provide a framework for reading RPM package information from
+    a cache directory (rather than querying the RPMdb directly).
+    
+    My apologies to Jeff Johnson for the delay in adding this functionality.
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20513 06827809-a52a-0410-b366-d66718629ded
+
+commit 4524255ba6083d25c03f6436ecbe398836f4a0f8
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sun Jun 19 07:52:26 2011 +0000
+
+    Follow-up for r20511: really use the proper format specification.
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+commit 621c9eda1282b7f562b3777b5fb57fd355c1a206
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri Jun 17 19:09:52 2011 +0000
+
+    Fix a bug in a debug statement introduced by patch 3310250 / r20494: use %ld to print a value of type oid instead of %d.
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20511 06827809-a52a-0410-b366-d66718629ded
+
+commit 3b3e97b309a535df1a99b03693869050649d53a0
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri Jun 17 19:06:42 2011 +0000
+
+    Use %p to print a pointer instead of %ld
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20510 06827809-a52a-0410-b366-d66718629ded
+
+commit 878bcd8764be5d158d65f4b20a68cb3a948dbddf
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri Jun 17 19:06:42 2011 +0000
+
+    Use %p to print a pointer instead of %ld
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20510 06827809-a52a-0410-b366-d66718629ded
+
+commit 374af0758644e9abcc4998fb291ca373869048f8
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri Jun 3 06:30:33 2011 +0000
+
+    Reverted r20362: that patch makes sense on the trunk and the 5.6 branch but not on the 5.5 nor on the 5.4 branch.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20495 06827809-a52a-0410-b366-d66718629ded
+
+commit 7189356d88b4cbd920fd934111e4b6d690513f50
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jun 1 22:24:23 2011 +0000
+
+    CHANGES: snmpd: patch 3310250: from fenner: misc fixes for debugging output of agentx
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20494 06827809-a52a-0410-b366-d66718629ded
+
+commit c9c3db15752d6e4b8b9600cd7d1a8d79d6d83c3e
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 15:57:18 2011 +0000
+
+    version update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20487 06827809-a52a-0410-b366-d66718629ded
+
+commit 0eefeccf76d630796b7c8c64a0e33d0175262fcb
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 15:48:49 2011 +0000
+
+    version update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20486 06827809-a52a-0410-b366-d66718629ded
+
+commit 35f0a3822af8f00855242906b132e702de899213
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 15:47:04 2011 +0000
+
+    make depend
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20485 06827809-a52a-0410-b366-d66718629ded
+
+commit b1e5acbb605bed3210c7f5ddaeeef2a050cf6bea
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 15:42:00 2011 +0000
+
+    Reinstate an "unused" label that is actually still required.
+    (referenced in line 2710)
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20484 06827809-a52a-0410-b366-d66718629ded
+
+commit 2487579d1e977137dc643acee762aeaafa60f4bd
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 15:32:23 2011 +0000
+
+    Fix typo
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20483 06827809-a52a-0410-b366-d66718629ded
+
+commit cac11a92c04a5cc51e231be0ab116db855221de1
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 15:08:51 2011 +0000
+
+    documentation update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20482 06827809-a52a-0410-b366-d66718629ded
+
+commit fa8ee4f97c2fa8fb6e59cf055e0d81a3bdecfb97
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 14:51:14 2011 +0000
+
+    Version number update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20481 06827809-a52a-0410-b366-d66718629ded
+
+commit 865ccff3220d017f3ef3b619f0f8f447d33514eb
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 10:19:33 2011 +0000
+
+    version update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20479 06827809-a52a-0410-b366-d66718629ded
+
+commit 7b619b10e912bdd1c7633ce3b1e72574c2341ce9
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 10:01:01 2011 +0000
+
+    version update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20478 06827809-a52a-0410-b366-d66718629ded
+
+commit 55f6e8c3a0f7741bf8a689a0fcf06cc480ad1eff
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 09:54:04 2011 +0000
+
+    make depend
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20477 06827809-a52a-0410-b366-d66718629ded
+
+commit d7a273ccbee56901e8679a0de32bc6aa16d44bf5
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 09:06:32 2011 +0000
+
+    documentation update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20476 06827809-a52a-0410-b366-d66718629ded
+
+commit 126353551f4937f7c0bc1aa8c80c2d48d1349c93
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Wed Jun 1 09:00:24 2011 +0000
+
+    Version number update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20475 06827809-a52a-0410-b366-d66718629ded
+
+commit 7fa30fce08ac494c358e6a31b9702e12ffebd461
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue May 31 22:49:32 2011 +0000
+
+    CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for comparing unsigned large indexes of the disk and extend tables.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20471 06827809-a52a-0410-b366-d66718629ded
+
+commit b41d4aaf7a06b45a9ec07a5511bac5bad6fdda2a
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue May 31 22:49:32 2011 +0000
+
+    CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for comparing unsigned large indexes of the disk and extend tables.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20471 06827809-a52a-0410-b366-d66718629ded
+
+commit 1a8438650405ae38491f3a5c9a2b10fc99b1b9c2
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue May 31 22:49:32 2011 +0000
+
+    CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for comparing unsigned large indexes of the disk and extend tables.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20471 06827809-a52a-0410-b366-d66718629ded
+
+commit c07d59bd92cc34bc96964b5e743cfdee79875b7a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue May 31 12:30:30 2011 +0000
+
+    CHANGES: snmpd: fixed hrSWRunPath of swapped-out processes on Linux.
+    
+    fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped out) and when the process exited after fopen(), so check /proc/PID/status in both cases.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20470 06827809-a52a-0410-b366-d66718629ded
+
+commit ba68806dd064f655536d6f69371c699e6162056e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue May 31 12:30:30 2011 +0000
+
+    CHANGES: snmpd: fixed hrSWRunPath of swapped-out processes on Linux.
+    
+    fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped out) and when the process exited after fopen(), so check /proc/PID/status in both cases.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20470 06827809-a52a-0410-b366-d66718629ded
+
+commit 91cdb815bb365757f84c2234d9e5f5763ac4b04f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu May 26 16:12:48 2011 +0000
+
+    CHANGES: snmpd: patch 3299384: fix INFORMs so they retry probing for an engineID.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20458 06827809-a52a-0410-b366-d66718629ded
+
+commit a5a9d1e8a24f02dfe4e97af04d6f5e0b590a52ae
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu May 26 16:12:48 2011 +0000
+
+    CHANGES: snmpd: patch 3299384: fix INFORMs so they retry probing for an engineID.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20458 06827809-a52a-0410-b366-d66718629ded
+
+commit 4b956c470ac7e49399e7e1239798e2a060fe58ba
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu May 26 16:12:48 2011 +0000
+
+    CHANGES: snmpd: patch 3299384: fix INFORMs so they retry probing for an engineID.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20458 06827809-a52a-0410-b366-d66718629ded
+
+commit a9bc34f6f450b4751def8b8572b25c0f7918ad5e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu May 26 16:06:11 2011 +0000
+
+    Applied (roughly) patch 3299370 to avoid rewriting existing authkey/privkey/etcs
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20457 06827809-a52a-0410-b366-d66718629ded
+
+commit 1d331375d86282e23b4ae602052753aa4a4f87ac
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu May 26 16:06:11 2011 +0000
+
+    Applied (roughly) patch 3299370 to avoid rewriting existing authkey/privkey/etcs
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20457 06827809-a52a-0410-b366-d66718629ded
+
+commit aa5ec8d19de295151032639e138e8b76587866bc
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu May 26 16:06:11 2011 +0000
+
+    Applied (roughly) patch 3299370 to avoid rewriting existing authkey/privkey/etcs
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20457 06827809-a52a-0410-b366-d66718629ded
+
+commit 880132daf2f53dadfe41b22ad322d70650a82cc1
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed May 25 13:07:23 2011 +0000
+
+    CHANGES: Win32: Microsoft Visual Studio: Link with gdi32.lib if OpenSSL has been enabled because gdi32.lib is a dependency of OpenSSL.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20451 06827809-a52a-0410-b366-d66718629ded
+
+commit 885d1f55cefa82d95356e3e35ecae81158af3b59
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed May 25 09:21:05 2011 +0000
+
+    CHANGES: snmpd: Use proper format specifier in debug statements for printing values of type 'oid'.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20449 06827809-a52a-0410-b366-d66718629ded
+
+commit 723bc387571757426b861b6a8854a4b8d89dcd15
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed May 25 09:21:05 2011 +0000
+
+    CHANGES: snmpd: Use proper format specifier in debug statements for printing values of type 'oid'.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20449 06827809-a52a-0410-b366-d66718629ded
+
+commit 0f2ecd6f05dee37f93ea9a9ac9e7276d6b478dd0
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue May 24 12:51:39 2011 +0000
+
+    Added NULL-checks after malloc
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20446 06827809-a52a-0410-b366-d66718629ded
+
+commit c89c95bccd138bdaee3e01f2d0f663328e8e7e88
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue May 24 12:51:39 2011 +0000
+
+    Added NULL-checks after malloc
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20446 06827809-a52a-0410-b366-d66718629ded
+
+commit e3b20caabc313d888ca4cc9544e7ecf2e1ab09d4
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Sun May 22 19:34:10 2011 +0000
+
+    CHANGES: agent: BUG: 3305157: Fix ipAddressPrefix handling of IPv6 addresses
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20445 06827809-a52a-0410-b366-d66718629ded
+
+commit 9b125c713be1ecca63f2b169d2c10d1d24a2d476
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Sun May 22 19:34:10 2011 +0000
+
+    CHANGES: agent: BUG: 3305157: Fix ipAddressPrefix handling of IPv6 addresses
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20445 06827809-a52a-0410-b366-d66718629ded
+
+commit 04331882a0c9df79d9135457382a2725c3030f81
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Sun May 22 19:07:56 2011 +0000
+
+    CHANGES: python: BUG: 3295407: Fix handling of void pointer
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20444 06827809-a52a-0410-b366-d66718629ded
+
+commit 6e2bf91aba562ccaeb130419893a7170bb2312f9
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Sun May 22 19:07:56 2011 +0000
+
+    CHANGES: python: BUG: 3295407: Fix handling of void pointer
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20444 06827809-a52a-0410-b366-d66718629ded
+
+commit caba651f84f7102cba181d195b59c79768d94561
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Sun May 22 18:57:53 2011 +0000
+
+    CHANGES: snmplib: BUG: 3264852: Recognise missing report types (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers)
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20443 06827809-a52a-0410-b366-d66718629ded
+
+commit c5a4580b924ed5c49cffd1b7fd8e932ed168ecdb
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Sun May 22 18:57:53 2011 +0000
+
+    CHANGES: snmplib: BUG: 3264852: Recognise missing report types (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers)
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20443 06827809-a52a-0410-b366-d66718629ded
+
+commit 98815003f345ece93fcf836fb0c3ea5997c8f900
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Sun May 22 18:57:53 2011 +0000
+
+    CHANGES: snmplib: BUG: 3264852: Recognise missing report types (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers)
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20443 06827809-a52a-0410-b366-d66718629ded
+
+commit 30245d00d30cfc526939bb2ff721b2076546e8c7
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 20 15:41:06 2011 +0000
+
+    CHANGES: snmplib: BUG: 3234754: Ensure old f_create_from_tstring hook is initialized to NULL
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20442 06827809-a52a-0410-b366-d66718629ded
+
+commit 56c74c5a49386330a581564a6ee1579bcf6c509e
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 20 15:41:06 2011 +0000
+
+    CHANGES: snmplib: BUG: 3234754: Ensure old f_create_from_tstring hook is initialized to NULL
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20442 06827809-a52a-0410-b366-d66718629ded
+
+commit 45b4bd537b627534b1c6218219fd770eb5a4a155
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu May 19 19:46:20 2011 +0000
+
+    use #ifdef rather than #if for define checks.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20441 06827809-a52a-0410-b366-d66718629ded
+
+commit 5cc5a4cd0d648935ec76e09616229d0ceebc41a0
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu May 19 19:46:20 2011 +0000
+
+    use #ifdef rather than #if for define checks.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20441 06827809-a52a-0410-b366-d66718629ded
+
+commit b588d1a1da681b26f35f2bbf0492242cf4d83c96
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu May 19 19:46:20 2011 +0000
+
+    use #ifdef rather than #if for define checks.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20441 06827809-a52a-0410-b366-d66718629ded
+
+commit 98d6223e10af0b207395c9a71190dff6fa87959c
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu May 19 17:19:31 2011 +0000
+
+    CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response and snmp_async_send
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20440 06827809-a52a-0410-b366-d66718629ded
+
+commit c26e7a93851ed678447dc32ab72fbc1a008a135d
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu May 19 17:19:31 2011 +0000
+
+    CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response and snmp_async_send
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20440 06827809-a52a-0410-b366-d66718629ded
+
+commit c00f88f33888edd480acc9ec9312d6b61e170a76
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu May 19 17:19:31 2011 +0000
+
+    CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response and snmp_async_send
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20440 06827809-a52a-0410-b366-d66718629ded
+
+commit ca053996022e3c1de3e2d5b558fadf6d79e9fdd3
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri May 13 12:05:19 2011 +0000
+
+    Follow-up for r20417: replaced a malloc()/free() pair by a call to realloc().
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20424 06827809-a52a-0410-b366-d66718629ded
+
+commit 06869520856976ff4590a0bb61c4e96f16c35d6e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu May 12 11:47:36 2011 +0000
+
+    CHANGES: snmpd: Fixed memory leak in TCP-MIB tables introduced by patch #3053436.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20421 06827809-a52a-0410-b366-d66718629ded
+
+commit 05d3d3a82311bf9b55386216f188198cd849fff1
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 12 09:03:02 2011 +0000
+
+    CHANGES: snmplib: Fixed a memory leak in snmp_free_session().
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20418 06827809-a52a-0410-b366-d66718629ded
+
+commit 4e94ab7f0c6509b6282eefc888ab0dcf78e575a6
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 12 09:03:02 2011 +0000
+
+    CHANGES: snmplib: Fixed a memory leak in snmp_free_session().
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20418 06827809-a52a-0410-b366-d66718629ded
+
+commit cc78d06239755c6ebb831903b6cedd3e1dbab583
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 12 08:25:33 2011 +0000
+
+    CHANGES: snmplib: _mibindex_add() no longer reads past the end of the dynamically allocated array _mibindexes.
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20417 06827809-a52a-0410-b366-d66718629ded
+
+commit adced4a84876a2e3cb8687b5ffa5830a3b5003aa
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 12 08:12:47 2011 +0000
+
+    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ipNetToMediaTable.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20414 06827809-a52a-0410-b366-d66718629ded
+
+commit f0012dec2c98baf1c0e25fa17d5bf89bacd0a4a4
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 12 08:12:47 2011 +0000
+
+    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ipNetToMediaTable.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20414 06827809-a52a-0410-b366-d66718629ded
+
+commit 8ecd298dbccee1e327ce65852f98928d7bc041d7
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 12 08:08:41 2011 +0000
+
+    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ifTable.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20413 06827809-a52a-0410-b366-d66718629ded
+
+commit d962fda677814b6342ad1b9c3fa84225b555cda2
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 12 08:08:41 2011 +0000
+
+    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ifTable.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20413 06827809-a52a-0410-b366-d66718629ded
+
+commit aa032769bc3da8302c38dd9d62d53f7f054eb2c7
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 12 07:33:02 2011 +0000
+
+    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ipAddrTable.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20412 06827809-a52a-0410-b366-d66718629ded
+
+commit 4ffa908d02cfad9ff31a2018192d4ad5f959467c
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 12 07:33:02 2011 +0000
+
+    CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II ipAddrTable.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20412 06827809-a52a-0410-b366-d66718629ded
+
+commit 271914512dc8268d8bc49ba7ec38cc2acec656c3
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 12 06:54:33 2011 +0000
+
+    Documentation / source code comment spelling fix: exitent -> existent.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20411 06827809-a52a-0410-b366-d66718629ded
+
+commit c009c12d72bbc2e2795d3a6b22cab6ba06e48535
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 12 06:54:33 2011 +0000
+
+    Documentation / source code comment spelling fix: exitent -> existent.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20411 06827809-a52a-0410-b366-d66718629ded
+
+commit c2d35bd5c322d7a8536a1ff31d73e41f77c85b97
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Tue May 10 15:02:51 2011 +0000
+
+    MinGW: avoid that gcc complains about pasing a (char *) argument while (unsigned char *) is expected.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20402 06827809-a52a-0410-b366-d66718629ded
+
+commit 3dbe27799a3f065bbf212599466969beb72690d2
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Tue May 10 15:02:51 2011 +0000
+
+    MinGW: avoid that gcc complains about pasing a (char *) argument while (unsigned char *) is expected.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20402 06827809-a52a-0410-b366-d66718629ded
+
+commit 94b5238d88a027306aa9115758111c785a4abad8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon May 9 20:52:01 2011 +0000
+
+    Use symbolic named for ifType values
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20375 06827809-a52a-0410-b366-d66718629ded
+
+commit 04b8e279a7a785a76ebf4b6575f41ce6299452c6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon May 9 20:52:01 2011 +0000
+
+    Use symbolic named for ifType values
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20375 06827809-a52a-0410-b366-d66718629ded
+
+commit 3dcbfdd4f1ffead5524149b4efb00128688e1505
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon May 9 20:52:01 2011 +0000
+
+    Use symbolic named for ifType values
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20375 06827809-a52a-0410-b366-d66718629ded
+
+commit 5bb1c9a8fdc47b3ef355cb42e9e18ad88ce496fb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 8 20:01:26 2011 +0000
+
+    Fix warnings and data format for DateAndTime objects.
+    These modules work, but:
+    - They are Linux only
+    - Rows must be created with rowStatus createAndWait before they are populated
+    - Agent must run as root
+    - Agent is blocked while tests run
+    - Data format for InetAddress objects is wrong. It is ASCII, not binary
+      (making it easier to use from the command line, but ...)
+    
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20363 06827809-a52a-0410-b366-d66718629ded
+
+commit dbb8795a7df595f0603f2ec61704799f4c482667
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 8 20:01:26 2011 +0000
+
+    Fix warnings and data format for DateAndTime objects.
+    These modules work, but:
+    - They are Linux only
+    - Rows must be created with rowStatus createAndWait before they are populated
+    - Agent must run as root
+    - Agent is blocked while tests run
+    - Data format for InetAddress objects is wrong. It is ASCII, not binary
+      (making it easier to use from the command line, but ...)
+    
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20363 06827809-a52a-0410-b366-d66718629ded
+
+commit e9ac86278c3588022914758a345fb982bb5d4ec4
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 8 20:01:26 2011 +0000
+
+    Fix warnings and data format for DateAndTime objects.
+    These modules work, but:
+    - They are Linux only
+    - Rows must be created with rowStatus createAndWait before they are populated
+    - Agent must run as root
+    - Agent is blocked while tests run
+    - Data format for InetAddress objects is wrong. It is ASCII, not binary
+      (making it easier to use from the command line, but ...)
+    
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20363 06827809-a52a-0410-b366-d66718629ded
+
+commit e3db95e1619dd57dfb55ac7494f48d2add56d973
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat May 7 15:22:27 2011 +0000
+
+    Removed an unused label from perl/SNMP/SNMP.xs.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20362 06827809-a52a-0410-b366-d66718629ded
+
+commit ea8ce00744e83233d8543852f884aa037c1183a2
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat May 7 15:22:27 2011 +0000
+
+    Removed an unused label from perl/SNMP/SNMP.xs.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20362 06827809-a52a-0410-b366-d66718629ded
+
+commit a58969eddb3b669877d7229f719087bbd727d033
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri May 6 21:32:01 2011 +0000
+
+    NEWS: PATCH 3198781: from fenner: Get disman/ping and disman/traceroute to at least compile
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20352 06827809-a52a-0410-b366-d66718629ded
+
+commit 2cca6125d538faa9b51b772141f192d7b63cc0cb
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri May 6 21:32:01 2011 +0000
+
+    NEWS: PATCH 3198781: from fenner: Get disman/ping and disman/traceroute to at least compile
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20352 06827809-a52a-0410-b366-d66718629ded
+
+commit b1e76bef81bfce16c8d0bc01e856cb4c75930b5c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri May 6 21:32:01 2011 +0000
+
+    NEWS: PATCH 3198781: from fenner: Get disman/ping and disman/traceroute to at least compile
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20352 06827809-a52a-0410-b366-d66718629ded
+
+commit fcb8a8d27c2cc379dce263dbee6720d7b4e02d74
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 17:46:29 2011 +0000
+
+    version update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20347 06827809-a52a-0410-b366-d66718629ded
+
+commit 515af99cb9e6a3b0923e650466f74464e3b9b5f6
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 17:37:59 2011 +0000
+
+    version update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20346 06827809-a52a-0410-b366-d66718629ded
+
+commit 6f927fd73af2a4ceb67fc4090826a284a7e6fc19
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 17:35:50 2011 +0000
+
+    make depend
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20345 06827809-a52a-0410-b366-d66718629ded
+
+commit 8080a8189ed7ee73ca3218c8280c68717d4535de
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 17:22:14 2011 +0000
+
+    documentation update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20344 06827809-a52a-0410-b366-d66718629ded
+
+commit 62fb93e28728b0e93c134c88b65b1d453b6e89c2
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 17:17:46 2011 +0000
+
+    Version number update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20343 06827809-a52a-0410-b366-d66718629ded
+
+commit 74e13cc95bee4655df23ba514bd2657886c9e4b6
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 14:23:24 2011 +0000
+
+    version update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20340 06827809-a52a-0410-b366-d66718629ded
+
+commit 793187aaa04c881f6b57fcf361296b52a940e1f8
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 14:21:45 2011 +0000
+
+    version update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20339 06827809-a52a-0410-b366-d66718629ded
+
+commit 1466e15e52380965f844c6d98b3eb257899a4ce2
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 14:19:57 2011 +0000
+
+    make depend
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20338 06827809-a52a-0410-b366-d66718629ded
+
+commit dec7d47ca3767c37d17981f1cf9e580ae2fe0214
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 14:02:04 2011 +0000
+
+    documentation update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20337 06827809-a52a-0410-b366-d66718629ded
+
+commit 0ec1c929167adb3d96b41eac24353496c3371b08
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 13:59:20 2011 +0000
+
+    Version number update
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20336 06827809-a52a-0410-b366-d66718629ded
+
+commit 1a014529c5c4a07c8407e955a7f1fe686cb7ee7c
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 13:50:06 2011 +0000
+
+    Fix incomplete uninstall configuration:
+    - broken removal of Microsoft DLL
+    - remove assorted new MIBs and header files
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20335 06827809-a52a-0410-b366-d66718629ded
+
+commit dac102bd5b63a21181a8030adaf5ff96b9f826c3
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 13:50:06 2011 +0000
+
+    Fix incomplete uninstall configuration:
+    - broken removal of Microsoft DLL
+    - remove assorted new MIBs and header files
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20335 06827809-a52a-0410-b366-d66718629ded
+
+commit fc3b416794cf72922f8b2d636bbed377ca1a36ed
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 13:50:06 2011 +0000
+
+    Fix incomplete uninstall configuration:
+    - broken removal of Microsoft DLL
+    - remove assorted new MIBs and header files
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20335 06827809-a52a-0410-b366-d66718629ded
+
+commit f3b13725b7bd64ac948d970d9fe9652988ea4118
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 12:58:28 2011 +0000
+
+    Support Tar/GZip command paths containing spaces
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20334 06827809-a52a-0410-b366-d66718629ded
+
+commit eec17876a653fd052ff62424a87958fa8d029442
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri May 6 12:57:07 2011 +0000
+
+    Report GZip command correctly
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20333 06827809-a52a-0410-b366-d66718629ded
+
+commit c1fb3722914741fa998e6b7cee9ce8e07cd4700e
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 5 06:07:51 2011 +0000
+
+    CHANGES: MinGW: Made regression test output independent of the Net-SNMP variables defined in the Windows registry. Some tests that failed previously after the Net-SNMP binaries (MSVC build) had been installed do now pass.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20329 06827809-a52a-0410-b366-d66718629ded
+
+commit bc5258de2030228b369e13d2a4748c857a0a4b5e
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu May 5 06:07:51 2011 +0000
+
+    CHANGES: MinGW: Made regression test output independent of the Net-SNMP variables defined in the Windows registry. Some tests that failed previously after the Net-SNMP binaries (MSVC build) had been installed do now pass.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20329 06827809-a52a-0410-b366-d66718629ded
+
+commit f67c150fb05ed38df44f8b526091d6e9b88d9f30
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Tue May 3 19:15:27 2011 +0000
+
+    CHANGES: snmplib: Guard netsnmp_udp_recvfrom() etc. declarations consistently.
+    CHANGES: Win32: Builds with Visual Studio 2010.
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20279 06827809-a52a-0410-b366-d66718629ded
+
+commit 0981e600a62d524bba0fc8784435d76d275d7f33
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Tue May 3 15:29:46 2011 +0000
+
+    CHANGES: Win32: PATCH: 3293842: Eliminate registry argument limit of 127 characters (this limitation was reported by Sylvain Dery).
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20277 06827809-a52a-0410-b366-d66718629ded
+
+commit f3ea341fb1944dc6a6396add72ac39f5794a2d69
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Tue May 3 15:29:46 2011 +0000
+
+    CHANGES: Win32: PATCH: 3293842: Eliminate registry argument limit of 127 characters (this limitation was reported by Sylvain Dery).
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20277 06827809-a52a-0410-b366-d66718629ded
+
+commit a2900c45d1d927e1d891800a1422a922b376d85c
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Mon May 2 11:22:34 2011 +0000
+
+    CHANGES: Win32: header file <net-snmp/net-snmp-config.h> can now be used in the MinGW environment.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20276 06827809-a52a-0410-b366-d66718629ded
+
+commit 4205f53829a725b5b5ee835d7918a7835b26adc6
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Mon May 2 11:22:34 2011 +0000
+
+    CHANGES: Win32: header file <net-snmp/net-snmp-config.h> can now be used in the MinGW environment.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20276 06827809-a52a-0410-b366-d66718629ded
+
+commit 2e00914d408b0ef9a45d2b317b03329e81456586
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Mon May 2 11:13:23 2011 +0000
+
+    Win32 DLL build fixes.
+    (Backported r20184 from trunk.)
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20275 06827809-a52a-0410-b366-d66718629ded
+
+commit e7864207f888230de679acfda1fd9b657d792610
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri Apr 29 11:17:11 2011 +0000
+
+    Spelling and grammar fixes for the source code comments in snmplib/winservice.c.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20274 06827809-a52a-0410-b366-d66718629ded
+
+commit e7b33f43d0c3125162abbd264d7e1fa3fa406302
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri Apr 29 11:17:11 2011 +0000
+
+    Spelling and grammar fixes for the source code comments in snmplib/winservice.c.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20274 06827809-a52a-0410-b366-d66718629ded
+
+commit 311ade23de4a0014fe0fc23cf83d077cd663ad05
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Apr 27 21:16:23 2011 +0000
+
+    Don't free the ifXTable row found on load failure as we don't own it
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20241 06827809-a52a-0410-b366-d66718629ded
+
+commit ede24689461b75c441a36a384a6c559723dde2d3
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Apr 27 21:16:23 2011 +0000
+
+    Don't free the ifXTable row found on load failure as we don't own it
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20241 06827809-a52a-0410-b366-d66718629ded
+
+commit 1af08e1d608b7bd13361ead5c42f4c47a283b599
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Apr 27 21:16:23 2011 +0000
+
+    Don't free the ifXTable row found on load failure as we don't own it
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20241 06827809-a52a-0410-b366-d66718629ded
+
+commit 40abd8e5ab11a07c496ab25f1ad54cc3e58327a4
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Sun Apr 17 20:56:48 2011 +0000
+
+    CHANGES: snmpd: PATCHES: 3175640: Use IP_RECVDSTADDR sockopt where available (*BSD)
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20183 06827809-a52a-0410-b366-d66718629ded
+
+commit c048f2ce43bfa82e8d3ad8a2bd312290c6ba27f0
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri Apr 15 13:42:14 2011 +0000
+
+    CHANGES: snmplib: PATCHES: 3183000: Fix calculation of common OID prefix length
+    CHANGES: snmplib: BUGS: 3182985: Fix calculation of common OID prefix length
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20182 06827809-a52a-0410-b366-d66718629ded
+
+commit 0e2d8e8337af7257f7eb727678f8034e84ae74ce
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri Apr 15 13:42:14 2011 +0000
+
+    CHANGES: snmplib: PATCHES: 3183000: Fix calculation of common OID prefix length
+    CHANGES: snmplib: BUGS: 3182985: Fix calculation of common OID prefix length
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20182 06827809-a52a-0410-b366-d66718629ded
+
+commit 391597cffd9abde5ff46b74c5b6c7e321ab7d3c1
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Fri Apr 15 13:42:14 2011 +0000
+
+    CHANGES: snmplib: PATCHES: 3183000: Fix calculation of common OID prefix length
+    CHANGES: snmplib: BUGS: 3182985: Fix calculation of common OID prefix length
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20182 06827809-a52a-0410-b366-d66718629ded
+
+commit e4574372e478d37efa3975ca0fc718fcda30608f
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Apr 14 21:31:09 2011 +0000
+
+    CHANGES: python: PATCHES: 3185085: Fix segfault on 64-bit systems
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20180 06827809-a52a-0410-b366-d66718629ded
+
+commit 6c06a2594f6e87c72251ff793e7d9187b8915fbc
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Apr 14 21:31:09 2011 +0000
+
+    CHANGES: python: PATCHES: 3185085: Fix segfault on 64-bit systems
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20180 06827809-a52a-0410-b366-d66718629ded
+
+commit 7e899b5cf2db2164e0c1d58706b9502e86596970
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Apr 14 21:10:56 2011 +0000
+
+    CHANGES: mib2c: PATCHES: 3175323: Fix handling of 'while (false)' blocks
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20179 06827809-a52a-0410-b366-d66718629ded
+
+commit 6967d78999b7f4cb527020750cd35927fe4f2fe7
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Apr 14 21:10:56 2011 +0000
+
+    CHANGES: mib2c: PATCHES: 3175323: Fix handling of 'while (false)' blocks
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20179 06827809-a52a-0410-b366-d66718629ded
+
+commit 50239f6650586bb4b99205424592b7b5191d5404
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Apr 14 21:10:56 2011 +0000
+
+    CHANGES: mib2c: PATCHES: 3175323: Fix handling of 'while (false)' blocks
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20179 06827809-a52a-0410-b366-d66718629ded
+
+commit 5d5d6fd481528adf7ca01ec0790849ca73196dc2
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Apr 14 20:52:59 2011 +0000
+
+    CHANGES: mib2c: PATCHES: 3204883: Fix handling of non-table objects named fooTable
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20178 06827809-a52a-0410-b366-d66718629ded
+
+commit 3a8dca3143c5ca11443feb07f7af4bed808bdd32
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Apr 14 20:52:59 2011 +0000
+
+    CHANGES: mib2c: PATCHES: 3204883: Fix handling of non-table objects named fooTable
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20178 06827809-a52a-0410-b366-d66718629ded
+
+commit b4bc7b27cda499391b9ecb2cbe541e10c151abd5
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Apr 14 20:52:59 2011 +0000
+
+    CHANGES: mib2c: PATCHES: 3204883: Fix handling of non-table objects named fooTable
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20178 06827809-a52a-0410-b366-d66718629ded
+
+commit 6a29968cbdc0166a47a93d1c14d39a2e39fa98d2
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Apr 14 20:44:37 2011 +0000
+
+    CHANGES: mib2c: PATCHES: 3211484: Support enumerations in notification varbinds
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20177 06827809-a52a-0410-b366-d66718629ded
+
+commit 342ca9db5371cbad7fa96af32aced750c2d77db1
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Apr 14 20:44:37 2011 +0000
+
+    CHANGES: mib2c: PATCHES: 3211484: Support enumerations in notification varbinds
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20177 06827809-a52a-0410-b366-d66718629ded
+
+commit c6a71eaebef6c831daa36f57ec1ff230f052b330
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Thu Apr 14 20:44:37 2011 +0000
+
+    CHANGES: mib2c: PATCHES: 3211484: Support enumerations in notification varbinds
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20177 06827809-a52a-0410-b366-d66718629ded
+
+commit f08a1998071b6d4f4ec8d9f5fbf8aefe5629ce7a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 20:01:55 2011 +0000
+
+    Add missing system oids to mib
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20176 06827809-a52a-0410-b366-d66718629ded
+
+commit 3331e09bbec734034dbdb767e66c03e14a4548d5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 20:01:55 2011 +0000
+
+    Add missing system oids to mib
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20176 06827809-a52a-0410-b366-d66718629ded
+
+commit dd889d56abc4a6a2b76b1f7489ea55b0467be184
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 20:01:55 2011 +0000
+
+    Add missing system oids to mib
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20176 06827809-a52a-0410-b366-d66718629ded
+
+commit d9477251d154fbb526f53367b0b6ebcd1d2674ac
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 19:53:10 2011 +0000
+
+    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
+
+commit 79c698a1474e10855f210a6998708096712be608
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 19:53:10 2011 +0000
+
+    Fix for garbage output when agent presents more columns in bulk
+    response than our local MIB file  specified.
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20175 06827809-a52a-0410-b366-d66718629ded
+
+commit f394a266604af9f3e1b53ef6da375baa4a3901fe
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 19:53:10 2011 +0000
+
+    Fix for garbage output when agent presents more columns in bulk
+    response than our local MIB file  specified.
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20175 06827809-a52a-0410-b366-d66718629ded
+
+commit 007e76d6dc38acdfab756fe9bd8e23d82095b4c6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 19:50:08 2011 +0000
+
+    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
+
+commit f1edcfd049b760bc50104cfe82838ed2b3632861
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 19:50:08 2011 +0000
+
+    Fix wrong name for config token 'doNotRetainNotificationLogs'
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20174 06827809-a52a-0410-b366-d66718629ded
+
+commit af50924069a88b5badc084065e21b691f31f313d
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 19:50:08 2011 +0000
+
+    Fix wrong name for config token 'doNotRetainNotificationLogs'
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20174 06827809-a52a-0410-b366-d66718629ded
+
+commit 2fb0b89c2323db309b162d60a943c1e3a0a17d07
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 9 21:59:11 2011 +0000
+
+    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
+
+commit c3dbbd9fc57acbca999356cdf9be958cc11735ef
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 9 21:56:33 2011 +0000
+
+    HAVE_TM_TM_GMTOFF is HAVE_STRUCT_TM_TM_GMTOFF
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20172 06827809-a52a-0410-b366-d66718629ded
+
+commit b1cd21a4d71c17c122134ac3284917f65363e4d2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 9 20:04:29 2011 +0000
+
+    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
+
+commit c6659c94ad9ba8060dde18942761ce85d1a5cc19
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 9 19:50:30 2011 +0000
+
+    TZ is one hour off if HAVE_TM_TM_GMTOFF and SYSV (such is Linux)
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20169 06827809-a52a-0410-b366-d66718629ded
+
+----------------------------------------------------------------------
+
+Changes: V5.5 -> V5.5.1
+
+2011-03-18 11:15  dts12
 
    *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
-      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
-      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+      agent/mibgroup/Makefile.depend, apps/snmpnetstat/Makefile.depend, 
+        snmplib/Makefile.depend:
 
    make depend
 
-2011-06-01 15:42  dts12
+2011-03-18 10:36  dts12
 
-   * perl/SNMP/SNMP.xs:
-
-   Reinstate an "unused" label that is actually still required.
-   (referenced in line 2710)
-
-2011-06-01 15:32  dts12
-
-   * agent/mibgroup/ucd-snmp/disk.c:
-
-   Fix typo
-
-2011-06-01 15:08  dts12
-
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.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_data_list.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,   
@@ -141,437 +4792,52 @@
       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_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:
+      man/netsnmp_null_container.3, man/netsnmp_oid_stash.3,   
+      man/netsnmp_old_api.3, man/netsnmp_read_config.3,   
+      man/netsnmp_read_only.3, man/netsnmp_row_merge.3,   
+      man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3,   
+      man/netsnmp_serialize.3, man/netsnmp_snmp_agent.3,   
+      man/netsnmp_snmp_alarm.3, man/netsnmp_snmp_client.3,   
+      man/netsnmp_snmp_logging.3, man/netsnmp_snmp_pdu.3,   
+      man/netsnmp_snmp_session.3, man/netsnmp_stash_cache.3,   
+      man/netsnmp_stash_to_next.3, man/netsnmp_table.3,   
+      man/netsnmp_table_array.3, man/netsnmp_table_container.3,   
+      man/netsnmp_table_data.3, man/netsnmp_table_dataset.3,   
+      man/netsnmp_table_generic.3, man/netsnmp_table_indexes.3,   
+      man/netsnmp_table_iterator.3, man/netsnmp_table_iterator.h.3,   
+      man/netsnmp_table_maintenance.3, man/netsnmp_table_row.3,   
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
+      man/netsnmp_tools.h.3, man/netsnmp_util.3,   
+      man/netsnmp_utilities.3, man/netsnmp_variable_list.3,   
+      man/netsnmp_watcher.3:
 
    documentation update
 
-2011-06-01 14:51  dts12
+2011-03-18 10:32  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-05-31 22:49  hardaker
+2011-03-13 20:09  dts12
 
-   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c:
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c:
 
-   CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
-   comparing unsigned large indexes of the disk and extend tables.
+   Bring the naming of the large_fd_set select call into
+   line with the rest of the API.
 
-2011-05-31 12:30  jsafranek
+2011-03-13 20:06  dts12
 
-   * agent/mibgroup/host/hr_swrun.c:
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.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.
-
-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.
-
-2011-05-09 20:52  nba
-
-   * agent/mibgroup/if-mib/data_access/interface_ioctl.c:
-
-   Use symbolic named for ifType values
-
-2011-05-08 20:01  nba
-
-   *  agent/mibgroup/disman/ping/pingCtlTable.c,   
-      agent/mibgroup/disman/ping/pingCtlTable.h,   
-      agent/mibgroup/disman/ping/pingProbeHistoryTable.c,   
-      agent/mibgroup/disman/ping/pingResultsTable.c,   
-      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
-      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h,   
-      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c,   
-      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c,   
-      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c:
-
-   Fix warnings and data format for DateAndTime objects.
-   These modules work, but:
-   - They are Linux only
-   - Rows must be created with rowStatus createAndWait before they
-   are populated
-   - Agent must run as root
-   - Agent is blocked while tests run
-   - Data format for InetAddress objects is wrong. It is ASCII, not
-   binary
-   (making it easier to use from the command line, but ...)
-
-2011-05-07 15:22  bvassche
-
-   * perl/SNMP/SNMP.xs:
-
-   Removed an unused label from perl/SNMP/SNMP.xs.
-
-2011-05-06 21:32  hardaker
-
-   *  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
-
-2011-05-06 17:46  dts12
-
-   * CHANGES:
-
-   version update
-
-2011-05-06 17:37  dts12
-
-   * ChangeLog:
-
-   version update
-
-2011-05-06 17:35  dts12
-
-   * agent/mibgroup/Makefile.depend:
-
-   make depend
-
-2011-05-06 17:22  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
-
-2011-05-06 17:17  dts12
-
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
-
-   Version number update
-
-2011-05-06 13:50  dts12
-
-   * win32/dist/installer/net-snmp.nsi:
-
-   Fix incomplete uninstall configuration:
-   - broken removal of Microsoft DLL
-   - remove assorted new MIBs and header files
-
-2011-05-05 06:07  bvassche
-
-   * 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.
-
-2011-05-03 15:29  bvassche
-
-   * snmplib/winservice.c:
-
-   CHANGES: Win32: PATCH: 3293842: Eliminate registry argument limit
-   of 127 characters (this limitation was reported by Sylvain Dery).
-
-2011-05-02 11:22  bvassche
-
-   *  win32/net-snmp/net-snmp-config.h,   
-      win32/net-snmp/net-snmp-config.h.in:
-
-   CHANGES: Win32: header file <net-snmp/net-snmp-config.h> can now
-   be used in the MinGW environment.
-
-2011-04-29 11:17  bvassche
-
-   * snmplib/winservice.c:
-
-   Spelling and grammar fixes for the source code comments in
-   snmplib/winservice.c.
-
-2011-04-27 21:16  hardaker
-
-   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c:
-
-   Don't free the ifXTable row found on load failure as we don't own
-   it
-
-2011-04-15 13:42  dts12
-
-   * snmplib/snmp_api.c:
-
-   CHANGES: snmplib: PATCHES: 3183000: Fix calculation of common OID
-   prefix length
-   CHANGES: snmplib: BUGS: 3182985: Fix calculation of common OID
-   prefix length
-
-2011-04-14 21:31  dts12
-
-   * python/netsnmp/client_intf.c:
-
-   CHANGES: python: PATCHES: 3185085: Fix segfault on 64-bit systems
-
-2011-04-14 21:10  dts12
-
-   * local/mib2c:
-
-   CHANGES: mib2c: PATCHES: 3175323: Fix handling of 'while (false)'
-   blocks
-
-2011-04-14 20:52  dts12
-
-   * local/mib2c:
-
-   CHANGES: mib2c: PATCHES: 3204883: Fix handling of non-table
-   objects named fooTable
-
-2011-04-14 20:44  dts12
-
-   * local/mib2c:
-
-   CHANGES: mib2c: PATCHES: 3211484: Support enumerations in
-   notification varbinds
-
-2011-04-12 20:01  nba
-
-   * mibs/UCD-SNMP-MIB.txt:
-
-   Add missing system oids to mib
-
-2011-04-12 19:53  nba
-
-   * apps/snmptable.c:
-
-   Fix for garbage output when agent presents more columns in bulk
-   response than our local MIB file specified.
-
-2011-04-12 19:50  nba
-
-   * man/snmptrapd.8.def:
-
-   Fix wrong name for config token 'doNotRetainNotificationLogs'
-
-2011-03-15 12:37  dts12
-
-   * CHANGES, NEWS:
-
-   version update
-
-2011-03-15 10:57  dts12
-
-   * ChangeLog:
-
-   version update
-
-2011-03-15 10:56  dts12
-
-   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
-      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
-      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
-
-   make depend
-
-2011-03-15 10:42  dts12
-
-   *  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
-
-2011-03-15 10:41  dts12
-
-   * Makefile.top:
-
-   version update
-
-2011-03-12 06:59  rstory
-
-   * snmplib/container_binary_array.c:
-
-   CHANGES: snmplib: realloc+init instead of calloc
-   
-   inspired by patch 3195532 from Stephen Hemminger
-
-2011-03-12 05:47  rstory
-
-   *  agent/mibgroup/ip-forward-mib/data_access/route_common.c,   
-      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
-        
-      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
-         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
+   CHANGES: snmplib: PATCH: 3203806: Add the function
+   netsnmp_large_select()
+   (plus tweaks to netsnmp_large_fd_set_resize)
 
 2011-03-11 11:11  jsafranek
 
@@ -606,6 +4872,84 @@
    command is now wrong for *all* branches, rather
    than just most of them!)
 
+2011-02-25 11:49  dts12
+
+   *  man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3,   
+      man/netsnmp_agent_handler.h.3, man/netsnmp_agent_registry.3,   
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
+      man/netsnmp_container.3, man/netsnmp_container_iterator.3,   
+      man/netsnmp_container_iterator.h.3, man/netsnmp_data_list.3,   
+      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
+      man/netsnmp_handler.3, man/netsnmp_instance.3,   
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
+      man/netsnmp_multiplexer.3,   
+      man/netsnmp_netsnmp_agent_request_info_s.3,   
+      man/netsnmp_netsnmp_column_info_t.3,   
+      man/netsnmp_netsnmp_data_list_s.3,   
+      man/netsnmp_netsnmp_handler_registration_s.3,   
+      man/netsnmp_netsnmp_iterator_info_s.3,   
+      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
+      man/netsnmp_netsnmp_mib_handler_methods.3,   
+      man/netsnmp_netsnmp_mib_handler_s.3,   
+      man/netsnmp_netsnmp_monitor_callback_header_s.3,   
+      man/netsnmp_netsnmp_request_info_s.3,   
+      man/netsnmp_netsnmp_table_registration_info_s.3,   
+      man/netsnmp_netsnmp_table_request_info_s.3,   
+      man/netsnmp_null_container.3, man/netsnmp_oid_stash.3,   
+      man/netsnmp_old_api.3, man/netsnmp_read_config.3,   
+      man/netsnmp_read_only.3, man/netsnmp_row_merge.3,   
+      man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3,   
+      man/netsnmp_serialize.3, man/netsnmp_snmp_agent.3,   
+      man/netsnmp_snmp_alarm.3, man/netsnmp_snmp_client.3,   
+      man/netsnmp_snmp_logging.3, man/netsnmp_snmp_pdu.3,   
+      man/netsnmp_snmp_session.3, man/netsnmp_stash_cache.3,   
+      man/netsnmp_stash_to_next.3, man/netsnmp_table.3,   
+      man/netsnmp_table_array.3, man/netsnmp_table_container.3,   
+      man/netsnmp_table_data.3, man/netsnmp_table_dataset.3,   
+      man/netsnmp_table_generic.3, man/netsnmp_table_indexes.3,   
+      man/netsnmp_table_iterator.3, man/netsnmp_table_iterator.h.3,   
+      man/netsnmp_table_maintenance.3, man/netsnmp_table_row.3,   
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
+      man/netsnmp_tools.h.3, man/netsnmp_util.3,   
+      man/netsnmp_utilities.3, man/netsnmp_variable_list.3,   
+      man/netsnmp_watcher.3:
+
+   documentation update
+
+2011-02-25 11:41  dts12
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec, perl/ASN/ASN.pm,   
+      perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+        perl/TrapReceiver/TrapReceiver.pm,
+      perl/agent/Support/Support.pm,    perl/agent/agent.pm,
+      perl/agent/default_store/default_store.pm,   
+      perl/default_store/default_store.pm:
+
+   Version number update
+
+2011-02-25 11:39  dts12
+
+   * ChangeLog:
+
+   version update
+
+2011-02-25 11:15  dts12
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec, perl/ASN/ASN.pm,   
+      perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+        perl/TrapReceiver/TrapReceiver.pm,
+      perl/agent/Support/Support.pm,    perl/agent/agent.pm,
+      perl/agent/default_store/default_store.pm,   
+      perl/default_store/default_store.pm:
+
+   Version number update
+
 2011-02-25 11:10  dts12
 
    * snmplib/snmpv3.c:
@@ -616,8 +4960,7 @@
 
    * apps/snmptable.c:
 
-   Fix bug 3118631: snmptable segfaults if index contains :
-   character
+   Fix bug 3118631: snmptable segfaults if index contains : character
 
 2011-02-23 09:30  nba
 
@@ -625,11 +4968,78 @@
 
    FreeBSD 8 support
 
-2011-02-21 19:08  hardaker
+2011-02-22 15:25  dts12
 
-   * dist/makerelease.xml:
+   * agent/mibgroup/host/hr_swinst.c:
 
-   Updated comment about where makerelease comes from (now github)
+   Revert a bogus change that crept into the code.
+
+2011-02-22 08:55  dts12
+
+   * {everything}:
+
+   Fix 5.5.x branch structure
+
+2011-02-21 13:44  dts12
+
+   * configure:
+
+   Version number update
+
+2011-02-21 13:24  dts12
+
+   *  man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3,   
+      man/netsnmp_agent_handler.h.3, man/netsnmp_agent_registry.3,   
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
+      man/netsnmp_container.3, man/netsnmp_container_iterator.3,   
+      man/netsnmp_container_iterator.h.3, man/netsnmp_data_list.3,   
+      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
+      man/netsnmp_handler.3, man/netsnmp_instance.3,   
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
+      man/netsnmp_multiplexer.3,   
+      man/netsnmp_netsnmp_agent_request_info_s.3,   
+      man/netsnmp_netsnmp_column_info_t.3,   
+      man/netsnmp_netsnmp_data_list_s.3,   
+      man/netsnmp_netsnmp_handler_registration_s.3,   
+      man/netsnmp_netsnmp_iterator_info_s.3,   
+      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
+      man/netsnmp_netsnmp_mib_handler_methods.3,   
+      man/netsnmp_netsnmp_mib_handler_s.3,   
+      man/netsnmp_netsnmp_monitor_callback_header_s.3,   
+      man/netsnmp_netsnmp_request_info_s.3,   
+      man/netsnmp_netsnmp_table_registration_info_s.3,   
+      man/netsnmp_netsnmp_table_request_info_s.3,   
+      man/netsnmp_null_container.3, man/netsnmp_oid_stash.3,   
+      man/netsnmp_old_api.3, man/netsnmp_read_config.3,   
+      man/netsnmp_read_only.3, man/netsnmp_row_merge.3,   
+      man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3,   
+      man/netsnmp_serialize.3, man/netsnmp_snmp_agent.3,   
+      man/netsnmp_snmp_alarm.3, man/netsnmp_snmp_client.3,   
+      man/netsnmp_snmp_logging.3, man/netsnmp_snmp_pdu.3,   
+      man/netsnmp_snmp_session.3, man/netsnmp_stash_cache.3,   
+      man/netsnmp_stash_to_next.3, man/netsnmp_table.3,   
+      man/netsnmp_table_array.3, man/netsnmp_table_container.3,   
+      man/netsnmp_table_data.3, man/netsnmp_table_dataset.3,   
+      man/netsnmp_table_generic.3, man/netsnmp_table_indexes.3,   
+      man/netsnmp_table_iterator.3, man/netsnmp_table_iterator.h.3,   
+      man/netsnmp_table_maintenance.3, man/netsnmp_table_row.3,   
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
+      man/netsnmp_tools.h.3, man/netsnmp_util.3,   
+      man/netsnmp_utilities.3, man/netsnmp_variable_list.3,   
+      man/netsnmp_watcher.3:
+
+   documentation update
+
+2011-02-21 13:17  dts12
+
+   *  FAQ, README, agent/mibgroup/host/hr_swinst.c, configure,   
+      configure.ac, dist/Makefile, dist/net-snmp.spec:
+
+   Version number update
 
 2011-02-21 11:14  bvassche
 
@@ -689,6 +5099,12 @@
 
    rerun autoheader/autoconf
 
+2011-02-15 21:26  nba
+
+   * m4/netsnmp_search_libs.m4:
+
+   Too much quoting is bad
+
 2011-02-15 21:11  nba
 
    *  agent/mibgroup/mibII.h, agent/mibgroup/mibII/ipv6.c,   
@@ -710,6 +5126,25 @@
 
    Filter IPv6 entries from IPv4 table
 
+2011-02-15 20:42  nba
+
+   *  agent/mibgroup/host/data_access/swrun.h,   
+      agent/mibgroup/host/data_access/swrun_kinfo.c:
+
+   Proper use of getproc2 and dragonfly support
+
+2011-02-15 20:41  nba
+
+   * agent/mibgroup/hardware/fsys/fsys_getfsstats.c:
+
+   getvfsstat is only for NetBSD
+
+2011-02-15 20:39  nba
+
+   * configure.d/config_os_libs1, configure.d/config_os_libs2:
+
+   Detect need for -lkvm in proper time
+
 2011-02-14 14:38  bvassche
 
    * agent/snmpd.c:
@@ -811,6 +5246,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:
@@ -836,12 +5277,43 @@
    fgets() from it. snmpd should continue with other processes and
    not to stop.
 
+2011-01-19 13:57  jsafranek
+
+   * configure.d/config_os_libs1:
+
+   Make us compatible with rpm-4.9, rpmGetFilesystemList does not
+   exist anymore, so the configure script should not check it.
+
+2011-01-19 06:31  nba
+
+   * configure.d/config_os_libs1:
+
+   diskIOLAx requires exp which may require -lm
+
 2011-01-19 06:20  nba
 
    * acconfig.h:
 
    Define DRAGONFLYID
 
+2011-01-18 22:01  nba
+
+   * agent/mibgroup/host/hr_swrun.c:
+
+   typo
+
+2011-01-18 21:56  nba
+
+   * configure.d/config_os_libs1:
+
+   Check for -lkinfo
+
+2011-01-18 21:54  nba
+
+   * agent/mibgroup/if-mib/data_access/interface.h:
+
+   Find proper if-mib interface for NetBSD
+
 2011-01-14 12:28  jsafranek
 
    * agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c:
@@ -860,6 +5332,22 @@
    [1]:
    http://sourceforge.net/mailarchive/forum.php?thread_name=20060920134935.35b36ed6%40dev.futz.org&forum_name=net-snmp-coders
 
+2011-01-14 08:39  bvassche
+
+   *  configure, configure.d/config_os_progs, net-snmp-config.in,   
+      snmplib/Makefile.in:
+
+   CHANGES: Cygwin: libnetsnmp does now build as a DLL when
+   configured with --enable-shared.
+   CHANGES: Cygwin: perl modules do now build (--with-perl-modules).
+   (Backported r18825 from the trunk.)
+
+2011-01-14 08:22  bvassche
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   Regenerated with autoreconf -iv.
+
 2011-01-14 06:25  rstory
 
    * agent/mibgroup/agentx/protocol.c:
@@ -873,15 +5361,101 @@
    Ensure releases are installed to the correct path within the
    /tags SVN tree
 
+2011-01-13 15:45  dts12
+
+   * CHANGES, NEWS:
+
+   version update
+
+2011-01-13 15:33  dts12
+
+   * ChangeLog:
+
+   version update
+
+2011-01-13 15:26  dts12
+
+   * agent/mibgroup/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
 2011-01-13 15:15  dts12
 
    * agent/mibgroup/mibII/kernel_netbsd.c:
 
    Remove C++ comments
 
+2011-01-13 14:55  dts12
+
+   *  man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3,   
+      man/netsnmp_agent_handler.h.3, man/netsnmp_agent_registry.3,   
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
+      man/netsnmp_container.3, man/netsnmp_container_iterator.3,   
+      man/netsnmp_container_iterator.h.3, man/netsnmp_data_list.3,   
+      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
+      man/netsnmp_handler.3, man/netsnmp_instance.3,   
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
+      man/netsnmp_multiplexer.3,   
+      man/netsnmp_netsnmp_agent_request_info_s.3,   
+      man/netsnmp_netsnmp_column_info_t.3,   
+      man/netsnmp_netsnmp_data_list_s.3,   
+      man/netsnmp_netsnmp_handler_registration_s.3,   
+      man/netsnmp_netsnmp_iterator_info_s.3,   
+      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
+      man/netsnmp_netsnmp_mib_handler_methods.3,   
+      man/netsnmp_netsnmp_mib_handler_s.3,   
+      man/netsnmp_netsnmp_monitor_callback_header_s.3,   
+      man/netsnmp_netsnmp_request_info_s.3,   
+      man/netsnmp_netsnmp_table_registration_info_s.3,   
+      man/netsnmp_netsnmp_table_request_info_s.3,   
+      man/netsnmp_null_container.3, man/netsnmp_oid_stash.3,   
+      man/netsnmp_old_api.3, man/netsnmp_read_config.3,   
+      man/netsnmp_read_only.3, man/netsnmp_row_merge.3,   
+      man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3,   
+      man/netsnmp_serialize.3, man/netsnmp_snmp_agent.3,   
+      man/netsnmp_snmp_alarm.3, man/netsnmp_snmp_client.3,   
+      man/netsnmp_snmp_logging.3, man/netsnmp_snmp_pdu.3,   
+      man/netsnmp_snmp_session.3, man/netsnmp_stash_cache.3,   
+      man/netsnmp_stash_to_next.3, man/netsnmp_table.3,   
+      man/netsnmp_table_array.3, man/netsnmp_table_container.3,   
+      man/netsnmp_table_data.3, man/netsnmp_table_dataset.3,   
+      man/netsnmp_table_generic.3, man/netsnmp_table_indexes.3,   
+      man/netsnmp_table_iterator.3, man/netsnmp_table_iterator.h.3,   
+      man/netsnmp_table_maintenance.3, man/netsnmp_table_row.3,   
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
+      man/netsnmp_tools.h.3, man/netsnmp_util.3,   
+      man/netsnmp_utilities.3, man/netsnmp_variable_list.3,   
+      man/netsnmp_watcher.3:
+
+   documentation update
+
+2011-01-13 14:42  dts12
+
+   * configure:
+
+   Version number update
+
+2011-01-13 14:41  dts12
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2011-01-13 13:17  dts12
+
+   * agent/auto_nlist.c:
+
+   Fix broken patch
+
 2011-01-13 12:14  dts12
 
-   * configure, configure.in:
+   *  configure, configure.d/config_os_functions,   
+      configure.d/config_os_headers:
 
    Configure fixes for DragonFly support
 
@@ -929,7 +5503,8 @@
 
 2011-01-12 14:37  rstory
 
-   *  agent/mibgroup/if-mib/ifTable/ifTable.c,   
+   *  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,
         
@@ -939,10 +5514,14 @@
       
       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/notification-log-mib/notification_log.c,   
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c,
+         agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.c,   
       agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c,
          agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c:
 
@@ -988,12 +5567,12 @@
       agent/mibgroup/ucd-snmp/memory_freebsd2.c,   
       agent/mibgroup/ucd-snmp/vmstat_freebsd2.c:
 
-   CHANGES: NetBSD: DragonFly support
+   NEWS: NetBSD: DragonFly support
    [From NetBSD patch archive]
 
 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]
@@ -1021,7 +5600,7 @@
 
 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]
@@ -1033,9 +5612,16 @@
    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
@@ -1091,6 +5677,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 +5718,14 @@
 
    *  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 00:47  magfr
 
-   * acconfig.h:
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in:
 
    Update acconfig.h with changes from r19819.
    Rerun autoheader.
@@ -1170,6 +5774,13 @@
    Update retrieval of cache usage statistics on FreeBSD
    [From FreeBSD patch archive]
 
+2011-01-07 14:31  dts12
+
+   * agent/mibgroup/mibII/system_mib.c:
+
+   Fix handling of sysObjectID length
+   (backport of revisions 19382 & 19404)
+
 2011-01-07 14:20  dts12
 
    * include/net-snmp/net-snmp-config.h.in:
@@ -1177,6 +5788,12 @@
    Increase maximum size of execute output cache
    [From FreeBSD patch archive]
 
+2011-01-07 14:10  dts12
+
+   * agent/mibgroup/sctp-mib/sctpTables_freebsd.c:
+
+   Add missing standard Net-SNMP header files
+
 2011-01-07 14:09  dts12
 
    *  agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c,   
@@ -1277,12 +5894,12 @@
    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-05 14:06  dts12
 
@@ -1304,18 +5921,47 @@
 
    Copyright update for 2011
 
+2011-01-04 12:19  bvassche
+
+   * agent/mibgroup/mibII/var_route.c:
+
+   Fix compiler warnings triggered by the Win32 MIB-II
+   implementation (backported r19790 from the trunk).
+
+2011-01-04 12:17  bvassche
+
+   * agent/mibgroup/sctp-mib/sctpScalars.c:
+
+   Removed two unused variables from the sctp-mib implementation
+   (backported r19780 from the trunk).
+
+2011-01-04 12:15  bvassche
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   Fixed a recently introduced mismatch between format specification
+   and argument list in the ip-mib implementation (backported r19779
+   from the trunk).
+
+2011-01-02 05:42  rstory
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
+
+   CHANGES: snmpd: skip non-AF_INET interfaces when loading ipv4
+   addrs
+
 2010-12-29 01:37  hardaker
 
    * agent/mibgroup/agentx/protocol.c:
 
-   NEWS: snmpd: Patch 3141462: from fenner: fix agentx subagent
+   CHANGES: snmpd: PATCHES: 3141462: fix agentx subagent
    issues with multiple-object requests
 
 2010-12-29 01:33  hardaker
 
    * snmplib/vacm.c:
 
-   NEWS: snmpd: Patch from Niels to fix VACM persistant storage.
+   CHANGES: snmpd: Patch from Niels to fix VACM persistant storage.
 
 2010-12-21 11:29  dts12
 
@@ -1323,6 +5969,146 @@
 
    Bring all versions of makerelease.xml into line
 
+2010-12-21 09:44  dts12
+
+   * ChangeLog:
+
+   version update
+
+2010-12-21 09:25  dts12
+
+	* man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3,
+	  man/netsnmp_agent_handler.h.3, man/netsnmp_agent_registry.3,
+	  man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
+	  man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
+	  man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
+	  man/netsnmp_container.3, man/netsnmp_container_iterator.3,
+	  man/netsnmp_container_iterator.h.3, man/netsnmp_data_list.3,
+	  man/netsnmp_debug.3, man/netsnmp_default_store.3,
+	  man/netsnmp_handler.3, man/netsnmp_instance.3,
+	  man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
+	  man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
+	  man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
+	  man/netsnmp_multiplexer.3,
+	  man/netsnmp_netsnmp_agent_request_info_s.3,
+	  man/netsnmp_netsnmp_column_info_t.3,
+	  man/netsnmp_netsnmp_data_list_s.3,
+	  man/netsnmp_netsnmp_handler_registration_s.3,
+	  man/netsnmp_netsnmp_iterator_info_s.3,
+	  man/netsnmp_netsnmp_mib_handler_access_methods.3,
+	  man/netsnmp_netsnmp_mib_handler_methods.3,
+	  man/netsnmp_netsnmp_mib_handler_s.3,
+	  man/netsnmp_netsnmp_monitor_callback_header_s.3,
+	  man/netsnmp_netsnmp_request_info_s.3,
+	  man/netsnmp_netsnmp_table_registration_info_s.3,
+	  man/netsnmp_netsnmp_table_request_info_s.3,
+	  man/netsnmp_null_container.3, man/netsnmp_oid_stash.3,
+	  man/netsnmp_old_api.3, man/netsnmp_read_config.3,
+	  man/netsnmp_read_only.3, man/netsnmp_row_merge.3,
+	  man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3,
+	  man/netsnmp_serialize.3, man/netsnmp_snmp_agent.3,
+	  man/netsnmp_snmp_alarm.3, man/netsnmp_snmp_client.3,
+	  man/netsnmp_snmp_logging.3, man/netsnmp_snmp_pdu.3,
+	  man/netsnmp_snmp_session.3, man/netsnmp_stash_cache.3,
+	  man/netsnmp_stash_to_next.3, man/netsnmp_table.3,
+	  man/netsnmp_table_array.3, man/netsnmp_table_container.3,
+	  man/netsnmp_table_data.3, man/netsnmp_table_dataset.3,
+	  man/netsnmp_table_generic.3, man/netsnmp_table_indexes.3,
+	  man/netsnmp_table_iterator.3, man/netsnmp_table_iterator.h.3,
+	  man/netsnmp_table_maintenance.3, man/netsnmp_table_row.3,
+	  man/netsnmp_table_rows.3, man/netsnmp_tdata.3,
+	  man/netsnmp_tools.h.3, man/netsnmp_util.3,
+	  man/netsnmp_utilities.3, man/netsnmp_variable_list.3,
+	  man/netsnmp_watcher.3:
+	  documentation update
+	  (re-running makerelease)
+
+2010-12-21 09:16  dts12
+
+	* CHANGES, NEWS, configure:
+	  Version number update
+	  (re-running makerelease)
+	  Actually log of recent significant changes
+
+2010-12-20 16:10  dts12
+
+	* ChangeLog:
+	  version update
+
+2010-12-20 16:07  dts12
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
+2010-12-20 15:45  dts12
+
+   *  man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3,   
+      man/netsnmp_agent_handler.h.3, man/netsnmp_agent_registry.3,   
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
+      man/netsnmp_container.3, man/netsnmp_container_iterator.3,   
+      man/netsnmp_container_iterator.h.3, man/netsnmp_data_list.3,   
+      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
+      man/netsnmp_handler.3, man/netsnmp_instance.3,   
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
+      man/netsnmp_multiplexer.3,   
+      man/netsnmp_netsnmp_agent_request_info_s.3,   
+      man/netsnmp_netsnmp_column_info_t.3,   
+      man/netsnmp_netsnmp_data_list_s.3,   
+      man/netsnmp_netsnmp_handler_registration_s.3,   
+      man/netsnmp_netsnmp_iterator_info_s.3,   
+      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
+      man/netsnmp_netsnmp_mib_handler_methods.3,   
+      man/netsnmp_netsnmp_mib_handler_s.3,   
+      man/netsnmp_netsnmp_monitor_callback_header_s.3,   
+      man/netsnmp_netsnmp_request_info_s.3,   
+      man/netsnmp_netsnmp_table_registration_info_s.3,   
+      man/netsnmp_netsnmp_table_request_info_s.3,   
+      man/netsnmp_null_container.3, man/netsnmp_oid_stash.3,   
+      man/netsnmp_old_api.3, man/netsnmp_read_config.3,   
+      man/netsnmp_read_only.3, man/netsnmp_row_merge.3,   
+      man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3,   
+      man/netsnmp_serialize.3, man/netsnmp_snmp_agent.3,   
+      man/netsnmp_snmp_alarm.3, man/netsnmp_snmp_client.3,   
+      man/netsnmp_snmp_logging.3, man/netsnmp_snmp_pdu.3,   
+      man/netsnmp_snmp_session.3, man/netsnmp_stash_cache.3,   
+      man/netsnmp_stash_to_next.3, man/netsnmp_table.3,   
+      man/netsnmp_table_array.3, man/netsnmp_table_container.3,   
+      man/netsnmp_table_data.3, man/netsnmp_table_dataset.3,   
+      man/netsnmp_table_generic.3, man/netsnmp_table_indexes.3,   
+      man/netsnmp_table_iterator.3, man/netsnmp_table_iterator.h.3,   
+      man/netsnmp_table_maintenance.3, man/netsnmp_table_row.3,   
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
+      man/netsnmp_tools.h.3, man/netsnmp_util.3,   
+      man/netsnmp_utilities.3, man/netsnmp_variable_list.3,   
+      man/netsnmp_watcher.3:
+
+   documentation update
+
+2010-12-20 15:23  dts12
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec, perl/ASN/ASN.pm,   
+      perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+        perl/TrapReceiver/TrapReceiver.pm,
+      perl/agent/Support/Support.pm,    perl/agent/agent.pm,
+      perl/agent/default_store/default_store.pm,   
+      perl/default_store/default_store.pm:
+
+   Version number update
+
+2010-12-20 14:07  dts12
+
+   * Makefile.top:
+
+   version update
+
 2010-12-10 15:50  hardaker
 
    * agent/agent_trap.c, snmplib/snmpusm.c:
@@ -1343,6 +6129,13 @@
    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 16:24  hardaker
 
    * apps/snmptrap.c:
@@ -1379,6 +6172,15 @@
    CHANGES: snmpd: PATCH: 3053436: from: takevos: fix:
    tcpListenerTable_data_access invalid memory access
 
+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 04:58  hardaker
 
    * agent/mibgroup/ip-mib/data_access/systemstats_linux.c:
@@ -1406,6 +6208,15 @@
    
    netsnmp_cache_is_valid() is not meant for mib modules
 
+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,12 +6226,6 @@
    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
-
-   * agent/mibgroup/struct.h:
-
-   Builds again.
-
 2010-11-11 22:48  nba
 
    * agent/mibgroup/notification-log-mib/notification_log.c:
@@ -1428,9 +6233,17 @@
    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-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
@@ -1504,12 +6317,48 @@
    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:52  bvassche
+
+   *  Makefile.in, configure, configure.ac,   
+      configure.d/config_os_headers, configure.d/config_os_libs,   
+      configure.d/config_os_libs1, configure.d/config_os_libs2:
+
+   CHANGES: agent: Fixed order of rpmlib detection and agent module
+   configuration (backported r19621 from the trunk).
+
+2010-11-05 14:36  bvassche
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   Reverted r19623.
+
+2010-11-05 13:42  bvassche
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   Regenerated include/net-snmp/net-snmp-config.h.in.
+
+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:48  bvassche
 
@@ -1531,18 +6380,11 @@
    Backported r19602, which fixes the double free at exit that was
    introduced by r19462.
 
-2010-11-03 14:59  bvassche
-
-   * configure, configure.in:
-
-   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
+2010-11-03 14:51  bvassche
 
    * include/net-snmp/agent/instance.h:
 
-   Fixed an incorrect file header (a source code comment).
+   Forward-ported r19608.
 
 2010-11-01 16:50  dts12
 
@@ -1559,10 +6401,10 @@
 
 2010-11-01 16:30  dts12
 
-   *  man/snmp_sess_api.3.def, man/snmpbulkget.1.def,   
-      man/snmpbulkwalk.1.def, man/snmpget.1.def, man/snmpgetnext.1.def, 
-        man/snmpset.1.def, man/snmptrap.1.def, man/snmptrapd.8.def,   
-      man/snmpwalk.1.def:
+   *  man/session_api.3.def, man/snmp_sess_api.3.def,   
+      man/snmpbulkget.1.def, man/snmpbulkwalk.1.def, man/snmpget.1.def, 
+        man/snmpgetnext.1.def, man/snmpset.1.def, man/snmptrap.1.def,   
+      man/snmptrapd.8.def, man/snmpwalk.1.def:
 
    Remove CMU copyright notice from man pages that
    were not inherited from CMU-SNMP
@@ -1570,22 +6412,24 @@
 
 2010-11-01 13:55  dts12
 
-   *  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:
+   *  man/config_api.3.def, man/encode_keychange.1.def,   
+      man/fixproc.1.def, man/mib2c-update.1.def, man/mib2c.1.def,   
+      man/mib_api.3.def, man/net-snmp-config.1.def,   
+      man/net-snmp-create-v3-user.1.def, man/pdu_api.3.def,   
+      man/session_api.3.def, man/snmp.conf.5.def,   
+      man/snmp_agent_api.3.def, man/snmp_alarm.3.def,   
+      man/snmp_config.5.def, man/snmp_sess_api.3.def,   
+      man/snmp_trap_api.3.def, man/snmpbulkget.1.def,   
+      man/snmpbulkwalk.1.def, man/snmpcmd.1.def, man/snmpconf.1.def,   
+      man/snmpd.8.def, man/snmpd.conf.5.def, man/snmpd.examples.5.def,  
+       man/snmpd.internal.5.def, man/snmpdelta.1.def, man/snmpdf.1.def, 
+        man/snmpget.1.def, man/snmpgetnext.1.def, man/snmpnetstat.1.def,
+         man/snmpset.1.def, man/snmpstatus.1.def, man/snmptable.1.def,  
+       man/snmptest.1.def, man/snmptranslate.1.def, man/snmptrap.1.def, 
+        man/snmptrapd.8.def, man/snmptrapd.conf.5.def,
+      man/snmpusm.1.def,    man/snmpvacm.1.def, man/snmpwalk.1.def,
+      man/tkmib.1.def,    man/traptoemail.1.def, man/varbind_api.3.def, 
+        man/variables.5.def:
 
    Suppress forcing of "Berkeley Distribution" footer
    (Allows Net-SNMP version information to be displayed in the man
@@ -1593,9 +6437,9 @@
 
 2010-11-01 13:42  dts12
 
-   *  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/config_api.3.def, man/mib2c.1.def, man/mib_api.3.def,   
+      man/session_api.3.def, man/snmp.conf.5.def,   
+      man/snmp_agent_api.3.def, man/snmp_alarm.3.def,   
       man/snmp_sess_api.3.def, man/snmp_trap_api.3.def,   
       man/snmpbulkget.1.def, man/snmpbulkwalk.1.def, man/snmpcmd.1.def, 
         man/snmpconf.1.def, man/snmpd.8.def, man/snmpd.conf.5.def,   
@@ -1615,6 +6459,26 @@
 
    Spelling fix in log texts: containter -> container.
 
+2010-10-29 11:34  bvassche
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   Backported r19588 and r19589 from the trunk.
+
+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-29 07:55  bvassche
+
+   * testing/eval_tools.sh:
+
+   Backported ISDEFINED from the trunk.
+
 2010-10-28 14:02  dts12
 
    * local/mib2c.check_values.conf:
@@ -1644,12 +6508,6 @@
    longer necessary to cast these two arguments (has been reverted
    via r19568).
 
-2010-10-28 10:06  bvassche
-
-   * testing/eval_tools.sh:
-
-   Backported ISDEFINED from r18670.
-
 2010-10-25 20:59  dts12
 
    * Makefile.in:
@@ -1684,6 +6542,26 @@
    CHANGES: Win32: testing: Avoid that T200 fails on known Microsoft
    SNMP extension DLL bugs.
 
+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-22 09:20  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   CHANGES: agent: netsnmp_cache_free(): A more detailed message is
+   now logged when attempting to free a cache that is still in the
+   cache list.
+   (Backported r19524.)
+
 2010-10-22 09:19  bvassche
 
    * agent/agent_registry.c:
@@ -1701,7 +6579,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()
@@ -1726,6 +6604,13 @@
    analyzer supports following child processes.
    (Backported r19283 from the trunk.)
 
+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 18:08  bvassche
 
    *  win32/net-snmp/net-snmp-config.h,   
@@ -1783,6 +6668,33 @@
    uninitialized data for the buffers returned by
    netsnmp_callback_recv() and netsnmp_callback_hook_build().
 
+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:24  bvassche
 
    * agent/mibgroup/agentx/protocol.h:
@@ -1792,7 +6704,7 @@
 
 2010-10-16 08:37  bvassche
 
-   * configure, configure.in:
+   * configure, configure.d/config_modules_agent:
 
    Spelling fix: dulpicate -> duplicate.
 
@@ -1828,9 +6740,18 @@
    handler no longer causes a crash (double free) when
    handler->myvoid of the original handler was non-NULL.
 
+2010-10-15 10:56  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: Win32: building: Builds now correctly with a 64-bit
+   compiler.
+
 2010-10-15 10:02  bvassche
 
-   * agent/agent_handler.c, man/netsnmp_handler.3:
+   *  agent/agent_handler.c, man/netsnmp_agent_handler.h.3,   
+      man/netsnmp_handler.3:
 
    Spelling fix: dulpicates -> duplicates.
 
@@ -1848,13 +6769,21 @@
    se_add_pair_to_list() with a value that already existed in the
    list.
 
-2010-10-13 16:53  hardaker
+2010-10-13 16:55  hardaker
 
    * dist/autoconf-version, testing/tests/T000configure:
 
    added a autoconf version checking test to catch developers and
    scripts that fail to use the correct autoconf version
 
+2010-10-13 11:53  bvassche
+
+   *  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 07:43  bvassche
 
    * net-snmp-config.in:
@@ -1901,6 +6830,20 @@
    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-08-24 05:37  magfr
 
    * apps/snmpusm.c:
@@ -1929,6 +6872,13 @@
    CHANGES: snmpd: patch 2825653: from bru5ce: fix sendmail.cf
    parsing in certain conditions
 
+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,6 +6892,13 @@
    CHANGES: snmpd: PATCH: 2904900: Documentation plus assorted
    handler code fixes
 
+2010-08-13 23:44  hardaker
+
+   * agent/mibgroup/mibII/system_mib.c:
+
+   CHANGES: snmpd: PATCH: 3044512: from philwebster: fix sysobjectid
+   directive.
+
 2010-08-13 12:22  dts12
 
    * local/mib2c.table_data.conf:
@@ -1960,6 +6917,13 @@
 
    Update "auth*" usage message with context support
 
+2010-08-03 07:27  dts12
+
+   * agent/mibgroup/hardware/fsys/fsys_mntctl.c:
+
+   AIX filesystem types are tagged as integers, not strings.
+   Fix a silly mistake.
+
 2010-08-01 06:00  bvassche
 
    * snmplib/snmp_enum.c:
@@ -1989,7 +6953,9 @@
 
 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.
@@ -2003,6 +6969,14 @@
    CHANGES: mibs: patch 2974716: from bvassche: fix issues in the
    SMUX-MIB
 
+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:36  dts12
 
    * snmplib/snmp_transport.c:
@@ -2011,6 +6985,12 @@
    when opening a new SNMP session.
    Fixes a bug with reporting later config errors.
 
+2010-07-21 18:03  nba
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   r17495 erroneously disabled diskIOLAx for linux
+
 2010-07-20 10:38  jsafranek
 
    * snmplib/system.c:
@@ -2040,6 +7020,14 @@
    interfaces table does not trigger out-of-range array accesses
    (was detected by BoundsChecker).
 
+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-08 12:17  dts12
 
    * agent/agent_read_config.c:
@@ -2064,22 +7052,21 @@
    *  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
+2010-06-28 00:20  tanders
 
-   * agent/object_monitor.c:
+   * man/config_api.3:
 
-   fix cpp syntax error
+   remove generated manual page from repository (partly revert
+   r17558)
 
 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
@@ -2117,19 +7104,35 @@
 
    Fixed an error in a comment block.
 
-2010-06-16 19:14  dts12
+2010-06-21 08:01  dts12
 
-   * snmplib/vacm.c:
+   * snmplib/large_fd_set.c:
 
-   Fix processing of view masks (misplaced parentheses)
+   Ensure that fdset structure is resized sufficiently
+   to accomodate the specified socket ID.
+   Problem reported by Shiyalei.
 
-2010-06-07 20:18  jsafranek
+2010-06-21 07:56  dts12
 
    * agent/mibgroup/host/hr_proc.c:
 
    Reverting rev. 17616, the necessary check is already in rev.
    17415.
 
+2010-06-18 17:04  bvassche
+
+   * configure, configure.d/config_os_libs:
+
+   CHANGES: Linux: builds again with embedded Perl disabled (bug
+   2985915).
+   (Backported r18721)
+
+2010-06-16 19:14  dts12
+
+   * snmplib/vacm.c:
+
+   Fix processing of view masks (misplaced parentheses)
+
 2010-06-02 10:57  jsafranek
 
    *  agent/mibgroup/disman/mteEventTable.c,   
@@ -2159,150 +7162,206 @@
    CHANGES: snmpd: BUG: 2972579: fixed checking of
    snmpTargetAddrRowStatus SET requests.
 
-2010-05-27 06:49  bvassche
+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-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-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-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-18 23:47  tanders
+
+   *  agent/mibgroup/host/data_access/swinst_pkginfo.c,   
+      agent/object_monitor.c:
+
+   fix syntax errors: #elsif -> #elif
+
+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-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 07:46  jsafranek
+
+   * configure, configure.ac:
+
+   Check configure.d/config_os_headers before
+   configure.d/config_modules_* and fix lm_sensors version detection
+
+2010-05-17 06:53  bvassche
+
+   * configure, configure.d/config_modules_lib:
+
+   CHANGES: Cygwin: do neither compile nor link inet_ntop.c and
+   inet_pton.c.
+
+2010-05-16 10:05  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: Win32: building: don't warn about signed/unsigned
+   mismatches in comparisons, just like for the Unix builds.
+   (Backported this change from the trunk.)
+
+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-14 11:04  bvassche
 
-   * ChangeLog:
+   * agent/mibgroup/winExtDLL.c:
 
-   version update
+   Changed assert() into netsnmp_assert() (backported r18353
+   partially).
 
--------------------------------------------------------------------------------
-Changes: V5.4.2 -> V5.4.3
+2010-05-14 11:00  bvassche
 
-2010-05-23 20:42  dts12
+   * README.win32:
 
-   *  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: updated Cygwin build instructions.
 
-   documentation update
+2010-05-14 08:54  bvassche
 
-2010-05-23 20:39  dts12
+   * net-snmp-config.in:
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/parse.c, snmplib/snmp_version.c:
+   Reverted net-snmp-config.in changes from r18688 because although
+   these changes made the Perl modules build, the Perl module
+   regression tests still failed.
 
-   Version number update
+2010-05-13 14:35  jsafranek
 
-2010-05-14 12:46  dts12
+   * include/net-snmp/library/snmp_logging.h:
 
-   * CHANGES, NEWS:
+   add NETSNMP_LOGONCE macro from trunk
 
-   version update
+2010-05-13 09:18  bvassche
 
-2010-05-14 12:41  dts12
+   * configure, include/net-snmp/net-snmp-config.h.in:
 
-   * ChangeLog:
+   Ran autoreconf -i.
 
-   version update
+2010-05-12 14:14  jsafranek
 
-2010-05-14 12:28  dts12
+   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c:
 
-   * snmplib/Makefile.depend:
+   CHANGES: snmpd: fixed a memory leak in TCP-MIB.
 
-   make depend
+2010-05-12 13:02  jsafranek
 
-2010-05-14 12:19  dts12
+   * agent/mibgroup/hardware/sensors/lmsensors_v3.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:
+   CHANGES: snmpd: fixed memory leak when reading sensors for
+   LM-SENSORS-MIB.
 
-   documentation update
-
-2010-05-14 12:10  dts12
-
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
-
-   Version number update
-
-2010-05-11 17:26  bvassche
+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-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,11 +7371,47 @@
 
    Fix perl build under Windows (strtoull not available)
 
+2010-05-11 10:14  bvassche
+
+   *  net-snmp-config.in, perl/ASN/Makefile.PL, perl/Makefile.PL,   
+      perl/Makefile.subs.pl, perl/OID/Makefile.PL,   
+      perl/SNMP/Makefile.PL, perl/TrapReceiver/Makefile.PL,   
+      perl/agent/Makefile.PL, perl/agent/Support/Makefile.PL,   
+      perl/agent/default_store/Makefile.PL,   
+      perl/default_store/Makefile.PL:
+
+   CHANGES: Cygwin: builds now with embedded Perl support enabled
+   (embedded Perl regression tests do not yet pass however).
+
+2010-05-10 20:31  bvassche
+
+   * configure, configure.d/config_modules_lib:
+
+   CHANGES: Cygwin: removed winpipe.c from the list of source files.
+   CHANGES: Cygwin: enabled Unix transport.
+
+2010-05-09 16:46  bvassche
+
+   *  configure, configure.d/config_modules_agent,   
+      configure.d/config_os_headers, configure.d/config_os_libs,   
+      configure.d/config_os_misc2, configure.d/config_os_progs,   
+      configure.d/config_os_struct_members,   
+      configure.d/config_project_ipv6_types,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: Cygwin: builds now with OpenSSL enabled.
+   CHANGES: Cygwin: builds now with IPv6 support enabled.
+   CHANGES: MinGW: builds now with IPv6 support enabled.
+   CHANGES: Cygwin: builds now also when the source files are
+   located on a Samba filesystem instead of a local filesystem.
+   Note: all the above changes are backports from the trunk.
+
 2010-05-09 16:34  bvassche
 
    * include/net-snmp/system/cygwin.h:
 
-   CHANGES: Cygwin: BUG: 2997492: byte order of udpLocalPort is now correct
+   NEWS: Cygwin: BUG: 2997492: byte order of udpLocalPort is now
+   correct.
    (Backported r18074 from trunk.)
 
 2010-05-06 14:49  dts12
@@ -2328,87 +7423,73 @@
 
 2010-05-06 14:44  dts12
 
-   * win32/win32.dsw, win32/win32sdk.dsw:
+   * win32/win32.dsw:
 
    Add project dependencies for MSVC builds.
 
+2010-05-06 14:41  dts12
+
+   * apps/snmptrapd.c, apps/snmptrapd_log.c, snmplib/callback.c:
+
+   CHANGES: Windows: Fix build under MinGW
+   back/forward port of revision 18631
+
+2010-05-06 07:21  bvassche
+
+   *  configure, configure.d/config_project_ipv6_types,   
+      snmplib/inet_ntop.c, snmplib/inet_pton.c,   
+      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPIPv6Domain.c:
+
+   CHANGES: Cygwin: building: --enable-ipv6 does now work.
+   (ported the patches r18060 and r18619 to the V5.5 branch).
+
 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.
+   CHANGES: Cygwin: fixed bug in regression test infrastructure
+   which made detection of a free UDP port fail.
    (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:
-
-   CHANGES: Windows: Fix build under MinGW
-
-2010-04-30 18:44  bvassche
-
-   * configure:
-
-   Should have been included in r18627.
-
-2010-04-30 18:27  bvassche
-
-   * configure.in:
-
-   made sure that cross-compiling without specifying the endianness
-   does not trigger a syntax error in the configure script.
-
-2010-04-28 10:48  bvassche
-
-   * configure, configure.in:
-
-   left out inet_ntop() and inet_pton() from libnetsnmp since these
-   functions are already present in Cygwins C library.
-
-2010-04-28 10:26  bvassche
-
-   * README.win32:
-
-   Fixed a documentation bug with regard to the Cygwin build:
-   linking with ws2_32 is only necessary for really ancient Cygwin versions.
-
-2010-04-28 07:29  bvassche
-
-   *  snmplib/inet_ntop.c, snmplib/inet_pton.c,   
-      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPIPv6Domain.c:
-
-   CHANGES: Cygwin: builds now with IPv6 support enabled.
-
-2010-04-27 16:55  bvassche
-
-   *  win32/net-snmp/net-snmp-config.h,   
-      win32/net-snmp/net-snmp-config.h.in:
-
-   CHANGES: Win32: builds again with IPv6 support enabled.
-
-2010-04-27 15:42  dts12
-
-   *  win32/net-snmp/agent/mib_module_config.h,   
-      win32/netsnmpmibssdk/Makefile.in:
-
-   Re-instate Notification-Log MIB support when building with
-   Windows Platform SDK.
-
 2010-04-25 17:37  bvassche
 
    * README.win32:
 
    Documentation update.
 
-2010-04-21 11:05  bvassche
+2010-04-25 17:01  bvassche
 
-   * snmplib/strtoull.c:
+   *  snmplib/winservice.c, win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
 
-   Copied the source file snmplib/strtoull.c from the trunk to the
-   V5.4 branch.
+   Win32: builds again with MSVC 6 without PSDK.
+
+2010-04-25 15:06  bvassche
+
+   *  win32/libnetsnmptrapd/Makefile.in,   
+      win32/net-snmp/agent/mib_module_config.h,   
+      win32/netsnmpmibs/Makefile.in, win32/snmpd/Makefile.in,   
+      win32/snmptrapd/Makefile.in:
+
+   Win32: builds again with HAVE_WIN32_PLATFORM_SDK disabled.
+
+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-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-18 13:40  bvassche
 
@@ -2420,17 +7501,9 @@
    including both
    <stdargs.h> and <varargs.h> in the same source file.
 
-2010-04-18 13:24  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.
-
 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 +7517,20 @@
    or V5.5 branches and hence there was no reason to disable this
    preprocessor symbol.
 
+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 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,102 +7539,31 @@
       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
-
-   * CHANGES, NEWS:
-
-   version update
-
-2010-04-07 14:22  dts12
-
-   * agent/Makefile.depend, agent/mibgroup/Makefile.depend:
-
-   make depend
-
-2010-04-07 14:12  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
-
-2010-04-07 14:08  dts12
-
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
-
-   Version number update
-
 2010-04-07 14:05  dts12
 
    * local/mib2c.table_data.conf:
@@ -2560,12 +7576,26 @@
 
    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-04-06 08:57  dts12
+
+   * mibs/UCD-SNMP-MIB.txt:
+
+   Document large-disk statistics as latching at 2Tb (rather than
+   wrapping).
+
+2010-03-29 17:17  bvassche
+
+   * configure, configure.d/config_os_progs:
+
+   Removed -Winline and -Wno-char-subscripts (backported r18286 from
+   the trunk).
 
 2010-03-29 15:26  dts12
 
@@ -2586,6 +7616,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 +7637,152 @@
    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 18:00  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Partially reverted r18382 on the 5.5 branch in order to preserve
+   backwards compatibility with already released Windows-headers.
+
+2010-03-28 16:09  bvassche
+
+   * perl/SNMP/t/startagent.pl:
+
+   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-28 12:04  bvassche
+
+   * perl/default_store/test.pl:
+
+   Backported r18287 from the trunk.
+
+2010-03-27 19:19  bvassche
+
+   * perl/OID/OID.xs, perl/SNMP/SNMP.xs:
+
+   Builds again.
+
+2010-03-27 18:57  bvassche
+
+   *  perl/ASN/ASN.xs, perl/OID/OID.xs, perl/SNMP/SNMP.xs,   
+      perl/TrapReceiver/TrapReceiver.xs, perl/TrapReceiver/ppport.h,   
+      perl/agent/agent.xs:
+
+   Backported r18282, r18283 and r18312 from trunk, which fix most
+   compiler warnings triggered by compilation of the XSUBs.
+
+2010-03-27 18:52  bvassche
+
+   *  perl/ASN/ASN.xs, perl/ASN/Makefile.PL, perl/OID/Makefile.PL,   
+      perl/OID/OID.xs, perl/TrapReceiver/Makefile.PL,   
+      perl/TrapReceiver/TrapReceiver.xs, perl/agent/Makefile.PL,   
+      perl/agent/Support/Makefile.PL, perl/agent/agent.xs,   
+      perl/agent/default_store/Makefile.PL,   
+      perl/agent/default_store/default_store.xs,   
+      perl/default_store/Makefile.PL,   
+      perl/default_store/default_store.xs:
+
+   Backported r18248, which makes compilation of the Perl XSUBs more
+   silent.
+
+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 12:04  bvassche
+
+   * snmplib/strtoull.c:
+
+   Removed a superfluous #include directive.
+
 2010-03-25 20:07  bvassche
 
    * agent/mibgroup/agentx/agentx_config.c:
@@ -2604,6 +7793,53 @@
    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
+
+   *  configure, configure.d/config_os_functions,   
+      include/net-snmp/library/system.h,   
+      include/net-snmp/net-snmp-config.h.in, 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: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-25 13:27  bvassche
+
+   * include/net-snmp/library/snmpUDPIPv6Domain.h:
+
+   Windows DLL build fix.
+
 2010-03-22 16:10  dts12
 
    * mibs/NET-SNMP-PASS-MIB.txt:
@@ -2618,6 +7854,15 @@
    Follow-up for r18349: added missing comma such that it is again
    possible to compile UCD-DISKIO-MIB.
 
+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,   
@@ -2641,6 +7886,29 @@
 
    Fixed the compiler warnings reported by gcc (MinGW).
 
+2010-03-20 09:14  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Refactoring: moved duplicated code into a new function.
+
+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,13 +7927,6 @@
    by every request for which a response with non-zero error status
    is sent back.
 
-2010-03-19 11:41  bvassche
-
-   * agent/snmp_agent.c:
-
-   Reverted r18324 since the 5.4 branch is in RC stage and a
-   leak-at-exit is not a showstopper.
-
 2010-03-17 13:41  bvassche
 
    * mibs/NET-SNMP-AGENT-MIB.txt, mibs/NET-SNMP-EXTEND-MIB.txt:
@@ -2685,85 +7946,12 @@
    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-16 19:18  bvassche
 
-   * CHANGES, NEWS:
+   * agent/mibgroup/winExtDLL.c:
 
-   version update
-
-2010-03-14 22:31  dts12
-
-   * ChangeLog:
-
-   version update
-
-2010-03-14 22:28  dts12
-
-   * agent/Makefile.depend, agent/mibgroup/Makefile.depend:
-
-   make depend
-
-2010-03-14 22:19  dts12
-
-   * agent/Makefile.depend, agent/mibgroup/Makefile.depend:
-
-   make depend
-
-2010-03-14 22:19  dts12
-
-   * agent/Makefile.depend, agent/mibgroup/Makefile.depend:
-
-   make depend
-
-2010-03-14 22:10  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
-
-2010-03-14 22:07  dts12
-
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
-
-   Version number update
+   CHANGES: Win32: winExtDLL: fixed a bug in getNext handling that
+   could cause the MIB output to be truncated.
 
 2010-03-12 11:53  dts12
 
@@ -2773,11 +7961,12 @@
    header token
    Patch supplied by Dan Nelson
 
-2010-03-11 16:52  dts12
+2010-03-12 11:43  dts12
 
-   * man/snmpcmd.1.def:
+   * agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c:
 
-   Document the format of the -e/-E command line options.
+   Remove duplicate definition of
+   getulongfromsysclassnetstatistics()
 
 2010-03-11 16:47  dts12
 
@@ -2808,6 +7997,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 +8021,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 +8050,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 +8081,310 @@
    CHANGES: snmpd: PATCH: 2950845: Fix ifHighSpeed calculation
    Patch provided by Leonardo Chiquitto
 
-2010-03-03 16:11  jsafranek
+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:44  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: Win32: building: libsnmp.dll builds now with MSVC 2002
+   and above without triggering a linker error about strtoull.
+   (Backported trunk r17886.)
+
+2010-03-09 17:24  bvassche
+
+   * perl/SNMP/SNMP.xs:
+
+   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-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-28 11:40  bvassche
+
+   * win32/net-snmp/net-snmp-config.h.in:
+
+   Follow-up for r18181: synchronized net-snmp-config.h.in with
+   net-snmp-config.h.
+
+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 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 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-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-21 19:23  bvassche
+
+   *  snmplib/tools.c, win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: Win32: made sure that redefining malloc() etc. in
+   win32/net-snmp/net-snmp-config.h does not trigger strange
+   compiler and linker errors.
+   
+   (Backported trunk r17910 and r18165).
+
+2010-02-21 19:20  bvassche
+
+   * win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
+
+   CHANGES: Win32: exported
+   netsnmp_query_get_default_session_unchecked() from netsnmp.dll.
+   
+   (Backported trunk r17918.)
+
+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/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-20 09:10  bvassche
+
+   * apps/snmptable.c:
+
+   Backported trunk r17883, which fixes a typo introduced in r17881.
+
+2010-02-19 20:23  bvassche
+
+   *  agent/mibgroup/utilities/iquery.c,   
+      include/net-snmp/library/snmp_client.h, snmplib/snmp_client.c:
+
+   CHANGES: agent: do not complain that iquerySecName is missing in
+   snmpd.conf when its value won't be used.
+   
+   (Backported trunk r17917.)
+
+2010-02-19 19:44  bvassche
+
+   * win32/bin, win32/lib:
+
+   Updated Subversion ignore list.
+
+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 19:36  bvassche
+
+   *  agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/snmpd.c, apps/snmptable.c, apps/snmptrapd.c,   
+      include/net-snmp/library/snmp_logging.h, snmplib/snmp_logging.c:
+
+   CHANGES: Win32: line buffering does now work when Net-SNMP is
+   built with MSVC. This makes it a lot easier to debug Net-SNMP on
+   Win32 since each line does now appear in the output as soon as it
+   has been generated.
+   
+   This is a backport of r17881 from the trunk.
+
+2010-02-19 14:18  bvassche
+
+   *  include/net-snmp/library/system.h, win32/libsnmp_dll/libsnmp.def, 
+        win32/libsnmp_dll/libsnmp.def.in:
+
+   CHANGES: Win32: libsnmp builds again as a DLL when IPv6 is
+   enabled.
+
+2010-02-19 13:02  bvassche
+
+   *  README.win32, agent/mibgroup/winExtDLL.c, snmplib/winservice.c,   
+      win32/MgmtApi-winExtDLL.h, win32/Snmp-winExtDLL.h,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/netsnmpmibs/netsnmpmibs.dsp, win32/netsnmpmibssdk,   
+      win32/snmpdsdk, win32/win32.dsw, win32/win32sdk.dsw:
+
+   CHANGES: Win32: building: winExtDLL module is only built if
+   USING_WINEXTDLL_MODULE is defined.
+   CHANGES: Win32: building: simplified building winExtDLL by
+   including a copy of the MinGW headers <snmp.h> and <mgmtapi.h>.
+   CHANGES: Win32: building: dropped support for building Net-SNMP
+   with MSVC 6.0 without Platform SDK.
+   CHANGES: Win32: building: added project dependencies in win32.dsw
+   such that the Microsoft Visual Studio IDE can figure out the
+   proper project build order.
+   
+   (these changes have been backported from trunk revisions 17884,
+   18157 and 18163).
+
+2010-02-19 12:35  bvassche
+
+   * include/net-snmp/library/system.h:
+
+   CHANGES: Win32: building: builds again with MSVC 6.0.
+   
+   Backported r17869: changed the return type of strtoull() from
+   'unsigned
+   long long' (which is not valid C89) to 'uint64_t' (declared in
+   <net-snmp/net-snmp-config.h>).
+
+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-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,49 +8392,15 @@
    CHANGES: python: Support null-bytes in octet strings
    Patch supplied by Tommy Beadle
 
-2010-02-09 15:05  bvassche
+2010-02-05 09:52  jsafranek
 
-   *  ., README.win32, agent/mibgroup/winExtDLL.c,   
-      agent/mibgroup/winExtDLL.h, win32/MgmtApi-winExtDLL.h,   
-      win32/Snmp-winExtDLL.h:
+   * 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.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.
-
-2010-02-09 14:29  bvassche
-
-   * include/net-snmp/library/snmp_logging.h:
-
-   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.
-
-2010-02-08 19:47  bvassche
-
-   *  ., 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.
-   
-   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
+   CHANGES: snmpd: fixed filedescriptior leak in Etherlike-MIB and
+   RMON-MIB
 
 2010-02-05 09:48  jsafranek
 
@@ -2958,14 +8426,6 @@
 
    CHANGES: building: 'make test TESTOPTS="-P tcp"' works fine now
 
-2010-01-31 01:42  tanders
-
-   * man/Makefile.in:
-
-   Follow-up for r17710 / backport of r17712: remove an obsolete
-   manual
-   page from the set of files that should be installed
-
 2010-01-29 20:07  jsafranek
 
    * testing/tests/T059trapdtraphandle:
@@ -3017,92 +8477,41 @@
 
    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-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
-
-   * CHANGES:
-
-   version update
-
-2010-01-06 17:25  dts12
-
-   * ChangeLog:
-
-   version update
-
-2010-01-06 17:06  dts12
-
-   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
-      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
-      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
-
-   make depend
-
-2010-01-06 17:06  dts12
-
-   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
-      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
-      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
-
-   make depend
-
-2010-01-06 16:55  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
-
-2010-01-06 16:43  dts12
-
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
-
-   Version number update
-
 2010-01-06 13:33  jsafranek
 
    * agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/at.h:
@@ -3121,7 +8530,8 @@
 
    * 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-05 22:33  dts12
 
@@ -3147,9 +8557,39 @@
 
    * 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.
+
+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 07:59  bvassche
 
    * snmplib/read_config.c:
@@ -3163,6 +8603,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:
@@ -3217,7 +8676,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
@@ -3246,7 +8706,8 @@
 
    * README.win32:
 
-   Backported r17901 (spelling fixes and hrSystemUptime documentation).
+   Backported r17901 (spelling fixes and hrSystemUptime
+   documentation).
 
 2009-12-17 10:03  dts12
 
@@ -3267,12 +8728,28 @@
    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 14:53  dts12
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   Backport of SVN revisions 17870/17894,
+   to handle const warnings.
 
 2009-12-10 12:54  bvassche
 
@@ -3292,7 +8769,9 @@
    *  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.
@@ -3301,7 +8780,8 @@
 
    * 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-07 10:46  dts12
 
@@ -3310,12 +8790,19 @@
    Tweak missing subidentifier processing to be more type-aware.
    (An issue with AIX, at least)
 
+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
+   compile with
+   NETSNMP_CLEAN_NAMESPACE
 
 2009-12-05 17:19  tanders
 
@@ -3344,7 +8831,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 +8839,22 @@
 
    * 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-11-30 16:55  dts12
 
@@ -3377,52 +8867,82 @@
 
    * 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: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,11 +8950,21 @@
 
    Remove executable attribute from source files.
 
+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-11 09:00  dts12
@@ -3445,90 +8975,22 @@
    Return success/failure values from cache load routine.
    Problem identified by Xuan.
 
-2009-10-29 16:05  dts12
+2009-10-27 06:44  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:
+   *  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 tag ( 5.4.3.pre1 )
-
-2009-10-29 14:24  dts12
-
-   * CHANGES, NEWS:
-
-   version update
-
-2009-10-29 11:46  dts12
-
-   * ChangeLog:
-
-   version update
-
-2009-10-29 10: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:
-
-   documentation update
-
-2009-10-29 10:28  dts12
-
-   * doxygen.conf:
-
-   - version tag ( 5.4.3.pre1 )
-
-2009-10-29 09:55  dts12
-
-   * Makefile.top:
-
-   version update
+   CHANGES: mib2c: Remove unnecessary casts to u_char*
 
 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 +9008,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 +9030,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 +9052,386 @@
    information crashing the agent.
    Problem reported by Inyaven Sakarai.
 
+2009-09-24 03:49  hardaker
+
+   * .:
+
+   5.5 branched
+
+
+----------------------------------------------------------------------
+
+Changes: V5.4 -> 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
 
+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: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 +9441,173 @@
    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 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 +9625,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 +9675,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ückert": 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 +9879,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 +9935,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 +9989,85 @@
    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
+2009-06-13 01:12  hardaker
 
-   * agent/mibgroup/host/hr_swrun.c:
+   *  agent/mibgroup/mibII/tcpTable.c, configure,   
+      configure.d/config_os_libs,   
+      include/net-snmp/net-snmp-config.h.in:
 
-   portability fix (sync with 5.5)
+   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 +10076,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 +10118,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 +10130,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 +10152,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 +10187,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 +10241,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 +10265,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 +10316,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 +10634,74 @@
 
    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
-
 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 +10710,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 +10807,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 +10867,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 +10926,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 +11218,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 +11231,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 +11268,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 +11372,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 +11387,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 +11401,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 +11435,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 +11465,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 +11474,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 +11585,127 @@
    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
+
+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 +11727,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 +11843,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 +11881,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 +11911,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 +11932,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 +12028,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 +12134,14 @@
    * snmplib/snmpUDPDomain.c:
 
    Fix src/dst confusion
-   Patch provided by Krzysztof Ol¿dzki
+   Patch provided by Krzysztof Olędzki
 
 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ędzki
 
 2009-01-23 14:53  jsafranek
 
@@ -4424,6 +12149,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 +12204,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 +12275,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 +12485,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 +12548,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 +12595,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 +12633,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 +12669,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 +12789,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 +12862,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 +12886,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 +12966,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 +13104,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 +13180,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 +13207,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 +13226,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 +18567,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 +18584,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 +18610,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 +18663,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 +18692,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 +18753,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 +18803,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 +18817,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 +18907,7 @@
 
 2007-01-25 22:05  tanders
 
+   *
      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c
 , local/mib2c-conf.d/subagent.m2c:
 
@@ -8629,12 +18925,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 +19005,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 +19055,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 +19084,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 +19111,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 +19128,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 +19168,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 +19183,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 +19217,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 +19236,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 +19248,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 +19272,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 +19337,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 +19350,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 +19378,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 +19415,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 +19428,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 +19445,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 +19480,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 +19495,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 +19519,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 +19531,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 +19625,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 +19701,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 +23559,7 @@
 
 2006-08-17 07:50  rstory
 
+   *
      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
 , local/mib2c-conf.d/mfd-interface.m2c:
 
@@ -13945,6 +24562,7 @@
 
 2006-06-12 13:05  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
 :
 
@@ -15937,6 +26555,7 @@
 
 2006-01-10 03:07  tanders
 
+   *
      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
 :
 
@@ -15944,6 +26563,7 @@
 
 2006-01-09 17:41  tanders
 
+   *
      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
 :
 
@@ -16955,6 +27575,7 @@
 
 2005-12-09 20:58  rstory
 
+   *
      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_data_access.c
 :
 
@@ -16977,6 +27598,7 @@
 
 2005-12-09 20:57  rstory
 
+   *
      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c
 :
 
@@ -18257,6 +28879,7 @@
 
 2005-11-16 15:18  rstory
 
+   *
      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
 :
 
@@ -18396,6 +29019,7 @@
 
 2005-11-15 21:14  rstory
 
+   *
      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
 :
 
@@ -18409,6 +29033,7 @@
 
 2005-11-15 21:08  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
 :
 
@@ -18438,6 +29063,7 @@
 
 2005-11-15 19:24  rstory
 
+   *
      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
 :
 
@@ -18554,6 +29180,7 @@
 
 2005-11-14 17:28  rstory
 
+   *
      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
 :
 
@@ -19835,6 +30462,7 @@
 
 2005-10-28 23:27  rstory
 
+   *
      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.h
 :
 
@@ -19842,6 +30470,7 @@
 
 2005-10-28 23:26  rstory
 
+   *
      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c
 :
 
@@ -21910,6 +32539,7 @@
 
 2005-09-27 19:25  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
 :
 
@@ -22622,6 +33252,7 @@
 
 2005-09-06 19:17  tanders
 
+   *
      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/.cvsignore
 :
 
@@ -22734,6 +33365,7 @@
 
 2005-08-30 08:06  rstory
 
+   *
      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_constants.h
 :
 
@@ -25570,6 +36202,7 @@
 
 2005-03-28 14:29  rstory
 
+   *
      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
 :
 
@@ -25610,6 +36243,7 @@
 
 2005-03-24 16:48  rstory
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_access.c
 :
 
@@ -26347,6 +36981,7 @@
 
 2005-01-27 22:52  rstory
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_access.c
 :
 
@@ -28102,6 +38737,7 @@
 
 2004-10-17 20:56  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.c
 :
 
@@ -28522,6 +39158,7 @@
 
 2004-10-14 18:15  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h
 :
 
@@ -28870,6 +39507,7 @@
 
 2004-10-08 19:27  rstory
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c
 :
 
@@ -28877,6 +39515,7 @@
 
 2004-10-08 19:25  rstory
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c
 :
 
@@ -29930,6 +40569,7 @@
 
 2004-09-24 09:15  rstory
 
+   *
      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c
 :
 
@@ -29989,6 +40629,7 @@
 
 2004-09-23 13:24  rstory
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.c
 :
 
@@ -30165,6 +40806,7 @@
 
 2004-09-21 06:43  hardaker
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.c
 :
 
@@ -31357,6 +41999,7 @@
 
 2004-08-27 23:22  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.c
 :
 
@@ -32217,6 +42860,7 @@
 
 2004-07-10 19:51  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_data_access.c
 :
 
@@ -32301,6 +42945,7 @@
 
 2004-07-09 22:58  hardaker
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.c
 :
 
@@ -32379,6 +43024,7 @@
 
 2004-07-09 09:57  hardaker
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/.cvsignore
 :
 
@@ -32522,6 +43168,7 @@
 
 2004-07-07 13:41  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
 :
 
@@ -33349,6 +43996,7 @@
 
 2004-06-28 15:11  rstory
 
+   *
      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_constants.h
 :
 
@@ -36019,6 +46667,7 @@
 
 2004-04-13 11:44  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
 :
 
@@ -36026,6 +46675,7 @@
 
 2004-04-13 11:43  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
 :
 
@@ -53198,7 +63848,7 @@
 
    * agent/helpers/instance.c:
 
-   Report non-existent subinstances as 'noSuchInstance' rather than 'noSuchObject'.
+   Report non-exitent subinstances as 'noSuchInstance' rather than 'noSuchObject'.
    "snmpget .... .1.3.6.1.6.3.12.1.5.0.99" now responds correctly.
    (though "snmpget .... .1.3.6.1.6.3.12.1.5.1" still returns 'noSuchObject')
    
diff --git a/FAQ b/FAQ
index f4f7755..0f06b58 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.5.2
 	    Net-SNMP/UCD-SNMP Project Leader: Wes Hardaker
 	     Email: net-snmp-coders@lists.sourceforge.net
 
@@ -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..542f4ab 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -16,19 +16,19 @@
 INSTALLHEADERS=version.h
 INCLUDESUBDIR=system
 INCLUDESUBDIRHEADERS= aix.h bsd.h bsdi3.h bsdi4.h bsdi.h cygwin.h \
-	darwin.h darwin7.h darwin8.h darwin9.h dynix.h \
+	darwin.h darwin7.h darwin8.h darwin9.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
+INSTALLBINSCRIPTS=net-snmp-config net-snmp-create-v3-user
 INSTALLUCDHEADERS=ucd-snmp-config.h version.h mib_module_config.h
 
 #
@@ -60,7 +60,7 @@
 #
 # targets
 #
-all:    sedscript EXAMPLE.conf standardall net-snmp-config-x @PERLTARGS@ @PYTHONTARGS@
+all:    sedscript EXAMPLE.conf standardall net-snmp-config-x net-snmp-create-v3-user @PERLTARGS@ @PYTHONTARGS@
 
 start-flag:
 	@touch build-in-progress-flag
@@ -98,6 +98,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
@@ -112,7 +113,7 @@
 docsdir: docsdox
 
 docsdox: doxygen.conf
-	srcdir=$(srcdir) doxygen $(srcdir)/doxygen.conf
+	srcdir=$(srcdir) VERSION=$(VERSION) doxygen $(srcdir)/doxygen.conf
 	-rm docs/man/man3/todo.3
 	-rm docs/man/man3/deprecated.3
 
@@ -125,6 +126,10 @@
 	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
 #
@@ -247,7 +252,8 @@
 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		\
@@ -281,8 +287,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 +327,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."; \
diff --git a/Makefile.top b/Makefile.top
index c4c44ee..f4fa4a8 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
@@ -61,7 +62,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.
@@ -76,9 +77,9 @@
 # 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
-LIBREVISION = 3
+LIBCURRENT  = 20
+LIBAGE      = 0
+LIBREVISION = 2
 
 LIB_LD_CMD      = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) -o
 LIB_EXTENSION   = la
diff --git a/NEWS b/NEWS
index 38b62cf..a6713fc 100644
--- a/NEWS
+++ b/NEWS
@@ -3,106 +3,137 @@
 that have been fixed/applied, and the ChangeLog file for a comprehensive
 listing of all changes made to the code.
 
-*5.4.4*
 
-    snmplib:
-      - [BUG 3171878]: Using SNMPv3 context does not work
+* 5.5.2 *
 
     snmpd:
-      - Various 64-bit fixes
+      - [PATCH 3198781]: Fix compilation of disman/{ping,traceroute} modules
+      - [BUG 3526549]: CVE-2012-2141 Array index error leading to crash
+      - [BUG 3532090]: Fix high ifIndex values crashing hrDeviceDescr
+             Note that this will affect the indexing of *all* entries in
+             the hrDeviceTable.  Assumptions as to what index a given device
+             will use, are no longer valid.
+
+    building:
+      - [PATCH 2091156]: Fix parallel builds (using 'make -j <N>')
+
+* 5.5.1 *
+
+    snmpd:
+      - Fix handling of multiple matching VACM entries.
+        (Use the "best" match, rather than the first one).
+	Note that this could potentially affect the behaviour
+	of existing access control configurations.
 
     FreeBSD,NetBSD,OpenBSD:
         Incorporate fixes from these O/S patch archives
 
+* 5.5 *
 
-*5.4.3*
+    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:
-      - 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)
+      - [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
 
-    Linux:
-      - Fix build on modern distributions (using rpm-4.6)
+    snmptrapd:
+      - [PATCH 1908288]: Run perl END block on termination
+      - Add trap handler for logging traps to a mysql database
+      - Withdraw deprecated options.
 
-    Windows:
-      - Fix various builds (recent MSVC, MinGW, IPv6, winExtDLL)
+    snmpnetstat:
+      - [PATCH 2564538]: Support GETBULK in v2c+ snmp versions
 
-
-*5.4.2*
+    snmpusm:
+      - [PATCH 1591355]: Allow cloning to arbitrary engineIDs
 
     snmplib:
-      - [PATCH 1921861]: Avoid endless loop after truncating 64bit int
-      - Better handling of CONTAINER_INSERT failures with multiple indices
+      - [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
 
-    snmpd:
-      - [PATCH 2023633]: add SCTP-MIB implementation (Linux only)
-      - suppress annoying "registration != duplicate" warning for root oids
+    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
 
-    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.
+    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:
-      - 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
-
-    build:
-      - update to libtool 1.5.24 (from 1.5.22)
+      - [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 the Net-SNMP source tree
+      - [PATCH 1716114]: Let python build in source tree (Debian patch #38)
 
-    MacOSX:
-      - [PATCH 1600522]: CPU Hardware Abstraction Layer (HAL)
-        implementation for mach/darwin
-      - IF-MIB rewrite now enabled by default
-
-    Win32:
-      - fix AES support
-      - [PATCH 1706344]: fix compilation with cygwin
-
-    IRIX:
-      - [PATCH 1709748]: Optimized IRIX cpu stats
+    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*
diff --git a/PORTING b/PORTING
index dacb15a..01e0954 100644
--- a/PORTING
+++ b/PORTING
@@ -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..d279ce2 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.5.2
 
 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>
diff --git a/README.agent-mibs b/README.agent-mibs
index 8716f8d..428024f 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,16 @@
 
 ------------------------------------------------------------------------------
 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/=
 
 ==============================================================================
 
@@ -425,6 +434,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
 ------------------
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.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..e954aea 100644
--- a/README.win32
+++ b/README.win32
@@ -46,15 +46,13 @@
 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.  
 
-  -  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.
@@ -78,8 +76,8 @@
   -  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.
 
 
 ***************************************************************************
@@ -405,33 +403,22 @@
 *
 ***************************************************************************
 
-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.
+The Windows Server 2003 Platform SDK can be downloaded via the following URL
+(this is the most recent version of the PSDK that is still compatible with
+MSVC 6.0): http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
 
-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.  
+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.
 
-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 +438,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,35 +453,26 @@
 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 three library projects
+('libagent', libhelpers' 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.
 
-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.
@@ -508,9 +487,9 @@
 
 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 
@@ -715,19 +694,20 @@
 *
 ***************************************************************************
 
-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 workspace allows to build the agent that provides mib-II objects
+for network interface layers, and the IP, ICMP, TCP and UDP tables. Proceed as
+follows:
 
-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,15 +719,6 @@
 
      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)
@@ -755,7 +726,7 @@
 
    MS VC++ 6.0:
    ------------
-   a. Open win32.dsw or win32sdk.dsw.
+   a. Open win32.dsw.
    b. Click "Build->Batch Build..."  
    c. Set Release and/or Debug in 'Project configurations' to suit.
    d. Click "ReBuild All".
@@ -765,7 +736,7 @@
 
    MS VC++ 7.0+:
    -------------
-   a.  Open win32.dsw or win32sdk.dsw.
+   a.  Open win32.dsw.
    b.  Click "Yes to All" to convert the workspace
    c.  Click "Build->Configuration Manager" and select either Release or Debug for 
        'Active Solution Configuration' and click "Close"
@@ -792,7 +763,7 @@
 
    MS VC++ 6.0:
    ------------
-   a. Open win32.dsw or win32sdk.dsw.
+   a. Open win32.dsw.
    b. Click "Build->Batch Build..."  
    c. Set Release and/or Debug in 'Project configurations' to suit for the 
       applications.  Make sure the following are NOT selected:
@@ -810,7 +781,7 @@
 
    MS VC++ 7.0+:
    -------------
-   a. Open win32.dsw or win32sdk.dsw.
+   a. Open win32.dsw.
    b. Click "Yes to All" to convert the workspace
    c. Click "Build->Configuration Manager" and select either Release or Debug for 
       'Active Solution Configuration' and click "Close"
@@ -829,7 +800,7 @@
       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:
+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: 
@@ -842,15 +813,19 @@
 *
 ***************************************************************************
 
-1.  Optional: Make a backup of the existing net-snmp-config.h which contains 
+1.  Update the version stamp in win32\net-snmp\net-snmp-config.h.  The current
+    version can be found in the Unix configure script (top level folder) by 
+    looking for the PACKAGE_VERSION variable.
+
+2.  Optional: Make a backup of the existing net-snmp-config.h which contains 
     settings for a static build of Net-SNMP:
 
     Copy win32\net-snmp\net-snmp-config.h to 
     win32\net-snmp\static-config.h.
 
-2.  Open win32\net-snmp\net-snmp-config.h using a text editor.
+3.  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.  *Change* the following line which is located near the top of the file:
 
         /* #undef NETSNMP_USE_DLL */
 
@@ -858,13 +833,13 @@
 
         #define NETSNMP_USE_DLL 1
 
-4.  Optional: Make a backup of the new net-snmp-config.h which contains 
+5.  Optional: Make a backup of the new net-snmp-config.h which contains 
     settings for a DLL build of Net-SNMP:
 
     Copy win32\net-snmp\net-snmp-config.h to 
     win32\net-snmp\dll-config.h.
 
-5. Build the DLL
+6. Build the DLL and the applications
 
    MS VC++ 6.0:
    ------------
@@ -880,7 +855,7 @@
 
    MS VC++ 7.0+:
    -------------
-   a. Open libsdll.dsw.
+   a. Open win32dll.dsw.
    b. Click "Yes to All" to convert the workspace
    c. Click "Build->Batch Build..." 
    d. Set Release and/or Debug in 'Project configurations' to suit.
@@ -1277,15 +1252,16 @@
 The following configure options creates a working set of programs:
 
 ./configure \
+	--disable-shared \
 	--with-mib-modules="host agentx disman/event-mib examples/example" \
 	--with-out-mib-modules=host/hr_network \
         --disable-embedded-perl --without-perl-modules \
 
-If you want to 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
@@ -1320,17 +1296,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 +1332,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..5491941 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -23,236 +23,7 @@
  */
 #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 ';'
@@ -267,47 +38,6 @@
 
 /* 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)
@@ -364,27 +94,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 +109,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 +153,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. */
 
@@ -654,9 +347,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,10 +381,22 @@
     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
 
+/*  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 stdin/out transport domain is available.   */
 #undef NETSNMP_TRANSPORT_STD_DOMAIN
 
@@ -707,18 +409,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,24 +479,6 @@
 #  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
@@ -812,7 +487,7 @@
 #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(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..de594b8 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -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..ffc1aca 100644
--- a/agent/Makefile.depend
+++ b/agent/Makefile.depend
@@ -8,32 +8,14 @@
 ./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/types.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp_api.h
-./agent_handler.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agent_handler.lo: ../include/net-snmp/library/asn1.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
@@ -44,11 +26,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./agent_handler.lo: ../include/net-snmp/library/read_config.h
 ./agent_handler.lo: ../include/net-snmp/library/default_store.h
@@ -110,32 +112,14 @@
 ./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/types.h
 ./agent_index.lo: ../include/net-snmp/library/snmp_api.h
-./agent_index.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agent_index.lo: ../include/net-snmp/library/asn1.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
@@ -146,10 +130,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./agent_index.lo: ../include/net-snmp/library/read_config.h
 ./agent_index.lo: ../include/net-snmp/library/default_store.h
@@ -215,32 +220,14 @@
 ./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/types.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_api.h
-./agent_read_config.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agent_read_config.lo: ../include/net-snmp/library/asn1.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
@@ -251,11 +238,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -311,24 +318,22 @@
 ./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: ../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/host/hr_storage.h mibgroup/host/hr_filesys.h
+./agent_read_config.lo: mibgroup/host/hr_swinst.h mibgroup/host/hr_swrun.h
+./agent_read_config.lo: mibgroup/host/hr_system.h mibgroup/host/hr_device.h
+./agent_read_config.lo: mibgroup/host/hr_other.h mibgroup/host/hr_proc.h
+./agent_read_config.lo: mibgroup/host/hr_network.h mibgroup/host/hr_print.h
+./agent_read_config.lo: mibgroup/host/hr_disk.h mibgroup/host/hr_partition.h
 ./agent_read_config.lo: mibgroup/examples/scalar_int.h
 ./agent_read_config.lo: mibgroup/examples/watched.h
 ./agent_read_config.lo: mibgroup/examples/data_set.h
 ./agent_read_config.lo: mibgroup/examples/delayed_instance.h
 ./agent_read_config.lo: mibgroup/Rmon/rows.h mibgroup/Rmon/agutil.h
-./agent_read_config.lo: mibgroup/Rmon/statistics.h mibgroup/Rmon/alarm.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/disman/event/mteScalars.h
 ./agent_read_config.lo: mibgroup/disman/event/mteTrigger.h
@@ -347,16 +352,17 @@
 ./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/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/snmpMPDStats.h
-./agent_read_config.lo: mibgroup/snmpv3/usmStats.h mibgroup/snmpv3/usmUser.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/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/tcp.h mibgroup/mibII/icmp.h
+./agent_read_config.lo: mibgroup/mibII/udp.h mibgroup/mibII/vacm_vars.h
 ./agent_read_config.lo: mibgroup/mibII/setSerialNo.h mibgroup/mibII/ipv6.h
 ./agent_read_config.lo: mibgroup/ucd-snmp/proc.h ../agent/mibgroup/mibdefs.h
 ./agent_read_config.lo: mibgroup/ucd-snmp/versioninfo.h
@@ -371,9 +377,9 @@
 ./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/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
@@ -426,6 +432,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
@@ -465,32 +485,14 @@
 ./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/types.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp_api.h
-./agent_registry.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agent_registry.lo: ../include/net-snmp/library/asn1.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
@@ -501,11 +503,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./agent_registry.lo: ../include/net-snmp/library/read_config.h
 ./agent_registry.lo: ../include/net-snmp/library/default_store.h
@@ -562,27 +584,152 @@
 ./agent_registry.lo: ../include/net-snmp/agent/agent_callbacks.h snmpd.h
 ./agent_registry.lo: mibgroup/struct.h ../agent/mibgroup/agentx/subagent.h
 ./agent_registry.lo: ../agent/mibgroup/agentx/client.h
+./agent_sysORTable.lo: ../include/net-snmp/net-snmp-config.h
+./agent_sysORTable.lo: ../include/net-snmp/system/linux.h
+./agent_sysORTable.lo: ../include/net-snmp/system/sysv.h
+./agent_sysORTable.lo: ../include/net-snmp/system/generic.h
+./agent_sysORTable.lo: ../include/net-snmp/machine/generic.h
+./agent_sysORTable.lo: ../include/net-snmp/net-snmp-includes.h
+./agent_sysORTable.lo: ../include/net-snmp/definitions.h
+./agent_sysORTable.lo: ../include/net-snmp/types.h
+./agent_sysORTable.lo: ../include/net-snmp/library/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/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/snmpUDPDomain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/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/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/snmp_logging.h
+./agent_sysORTable.lo: ../include/net-snmp/library/container_binary_array.h
+./agent_sysORTable.lo: ../include/net-snmp/library/container_list_ssll.h
+./agent_sysORTable.lo: ../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmp_debug.h
+./agent_sysORTable.lo: ../include/net-snmp/snmpv3_api.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpv3.h
+./agent_sysORTable.lo: ../include/net-snmp/library/transform_oids.h
+./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/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/agent_callbacks.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/agent_sysORTable.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/sysORTable.h
 ./agent_trap.lo: ../include/net-snmp/net-snmp-config.h
 ./agent_trap.lo: ../include/net-snmp/system/linux.h
 ./agent_trap.lo: ../include/net-snmp/system/sysv.h
 ./agent_trap.lo: ../include/net-snmp/system/generic.h
 ./agent_trap.lo: ../include/net-snmp/machine/generic.h
-./agent_trap.lo: ../include/net-snmp/utilities.h ../include/net-snmp/types.h
+./agent_trap.lo: ../include/net-snmp/utilities.h
+./agent_trap.lo: ../include/net-snmp/types.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/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/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/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
@@ -594,21 +741,7 @@
 ./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
@@ -626,11 +759,43 @@
 ./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/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: ../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/agent_callbacks.h
 ./agent_trap.lo: ../agent/mibgroup/agentx/protocol.h
 ./auto_nlist.lo: ../include/net-snmp/net-snmp-config.h
 ./auto_nlist.lo: ../include/net-snmp/system/linux.h
@@ -652,32 +817,14 @@
 ./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/types.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp_api.h
-./mib_modules.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mib_modules.lo: ../include/net-snmp/library/asn1.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
@@ -688,10 +835,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./mib_modules.lo: ../include/net-snmp/library/read_config.h
 ./mib_modules.lo: ../include/net-snmp/library/default_store.h
@@ -748,17 +916,17 @@
 ./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/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/host/hr_storage.h mibgroup/host/hr_filesys.h
+./mib_modules.lo: mibgroup/host/hr_swinst.h mibgroup/host/hr_swrun.h
+./mib_modules.lo: mibgroup/host/hr_system.h mibgroup/host/hr_device.h
+./mib_modules.lo: mibgroup/host/hr_other.h mibgroup/host/hr_proc.h
+./mib_modules.lo: mibgroup/host/hr_network.h mibgroup/host/hr_print.h
+./mib_modules.lo: mibgroup/host/hr_disk.h mibgroup/host/hr_partition.h
 ./mib_modules.lo: mibgroup/examples/scalar_int.h mibgroup/examples/watched.h
 ./mib_modules.lo: mibgroup/examples/data_set.h
 ./mib_modules.lo: mibgroup/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/alarmTable.h mibgroup/Rmon/history.h
 ./mib_modules.lo: mibgroup/Rmon/event.h mibgroup/disman/event/mteScalars.h
 ./mib_modules.lo: mibgroup/disman/event/mteTrigger.h
 ./mib_modules.lo: mibgroup/disman/event/mteTriggerTable.h
@@ -776,30 +944,29 @@
 ./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/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/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/mibII/at.h mibgroup/mibII/tcp.h
+./mib_modules.lo: mibgroup/mibII/icmp.h mibgroup/mibII/udp.h
+./mib_modules.lo: mibgroup/mibII/vacm_vars.h mibgroup/mibII/setSerialNo.h
+./mib_modules.lo: mibgroup/mibII/ipv6.h mibgroup/ucd-snmp/proc.h
+./mib_modules.lo: ../agent/mibgroup/mibdefs.h mibgroup/ucd-snmp/versioninfo.h
+./mib_modules.lo: mibgroup/ucd-snmp/pass.h mibgroup/ucd-snmp/pass_persist.h
+./mib_modules.lo: mibgroup/ucd-snmp/disk.h mibgroup/ucd-snmp/loadave.h
+./mib_modules.lo: mibgroup/agent/extend.h mibgroup/ucd-snmp/errormib.h
+./mib_modules.lo: mibgroup/ucd-snmp/file.h mibgroup/ucd-snmp/dlmod.h
+./mib_modules.lo: mibgroup/ucd-snmp/proxy.h mibgroup/ucd-snmp/logmatch.h
+./mib_modules.lo: mibgroup/ucd-snmp/memory.h mibgroup/ucd-snmp/vmstat.h
 ./mib_modules.lo: mibgroup/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/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
@@ -849,6 +1016,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,7 +1059,6 @@
 ./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
@@ -889,32 +1069,14 @@
 ./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/types.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp_api.h
-./object_monitor.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./object_monitor.lo: ../include/net-snmp/library/asn1.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
@@ -925,11 +1087,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./object_monitor.lo: ../include/net-snmp/library/read_config.h
 ./object_monitor.lo: ../include/net-snmp/library/default_store.h
@@ -992,32 +1174,14 @@
 ./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/types.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_api.h
-./snmp_agent.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmp_agent.lo: ../include/net-snmp/library/asn1.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
@@ -1028,10 +1192,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./snmp_agent.lo: ../include/net-snmp/library/read_config.h
 ./snmp_agent.lo: ../include/net-snmp/library/default_store.h
@@ -1084,45 +1269,271 @@
 ./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 snmpd.h
 ./snmp_agent.lo: ../include/net-snmp/agent/mib_modules.h
 ./snmp_agent.lo: ../agent/mibgroup/agentx/protocol.h
 ./snmp_agent.lo: ../agent/mibgroup/agentx/master.h
 ./snmp_agent.lo: ../agent/mibgroup/smux/smux.h
+./snmpd.lo: ../include/net-snmp/net-snmp-config.h
+./snmpd.lo: ../include/net-snmp/system/linux.h
+./snmpd.lo: ../include/net-snmp/system/sysv.h
+./snmpd.lo: ../include/net-snmp/system/generic.h
+./snmpd.lo: ../include/net-snmp/machine/generic.h
+./snmpd.lo: ../include/net-snmp/net-snmp-includes.h
+./snmpd.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmpd.lo: ../include/net-snmp/library/types.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/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/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/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/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/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/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
+./snmpd.lo: ../include/net-snmp/library/large_fd_set.h
+./snmpd.lo: ../include/net-snmp/net-snmp-config.h m2m.h snmpd.h
+./snmpd.lo: mibgroup/struct.h ../include/net-snmp/agent/mib_modules.h
+./snmpd.lo: mibgroup/util_funcs.h mibgroup/util_funcs/header_generic.h
+./snmpd.lo: mibgroup/util_funcs/header_simple_table.h mibgroup/struct.h
+./snmpd.lo: mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h
+./snmpd.lo: ../agent/mibgroup/mib_module_includes.h
+./snmpd.lo: mibgroup/examples/example.h mibgroup/testhandler.h
+./snmpd.lo: mibgroup/host/hr_storage.h mibgroup/host/hr_filesys.h
+./snmpd.lo: mibgroup/host/hr_swinst.h mibgroup/host/hr_swrun.h
+./snmpd.lo: mibgroup/host/hr_system.h mibgroup/host/hr_device.h
+./snmpd.lo: mibgroup/host/hr_other.h mibgroup/host/hr_proc.h
+./snmpd.lo: mibgroup/host/hr_network.h mibgroup/host/hr_print.h
+./snmpd.lo: mibgroup/host/hr_disk.h mibgroup/host/hr_partition.h
+./snmpd.lo: mibgroup/examples/scalar_int.h mibgroup/examples/watched.h
+./snmpd.lo: mibgroup/examples/data_set.h mibgroup/examples/delayed_instance.h
+./snmpd.lo: mibgroup/Rmon/rows.h mibgroup/Rmon/agutil.h
+./snmpd.lo: mibgroup/Rmon/statistics.h mibgroup/Rmon/alarmTable.h
+./snmpd.lo: mibgroup/Rmon/history.h mibgroup/Rmon/event.h
+./snmpd.lo: mibgroup/disman/event/mteScalars.h
+./snmpd.lo: mibgroup/disman/event/mteTrigger.h
+./snmpd.lo: mibgroup/disman/event/mteTriggerTable.h
+./snmpd.lo: mibgroup/disman/event/mteTriggerDeltaTable.h
+./snmpd.lo: mibgroup/disman/event/mteTriggerExistenceTable.h
+./snmpd.lo: mibgroup/disman/event/mteTriggerBooleanTable.h
+./snmpd.lo: mibgroup/disman/event/mteTriggerThresholdTable.h
+./snmpd.lo: mibgroup/disman/event/mteTriggerConf.h
+./snmpd.lo: mibgroup/disman/event/mteEvent.h
+./snmpd.lo: ../agent/mibgroup/disman/event/mteTrigger.h
+./snmpd.lo: mibgroup/disman/event/mteEventTable.h
+./snmpd.lo: mibgroup/disman/event/mteEventSetTable.h
+./snmpd.lo: mibgroup/disman/event/mteEventNotificationTable.h
+./snmpd.lo: mibgroup/disman/event/mteEventConf.h
+./snmpd.lo: mibgroup/disman/event/mteObjects.h
+./snmpd.lo: mibgroup/disman/event/mteObjectsTable.h
+./snmpd.lo: mibgroup/disman/event/mteObjectsConf.h
+./snmpd.lo: mibgroup/snmpv3/snmpMPDStats_5_5.h mibgroup/snmpv3/usmStats_5_5.h
+./snmpd.lo: mibgroup/snmpv3/snmpEngine.h mibgroup/snmpv3/usmUser.h
+./snmpd.lo: mibgroup/mibII/snmp_mib_5_5.h mibgroup/mibII/system_mib.h
+./snmpd.lo: mibgroup/mibII/sysORTable.h mibgroup/mibII/at.h
+./snmpd.lo: mibgroup/mibII/ip.h mibgroup/mibII/var_route.h
+./snmpd.lo: mibgroup/mibII/route_write.h mibgroup/mibII/at.h
+./snmpd.lo: mibgroup/mibII/tcp.h mibgroup/mibII/icmp.h mibgroup/mibII/udp.h
+./snmpd.lo: mibgroup/mibII/vacm_vars.h mibgroup/mibII/setSerialNo.h
+./snmpd.lo: mibgroup/mibII/ipv6.h mibgroup/ucd-snmp/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/target_counters_5_5.h
+./snmpd.lo: mibgroup/target/snmpTargetAddrEntry.h
+./snmpd.lo: mibgroup/target/snmpTargetParamsEntry.h
+./snmpd.lo: mibgroup/agent/nsTransactionTable.h
+./snmpd.lo: mibgroup/agent/nsModuleTable.h mibgroup/agent/nsDebug.h
+./snmpd.lo: mibgroup/agent/nsCache.h mibgroup/agent/nsLogging.h
+./snmpd.lo: mibgroup/agent/nsVacmAccessTable.h
+./snmpd.lo: mibgroup/disman/schedule/schedCore.h
+./snmpd.lo: mibgroup/disman/schedule/schedConf.h
+./snmpd.lo: mibgroup/disman/schedule/schedTable.h
+./snmpd.lo: mibgroup/utilities/override.h mibgroup/hardware/memory/hw_mem.h
+./snmpd.lo: mibgroup/hardware/cpu/cpu.h mibgroup/hardware/cpu/cpu_linux.h
+./snmpd.lo: mibgroup/mibII/var_route.h mibgroup/mibII/tcpTable.h
+./snmpd.lo: mibgroup/mibII/udpTable.h mibgroup/mibII/vacm_context.h
+./snmpd.lo: mibgroup/ip-mib/ip_scalars.h
+./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
+./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_constants.h
+./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.h
+./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
+./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.h
+./snmpd.lo: mibgroup/if-mib/ifTable/ifTable.h
+./snmpd.lo: ../include/net-snmp/data_access/interface.h
+./snmpd.lo: mibgroup/if-mib/ifTable/ifTable_constants.h
+./snmpd.lo: mibgroup/if-mib/ifTable/ifTable_interface.h
+./snmpd.lo: mibgroup/if-mib/ifTable/ifTable.h
+./snmpd.lo: mibgroup/if-mib/ifTable/ifTable_data_access.h
+./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable.h
+./snmpd.lo: ../agent/mibgroup/if-mib/ifTable/ifTable.h
+./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable_constants.h
+./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable_interface.h
+./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable.h
+./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable_data_access.h
+./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
+./snmpd.lo: ../include/net-snmp/data_access/ipaddress.h
+./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_constants.h
+./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.h
+./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
+./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.h
+./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
+./snmpd.lo: ../include/net-snmp/data_access/arp.h
+./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_constants.h
+./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.h
+./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
+./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.h
+./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
+./snmpd.lo: ../include/net-snmp/data_access/ipstats.h
+./snmpd.lo: ../include/net-snmp/data_access/systemstats.h
+./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_constants.h
+./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.h
+./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
+./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.h
+./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h
+./snmpd.lo: ../include/net-snmp/data_access/scopezone.h
+./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_oids.h
+./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_enums.h
+./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.h
+./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h
+./snmpd.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.h
+./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h
+./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_oids.h
+./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_enums.h
+./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.h
+./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h
+./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.h
+./snmpd.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h
+./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h
+./snmpd.lo: ../include/net-snmp/data_access/route.h
+./snmpd.lo: ../agent/mibgroup/mibII/route_headers.h
+./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_constants.h
+./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.h
+./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h
+./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_data_access.h
+./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h
+./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_constants.h
+./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.h
+./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h
+./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.h
+./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h
+./snmpd.lo: ../include/net-snmp/data_access/tcpConn.h
+./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_constants.h
+./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.h
+./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h
+./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.h
+./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h
+./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_constants.h
+./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.h
+./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h
+./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.h
+./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h
+./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_constants.h
+./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.h
+./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h
+./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.h
+./snmpd.lo: mibgroup/if-mib/data_access/interface.h mibgroup/smux/smux.h
 ./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/types.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_api.h
-./snmp_perl.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmp_perl.lo: ../include/net-snmp/library/asn1.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
@@ -1133,10 +1544,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmp_perl.lo: ../include/net-snmp/library/read_config.h
 ./snmp_perl.lo: ../include/net-snmp/library/default_store.h
@@ -1191,39 +1623,17 @@
 ./snmp_perl.lo: ../include/net-snmp/agent/table_array.h
 ./snmp_perl.lo: ../include/net-snmp/agent/mfd.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/types.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_api.h
-./snmp_vars.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmp_vars.lo: ../include/net-snmp/library/asn1.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
@@ -1234,10 +1644,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmp_vars.lo: ../include/net-snmp/library/read_config.h
 ./snmp_vars.lo: ../include/net-snmp/library/default_store.h
@@ -1291,277 +1722,27 @@
 ./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/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-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/types.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/asn1.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
@@ -1572,11 +1753,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -1630,40 +1831,19 @@
 ./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/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-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/types.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/asn1.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
@@ -1674,11 +1854,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -1733,39 +1933,17 @@
 ./helpers/baby_steps.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/baby_steps.lo: ../include/net-snmp/agent/mfd.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/types.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/asn1.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
@@ -1776,11 +1954,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -1835,39 +2033,17 @@
 ./helpers/bulk_to_next.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/asn1.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
@@ -1878,11 +2054,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -1937,39 +2133,17 @@
 ./helpers/cache_handler.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/cache_handler.lo: ../include/net-snmp/agent/mfd.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/types.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/asn1.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
@@ -1980,11 +2154,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -2039,39 +2233,17 @@
 ./helpers/debug_handler.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/debug_handler.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/instance.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/instance.lo: ../include/net-snmp/library/asn1.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
@@ -2082,11 +2254,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./helpers/instance.lo: ../include/net-snmp/library/read_config.h
 ./helpers/instance.lo: ../include/net-snmp/library/default_store.h
@@ -2141,39 +2333,17 @@
 ./helpers/instance.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/instance.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/asn1.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
@@ -2184,11 +2354,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -2243,39 +2433,17 @@
 ./helpers/mode_end_call.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/agent/mfd.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/types.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/asn1.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
@@ -2286,11 +2454,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/read_config.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/default_store.h
@@ -2345,39 +2533,17 @@
 ./helpers/multiplexer.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/multiplexer.lo: ../include/net-snmp/agent/mfd.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/types.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/null.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/null.lo: ../include/net-snmp/library/asn1.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
@@ -2388,11 +2554,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./helpers/null.lo: ../include/net-snmp/library/read_config.h
 ./helpers/null.lo: ../include/net-snmp/library/default_store.h
@@ -2447,39 +2633,17 @@
 ./helpers/null.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/null.lo: ../include/net-snmp/agent/mfd.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/types.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/old_api.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/old_api.lo: ../include/net-snmp/library/asn1.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
@@ -2490,11 +2654,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -2550,39 +2734,17 @@
 ./helpers/old_api.lo: ../include/net-snmp/agent/mfd.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/types.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/read_only.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/read_only.lo: ../include/net-snmp/library/asn1.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
@@ -2593,11 +2755,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -2652,39 +2834,17 @@
 ./helpers/read_only.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/read_only.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/row_merge.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/row_merge.lo: ../include/net-snmp/library/asn1.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
@@ -2695,11 +2855,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -2754,39 +2934,17 @@
 ./helpers/row_merge.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/row_merge.lo: ../include/net-snmp/agent/mfd.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/types.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/scalar.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/scalar.lo: ../include/net-snmp/library/asn1.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
@@ -2797,11 +2955,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./helpers/scalar.lo: ../include/net-snmp/library/read_config.h
 ./helpers/scalar.lo: ../include/net-snmp/library/default_store.h
@@ -2856,39 +3034,17 @@
 ./helpers/scalar.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/scalar.lo: ../include/net-snmp/agent/mfd.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/types.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/asn1.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
@@ -2899,11 +3055,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -2958,39 +3134,17 @@
 ./helpers/scalar_group.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/scalar_group.lo: ../include/net-snmp/agent/mfd.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/types.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/serialize.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/serialize.lo: ../include/net-snmp/library/asn1.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
@@ -3001,11 +3155,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./helpers/serialize.lo: ../include/net-snmp/library/read_config.h
 ./helpers/serialize.lo: ../include/net-snmp/library/default_store.h
@@ -3060,39 +3234,17 @@
 ./helpers/serialize.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/serialize.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/asn1.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
@@ -3103,11 +3255,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -3164,39 +3336,17 @@
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/stash_cache.h
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/stash_to_next.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/net-snmp-config.h
-./helpers/stash_to_next.lo: ../include/net-snmp/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-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/types.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/asn1.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
@@ -3207,11 +3357,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -3265,144 +3435,20 @@
 ./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/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-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/types.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/table_array.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/table_array.lo: ../include/net-snmp/library/asn1.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
@@ -3413,11 +3459,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -3471,40 +3537,118 @@
 ./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.lo: ../include/net-snmp/net-snmp-config.h
+./helpers/table.lo: ../include/net-snmp/net-snmp-includes.h
+./helpers/table.lo: ../include/net-snmp/definitions.h
+./helpers/table.lo: ../include/net-snmp/types.h
+./helpers/table.lo: ../include/net-snmp/library/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/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/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/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/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/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/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-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/types.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/table_container.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/table_container.lo: ../include/net-snmp/library/asn1.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
@@ -3515,11 +3659,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -3574,39 +3738,17 @@
 ./helpers/table_container.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/table_container.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/table_data.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/table_data.lo: ../include/net-snmp/library/asn1.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
@@ -3617,11 +3759,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -3676,39 +3838,17 @@
 ./helpers/table_data.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/table_data.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/asn1.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
@@ -3719,11 +3859,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -3778,39 +3938,17 @@
 ./helpers/table_dataset.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/table_dataset.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/asn1.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
@@ -3821,11 +3959,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -3881,39 +4039,17 @@
 ./helpers/table_iterator.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/table_row.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/table_row.lo: ../include/net-snmp/library/asn1.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
@@ -3924,11 +4060,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -3983,39 +4139,17 @@
 ./helpers/table_row.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/table_row.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/asn1.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
@@ -4026,11 +4160,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -4085,39 +4239,17 @@
 ./helpers/table_tdata.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/table_tdata.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_api.h
-./helpers/watcher.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./helpers/watcher.lo: ../include/net-snmp/library/asn1.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
@@ -4128,11 +4260,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./helpers/watcher.lo: ../include/net-snmp/library/read_config.h
 ./helpers/watcher.lo: ../include/net-snmp/library/default_store.h
@@ -4187,39 +4339,17 @@
 ./helpers/watcher.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/watcher.lo: ../include/net-snmp/agent/mfd.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/types.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_api.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/asn1.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
@@ -4230,11 +4360,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -4290,44 +4440,18 @@
 ./mibgroup/header_complex.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_api.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/asn1.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
@@ -4338,11 +4462,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/read_config.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/default_store.h
@@ -4398,39 +4542,17 @@
 ./mibgroup/testhandler.lo: ../include/net-snmp/agent/mfd.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-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/types.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_api.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/asn1.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
@@ -4441,11 +4563,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -4500,12 +4642,11 @@
 ./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: 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/agent/mib_module_config.h
diff --git a/agent/Makefile.in b/agent/Makefile.in
index a6448f8..766e5c6 100644
--- a/agent/Makefile.in
+++ b/agent/Makefile.in
@@ -25,6 +25,7 @@
 INCLUDESUBDIRHEADERS=agent_read_config.h \
 	agent_registry.h \
 	agent_index.h \
+	agent_sysORTable.h \
 	agent_trap.h \
 	auto_nlist.h \
 	ds_agent.h \
@@ -34,7 +35,8 @@
 	agent_handler.h \
 	net-snmp-agent-includes.h \
 	mib_modules.h \
-	agent_callbacks.h
+	agent_callbacks.h \
+	sysORTable.h
 
 INSTALLBUILTSUBDIRHEADERS=../include/net-snmp/agent/mib_module_config.h \
 			  ../include/net-snmp/agent/agent_module_config.h \
@@ -42,7 +44,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 +63,7 @@
 	agent_index.h	\
 	agent_read_config.h \
 	agent_registry.h \
+	agent_sysORTable.h \
 	agent_trap.h	\
 	auto_nlist.h	\
 	ds_agent.h	\
@@ -103,11 +107,11 @@
 
 # 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@
+	agent_registry.o agent_index.o agent_sysORTable.o agent_trap.o \
+	kernel.o agent_handler.o $(agentgroup_list_o) @OTHERAGENTLIBOBJS@
 LLIBAGENTOBJS=snmp_agent.lo snmp_vars.lo agent_read_config.lo \
-	agent_registry.lo agent_index.lo agent_trap.lo kernel.lo \
-	agent_handler.lo $(agentgroup_list_lo) @OTHERAGENTLIBLOBJS@
+	agent_registry.lo agent_index.lo agent_sysORTable.lo agent_trap.lo \
+	kernel.lo agent_handler.lo $(agentgroup_list_lo) @OTHERAGENTLIBLOBJS@
 
 # The agent objects.
 AGENTOBJS=snmpd.o @other_agentobjs@
@@ -146,7 +150,7 @@
 	$(RANLIB) $(AGENTLIB)
 
 libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION): ${LMIBOBJS} $(HELPERLIB) $(AGENTLIB) $(USELIBS)
-	$(LIB_LD_CMD) $(MIBLIB) ${LMIBOBJS} $(HELPERLIB) $(AGENTLIB) $(USELIBS) ${LMIBLIBS} $(LDFLAGS) $(LIB_LD_LIBS)
+	$(LIB_LD_CMD) $(MIBLIB) ${LMIBOBJS} $(HELPERLIB) $(AGENTLIB) $(USELIBS) $(LDFLAGS) ${LMIBLIBS} $(PERLLDOPTS_FOR_LIBS) $(LIB_LD_LIBS)
 	$(RANLIB) $(MIBLIB)
 
 agentlib: $(AGENTLIB)
@@ -165,15 +169,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@
diff --git a/agent/agent_handler.c b/agent/agent_handler.c
index fcbc6dd..2a2f2d9 100644
--- a/agent/agent_handler.c
+++ b/agent/agent_handler.c
@@ -162,7 +162,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,7 +179,7 @@
     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;
 }
@@ -187,13 +187,19 @@
 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. */
@@ -669,8 +675,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;
@@ -977,7 +983,8 @@
     cptr = copy_nword(cptr, handler_to_insert, sizeof(handler_to_insert));
     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;
     }
 
diff --git a/agent/agent_index.c b/agent/agent_index.c
index ed9ba14..8e349dc 100644
--- a/agent/agent_index.c
+++ b/agent/agent_index.c
@@ -163,7 +163,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 +301,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 ) 
          */
diff --git a/agent/agent_read_config.c b/agent/agent_read_config.c
index 533042a..07861ad 100644
--- a/agent/agent_read_config.c
+++ b/agent/agent_read_config.c
@@ -245,6 +245,9 @@
                                 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");
@@ -284,9 +287,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();
 }
 
diff --git a/agent/agent_registry.c b/agent/agent_registry.c
index d0d35b7..7aa8d23 100644
--- a/agent/agent_registry.c
+++ b/agent/agent_registry.c
@@ -68,11 +68,143 @@
 #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);
+/* Lookup cache code */
 
+#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;
+    }
+}
+
+/* End of Lookup cache code */
+
+static void register_mib_detach_node(netsnmp_subtree *s);
 subtree_context_cache *context_subtrees = NULL;
 
 void
@@ -320,9 +452,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) {
@@ -531,8 +661,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;
 	    }
 
@@ -733,6 +878,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);
     }
@@ -766,6 +914,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,
@@ -1287,7 +1438,7 @@
 {                               /* 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;
@@ -1349,138 +1500,6 @@
     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)
@@ -1528,8 +1547,8 @@
            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,
+        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) &&
diff --git a/agent/agent_sysORTable.c b/agent/agent_sysORTable.c
new file mode 100644
index 0000000..d959eaf
--- /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 = 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..88479ab 100644
--- a/agent/agent_trap.c
+++ b/agent/agent_trap.c
@@ -58,6 +58,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>
@@ -153,6 +154,7 @@
 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 +170,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,
@@ -197,8 +199,9 @@
 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 +219,7 @@
             /*
              * free_trap_session(sp);  
              */
+            DEBUGMSGTL(("trap", "removing trap session (%p, %p)\n", sp, sp->sesp));
             free(sp);
             return 1;
         }
@@ -318,6 +322,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 +343,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 +422,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 +435,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 +449,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,
@@ -637,6 +642,8 @@
     in_addr_t             *pdu_in_addr_t;
     u_long                 uptime;
     struct trap_sink *sink;
+    const char            *v1trapaddress;
+    int                    res;
 
     DEBUGMSGTL(( "trap", "send_trap %d %d ", trap, specific));
     DEBUGMSGOID(("trap", enterprise, enterprise_length));
@@ -790,9 +797,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
@@ -949,6 +976,21 @@
                                   OID_LENGTH(trap_version_id), vars);
 }
 
+/* Send a trap under a context */
+void send_trap_vars_with_context(int trap, int specific, 
+              netsnmp_variable_list *vars, 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);
+    	
+}
+
 /**
  * Sends an SNMPv1 trap (or the SNMPv2 equivalent) to the list of  
  * configured trap destinations (or "sinks"), using the provided 
@@ -1007,6 +1049,25 @@
     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
+ */
+void send_v3trap(netsnmp_variable_list *vars, char *context)
+{
+    netsnmp_send_traps(-1, -1, 
+					trap_version_id, OID_LENGTH(trap_version_id),
+                    vars, context, 0);
+}
+
 void
 send_trap_pdu(netsnmp_pdu *pdu)
 {
@@ -1073,7 +1134,6 @@
 void
 snmpd_parse_config_trapsink(const char *token, char *cptr)
 {
-    char            tmpbuf[1024];
     char           *sp, *cp, *pp = NULL;
     char            *st;
 
@@ -1086,9 +1146,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 +1155,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 +1166,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 +1184,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
diff --git a/agent/auto_nlist.c b/agent/auto_nlist.c
index dff1f2b..0b5995a 100644
--- a/agent/auto_nlist.c
+++ b/agent/auto_nlist.c
@@ -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;
@@ -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..c24e34c 100644
--- a/agent/helpers/Makefile.depend
+++ b/agent/helpers/Makefile.depend
@@ -8,32 +8,14 @@
 ./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/types.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp_api.h
-./all_helpers.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./all_helpers.lo: ../../include/net-snmp/library/asn1.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
@@ -44,11 +26,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./all_helpers.lo: ../../include/net-snmp/library/read_config.h
 ./all_helpers.lo: ../../include/net-snmp/library/default_store.h
@@ -102,6 +104,7 @@
 ./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/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
@@ -110,32 +113,14 @@
 ./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/types.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp_api.h
-./baby_steps.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./baby_steps.lo: ../../include/net-snmp/library/asn1.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
@@ -146,11 +131,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./baby_steps.lo: ../../include/net-snmp/library/read_config.h
 ./baby_steps.lo: ../../include/net-snmp/library/default_store.h
@@ -212,32 +217,14 @@
 ./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/types.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_api.h
-./bulk_to_next.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./bulk_to_next.lo: ../../include/net-snmp/library/asn1.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
@@ -248,11 +235,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -314,32 +321,14 @@
 ./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/types.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp_api.h
-./cache_handler.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./cache_handler.lo: ../../include/net-snmp/library/asn1.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
@@ -350,11 +339,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./cache_handler.lo: ../../include/net-snmp/library/read_config.h
 ./cache_handler.lo: ../../include/net-snmp/library/default_store.h
@@ -416,32 +425,14 @@
 ./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/types.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_api.h
-./debug_handler.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./debug_handler.lo: ../../include/net-snmp/library/asn1.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
@@ -452,11 +443,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./debug_handler.lo: ../../include/net-snmp/library/read_config.h
 ./debug_handler.lo: ../../include/net-snmp/library/default_store.h
@@ -518,32 +529,14 @@
 ./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/types.h
 ./instance.lo: ../../include/net-snmp/library/snmp_api.h
-./instance.lo: ../../include/net-snmp/library/asn1.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/utilities.h
+./instance.lo: ../../include/net-snmp/varbind_api.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/pdu_api.h
+./instance.lo: ../../include/net-snmp/library/asn1.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
@@ -554,11 +547,31 @@
 ./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/mib_api.h
 ./instance.lo: ../../include/net-snmp/library/parse.h
-./instance.lo: ../../include/net-snmp/varbind_api.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/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/data_list.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/config_api.h
 ./instance.lo: ../../include/net-snmp/library/read_config.h
 ./instance.lo: ../../include/net-snmp/library/default_store.h
@@ -620,32 +633,14 @@
 ./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/types.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp_api.h
-./mode_end_call.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mode_end_call.lo: ../../include/net-snmp/library/asn1.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
@@ -656,11 +651,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -722,32 +737,14 @@
 ./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/types.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_api.h
-./multiplexer.lo: ../../include/net-snmp/library/asn1.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/utilities.h
+./multiplexer.lo: ../../include/net-snmp/varbind_api.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/pdu_api.h
+./multiplexer.lo: ../../include/net-snmp/library/asn1.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
@@ -758,11 +755,31 @@
 ./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/mib_api.h
 ./multiplexer.lo: ../../include/net-snmp/library/parse.h
-./multiplexer.lo: ../../include/net-snmp/varbind_api.h
+./multiplexer.lo: ../../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./multiplexer.lo: ../../include/net-snmp/library/read_config.h
 ./multiplexer.lo: ../../include/net-snmp/library/default_store.h
@@ -824,32 +841,14 @@
 ./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/types.h
 ./null.lo: ../../include/net-snmp/library/snmp_api.h
-./null.lo: ../../include/net-snmp/library/asn1.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/utilities.h
+./null.lo: ../../include/net-snmp/varbind_api.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/pdu_api.h
+./null.lo: ../../include/net-snmp/library/asn1.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
@@ -860,10 +859,31 @@
 ./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/mib_api.h
 ./null.lo: ../../include/net-snmp/library/parse.h
-./null.lo: ../../include/net-snmp/varbind_api.h
+./null.lo: ../../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./null.lo: ../../include/net-snmp/library/read_config.h
 ./null.lo: ../../include/net-snmp/library/default_store.h
@@ -925,32 +945,14 @@
 ./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/types.h
 ./old_api.lo: ../../include/net-snmp/library/snmp_api.h
-./old_api.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./old_api.lo: ../../include/net-snmp/library/asn1.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
@@ -961,11 +963,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./old_api.lo: ../../include/net-snmp/library/read_config.h
 ./old_api.lo: ../../include/net-snmp/library/default_store.h
@@ -1028,32 +1050,14 @@
 ./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/types.h
 ./read_only.lo: ../../include/net-snmp/library/snmp_api.h
-./read_only.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./read_only.lo: ../../include/net-snmp/library/asn1.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
@@ -1064,11 +1068,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./read_only.lo: ../../include/net-snmp/library/read_config.h
 ./read_only.lo: ../../include/net-snmp/library/default_store.h
@@ -1130,32 +1154,14 @@
 ./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/types.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp_api.h
-./row_merge.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./row_merge.lo: ../../include/net-snmp/library/asn1.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
@@ -1166,11 +1172,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./row_merge.lo: ../../include/net-snmp/library/read_config.h
 ./row_merge.lo: ../../include/net-snmp/library/default_store.h
@@ -1232,32 +1258,14 @@
 ./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/types.h
 ./scalar.lo: ../../include/net-snmp/library/snmp_api.h
-./scalar.lo: ../../include/net-snmp/library/asn1.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/utilities.h
+./scalar.lo: ../../include/net-snmp/varbind_api.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/pdu_api.h
+./scalar.lo: ../../include/net-snmp/library/asn1.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
@@ -1268,11 +1276,31 @@
 ./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/mib_api.h
 ./scalar.lo: ../../include/net-snmp/library/parse.h
-./scalar.lo: ../../include/net-snmp/varbind_api.h
+./scalar.lo: ../../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./scalar.lo: ../../include/net-snmp/library/read_config.h
 ./scalar.lo: ../../include/net-snmp/library/default_store.h
@@ -1334,32 +1362,14 @@
 ./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/types.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_api.h
-./scalar_group.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./scalar_group.lo: ../../include/net-snmp/library/asn1.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
@@ -1370,11 +1380,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./scalar_group.lo: ../../include/net-snmp/library/read_config.h
 ./scalar_group.lo: ../../include/net-snmp/library/default_store.h
@@ -1436,32 +1466,14 @@
 ./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/types.h
 ./serialize.lo: ../../include/net-snmp/library/snmp_api.h
-./serialize.lo: ../../include/net-snmp/library/asn1.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/utilities.h
+./serialize.lo: ../../include/net-snmp/varbind_api.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/pdu_api.h
+./serialize.lo: ../../include/net-snmp/library/asn1.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
@@ -1472,11 +1484,31 @@
 ./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/mib_api.h
 ./serialize.lo: ../../include/net-snmp/library/parse.h
-./serialize.lo: ../../include/net-snmp/varbind_api.h
+./serialize.lo: ../../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./serialize.lo: ../../include/net-snmp/library/read_config.h
 ./serialize.lo: ../../include/net-snmp/library/default_store.h
@@ -1538,32 +1570,14 @@
 ./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/types.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp_api.h
-./stash_cache.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./stash_cache.lo: ../../include/net-snmp/library/asn1.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
@@ -1574,11 +1588,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./stash_cache.lo: ../../include/net-snmp/library/read_config.h
 ./stash_cache.lo: ../../include/net-snmp/library/default_store.h
@@ -1642,32 +1676,14 @@
 ./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/types.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp_api.h
-./stash_to_next.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./stash_to_next.lo: ../../include/net-snmp/library/asn1.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
@@ -1678,11 +1694,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -1736,109 +1772,8 @@
 ./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/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
@@ -1847,32 +1782,14 @@
 ./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/types.h
 ./table_array.lo: ../../include/net-snmp/library/snmp_api.h
-./table_array.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./table_array.lo: ../../include/net-snmp/library/asn1.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
@@ -1883,11 +1800,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./table_array.lo: ../../include/net-snmp/library/read_config.h
 ./table_array.lo: ../../include/net-snmp/library/default_store.h
@@ -1941,6 +1878,110 @@
 ./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.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/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/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/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/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/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/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
 ./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
@@ -1949,32 +1990,14 @@
 ./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/types.h
 ./table_container.lo: ../../include/net-snmp/library/snmp_api.h
-./table_container.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./table_container.lo: ../../include/net-snmp/library/asn1.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
@@ -1985,11 +2008,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./table_container.lo: ../../include/net-snmp/library/read_config.h
 ./table_container.lo: ../../include/net-snmp/library/default_store.h
@@ -2051,32 +2094,14 @@
 ./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/types.h
 ./table_data.lo: ../../include/net-snmp/library/snmp_api.h
-./table_data.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./table_data.lo: ../../include/net-snmp/library/asn1.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
@@ -2087,11 +2112,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./table_data.lo: ../../include/net-snmp/library/read_config.h
 ./table_data.lo: ../../include/net-snmp/library/default_store.h
@@ -2153,32 +2198,14 @@
 ./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/types.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp_api.h
-./table_dataset.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./table_dataset.lo: ../../include/net-snmp/library/asn1.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
@@ -2189,11 +2216,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./table_dataset.lo: ../../include/net-snmp/library/read_config.h
 ./table_dataset.lo: ../../include/net-snmp/library/default_store.h
@@ -2255,32 +2302,14 @@
 ./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/types.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp_api.h
-./table_iterator.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./table_iterator.lo: ../../include/net-snmp/library/asn1.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
@@ -2291,11 +2320,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./table_iterator.lo: ../../include/net-snmp/library/read_config.h
 ./table_iterator.lo: ../../include/net-snmp/library/default_store.h
@@ -2358,32 +2407,14 @@
 ./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/types.h
 ./table_row.lo: ../../include/net-snmp/library/snmp_api.h
-./table_row.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./table_row.lo: ../../include/net-snmp/library/asn1.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
@@ -2394,11 +2425,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./table_row.lo: ../../include/net-snmp/library/read_config.h
 ./table_row.lo: ../../include/net-snmp/library/default_store.h
@@ -2460,32 +2511,14 @@
 ./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/types.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp_api.h
-./table_tdata.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./table_tdata.lo: ../../include/net-snmp/library/asn1.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
@@ -2496,11 +2529,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./table_tdata.lo: ../../include/net-snmp/library/read_config.h
 ./table_tdata.lo: ../../include/net-snmp/library/default_store.h
@@ -2562,32 +2615,14 @@
 ./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/types.h
 ./watcher.lo: ../../include/net-snmp/library/snmp_api.h
-./watcher.lo: ../../include/net-snmp/library/asn1.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/utilities.h
+./watcher.lo: ../../include/net-snmp/varbind_api.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/pdu_api.h
+./watcher.lo: ../../include/net-snmp/library/asn1.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
@@ -2598,11 +2633,31 @@
 ./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/mib_api.h
 ./watcher.lo: ../../include/net-snmp/library/parse.h
-./watcher.lo: ../../include/net-snmp/varbind_api.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/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/data_list.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/config_api.h
 ./watcher.lo: ../../include/net-snmp/library/read_config.h
 ./watcher.lo: ../../include/net-snmp/library/default_store.h
diff --git a/agent/helpers/Makefile.in b/agent/helpers/Makefile.in
index b83af89..c6b732f 100644
--- a/agent/helpers/Makefile.in
+++ b/agent/helpers/Makefile.in
@@ -31,13 +31,13 @@
         serialize.h \
 	stash_cache.h \
 	stash_to_next.h \
-        table.h \
 	table_array.h \
 	table_container.h \
+        table.h \
         table_data.h \
         table_dataset.h \
-        table_iterator.h \
         table_tdata.h \
+        table_iterator.h \
 	watcher.h
 
 # No header 'table_row.h'
diff --git a/agent/helpers/all_helpers.c b/agent/helpers/all_helpers.c
index 02bc8af..1ed108a 100644
--- a/agent/helpers/all_helpers.c
+++ b/agent/helpers/all_helpers.c
@@ -5,15 +5,6 @@
 #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,16 +12,6 @@
 #include <net-snmp/agent/table_dataset.h>
 #include <net-snmp/agent/stash_cache.h>
 
-#else
-
-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
 netsnmp_init_helpers(void)
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..bfd6e0a 100644
--- a/agent/helpers/cache_handler.c
+++ b/agent/helpers/cache_handler.c
@@ -1,16 +1,26 @@
+/* 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/cache_handler.h>
+
 #if HAVE_STRING_H
 #include <string.h>
 #else
 #include <strings.h>
 #endif
 
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
-
-#include <net-snmp/agent/cache_handler.h>
-
 static netsnmp_cache  *cache_head = NULL;
 static int             cache_outstanding_valid = 0;
 static int             _cache_load( netsnmp_cache *cache );
@@ -117,7 +127,7 @@
 /** 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;
 
@@ -135,7 +145,7 @@
 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 +183,40 @@
     return 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 (cache->rootoid)
+        free(cache->rootoid);
+
+    free(cache);
+
+    return SNMPERR_SUCCESS;
+}
+
 /** callback function to call cache load function */
 static void
 _timer_reload(unsigned int regNo, void *clientargs)
@@ -217,7 +261,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 +278,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;
@@ -275,7 +319,7 @@
 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;
@@ -463,7 +507,7 @@
     case MODE_GET:
     case MODE_GETNEXT:
     case MODE_GETBULK:
-    case MODE_SET_RESERVE1: {
+    case MODE_SET_RESERVE1:
 
         /*
          * only touch cache once per pdu request, to prevent a cache
@@ -474,7 +518,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,8 +527,7 @@
         netsnmp_cache_check_and_reload(cache);
         netsnmp_cache_reqinfo_insert(cache, reqinfo, addrstr);
         /** next handler called automatically - 'AUTO_NEXT' */
-        }
-        return SNMP_ERR_NOERROR;
+        break;
 
     case MODE_SET_RESERVE2:
     case MODE_SET_FREE:
@@ -492,7 +535,7 @@
     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 +549,7 @@
             cache->valid = 0;
         }
         /** next handler called automatically - 'AUTO_NEXT' */
-        return SNMP_ERR_NOERROR;
+        break;
 
     default:
         snmp_log(LOG_WARNING, "cache_handler: Unrecognised mode (%d)\n",
@@ -514,8 +557,7 @@
         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_NOERROR;
 }
 
 static void
diff --git a/agent/helpers/debug_handler.c b/agent/helpers/debug_handler.c
index 4e35695..832ad2d 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>
 
@@ -124,7 +117,7 @@
     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", " [myvoid = %p]", hptr->myvoid));
     }
     DEBUGMSG(("helper:debug", "\n"));
 
diff --git a/agent/helpers/instance.c b/agent/helpers/instance.c
index 5c9e16d..9ebdb87 100644
--- a/agent/helpers/instance.c
+++ b/agent/helpers/instance.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/instance.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/instance.h>
 #include <net-snmp/agent/serialize.h>
 #include <net-snmp/agent/read_only.h>
 
@@ -108,7 +109,7 @@
 netsnmp_handler_registration *
 get_reg(const char *name,
         const char *ourname,
-        oid * reg_oid, size_t reg_oid_len,
+        const oid * reg_oid, size_t reg_oid_len,
         void *it,
         int modes,
         Netsnmp_Node_Handler * scalarh, Netsnmp_Node_Handler * subhandler,
@@ -142,115 +143,114 @@
 /* Watched 'long' instances are writable on both 32-bit and 64-bit systems  */
 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_instance(
+               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));
 }
 
 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_instance(
+               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));
 }
 
 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_instance(
+               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));
 }
 
 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_instance(
+               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));
 }
 
 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_instance(
+               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));
 }
 
 /* Watched 'int' instances are only writable on 32-bit systems  */
 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_instance(
+               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));
 }
 
 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_instance(
+               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));
 }
 
 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_instance(
+               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));
 }
 
   /*
@@ -258,7 +258,7 @@
    */
 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,
@@ -272,115 +272,129 @@
 
 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_instance(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(u_long), ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
 
 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_instance(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(u_long), ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
 
 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_instance(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(u_long), ASN_COUNTER, WATCHER_FIXED_SIZE));
 }
 
 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_instance(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(long), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
 
 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_instance(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(long), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
 
 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_instance(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
 
 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_instance(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
 
 /*
@@ -388,7 +402,7 @@
  */
 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)
@@ -459,17 +473,21 @@
  */
 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_instance(
+               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));
 }
 
+#ifndef NETSNMP_NO_DEPRECATED_FUNCTIONS
+
+/**
+ * \deprecated This function is unused and scheduled for removal in Net-SNMP 5.6
+ */
 int
 netsnmp_instance_ulong_handler(netsnmp_mib_handler *handler,
                                netsnmp_handler_registration *reginfo,
@@ -547,6 +565,9 @@
     return SNMP_ERR_NOERROR;
 }
 
+/**
+ * \deprecated This function is unused and scheduled for removal in Net-SNMP 5.6
+ */
 int
 netsnmp_instance_counter32_handler(netsnmp_mib_handler *handler,
                                    netsnmp_handler_registration *reginfo,
@@ -583,6 +604,9 @@
     return SNMP_ERR_NOERROR;
 }
 
+/**
+ * \deprecated This function is unused and scheduled for removal in Net-SNMP 5.6
+ */
 int
 netsnmp_instance_long_handler(netsnmp_mib_handler *handler,
                               netsnmp_handler_registration *reginfo,
@@ -658,6 +682,9 @@
     return SNMP_ERR_NOERROR;
 }
 
+/**
+ * \deprecated This function is unused and scheduled for removal in Net-SNMP 5.6
+ */
 int
 netsnmp_instance_int_handler(netsnmp_mib_handler *handler,
                              netsnmp_handler_registration *reginfo,
@@ -738,6 +765,8 @@
     return SNMP_ERR_NOERROR;
 }
 
+#endif /* NETSNMP_NO_DEPRECATED_FUNCTIONS */
+
 int
 netsnmp_instance_num_file_handler(netsnmp_mib_handler *handler,
                                   netsnmp_handler_registration *reginfo,
@@ -867,6 +896,11 @@
     return SNMP_ERR_NOERROR;
 }
 
+#ifndef NETSNMP_NO_DEPRECATED_FUNCTIONS
+
+/**
+ * \deprecated This function is unused and scheduled for removal in Net-SNMP 5.6
+ */
 int
 netsnmp_instance_uint_handler(netsnmp_mib_handler *handler,
                               netsnmp_handler_registration *reginfo,
@@ -947,6 +981,8 @@
     return SNMP_ERR_NOERROR;
 }
 
+#endif /* NETSNMP_NO_DEPRECATED_FUNCTIONS */
+
 int
 netsnmp_instance_helper_handler(netsnmp_mib_handler *handler,
                                 netsnmp_handler_registration *reginfo,
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..ec26263 100644
--- a/agent/helpers/old_api.c
+++ b/agent/helpers/old_api.c
@@ -1,15 +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/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>
 
 #define MIB_CLIENTS_ARE_EVIL 1
@@ -67,6 +68,8 @@
         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),
@@ -77,6 +80,12 @@
         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
@@ -403,7 +412,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..b85cfb5 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>
 
@@ -64,13 +58,10 @@
     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..9ae7ea8 100644
--- a/agent/helpers/row_merge.c
+++ b/agent/helpers/row_merge.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/row_merge.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/row_merge.h>
-
 /** @defgroup row_merge row_merge
  *  Calls sub handlers with request for one row at a time.
  *  @ingroup utilities
diff --git a/agent/helpers/scalar.c b/agent/helpers/scalar.c
index 42c66b4..23b6bb7 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>
diff --git a/agent/helpers/scalar_group.c b/agent/helpers/scalar_group.c
index a5d119e..09cee1a 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,8 @@
 #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>
 
 /** @defgroup scalar_group_group scalar_group
  *  Process groups of scalars.
@@ -48,7 +48,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);
 }
@@ -128,12 +127,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 +162,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 +176,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/stash_cache.c b/agent/helpers/stash_cache.c
index efb1eb4..5252cb2 100644
--- a/agent/helpers/stash_cache.c
+++ b/agent/helpers/stash_cache.c
@@ -1,15 +1,10 @@
 #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>
 
 #include <net-snmp/agent/stash_cache.h>
+
 #include <net-snmp/agent/stash_to_next.h>
 
 extern NetsnmpCacheLoad _netsnmp_stash_cache_load;
@@ -32,7 +27,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;
 }
 
@@ -155,7 +151,6 @@
                                          cdata->val.string, cdata->val_len);
             }
         }
-        return SNMP_ERR_NOERROR;
         break;
 
     case MODE_GETNEXT:
@@ -178,7 +173,6 @@
                 }
             }
         }
-        return SNMP_ERR_NOERROR;
         break;
 
     default:
@@ -186,7 +180,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.
diff --git a/agent/helpers/stash_to_next.c b/agent/helpers/stash_to_next.c
index aabaaa8..f679e04 100644
--- a/agent/helpers/stash_to_next.c
+++ b/agent/helpers/stash_to_next.c
@@ -1,17 +1,12 @@
 #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>
 
-#include <net-snmp/agent/stash_cache.h>
 #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
diff --git a/agent/helpers/table.c b/agent/helpers/table.c
index 32a0803..374ef48 100644
--- a/agent/helpers/table.c
+++ b/agent/helpers/table.c
@@ -12,20 +12,26 @@
  * 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-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/table.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/library/snmp_assert.h>
 
 static void     table_helper_cleanup(netsnmp_agent_request_info *reqinfo,
@@ -108,10 +114,22 @@
 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); */
+    /* reginfo->myvoid = NULL; */
+    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
@@ -260,7 +278,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 {
@@ -352,6 +370,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 +394,7 @@
             /*
              * 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 (%ld)\n",
                         var->name[oid_column_pos]));
             if (var->name[oid_column_pos] < tbl_info->min_column) {
                 DEBUGMSGTL(("helper:table:col",
@@ -427,7 +450,7 @@
                     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",
+                                "    which doesn't match req %ld - truncating index info\n",
                                    var->name[oid_column_pos]));
                     /*
                      * different column! truncate useless index info 
@@ -447,8 +470,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));
@@ -564,7 +587,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));
@@ -733,10 +756,35 @@
 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);
 }
 
@@ -929,6 +977,26 @@
     return 0;
 }
 
+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,30 +1122,16 @@
  *
  */
 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);
 }
 
diff --git a/agent/helpers/table_array.c b/agent/helpers/table_array.c
index 19b9c5c..c7f52f9 100644
--- a/agent/helpers/table_array.c
+++ b/agent/helpers/table_array.c
@@ -5,17 +5,18 @@
 
 #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_array.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/table_array.h>
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/snmp_assert.h>
 
@@ -564,6 +565,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 +582,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;
diff --git a/agent/helpers/table_container.c b/agent/helpers/table_container.c
index d08bff2..85cdb41 100644
--- a/agent/helpers/table_container.c
+++ b/agent/helpers/table_container.c
@@ -5,17 +5,18 @@
 
 #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>
+
 #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/table_container.h>
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/snmp_assert.h>
 
@@ -315,6 +316,24 @@
     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;
+        free(tad);
+        reginfo->handler->myvoid = NULL;
+    }
+    return netsnmp_unregister_table( reginfo );
+}
+
 /** retrieve the container used by the table_container helper */
 netsnmp_container*
 netsnmp_container_table_container_extract(netsnmp_request_info *request)
diff --git a/agent/helpers/table_data.c b/agent/helpers/table_data.c
index 317331a..c3a7f9e 100644
--- a/agent/helpers/table_data.c
+++ b/agent/helpers/table_data.c
@@ -1,16 +1,17 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/table_data.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/table_data.h>
 #include <net-snmp/agent/read_only.h>
 
 /** @defgroup table_data table_data
@@ -80,16 +81,16 @@
     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);
             return NULL;
         }
     }
@@ -227,7 +228,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)
@@ -342,8 +343,8 @@
     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;
 }
@@ -414,6 +415,13 @@
     return netsnmp_register_table_data(reginfo, table, table_info);
 }
 
+int
+netsnmp_unregister_table_data(netsnmp_handler_registration *reginfo)
+{
+    /* free table; */
+    return netsnmp_unregister_table(reginfo);
+}
+
 /*
  * The helper handler that takes care of passing a specific row of
  * data down to the lower handler(s).  It sets request->processed if
@@ -678,7 +686,7 @@
 }
 
 /** 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)
 {
diff --git a/agent/helpers/table_dataset.c b/agent/helpers/table_dataset.c
index f92e3e1..23e0deb 100644
--- a/agent/helpers/table_dataset.c
+++ b/agent/helpers/table_dataset.c
@@ -1,14 +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/table_dataset.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>
-
 static netsnmp_data_list *auto_tables;
 
 typedef struct data_set_tables_s {
@@ -72,78 +74,6 @@
  *
  * ================================== */
 
-/** 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.
  */
@@ -230,6 +160,78 @@
     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;
+}
+
+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;
+}
+
 /* ==================================
  *
  * Data Set API: Default row operations
@@ -288,6 +290,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;
@@ -324,13 +328,7 @@
  *  repeatedly for you.
  */
 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 +336,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);
@@ -403,6 +394,8 @@
          * 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) {
@@ -446,11 +439,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 +465,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 +474,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,9 +487,6 @@
          */
         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);
 
         if (MODE_IS_SET(reqinfo->mode)) {
 
@@ -557,6 +553,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;
                 }
@@ -1044,7 +1045,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 +1058,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);
@@ -1311,25 +1312,13 @@
 /** adds multiple indexes to a table_dataset helper object.
  *  To end the list, use a 0 after the list of ASN index types. */
 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)
diff --git a/agent/helpers/table_iterator.c b/agent/helpers/table_iterator.c
index e7742ed..bcca797 100644
--- a/agent/helpers/table_iterator.c
+++ b/agent/helpers/table_iterator.c
@@ -84,18 +84,19 @@
 
 #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_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>
 
 /* ==================================
@@ -345,6 +346,8 @@
     /* 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,
@@ -408,7 +411,7 @@
     
     iinfo = (netsnmp_iterator_info *) handler->myvoid;
     if (!iinfo || !reginfo || !reqinfo)
-        return SNMPERR_GENERR;
+        return SNMP_ERR_GENERR;
 
     tbl_info = iinfo->table_reginfo;
 
@@ -437,6 +440,8 @@
 
         /* 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,
@@ -453,6 +458,14 @@
             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 */
@@ -467,6 +480,14 @@
                 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,
@@ -557,6 +578,16 @@
 
                     /* XXX: store in an array for faster retrival */
                     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 =
@@ -571,11 +602,25 @@
                         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) {
@@ -612,6 +657,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,
@@ -633,11 +687,23 @@
                         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
@@ -945,7 +1011,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 +1030,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 +1060,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 +1097,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 ? */
     }
@@ -1060,7 +1126,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 +1134,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 ? */
     }
diff --git a/agent/helpers/table_row.c b/agent/helpers/table_row.c
index 7c8a4c4..bbc484f 100644
--- a/agent/helpers/table_row.c
+++ b/agent/helpers/table_row.c
@@ -136,7 +136,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;
 
      
diff --git a/agent/helpers/table_tdata.c b/agent/helpers/table_tdata.c
index 46d3e18..a57e00c 100644
--- a/agent/helpers/table_tdata.c
+++ b/agent/helpers/table_tdata.c
@@ -1,16 +1,17 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/table_tdata.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/table_tdata.h>
 #include <net-snmp/agent/table_container.h>
 #include <net-snmp/agent/read_only.h>
 
@@ -108,8 +109,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);
@@ -138,8 +139,8 @@
     }
 
     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;
     }
@@ -214,7 +215,7 @@
      * add this row to the stored table
      */
     CONTAINER_INSERT( table->container, row );
-    DEBUGMSGTL(("tdata_add_row", "added row (%x)\n", row));
+    DEBUGMSGTL(("tdata_add_row", "added row (%p)\n", row));
 
     return SNMPERR_SUCCESS;
 }
@@ -354,6 +355,13 @@
                   table->container, TABLE_CONTAINER_KEY_NETSNMP_INDEX);
 }
 
+int
+netsnmp_tdata_unregister(netsnmp_handler_registration    *reginfo)
+{
+    /* free table; */
+    return netsnmp_container_table_unregister(reginfo);
+}
+
 /** extracts the tdata table from the request structure */
 netsnmp_tdata *
 netsnmp_tdata_extract_table(netsnmp_request_info *request)
diff --git a/agent/helpers/watcher.c b/agent/helpers/watcher.c
index 9cbb4d3..8ef456a 100644
--- a/agent/helpers/watcher.c
+++ b/agent/helpers/watcher.c
@@ -1,19 +1,15 @@
 #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-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>
+
 /** @defgroup watcher watcher
  *  Watch a specified variable and process it as an instance or scalar object
  *  @ingroup leaf
@@ -33,19 +29,47 @@
 }
 
 netsnmp_watcher_info *
+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)
+{
+    winfo->data = data;
+    winfo->data_size = size;
+    winfo->max_size = max_size;
+    winfo->type = type;
+    winfo->flags = flags;
+    winfo->data_size_p = size_p;
+    return winfo;
+}
+
+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;
+}
+
+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);
-
-    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;
-
+    if (winfo)
+        netsnmp_init_watcher_info(winfo, data, size, type, flags);
     return winfo;
 }
 
@@ -75,7 +99,59 @@
     return netsnmp_register_scalar(reginfo);
 }
 
+/** @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 =
+        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 +159,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,7 +176,7 @@
         snmp_set_var_typed_value(requests->requestvb,
                                  winfo->type,
                                  winfo->data,
-                                 winfo->data_size);
+                                 get_data_size(winfo));
         break;
 
         /*
@@ -108,18 +184,19 @@
          */
     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 +204,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));
         break;
 
     case MODE_SET_FREE:
@@ -149,18 +226,16 @@
         /*
          * 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_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;
 
     }
@@ -349,7 +424,7 @@
 
 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)
 {
@@ -365,7 +440,7 @@
 
 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)
 {
@@ -381,7 +456,7 @@
 
 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)
 {
@@ -397,7 +472,7 @@
 
 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)
 {
@@ -414,7 +489,7 @@
 
 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)
 {
@@ -430,7 +505,7 @@
 
 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)
 {
@@ -447,7 +522,7 @@
 
 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)
 {
diff --git a/agent/mib_modules.c b/agent/mib_modules.c
index 95e4695..ea8271c 100644
--- a/agent/mib_modules.c
+++ b/agent/mib_modules.c
@@ -49,9 +49,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..fdd5fbb 100644
--- a/agent/mibgroup/Makefile.depend
+++ b/agent/mibgroup/Makefile.depend
@@ -8,32 +8,14 @@
 ./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/types.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_api.h
-./header_complex.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./header_complex.lo: ../../include/net-snmp/library/asn1.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
@@ -44,11 +26,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./header_complex.lo: ../../include/net-snmp/library/read_config.h
 ./header_complex.lo: ../../include/net-snmp/library/default_store.h
@@ -115,32 +117,14 @@
 ./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/types.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp_api.h
-./testhandler.lo: ../../include/net-snmp/library/asn1.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/utilities.h
+./testhandler.lo: ../../include/net-snmp/varbind_api.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/pdu_api.h
+./testhandler.lo: ../../include/net-snmp/library/asn1.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
@@ -151,11 +135,31 @@
 ./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/mib_api.h
 ./testhandler.lo: ../../include/net-snmp/library/parse.h
-./testhandler.lo: ../../include/net-snmp/varbind_api.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/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/data_list.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/config_api.h
 ./testhandler.lo: ../../include/net-snmp/library/read_config.h
 ./testhandler.lo: ../../include/net-snmp/library/default_store.h
@@ -217,32 +221,14 @@
 ./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/types.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp_api.h
-./util_funcs.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./util_funcs.lo: ../../include/net-snmp/library/asn1.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
@@ -253,11 +239,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./util_funcs.lo: ../../include/net-snmp/library/read_config.h
 ./util_funcs.lo: ../../include/net-snmp/library/default_store.h
@@ -311,7 +317,8 @@
 ./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: util_funcs/header_generic.h 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
@@ -319,625 +326,6 @@
 ./winExtDLL.lo: ../../include/net-snmp/system/generic.h
 ./winExtDLL.lo: ../../include/net-snmp/machine/generic.h
 ./winExtDLL.lo: ../../include/net-snmp/agent/mib_module_config.h
-./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
@@ -946,32 +334,14 @@
 ./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/types.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp_api.h
-./agent/extend.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agent/extend.lo: ../../include/net-snmp/library/asn1.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
@@ -982,11 +352,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./agent/extend.lo: ../../include/net-snmp/library/read_config.h
 ./agent/extend.lo: ../../include/net-snmp/library/default_store.h
@@ -1041,8 +431,8 @@
 ./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/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
@@ -1051,32 +441,14 @@
 ./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/types.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp_api.h
-./agent/nsCache.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agent/nsCache.lo: ../../include/net-snmp/library/asn1.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
@@ -1087,11 +459,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/default_store.h
@@ -1145,7 +537,6 @@
 ./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/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
@@ -1154,32 +545,14 @@
 ./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/types.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_api.h
-./agent/nsDebug.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/asn1.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
@@ -1190,11 +563,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/default_store.h
@@ -1248,7 +641,6 @@
 ./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/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
@@ -1257,32 +649,14 @@
 ./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/types.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_api.h
-./agent/nsLogging.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/asn1.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
@@ -1293,11 +667,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/default_store.h
@@ -1351,7 +745,6 @@
 ./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/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
@@ -1360,32 +753,14 @@
 ./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/types.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_api.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/asn1.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
@@ -1396,11 +771,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/default_store.h
@@ -1463,32 +858,14 @@
 ./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/types.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_api.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/asn1.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
@@ -1499,11 +876,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/default_store.h
@@ -1566,32 +963,14 @@
 ./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/types.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_api.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/asn1.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
@@ -1602,11 +981,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/default_store.h
@@ -1669,32 +1068,14 @@
 ./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/types.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_api.h
-./agentx/agentx_config.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/asn1.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
@@ -1705,11 +1086,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -1773,32 +1174,14 @@
 ./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/types.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp_api.h
-./agentx/client.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agentx/client.lo: ../../include/net-snmp/library/asn1.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
@@ -1809,11 +1192,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./agentx/client.lo: ../../include/net-snmp/library/read_config.h
 ./agentx/client.lo: ../../include/net-snmp/library/default_store.h
@@ -1869,109 +1272,6 @@
 ./agentx/client.lo: ../../include/net-snmp/agent/mfd.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
@@ -1980,32 +1280,14 @@
 ./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/types.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_api.h
-./agentx/master_admin.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/asn1.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
@@ -2016,11 +1298,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -2077,7 +1379,113 @@
 ./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/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/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/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/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/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/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/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/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
@@ -2086,32 +1494,14 @@
 ./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/types.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_api.h
-./agentx/protocol.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agentx/protocol.lo: ../../include/net-snmp/library/asn1.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
@@ -2122,11 +1512,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/read_config.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/default_store.h
@@ -2153,32 +1563,14 @@
 ./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/types.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp_api.h
-./agentx/subagent.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./agentx/subagent.lo: ../../include/net-snmp/library/asn1.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
@@ -2189,11 +1581,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/read_config.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/default_store.h
@@ -2250,7 +1662,9 @@
 ./agentx/subagent.lo: 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
 ./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
@@ -2259,32 +1673,14 @@
 ./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/types.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_api.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/asn1.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
@@ -2295,11 +1691,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/default_store.h
@@ -2362,32 +1778,14 @@
 ./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/types.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_api.h
-./disman/mteEventTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/asn1.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
@@ -2398,11 +1796,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/default_store.h
@@ -2468,32 +1886,14 @@
 ./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/types.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_api.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/asn1.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
@@ -2504,11 +1904,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/default_store.h
@@ -2572,32 +1992,14 @@
 ./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/types.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_api.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/asn1.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
@@ -2608,11 +2010,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/default_store.h
@@ -2677,32 +2099,14 @@
 ./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/types.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_api.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/asn1.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
@@ -2713,11 +2117,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/default_store.h
@@ -2782,32 +2206,14 @@
 ./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/types.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_api.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/asn1.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
@@ -2818,11 +2224,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/default_store.h
@@ -2887,32 +2313,14 @@
 ./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/types.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_api.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/asn1.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
@@ -2923,11 +2331,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/default_store.h
@@ -2996,32 +2424,14 @@
 ./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/types.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_api.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/asn1.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
@@ -3032,11 +2442,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/default_store.h
@@ -3101,32 +2531,14 @@
 ./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/types.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_api.h
-./examples/data_set.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./examples/data_set.lo: ../../include/net-snmp/library/asn1.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
@@ -3137,11 +2549,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -3203,32 +2635,14 @@
 ./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/types.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_api.h
-./examples/delayed_instance.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/asn1.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
@@ -3239,11 +2653,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -3306,32 +2740,14 @@
 ./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/types.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp_api.h
-./examples/example.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./examples/example.lo: ../../include/net-snmp/library/asn1.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
@@ -3342,11 +2758,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./examples/example.lo: ../../include/net-snmp/library/read_config.h
 ./examples/example.lo: ../../include/net-snmp/library/default_store.h
@@ -3399,8 +2835,114 @@
 ./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/example.lo: ../../include/net-snmp/agent/mfd.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/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/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/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/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/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/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/data_list.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/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
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/keytools.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/scapi.h
+./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/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
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/agent_module_config.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/snmp_agent.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/snmp_vars.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/agent_handler.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/var_struct.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/agent_registry.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/fd_event_manager.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/ds_agent.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/agent_read_config.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/agent_trap.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/all_helpers.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/instance.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/baby_steps.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/scalar.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/scalar_group.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/watcher.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/multiplexer.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/null.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/debug_handler.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/cache_handler.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/old_api.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/read_only.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/row_merge.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/serialize.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/mode_end_call.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table_data.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table_dataset.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table_tdata.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table_iterator.h
+./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: ./examples/netSnmpHostsTable_access.h
+./examples/netSnmpHostsTable_access.lo: ./examples/netSnmpHostsTable_enums.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/net-snmp-config.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/system/linux.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/system/sysv.h
@@ -3409,32 +2951,14 @@
 ./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/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/varbind_api.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/pdu_api.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/asn1.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
@@ -3445,11 +2969,31 @@
 ./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/mib_api.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/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/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/config_api.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/read_config.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/default_store.h
@@ -3508,110 +3052,6 @@
 ./examples/netSnmpHostsTable.lo: ./examples/netSnmpHostsTable_enums.h
 ./examples/netSnmpHostsTable.lo: ./examples/netSnmpHostsTable_checkfns.h
 ./examples/netSnmpHostsTable.lo: ./examples/netSnmpHostsTable_access.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/snmp_api.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/asn1.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/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
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/keytools.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/scapi.h
-./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/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
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/agent_module_config.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/snmp_agent.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/snmp_vars.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/agent_handler.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/var_struct.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/agent_registry.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/fd_event_manager.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/ds_agent.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/agent_read_config.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/agent_trap.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/all_helpers.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/instance.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/baby_steps.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/scalar.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/scalar_group.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/watcher.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/multiplexer.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/null.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/debug_handler.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/cache_handler.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/old_api.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/read_only.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/row_merge.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/serialize.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/mode_end_call.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table_data.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table_dataset.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table_tdata.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table_iterator.h
-./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: ./examples/netSnmpHostsTable_access.h
-./examples/netSnmpHostsTable_access.lo: ./examples/netSnmpHostsTable_enums.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
@@ -3620,32 +3060,14 @@
 ./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/types.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_api.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/asn1.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
@@ -3656,11 +3078,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -3689,32 +3131,14 @@
 ./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/types.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_api.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/asn1.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
@@ -3725,11 +3149,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -3757,32 +3201,14 @@
 ./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/types.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_api.h
-./examples/notification.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./examples/notification.lo: ../../include/net-snmp/library/asn1.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
@@ -3793,11 +3219,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./examples/notification.lo: ../../include/net-snmp/library/read_config.h
 ./examples/notification.lo: ../../include/net-snmp/library/default_store.h
@@ -3859,32 +3305,14 @@
 ./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/types.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_api.h
-./examples/scalar_int.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/asn1.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
@@ -3895,11 +3323,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -3961,32 +3409,14 @@
 ./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/types.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_api.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/asn1.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
@@ -3997,11 +3427,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/read_config.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/default_store.h
@@ -4054,8 +3504,9 @@
 ./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: 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
@@ -4064,32 +3515,14 @@
 ./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/types.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_api.h
-./examples/watched.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./examples/watched.lo: ../../include/net-snmp/library/asn1.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
@@ -4100,11 +3533,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./examples/watched.lo: ../../include/net-snmp/library/read_config.h
 ./examples/watched.lo: ../../include/net-snmp/library/default_store.h
@@ -4167,32 +3620,14 @@
 ./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/types.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_api.h
-./host/hr_device.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./host/hr_device.lo: ../../include/net-snmp/library/asn1.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
@@ -4203,11 +3638,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -4240,32 +3695,14 @@
 ./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/types.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_api.h
-./host/hr_disk.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./host/hr_disk.lo: ../../include/net-snmp/library/asn1.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
@@ -4276,11 +3713,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -4314,32 +3771,14 @@
 ./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/types.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_api.h
-./host/hr_filesys.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/asn1.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
@@ -4350,11 +3789,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -4410,7 +3869,223 @@
 ./host/hr_filesys.lo: ../../include/net-snmp/agent/mfd.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/hr_storage.h ./host/hr_disk.h
+./host/hrh_filesys.lo: ../../include/net-snmp/net-snmp-config.h
+./host/hrh_filesys.lo: ../../include/net-snmp/system/linux.h
+./host/hrh_filesys.lo: ../../include/net-snmp/system/sysv.h
+./host/hrh_filesys.lo: ../../include/net-snmp/system/generic.h
+./host/hrh_filesys.lo: ../../include/net-snmp/machine/generic.h
+./host/hrh_filesys.lo: ../../include/net-snmp/net-snmp-includes.h
+./host/hrh_filesys.lo: ../../include/net-snmp/definitions.h
+./host/hrh_filesys.lo: ../../include/net-snmp/types.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/snmp_logging.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/container_binary_array.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/container_list_ssll.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hrh_filesys.lo: ../../include/net-snmp/snmpv3_api.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpv3.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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/hardware/memory.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/hardware/fsys.h
+./host/hrh_filesys.lo: host_res.h ./host/hrh_filesys.h
+./host/hrh_filesys.lo: ./host/hrh_storage.h ./host/hr_disk.h
+./host/hrh_storage.lo: ../../include/net-snmp/net-snmp-config.h
+./host/hrh_storage.lo: ../../include/net-snmp/system/linux.h
+./host/hrh_storage.lo: ../../include/net-snmp/system/sysv.h
+./host/hrh_storage.lo: ../../include/net-snmp/system/generic.h
+./host/hrh_storage.lo: ../../include/net-snmp/machine/generic.h
+./host/hrh_storage.lo: ../../include/net-snmp/net-snmp-includes.h
+./host/hrh_storage.lo: ../../include/net-snmp/definitions.h
+./host/hrh_storage.lo: ../../include/net-snmp/types.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/container_binary_array.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/container_list_ssll.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hrh_storage.lo: ../../include/net-snmp/snmpv3_api.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmpv3.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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/hardware/memory.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/hardware/fsys.h
+./host/hrh_storage.lo: host_res.h ./host/hrh_filesys.h
+./host/hrh_storage.lo: ./host/hrh_storage.h ./host/hr_disk.h
 ./host/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
@@ -4419,32 +4094,14 @@
 ./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/types.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp_api.h
-./host/hr_network.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./host/hr_network.lo: ../../include/net-snmp/library/asn1.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
@@ -4455,11 +4112,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -4524,32 +4201,14 @@
 ./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/types.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_api.h
-./host/hr_other.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./host/hr_other.lo: ../../include/net-snmp/library/asn1.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
@@ -4560,11 +4219,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -4598,32 +4277,14 @@
 ./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/types.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_api.h
-./host/hr_partition.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./host/hr_partition.lo: ../../include/net-snmp/library/asn1.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
@@ -4634,11 +4295,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -4673,32 +4354,14 @@
 ./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/types.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_api.h
-./host/hr_print.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./host/hr_print.lo: ../../include/net-snmp/library/asn1.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
@@ -4709,11 +4372,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -4738,7 +4421,9 @@
 ./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: util_funcs.h 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
@@ -4747,32 +4432,14 @@
 ./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/types.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_api.h
-./host/hr_proc.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./host/hr_proc.lo: ../../include/net-snmp/library/asn1.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
@@ -4783,11 +4450,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -4854,32 +4541,14 @@
 ./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/types.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_api.h
-./host/hr_storage.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./host/hr_storage.lo: ../../include/net-snmp/library/asn1.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
@@ -4890,11 +4559,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -4952,6 +4641,112 @@
 ./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/hardware/memory.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/net-snmp-config.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/system/linux.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/system/sysv.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/system/generic.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/machine/generic.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/net-snmp-includes.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/definitions.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/types.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/container_binary_array.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/container_list_ssll.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/snmpv3_api.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpv3.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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/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
@@ -4961,32 +4756,14 @@
 ./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/types.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_api.h
-./host/hr_swinst.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/asn1.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
@@ -4997,11 +4774,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -5033,36 +4830,15 @@
 ./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/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/library/asn1.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/varbind_api.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/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
-./host/hr_swrun.lo: ../../include/net-snmp/library/container_binary_array.h
-./host/hr_swrun.lo: ../../include/net-snmp/library/container_list_ssll.h
-./host/hr_swrun.lo: ../../include/net-snmp/library/container_iterator.h
-./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/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
@@ -5073,11 +4849,34 @@
 ./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/mib_api.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/library/oid_stash.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_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/data_list.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
+./host/hr_swrun.lo: ../../include/net-snmp/library/container_binary_array.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/container_list_ssll.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/container_iterator.h
+./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/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
@@ -5102,6 +4901,219 @@
 ./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/system/linux.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/system/sysv.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/system/generic.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/machine/generic.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/net-snmp-includes.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/definitions.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/types.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/container_binary_array.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/container_list_ssll.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/snmpv3_api.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpv3.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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/data_access/swrun.h
+./host/hrSWRunPerfTable.lo: ./host/hrSWRunPerfTable.h
+./host/hrSWRunPerfTable.lo: ./host/data_access/swrun.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/net-snmp-config.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/system/linux.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/system/sysv.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/system/generic.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/machine/generic.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/net-snmp-includes.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/definitions.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/types.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/container_binary_array.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/container_list_ssll.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/snmpv3_api.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpv3.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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/data_access/swrun.h
+./host/hrSWRunTable.lo: ./host/hrSWRunTable.h ./host/data_access/swrun.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
@@ -5110,32 +5122,14 @@
 ./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/types.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp_api.h
-./host/hr_system.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./host/hr_system.lo: ../../include/net-snmp/library/asn1.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
@@ -5146,11 +5140,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -5214,32 +5228,14 @@
 ./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/types.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_api.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/asn1.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
@@ -5250,11 +5246,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -5320,32 +5336,14 @@
 ./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/types.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/at.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/at.lo: ../../include/net-snmp/library/asn1.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
@@ -5356,11 +5354,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./mibII/at.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/at.lo: ../../include/net-snmp/library/default_store.h
@@ -5427,32 +5445,14 @@
 ./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/types.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/icmp.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/icmp.lo: ../../include/net-snmp/library/asn1.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
@@ -5463,11 +5463,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/default_store.h
@@ -5521,8 +5541,10 @@
 ./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/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
@@ -5532,32 +5554,14 @@
 ./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/types.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/interfaces.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/asn1.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
@@ -5568,11 +5572,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/default_store.h
@@ -5627,117 +5651,11 @@
 ./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/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: ./mibII/interfaces.h struct.h
+./mibII/interfaces.lo: util_funcs/header_generic.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/net-snmp-config.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/system/linux.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/system/sysv.h
@@ -5747,32 +5665,14 @@
 ./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/types.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/ipAddr.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/asn1.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
@@ -5783,11 +5683,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/default_store.h
@@ -5844,7 +5764,226 @@
 ./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/ipAddr.lo: ./mibII/at.h ./mibII/interfaces.h
+./mibII/ip.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/ip.lo: ../../include/net-snmp/system/linux.h
+./mibII/ip.lo: ../../include/net-snmp/system/sysv.h
+./mibII/ip.lo: ../../include/net-snmp/system/generic.h
+./mibII/ip.lo: ../../include/net-snmp/machine/generic.h
+./mibII/ip.lo: ./mibII/mibII_common.h
+./mibII/ip.lo: ../../agent/kernel.h
+./mibII/ip.lo: ../../include/net-snmp/net-snmp-includes.h
+./mibII/ip.lo: ../../include/net-snmp/definitions.h
+./mibII/ip.lo: ../../include/net-snmp/types.h
+./mibII/ip.lo: ../../include/net-snmp/library/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/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/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/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/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/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/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
+./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/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/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/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/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/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/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/data_list.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/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
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/keytools.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/scapi.h
+./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/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
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/agent_module_config.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/snmp_agent.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/snmp_vars.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/agent_handler.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/var_struct.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/agent_registry.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/fd_event_manager.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/ds_agent.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/agent_read_config.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/agent_trap.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/all_helpers.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/instance.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/baby_steps.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/scalar.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/scalar_group.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/watcher.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/multiplexer.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/null.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/debug_handler.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/cache_handler.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/old_api.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/read_only.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/row_merge.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/serialize.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/mode_end_call.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table_data.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table_dataset.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table_tdata.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table_iterator.h
+./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: ./mibII/ipCidrRouteTable_access.h
+./mibII/ipCidrRouteTable_access.lo: ./mibII/ipCidrRouteTable_enums.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/net-snmp-config.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/system/linux.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/system/sysv.h
@@ -5854,32 +5993,14 @@
 ./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/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/varbind_api.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/pdu_api.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/asn1.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
@@ -5890,11 +6011,31 @@
 ./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/mib_api.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/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/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/config_api.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/default_store.h
@@ -5954,111 +6095,6 @@
 ./mibII/ipCidrRouteTable.lo: ./mibII/ipCidrRouteTable_checkfns.h
 ./mibII/ipCidrRouteTable.lo: ./mibII/ipCidrRouteTable_access.h
 ./mibII/ipCidrRouteTable.lo: ./mibII/var_route.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/snmp_api.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/asn1.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/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
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/keytools.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/scapi.h
-./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/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
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/agent_module_config.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/snmp_agent.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/snmp_vars.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/agent_handler.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/var_struct.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/agent_registry.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/fd_event_manager.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/ds_agent.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/agent_read_config.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/agent_trap.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/all_helpers.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/instance.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/baby_steps.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/scalar.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/scalar_group.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/watcher.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/multiplexer.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/null.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/debug_handler.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/cache_handler.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/old_api.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/read_only.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/row_merge.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/serialize.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/mode_end_call.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table_data.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table_dataset.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table_tdata.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table_iterator.h
-./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: ./mibII/ipCidrRouteTable_access.h
-./mibII/ipCidrRouteTable_access.lo: ./mibII/ipCidrRouteTable_enums.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
@@ -6067,32 +6103,14 @@
 ./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/types.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/asn1.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
@@ -6103,11 +6121,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -6135,32 +6173,14 @@
 ./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/types.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/ipv6.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/asn1.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
@@ -6171,11 +6191,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/default_store.h
@@ -6230,9 +6270,8 @@
 ./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/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
@@ -6241,32 +6280,14 @@
 ./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/types.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/asn1.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
@@ -6277,11 +6298,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -6334,8 +6375,7 @@
 ./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: ../../include/net-snmp/agent/mfd.h
 ./mibII/kernel_linux.lo: ./mibII/kernel_linux.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/net-snmp-config.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/system/linux.h
@@ -6345,32 +6385,14 @@
 ./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/types.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/asn1.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
@@ -6381,11 +6403,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -6448,32 +6490,14 @@
 ./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/types.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/asn1.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
@@ -6484,11 +6508,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -6551,32 +6595,14 @@
 ./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/types.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/route_write.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/route_write.lo: ../../include/net-snmp/library/asn1.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
@@ -6587,11 +6613,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -6655,32 +6701,14 @@
 ./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/types.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/asn1.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
@@ -6691,11 +6719,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/default_store.h
@@ -6750,6 +6798,114 @@
 ./mibII/setSerialNo.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/agent/mfd.h
 ./mibII/setSerialNo.lo: ./mibII/setSerialNo.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/system/linux.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/system/sysv.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/system/generic.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/machine/generic.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/definitions.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/types.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/snmp_logging.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/container_binary_array.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/container_list_ssll.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/snmpv3_api.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpv3.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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/sysORTable.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/agent_callbacks.h
+./mibII/snmp_mib_5_5.lo: ./utilities/snmp_get_statistic.h
+./mibII/snmp_mib_5_5.lo: ./mibII/snmp_mib_5_5.h ./mibII/updates.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/net-snmp-config.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/system/linux.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/system/sysv.h
@@ -6758,32 +6914,14 @@
 ./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/types.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/asn1.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
@@ -6794,11 +6932,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -6851,8 +7009,10 @@
 ./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/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
@@ -6861,32 +7021,14 @@
 ./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/types.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/sysORTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/asn1.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
@@ -6897,11 +7039,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/default_store.h
@@ -6955,9 +7117,10 @@
 ./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/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
@@ -6966,32 +7129,14 @@
 ./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/types.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/system_mib.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/asn1.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
@@ -7002,11 +7147,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -7059,8 +7224,13 @@
 ./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/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
@@ -7071,32 +7241,14 @@
 ./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/types.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/tcp.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/tcp.lo: ../../include/net-snmp/library/asn1.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
@@ -7107,11 +7259,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/default_store.h
@@ -7165,9 +7337,11 @@
 ./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/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
@@ -7178,32 +7352,14 @@
 ./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/types.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/tcpTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/asn1.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
@@ -7214,11 +7370,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/default_store.h
@@ -7273,7 +7449,7 @@
 ./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/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
@@ -7284,32 +7460,14 @@
 ./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/types.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/udp.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/udp.lo: ../../include/net-snmp/library/asn1.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
@@ -7320,11 +7478,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./mibII/udp.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/udp.lo: ../../include/net-snmp/library/default_store.h
@@ -7378,9 +7556,11 @@
 ./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/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
@@ -7391,32 +7571,14 @@
 ./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/types.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/udpTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/asn1.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
@@ -7427,11 +7589,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/default_store.h
@@ -7486,7 +7668,111 @@
 ./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/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/system/linux.h
+./mibII/updates.lo: ../../include/net-snmp/system/sysv.h
+./mibII/updates.lo: ../../include/net-snmp/system/generic.h
+./mibII/updates.lo: ../../include/net-snmp/machine/generic.h
+./mibII/updates.lo: ../../include/net-snmp/net-snmp-includes.h
+./mibII/updates.lo: ../../include/net-snmp/definitions.h
+./mibII/updates.lo: ../../include/net-snmp/types.h
+./mibII/updates.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./mibII/updates.lo: ../../include/net-snmp/library/container_binary_array.h
+./mibII/updates.lo: ../../include/net-snmp/library/container_list_ssll.h
+./mibII/updates.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/updates.lo: ../../include/net-snmp/snmpv3_api.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmpv3.h
+./mibII/updates.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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/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
@@ -7495,32 +7781,14 @@
 ./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/types.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/asn1.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
@@ -7531,11 +7799,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -7590,8 +7878,7 @@
 ./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/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
@@ -7600,32 +7887,14 @@
 ./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/types.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/vacm_context.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/asn1.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
@@ -7636,11 +7905,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -7703,32 +7992,14 @@
 ./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/types.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/asn1.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
@@ -7739,11 +8010,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -7798,8 +8089,8 @@
 ./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/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
@@ -7809,32 +8100,14 @@
 ./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/types.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp_api.h
-./mibII/var_route.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./mibII/var_route.lo: ../../include/net-snmp/library/asn1.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
@@ -7845,11 +8118,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -7907,7 +8200,7 @@
 ./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
 ./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
@@ -7916,32 +8209,14 @@
 ./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/types.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_api.h
-./misc/ipfwacc.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/asn1.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
@@ -7952,11 +8227,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/read_config.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/default_store.h
@@ -8009,8 +8304,8 @@
 ./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: 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
@@ -8019,32 +8314,14 @@
 ./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/types.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_api.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/asn1.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
@@ -8055,11 +8332,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -8113,7 +8410,8 @@
 ./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/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
@@ -8123,32 +8421,14 @@
 ./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/types.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_api.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/asn1.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
@@ -8159,11 +8439,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/read_config.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/default_store.h
@@ -8227,32 +8527,14 @@
 ./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/types.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_api.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/asn1.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
@@ -8263,11 +8545,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/read_config.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/default_store.h
@@ -8333,8 +8635,743 @@
 ./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/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/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/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/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/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/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/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/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 ./Rmon/agutil.h
+./Rmon/agutil.lo: ./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/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/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/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/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/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/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/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 ./Rmon/alarm.h
+./Rmon/alarm.lo: ./Rmon/agutil_api.h ./Rmon/row_api.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/net-snmp-config.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/system/linux.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/system/sysv.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/system/generic.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/machine/generic.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/net-snmp-includes.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/definitions.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/types.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/snmp_logging.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/container_binary_array.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/container_list_ssll.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/snmpv3_api.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpv3.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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 utilities/iquery.h
+./Rmon/alarmTable.lo: ./Rmon/alarmTable.h
+./Rmon/event.lo: ../../include/net-snmp/net-snmp-config.h
+./Rmon/event.lo: ../../include/net-snmp/system/linux.h
+./Rmon/event.lo: ../../include/net-snmp/system/sysv.h
+./Rmon/event.lo: ../../include/net-snmp/system/generic.h
+./Rmon/event.lo: ../../include/net-snmp/machine/generic.h
+./Rmon/event.lo: ../../include/net-snmp/net-snmp-includes.h
+./Rmon/event.lo: ../../include/net-snmp/definitions.h
+./Rmon/event.lo: ../../include/net-snmp/types.h
+./Rmon/event.lo: ../../include/net-snmp/library/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/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/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/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/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/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 ./Rmon/event.h
+./Rmon/event.lo: ./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/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/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/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/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/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/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/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 ./Rmon/history.h
+./Rmon/history.lo: ./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/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/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/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/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/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/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/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 ./Rmon/agutil_api.h
+./Rmon/rows.lo: ./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/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/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/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/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/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/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/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 ./Rmon/statistics.h
+./Rmon/statistics.lo: ./Rmon/agutil_api.h ./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
@@ -8343,32 +9380,14 @@
 ./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/types.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/asn1.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
@@ -8379,11 +9398,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -8447,32 +9486,14 @@
 ./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/types.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/asn1.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
@@ -8483,11 +9504,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -8551,32 +9592,14 @@
 ./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/types.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/asn1.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
@@ -8587,11 +9610,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -8655,32 +9698,14 @@
 ./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/types.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/asn1.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
@@ -8691,11 +9716,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -8759,32 +9804,14 @@
 ./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/types.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/asn1.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
@@ -8795,11 +9822,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -8863,32 +9910,14 @@
 ./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/types.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/asn1.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
@@ -8899,11 +9928,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -8967,32 +10016,14 @@
 ./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/types.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/asn1.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
@@ -9003,11 +10034,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -9071,32 +10122,14 @@
 ./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/types.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/asn1.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
@@ -9107,11 +10140,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -9175,32 +10228,14 @@
 ./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/types.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/asn1.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
@@ -9211,11 +10246,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -9279,32 +10334,14 @@
 ./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/types.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/asn1.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
@@ -9315,11 +10352,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -9374,6 +10431,111 @@
 ./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: ./sctp-mib/sctpScalars_common.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/net-snmp-config.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/system/linux.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/system/sysv.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/system/generic.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/machine/generic.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/net-snmp-includes.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/definitions.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/container_binary_array.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/container_list_ssll.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/snmpv3_api.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpv3.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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: ./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
@@ -9382,32 +10544,14 @@
 ./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/types.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/asn1.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
@@ -9418,11 +10562,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -9477,6 +10641,112 @@
 ./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: ./sctp-mib/sctpScalars_common.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/net-snmp-config.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/system/linux.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/system/sysv.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/system/generic.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/machine/generic.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/net-snmp-includes.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/definitions.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/container_binary_array.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/container_list_ssll.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/snmpv3_api.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpv3.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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: ./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
@@ -9485,32 +10755,14 @@
 ./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/types.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/asn1.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
@@ -9521,11 +10773,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -9588,6 +10860,117 @@
 ./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/system/linux.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/system/sysv.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/system/generic.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/machine/generic.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/net-snmp-includes.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/definitions.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/container_binary_array.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/container_list_ssll.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/snmpv3_api.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpv3.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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: ./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
@@ -9596,32 +10979,14 @@
 ./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/types.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_api.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/asn1.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
@@ -9632,11 +10997,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -9694,7 +11079,119 @@
 ./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/system/linux.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/system/sysv.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/system/generic.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/machine/generic.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/net-snmp-includes.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/definitions.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/container_binary_array.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/container_list_ssll.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/snmpv3_api.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpv3.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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: ./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
@@ -9703,32 +11200,14 @@
 ./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/types.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp_api.h
-./smux/smux.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./smux/smux.lo: ../../include/net-snmp/library/asn1.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
@@ -9739,11 +11218,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./smux/smux.lo: ../../include/net-snmp/library/read_config.h
 ./smux/smux.lo: ../../include/net-snmp/library/default_store.h
@@ -9796,8 +11295,8 @@
 ./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.h mibdefs.h
+./smux/smux.lo: ../../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
@@ -9806,32 +11305,14 @@
 ./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/types.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_api.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/asn1.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
@@ -9842,11 +11323,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -9909,32 +11410,14 @@
 ./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/types.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_api.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/asn1.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
@@ -9945,11 +11428,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -10012,32 +11515,14 @@
 ./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/types.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_api.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/asn1.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
@@ -10048,11 +11533,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -10115,32 +11620,14 @@
 ./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/types.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_api.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/asn1.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
@@ -10151,11 +11638,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/read_config.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/default_store.h
@@ -10208,8 +11715,118 @@
 ./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/sysORTable.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/agent_callbacks.h
+./snmpv3/snmpEngine.lo: util_funcs/header_generic.h ./snmpv3/snmpEngine.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/net-snmp-config.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/system/linux.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/system/sysv.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/system/generic.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/machine/generic.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/definitions.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/types.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/snmp_logging.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/container_binary_array.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/container_list_ssll.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/snmpv3_api.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpv3.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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/sysORTable.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/agent_callbacks.h
+./snmpv3/snmpMPDStats_5_5.lo: ./snmpv3/snmpMPDStats_5_5.h
+./snmpv3/snmpMPDStats_5_5.lo: ./utilities/snmp_get_statistic.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/net-snmp-config.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/system/linux.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/system/sysv.h
@@ -10218,32 +11835,14 @@
 ./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/types.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_api.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/asn1.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
@@ -10254,11 +11853,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/read_config.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/default_store.h
@@ -10312,8 +11931,9 @@
 ./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/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
@@ -10322,32 +11942,14 @@
 ./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/types.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_api.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/asn1.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
@@ -10358,11 +11960,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/read_config.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/default_store.h
@@ -10416,6 +12038,114 @@
 ./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/usmStats_5_5.lo: ../../include/net-snmp/net-snmp-config.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/system/linux.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/system/sysv.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/system/generic.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/machine/generic.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/definitions.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/types.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/snmp_logging.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/container_binary_array.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/container_list_ssll.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/snmpv3_api.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpv3.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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/sysORTable.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/agent_callbacks.h
+./snmpv3/usmStats_5_5.lo: ./snmpv3/usmStats_5_5.h
+./snmpv3/usmStats_5_5.lo: ./utilities/snmp_get_statistic.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/net-snmp-config.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/system/linux.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/system/sysv.h
@@ -10424,32 +12154,14 @@
 ./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/types.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_api.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/asn1.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
@@ -10460,11 +12172,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/read_config.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/default_store.h
@@ -10517,8 +12249,10 @@
 ./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/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
@@ -10527,32 +12261,14 @@
 ./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/types.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_api.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/asn1.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
@@ -10563,11 +12279,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/read_config.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/default_store.h
@@ -10620,8 +12356,8 @@
 ./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: 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
@@ -10630,32 +12366,14 @@
 ./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/types.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_api.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/asn1.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
@@ -10666,11 +12384,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/read_config.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/default_store.h
@@ -10724,8 +12462,8 @@
 ./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: ./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
@@ -10734,32 +12472,14 @@
 ./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/types.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_api.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/asn1.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
@@ -10770,11 +12490,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/read_config.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/default_store.h
@@ -10837,32 +12577,14 @@
 ./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/types.h
 ./target/target.lo: ../../include/net-snmp/library/snmp_api.h
-./target/target.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./target/target.lo: ../../include/net-snmp/library/asn1.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
@@ -10873,11 +12595,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./target/target.lo: ../../include/net-snmp/library/read_config.h
 ./target/target.lo: ../../include/net-snmp/library/default_store.h
@@ -10933,6 +12675,112 @@
 ./target/target.lo: ../../include/net-snmp/agent/mfd.h
 ./target/target.lo: ./target/snmpTargetAddrEntry.h
 ./target/target.lo: ./target/snmpTargetParamsEntry.h target.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/net-snmp-config.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/system/linux.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/system/sysv.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/system/generic.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/machine/generic.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/definitions.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/types.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/snmp_logging.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/container_binary_array.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/container_list_ssll.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/snmpv3_api.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpv3.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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: ./target/target_counters_5_5.h
+./target/target_counters_5_5.lo: ./utilities/snmp_get_statistic.h
 ./target/target_counters.lo: ../../include/net-snmp/net-snmp-config.h
 ./target/target_counters.lo: ../../include/net-snmp/system/linux.h
 ./target/target_counters.lo: ../../include/net-snmp/system/sysv.h
@@ -10941,32 +12789,14 @@
 ./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/types.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_api.h
-./target/target_counters.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./target/target_counters.lo: ../../include/net-snmp/library/asn1.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
@@ -10977,11 +12807,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -11044,32 +12894,14 @@
 ./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/types.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_api.h
-./tunnel/tunnel.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/asn1.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
@@ -11080,11 +12912,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/read_config.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/default_store.h
@@ -11137,8 +12989,10 @@
 ./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/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
@@ -11153,32 +13007,14 @@
 ./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/types.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/asn1.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
@@ -11189,11 +13025,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -11248,8 +13104,8 @@
 ./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/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/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
@@ -11258,32 +13114,14 @@
 ./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/types.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/asn1.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
@@ -11294,11 +13132,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -11351,8 +13209,8 @@
 ./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: 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
@@ -11361,32 +13219,14 @@
 ./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/types.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/asn1.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
@@ -11397,11 +13237,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -11455,6 +13315,9 @@
 ./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: util_funcs/header_generic.h
+./ucd-snmp/dlmod.lo: util_funcs/header_simple_table.h
+./ucd-snmp/dlmod.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./ucd-snmp/dlmod.lo: ./ucd-snmp/dlmod.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/net-snmp-config.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/system/linux.h
@@ -11464,32 +13327,14 @@
 ./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/types.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/asn1.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
@@ -11500,11 +13345,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -11559,7 +13424,8 @@
 ./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/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
@@ -11568,32 +13434,14 @@
 ./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/types.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/asn1.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
@@ -11604,11 +13452,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -11665,7 +13533,8 @@
 ./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: utilities/execute.h
+./ucd-snmp/extensible.lo: util_funcs/header_simple_table.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
@@ -11674,32 +13543,14 @@
 ./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/types.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/file.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/asn1.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
@@ -11710,11 +13561,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -11768,7 +13639,8 @@
 ./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: ./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
@@ -11777,32 +13649,14 @@
 ./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/types.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/asn1.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
@@ -11813,11 +13667,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -11880,32 +13754,14 @@
 ./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/types.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/asn1.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
@@ -11916,11 +13772,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -11973,9 +13849,115 @@
 ./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: util_funcs/header_simple_table.h
 ./ucd-snmp/lmSensors.lo: ./ucd-snmp/lmSensors.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/net-snmp-config.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/system/linux.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/system/sysv.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/system/generic.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/machine/generic.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/net-snmp-includes.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/definitions.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/types.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/container_binary_array.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/container_list_ssll.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/snmpv3_api.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpv3.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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/hardware/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
@@ -11984,32 +13966,14 @@
 ./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/types.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/asn1.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
@@ -12020,11 +13984,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -12079,8 +14063,8 @@
 ./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/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
@@ -12089,32 +14073,14 @@
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/types.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/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/varbind_api.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/pdu_api.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/asn1.h
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/session_api.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_transport.h
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_service.h
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
@@ -12125,11 +14091,31 @@
 ./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/mib_api.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/library/oid_stash.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_impl.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/getopt.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/utilities.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/system.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/tools.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/int64.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/mt_support.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_alarm.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/data_list.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/check_varbind.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/container.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/factory.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_logging.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/container_binary_array.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/container_list_ssll.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/container_iterator.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/container.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_assert.h
+./ucd-snmp/logmatch.lo: ../../include/net-snmp/version.h
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/default_store.h
@@ -12183,7 +14169,116 @@
 ./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/logmatch.lo: ./ucd-snmp/logmatch.h mibdefs.h
+./ucd-snmp/logmatch.lo: util_funcs/header_generic.h
+./ucd-snmp/logmatch.lo: util_funcs/header_simple_table.h
+./ucd-snmp/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/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/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/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/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/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/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/data_list.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/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
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/keytools.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/scapi.h
+./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/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
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/agent_module_config.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/snmp_agent.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/snmp_vars.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/agent_handler.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/var_struct.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/agent_registry.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/fd_event_manager.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/ds_agent.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/agent_read_config.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/agent_trap.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/all_helpers.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/instance.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/baby_steps.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/scalar.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/scalar_group.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/watcher.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/multiplexer.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/null.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/debug_handler.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/cache_handler.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/old_api.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/read_only.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/row_merge.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/serialize.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/mode_end_call.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table_data.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table_dataset.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table_tdata.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table_iterator.h
+./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/auto_nlist.h
+./ucd-snmp/memory_aix4.lo: util_funcs/header_generic.h ./ucd-snmp/memory.h
+./ucd-snmp/memory_aix4.lo: ./ucd-snmp/memory_aix4.h mibdefs.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/net-snmp-config.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/system/linux.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/system/sysv.h
@@ -12192,32 +14287,14 @@
 ./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/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/varbind_api.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/pdu_api.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/asn1.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
@@ -12228,11 +14305,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/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
@@ -12288,111 +14385,6 @@
 ./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/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/snmp_api.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/asn1.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/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
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/keytools.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/scapi.h
-./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/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
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/agent_module_config.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/snmp_agent.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/snmp_vars.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/agent_handler.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/var_struct.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/agent_registry.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/fd_event_manager.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/ds_agent.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/agent_read_config.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/agent_trap.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/all_helpers.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/instance.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/baby_steps.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/scalar.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/scalar_group.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/watcher.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/multiplexer.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/null.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/debug_handler.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/cache_handler.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/old_api.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/read_only.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/row_merge.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/serialize.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/mode_end_call.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table_data.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table_dataset.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table_tdata.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table_iterator.h
-./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/auto_nlist.h
-./ucd-snmp/memory_aix4.lo: util_funcs.h struct.h ./ucd-snmp/memory.h
-./ucd-snmp/memory_aix4.lo: ./ucd-snmp/memory_aix4.h mibdefs.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
@@ -12401,32 +14393,14 @@
 ./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/types.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/asn1.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
@@ -12437,11 +14411,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -12496,7 +14490,7 @@
 ./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/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
@@ -12506,32 +14500,14 @@
 ./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/types.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/asn1.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
@@ -12542,11 +14518,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -12601,7 +14597,7 @@
 ./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/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
@@ -12611,32 +14607,14 @@
 ./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/types.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/asn1.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
@@ -12647,11 +14625,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -12706,7 +14704,10 @@
 ./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/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
@@ -12716,32 +14717,14 @@
 ./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/types.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/asn1.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
@@ -12752,11 +14735,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -12821,32 +14824,14 @@
 ./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/types.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/asn1.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
@@ -12857,11 +14842,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -12916,7 +14921,7 @@
 ./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/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
@@ -12926,32 +14931,14 @@
 ./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/types.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/asn1.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
@@ -12962,11 +14949,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -13021,7 +15028,8 @@
 ./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/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
@@ -13031,32 +15039,14 @@
 ./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/types.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/asn1.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
@@ -13067,11 +15057,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -13127,6 +15137,9 @@
 ./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: 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
@@ -13135,32 +15148,14 @@
 ./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/types.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/asn1.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
@@ -13171,11 +15166,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -13229,7 +15244,10 @@
 ./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: ../../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
@@ -13239,32 +15257,14 @@
 ./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/types.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/asn1.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
@@ -13275,11 +15275,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -13335,7 +15355,9 @@
 ./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: ./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
@@ -13344,32 +15366,14 @@
 ./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/types.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/asn1.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
@@ -13380,11 +15384,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -13439,7 +15463,9 @@
 ./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: util_funcs.h 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
@@ -13448,32 +15474,14 @@
 ./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/types.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/asn1.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
@@ -13484,11 +15492,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -13550,32 +15578,14 @@
 ./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/types.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/asn1.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
@@ -13586,11 +15596,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -13645,6 +15675,222 @@
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/mfd.h struct.h
 ./ucd-snmp/versioninfo.lo: ./ucd-snmp/versioninfo.h mibdefs.h util_funcs.h
+./ucd-snmp/versioninfo.lo: util_funcs/header_generic.h
+./ucd-snmp/versioninfo.lo: 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/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/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/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/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/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/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/data_list.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/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
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/keytools.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/scapi.h
+./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/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
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/agent_module_config.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/snmp_agent.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/snmp_vars.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/agent_handler.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/var_struct.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/agent_registry.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/fd_event_manager.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/ds_agent.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/agent_read_config.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/agent_trap.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/all_helpers.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/instance.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/baby_steps.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/scalar.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/scalar_group.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/watcher.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/multiplexer.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/null.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/debug_handler.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/cache_handler.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/old_api.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/read_only.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/row_merge.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/serialize.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/mode_end_call.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_data.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_dataset.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_tdata.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_iterator.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_container.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_array.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/mfd.h mibdefs.h
+./ucd-snmp/vmstat_aix4.lo: util_funcs/header_generic.h ./ucd-snmp/vmstat.h
+./ucd-snmp/vmstat_aix4.lo: ./ucd-snmp/vmstat_aix4.h
+./ucd-snmp/vmstat_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/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/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/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/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/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/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/data_list.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/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
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/keytools.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/scapi.h
+./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/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
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/agent_module_config.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/snmp_agent.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/snmp_vars.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/agent_handler.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/var_struct.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/agent_registry.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/fd_event_manager.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/ds_agent.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/agent_read_config.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/agent_trap.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/all_helpers.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/instance.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/baby_steps.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/scalar.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/scalar_group.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/watcher.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/multiplexer.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/null.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/debug_handler.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/cache_handler.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/old_api.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/read_only.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/row_merge.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/serialize.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/mode_end_call.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table_data.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table_dataset.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table_tdata.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table_iterator.h
+./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/auto_nlist.h
+./ucd-snmp/vmstat_bsdi4.lo: util_funcs/header_generic.h ./ucd-snmp/vmstat.h
+./ucd-snmp/vmstat_bsdi4.lo: mibdefs.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/net-snmp-config.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/system/linux.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/system/sysv.h
@@ -13653,32 +15899,14 @@
 ./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/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/varbind_api.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/pdu_api.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/asn1.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
@@ -13689,11 +15917,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/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
@@ -13750,215 +15998,6 @@
 ./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_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/snmp_api.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/asn1.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/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
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/keytools.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/scapi.h
-./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/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
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/agent_module_config.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/snmp_agent.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/snmp_vars.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/agent_handler.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/var_struct.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/agent_registry.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/fd_event_manager.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/ds_agent.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/agent_read_config.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/agent_trap.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/all_helpers.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/instance.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/baby_steps.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/scalar.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/scalar_group.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/watcher.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/multiplexer.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/null.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/debug_handler.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/cache_handler.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/old_api.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/read_only.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/row_merge.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/serialize.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/mode_end_call.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_data.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_dataset.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_tdata.h
-./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_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/snmp_api.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/asn1.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/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
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/keytools.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/scapi.h
-./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/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
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/agent_module_config.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/snmp_agent.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/snmp_vars.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/agent_handler.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/var_struct.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/agent_registry.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/fd_event_manager.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/ds_agent.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/agent_read_config.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/agent_trap.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/all_helpers.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/instance.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/baby_steps.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/scalar.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/scalar_group.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/watcher.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/multiplexer.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/null.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/debug_handler.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/cache_handler.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/old_api.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/read_only.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/row_merge.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/serialize.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/mode_end_call.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table_data.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table_dataset.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table_tdata.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table_iterator.h
-./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/auto_nlist.h
-./ucd-snmp/vmstat_bsdi4.lo: util_funcs.h struct.h ./ucd-snmp/vmstat.h
-./ucd-snmp/vmstat_bsdi4.lo: 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
@@ -13967,32 +16006,14 @@
 ./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/types.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/asn1.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
@@ -14003,11 +16024,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -14062,7 +16103,7 @@
 ./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/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
@@ -14072,32 +16113,14 @@
 ./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/types.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/asn1.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
@@ -14108,11 +16131,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -14166,7 +16209,7 @@
 ./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: util_funcs/header_generic.h ./ucd-snmp/vmstat.h
 ./ucd-snmp/vmstat_dynix.lo: ./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
@@ -14176,32 +16219,14 @@
 ./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/types.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/asn1.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
@@ -14212,11 +16237,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -14271,8 +16316,9 @@
 ./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/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
@@ -14281,32 +16327,14 @@
 ./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/types.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/asn1.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
@@ -14317,11 +16345,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -14375,7 +16423,7 @@
 ./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: util_funcs/header_generic.h ./ucd-snmp/vmstat.h
 ./ucd-snmp/vmstat_hpux.lo: ./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
@@ -14385,32 +16433,14 @@
 ./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/types.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/asn1.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
@@ -14421,11 +16451,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -14481,7 +16531,7 @@
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/agent/mfd.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
@@ -14491,32 +16541,14 @@
 ./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/types.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/asn1.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
@@ -14527,11 +16559,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -14586,7 +16638,7 @@
 ./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/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
@@ -14596,32 +16648,14 @@
 ./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/types.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/asn1.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
@@ -14632,11 +16666,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -14690,8 +16744,255 @@
 ./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: 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/get_pid_from_inode.lo: ../../include/net-snmp/net-snmp-config.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/system/linux.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/system/sysv.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/system/generic.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/machine/generic.h
+./util_funcs/get_pid_from_inode.lo: ./util_funcs/get_pid_from_inode.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/output_api.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/types.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/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/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/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/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/system/linux.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/system/sysv.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/system/generic.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/machine/generic.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/net-snmp-includes.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/definitions.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/types.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/container_binary_array.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/container_list_ssll.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_debug.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/snmpv3_api.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpv3.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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: ./util_funcs/header_generic.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/net-snmp-config.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/system/linux.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/system/sysv.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/system/generic.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/machine/generic.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/net-snmp-includes.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/definitions.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/types.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/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/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/snmpTCPDomain.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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/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/snmp_logging.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/container_binary_array.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/container_list_ssll.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_debug.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/snmpv3_api.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpv3.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/transform_oids.h
+./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/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: ./util_funcs/header_simple_table.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
@@ -14700,32 +17001,14 @@
 ./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/types.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_api.h
-./utilities/execute.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./utilities/execute.lo: ../../include/net-snmp/library/asn1.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
@@ -14736,11 +17019,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./utilities/execute.lo: ../../include/net-snmp/library/read_config.h
 ./utilities/execute.lo: ../../include/net-snmp/library/default_store.h
@@ -14794,7 +17097,10 @@
 ./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: ucd-snmp/errormib.h mibdefs.h util_funcs.h
+./utilities/execute.lo: util_funcs/header_generic.h
+./utilities/execute.lo: util_funcs/header_simple_table.h struct.h
+./utilities/execute.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./utilities/execute.lo: ./utilities/execute.h
 ./utilities/iquery.lo: ../../include/net-snmp/net-snmp-config.h
 ./utilities/iquery.lo: ../../include/net-snmp/system/linux.h
@@ -14804,32 +17110,14 @@
 ./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/types.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp_api.h
-./utilities/iquery.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./utilities/iquery.lo: ../../include/net-snmp/library/asn1.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
@@ -14840,11 +17128,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/read_config.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/default_store.h
@@ -14906,32 +17214,14 @@
 ./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/types.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_api.h
-./utilities/override.lo: ../../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./utilities/override.lo: ../../include/net-snmp/library/asn1.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
@@ -14942,11 +17232,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./utilities/override.lo: ../../include/net-snmp/library/read_config.h
 ./utilities/override.lo: ../../include/net-snmp/library/default_store.h
@@ -14999,5 +17309,109 @@
 ./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/snmp_get_statistic.lo: ../../include/net-snmp/net-snmp-config.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/system/linux.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/system/sysv.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/system/generic.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/machine/generic.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/net-snmp-includes.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/definitions.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/types.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/types.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_api.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/varbind_api.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_client.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/pdu_api.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/asn1.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/session_api.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/callback.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_transport.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_service.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/ucd_compat.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/mib.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/mib_api.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/parse.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/oid_stash.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_impl.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp-tc.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/getopt.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/utilities.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/system.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/tools.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/int64.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/mt_support.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_alarm.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/data_list.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/check_varbind.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/container.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/factory.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_logging.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/container_binary_array.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/container_list_ssll.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/container_iterator.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/container.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_assert.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/version.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/config_api.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/read_config.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/default_store.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_enum.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/vacm.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/output_api.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_debug.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/snmpv3_api.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpv3.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/transform_oids.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/keytools.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/scapi.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/lcd_time.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_secmod.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpusm.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/mib_module_config.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_module_config.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/snmp_agent.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/snmp_vars.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_handler.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/var_struct.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_registry.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/fd_event_manager.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/ds_agent.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_read_config.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_trap.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/all_helpers.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/instance.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/baby_steps.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/scalar.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/scalar_group.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/watcher.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/multiplexer.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/null.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/debug_handler.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/cache_handler.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/old_api.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/read_only.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/row_merge.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/serialize.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/mode_end_call.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_data.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_dataset.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_tdata.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_iterator.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_container.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_array.h
+./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/mfd.h
+./utilities/snmp_get_statistic.lo: ./utilities/snmp_get_statistic.h
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..26ba173 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"
 
diff --git a/agent/mibgroup/Rmon/alarm.c b/agent/mibgroup/Rmon/alarm.c
index a04d415..aac5b42 100644
--- a/agent/mibgroup/Rmon/alarm.c
+++ b/agent/mibgroup/Rmon/alarm.c
@@ -43,7 +43,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 +683,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..c9c2aea
--- /dev/null
+++ b/agent/mibgroup/Rmon/alarmTable.c
@@ -0,0 +1,831 @@
+/*--------------------------------------------------------------------------+
+| 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-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include "utilities/iquery.h"
+#include "alarmTable.h"
+
+/** 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, 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.%d last value (%d)\n", entry->alarmIndex, entry->last_abs_value));
+    DEBUGMSGTL(("rmon:alarmTable", "alarmIndex.%d new_value (%d)\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..127cf3f 100644
--- a/agent/mibgroup/Rmon/event.c
+++ b/agent/mibgroup/Rmon/event.c
@@ -45,8 +45,6 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include "util_funcs.h"
-
 #include "event.h"
 
 /*
@@ -772,23 +770,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..ad03eef 100644
--- a/agent/mibgroup/Rmon/history.c
+++ b/agent/mibgroup/Rmon/history.c
@@ -44,8 +44,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 +654,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 +678,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/rows.c b/agent/mibgroup/Rmon/rows.c
index d8c3cc1..d67c567 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"
@@ -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..6ccb844 100644
--- a/agent/mibgroup/Rmon/statistics.c
+++ b/agent/mibgroup/Rmon/statistics.c
@@ -43,7 +43,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 +467,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..7004ea5 100644
--- a/agent/mibgroup/agent/extend.c
+++ b/agent/mibgroup/agent/extend.c
@@ -10,7 +10,7 @@
 #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
@@ -44,17 +44,27 @@
 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 };
 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}}
 };
 #endif
 
@@ -478,10 +488,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;
     }
@@ -1106,7 +1127,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 +1150,6 @@
             if (line_idx < 1 || line_idx > eptr->numlines)
                 return NULL;
         }
-        return eptr;
     }
 
         /***
@@ -1246,9 +1266,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 +1357,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 +1393,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 +1412,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 +1438,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! */
diff --git a/agent/mibgroup/agent/extend.h b/agent/mibgroup/agent/extend.h
index 8f19db3..4b181f9 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)
 
diff --git a/agent/mibgroup/agent/nsCache.c b/agent/mibgroup/agent/nsCache.c
index f8e73f0..a773aeb 100644
--- a/agent/mibgroup/agent/nsCache.c
+++ b/agent/mibgroup/agent/nsCache.c
@@ -11,8 +11,6 @@
 
 #include <net-snmp/agent/cache_handler.h>
 #include "agent/nsCache.h"
-#include "util_funcs.h"
-
 
 /*
  * use unadvertised function to get cache head. You really should not
@@ -21,6 +19,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 +28,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,8 +42,6 @@
 #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 *
 sa_find_specific(unsigned int clientreg);
 
@@ -53,6 +49,10 @@
 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;
 
@@ -361,7 +361,6 @@
             default:
                 netsnmp_set_request_error(reqinfo, request, SNMP_ERR_NOCREATION);
                 return SNMP_ERR_NOCREATION;	/* XXX - is this right ? */
-                continue;
 	    }
 	}
 	break;
diff --git a/agent/mibgroup/agent/nsDebug.c b/agent/mibgroup/agent/nsDebug.c
index 40d55d4..534d18c 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;
 
diff --git a/agent/mibgroup/agent/nsLogging.c b/agent/mibgroup/agent/nsLogging.c
index 3e5b02f..7a21fa8 100644
--- a/agent/mibgroup/agent/nsLogging.c
+++ b/agent/mibgroup/agent/nsLogging.c
@@ -11,9 +11,6 @@
 
 #include <net-snmp/library/snmp_logging.h>
 #include "agent/nsLogging.h"
-#include "util_funcs.h"
-
-
 
 /*
  * OID and columns for the logging table.
@@ -23,15 +20,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....
@@ -308,7 +304,6 @@
             default:
                 netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT);
                 return SNMP_NOSUCHOBJECT;
-                continue;
 	    }
 	}
 	break;
diff --git a/agent/mibgroup/agent/nsModuleTable.c b/agent/mibgroup/agent/nsModuleTable.c
index 4f4ea00..bc45691 100644
--- a/agent/mibgroup/agent/nsModuleTable.c
+++ b/agent/mibgroup/agent/nsModuleTable.c
@@ -18,8 +18,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;
@@ -76,7 +75,7 @@
     netsnmp_register_table_iterator(my_handler, iinfo);
 }
 
-/** Initialzies the nsModuleTable module */
+/** Initializes the nsModuleTable module */
 void
 init_nsModuleTable(void)
 {
diff --git a/agent/mibgroup/agent/nsTransactionTable.c b/agent/mibgroup/agent/nsTransactionTable.c
index 31b9fe5..dc1f7fa 100644
--- a/agent/mibgroup/agent/nsTransactionTable.c
+++ b/agent/mibgroup/agent/nsTransactionTable.c
@@ -15,10 +15,7 @@
 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 +30,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)
@@ -68,7 +64,7 @@
     netsnmp_register_table_iterator(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..410b002 100644
--- a/agent/mibgroup/agent/nsVacmAccessTable.c
+++ b/agent/mibgroup/agent/nsVacmAccessTable.c
@@ -17,17 +17,15 @@
      * 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);
+    reg = netsnmp_create_handler_registration(
+        "nsVacmAccessTable", nsVacmAccessTable_handler,
+        nsVacmAccessTable_oid, OID_LENGTH(nsVacmAccessTable_oid),
+        HANDLER_CAN_RWRITE);
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
diff --git a/agent/mibgroup/agentx/agentx_config.c b/agent/mibgroup/agentx/agentx_config.c
index d156d47..eec8271 100644
--- a/agent/mibgroup/agentx/agentx_config.c
+++ b/agent/mibgroup/agentx/agentx_config.c
@@ -14,13 +14,6 @@
 #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"
@@ -47,7 +40,6 @@
 agentx_parse_master(const char *token, char *cptr)
 {
     int             i = -1;
-    char            buf[BUFSIZ];
 
     if (!strcmp(cptr, "agentx") ||
         !strcmp(cptr, "all") ||
@@ -60,8 +52,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 +66,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 +92,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 +104,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);
diff --git a/agent/mibgroup/agentx/master.c b/agent/mibgroup/agentx/master.c
index 6b0f65e..05f148f 100644
--- a/agent/mibgroup/agentx/master.c
+++ b/agent/mibgroup/agentx/master.c
@@ -60,13 +60,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 +91,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 +116,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 +147,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 +190,10 @@
         }
     }
 
+#ifdef NETSNMP_TRANSPORT_UNIX_DOMAIN
+    netsnmp_unix_dont_create_path();
+#endif
+
     SNMP_FREE(agentx_sockets);
     DEBUGMSGTL(("agentx/master", "initializing...   DONE\n"));
 }
@@ -234,7 +215,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 +224,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 +262,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 +289,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 +369,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"));
             }
 
             /*
@@ -615,12 +597,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..b073da3 100644
--- a/agent/mibgroup/agentx/master_admin.c
+++ b/agent/mibgroup/agentx/master_admin.c
@@ -45,7 +45,7 @@
 #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;
@@ -70,7 +70,7 @@
     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;
@@ -117,7 +117,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 +131,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 +149,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 +161,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 +174,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;
         }
@@ -380,20 +376,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,22 +394,18 @@
 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;
 }
 
@@ -454,7 +443,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;
 }
 
@@ -481,12 +481,16 @@
 
     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 +507,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:
@@ -579,9 +584,10 @@
     asp->pdu->time = calculate_time_diff(&now, &starttime);
     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..771b45b 100644
--- a/agent/mibgroup/agentx/protocol.c
+++ b/agent/mibgroup/agentx/protocol.c
@@ -135,7 +135,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 +168,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 +264,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 +449,7 @@
                                   vp->name, vp->name_length,
                                   network_order)) {
         DEBUGINDENTLESS();
+        DEBUGINDENTLESS();
         return 0;
     }
     DEBUGINDENTLESS();
@@ -488,7 +489,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 +549,7 @@
                 DEBUGINDENTLESS();
                 return 0;
             }
+            DEBUGINDENTLESS();
         } else {
             DEBUGDUMPHEADER("send", "Build Counter64 (low, high)");
             if (!agentx_realloc_build_int
@@ -562,6 +564,7 @@
                 DEBUGINDENTLESS();
                 return 0;
             }
+            DEBUGINDENTLESS();
         }
         break;
 
@@ -699,6 +702,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     = 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 +916,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 +932,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 +1077,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 +1108,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 +1154,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 +1172,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=%d pdu=%d)\n",
+		    (int) *oid_len, tmp_oid_len));
+        DEBUGINDENTLESS();
         return NULL;
     }
 
@@ -1169,6 +1185,7 @@
 #endif
     if (*length < 4 * n_subid) {
         DEBUGMSGTL(("agentx", "Incomplete Object ID\n"));
+        DEBUGINDENTLESS();
         return NULL;
     }
 
@@ -1227,14 +1244,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 +1339,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 +1362,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 +1416,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 +1544,7 @@
     DEBUGINDENTLESS();
     bufp += 4;
 
+    DEBUGINDENTLESS();
     *length -= 20;
     if (*length != payload) {   /* Short payload */
         return NULL;
@@ -1604,11 +1620,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(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 +1647,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 +1656,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 +1900,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..03a38b7 100644
--- a/agent/mibgroup/agentx/subagent.c
+++ b/agent/mibgroup/agentx/subagent.c
@@ -46,9 +46,8 @@
 #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"
 
@@ -331,8 +330,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;
 
@@ -506,7 +506,7 @@
     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,8 +545,11 @@
 
     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));
 
     if (pdu->command == SNMP_MSG_INTERNAL_SET_FREE ||
         pdu->command == SNMP_MSG_INTERNAL_SET_UNDO ||
@@ -584,7 +587,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"));
                 }
@@ -620,7 +623,7 @@
 {
     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 +632,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 +652,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"));
@@ -703,13 +707,12 @@
 }
 
 
-#ifdef USING_MIBII_SYSORTABLE_MODULE
 int
 agentx_sysOR_callback(int majorID, int minorID, void *serverarg,
                       void *clientarg)
 {
-    struct register_sysOR_parameters *reg_parms =
-        (struct register_sysOR_parameters *) serverarg;
+    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)
@@ -721,7 +724,6 @@
                                        reg_parms->name,
                                        reg_parms->namelen);
 }
-#endif
 
 
 static int
@@ -765,14 +767,12 @@
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
                            SNMPD_CALLBACK_UNREGISTER_OID,
                            agentx_registration_callback, s);
-#ifdef USING_MIBII_SYSORTABLE_MODULE
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
                            SNMPD_CALLBACK_REG_SYSOR,
                            agentx_sysOR_callback, s);
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
                            SNMPD_CALLBACK_UNREG_SYSOR,
                            agentx_sysOR_callback, s);
-#endif
 }
 
 /*
@@ -792,15 +792,12 @@
     snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
                              SNMPD_CALLBACK_UNREGISTER_OID,
                              agentx_registration_callback, ss, 1);
-#ifdef USING_MIBII_SYSORTABLE_MODULE
     snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
                              SNMPD_CALLBACK_REG_SYSOR,
                              agentx_sysOR_callback, ss, 1);
     snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
                              SNMPD_CALLBACK_UNREG_SYSOR,
                              agentx_sysOR_callback, ss, 1);
-#endif
-
 }
 
 /*
@@ -914,6 +911,13 @@
     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 +946,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/disman/event/mteEvent.c b/agent/mibgroup/disman/event/mteEvent.c
index 327f8ba..2fe6979 100644
--- a/agent/mibgroup/disman/event/mteEvent.c
+++ b/agent/mibgroup/disman/event/mteEvent.c
@@ -23,7 +23,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 +43,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)
@@ -135,7 +135,7 @@
         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));
@@ -330,7 +330,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  */
@@ -421,7 +421,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);
         }
     }
 
diff --git a/agent/mibgroup/disman/event/mteEventNotificationTable.c b/agent/mibgroup/disman/event/mteEventNotificationTable.c
index 5892fb7..934a1c5 100644
--- a/agent/mibgroup/disman/event/mteEventNotificationTable.c
+++ b/agent/mibgroup/disman/event/mteEventNotificationTable.c
@@ -48,7 +48,7 @@
 
     /* 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));
 }
 
diff --git a/agent/mibgroup/disman/event/mteEventSetTable.c b/agent/mibgroup/disman/event/mteEventSetTable.c
index 3646144..97783c1 100644
--- a/agent/mibgroup/disman/event/mteEventSetTable.c
+++ b/agent/mibgroup/disman/event/mteEventSetTable.c
@@ -48,7 +48,7 @@
 
     /* 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));
 }
 
diff --git a/agent/mibgroup/disman/event/mteEventTable.c b/agent/mibgroup/disman/event/mteEventTable.c
index 19fe0a1..2c21e67 100644
--- a/agent/mibgroup/disman/event/mteEventTable.c
+++ b/agent/mibgroup/disman/event/mteEventTable.c
@@ -49,7 +49,7 @@
 
     /* 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));
 }
 
diff --git a/agent/mibgroup/disman/event/mteObjectsConf.c b/agent/mibgroup/disman/event/mteObjectsConf.c
index 3f9293c..3e9c11b 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 ); */
@@ -131,7 +131,7 @@
         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 ");
diff --git a/agent/mibgroup/disman/event/mteTrigger.c b/agent/mibgroup/disman/event/mteTrigger.c
index 11cb5b7..cf51edb 100644
--- a/agent/mibgroup/disman/event/mteTrigger.c
+++ b/agent/mibgroup/disman/event/mteTrigger.c
@@ -31,7 +31,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;
@@ -69,7 +69,7 @@
         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));
diff --git a/agent/mibgroup/disman/expr/expErrorTable.c b/agent/mibgroup/disman/expr/expErrorTable.c
index 41bbe29..dbc2217 100644
--- a/agent/mibgroup/disman/expr/expErrorTable.c
+++ b/agent/mibgroup/disman/expr/expErrorTable.c
@@ -48,7 +48,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..f9a9d97 100644
--- a/agent/mibgroup/disman/expr/expExpressionConf.c
+++ b/agent/mibgroup/disman/expr/expExpressionConf.c
@@ -6,6 +6,9 @@
 #include <net-snmp/net-snmp-config.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"
diff --git a/agent/mibgroup/disman/expr/expExpressionTable.c b/agent/mibgroup/disman/expr/expExpressionTable.c
index c07e5fc..906b5e5 100644
--- a/agent/mibgroup/disman/expr/expExpressionTable.c
+++ b/agent/mibgroup/disman/expr/expExpressionTable.c
@@ -49,7 +49,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/expObjectTable.c b/agent/mibgroup/disman/expr/expObjectTable.c
index 6e60b81..9c49c0d 100644
--- a/agent/mibgroup/disman/expr/expObjectTable.c
+++ b/agent/mibgroup/disman/expr/expObjectTable.c
@@ -51,7 +51,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..2fdb4fc 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"));
@@ -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 {
         /*
@@ -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..c605e9a 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;
diff --git a/agent/mibgroup/disman/expression/expExpressionTable.c b/agent/mibgroup/disman/expression/expExpressionTable.c
index da0e19a..a4dd212 100644
--- a/agent/mibgroup/disman/expression/expExpressionTable.c
+++ b/agent/mibgroup/disman/expression/expExpressionTable.c
@@ -65,19 +65,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}}
 };
 
 /*
diff --git a/agent/mibgroup/disman/expression/expObjectTable.c b/agent/mibgroup/disman/expression/expObjectTable.c
index 8d1855d..08a607c 100644
--- a/agent/mibgroup/disman/expression/expObjectTable.c
+++ b/agent/mibgroup/disman/expression/expObjectTable.c
@@ -66,23 +66,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}}
 };
 
 
diff --git a/agent/mibgroup/disman/expression/expValueTable.c b/agent/mibgroup/disman/expression/expValueTable.c
index 0f5e0b6..d3c0295 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}}
 };
 
 
diff --git a/agent/mibgroup/disman/mteObjectsTable.c b/agent/mibgroup/disman/mteObjectsTable.c
index 4f7e95f..2cf2b0e 100644
--- a/agent/mibgroup/disman/mteObjectsTable.c
+++ b/agent/mibgroup/disman/mteObjectsTable.c
@@ -53,13 +53,14 @@
      * 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}},
 
 };
 /*
@@ -641,6 +642,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;
@@ -888,6 +891,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/mteTriggerBooleanTable.c b/agent/mibgroup/disman/mteTriggerBooleanTable.c
index 49ceb5f..fba4980 100644
--- a/agent/mibgroup/disman/mteTriggerBooleanTable.c
+++ b/agent/mibgroup/disman/mteTriggerBooleanTable.c
@@ -53,25 +53,25 @@
      * 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}},
 
 };
diff --git a/agent/mibgroup/disman/mteTriggerDeltaTable.c b/agent/mibgroup/disman/mteTriggerDeltaTable.c
index 3edb935..137e097 100644
--- a/agent/mibgroup/disman/mteTriggerDeltaTable.c
+++ b/agent/mibgroup/disman/mteTriggerDeltaTable.c
@@ -53,13 +53,13 @@
      * 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}},
 
 };
diff --git a/agent/mibgroup/disman/mteTriggerExistenceTable.c b/agent/mibgroup/disman/mteTriggerExistenceTable.c
index 1ad0a74..c5761b5 100644
--- a/agent/mibgroup/disman/mteTriggerExistenceTable.c
+++ b/agent/mibgroup/disman/mteTriggerExistenceTable.c
@@ -53,22 +53,22 @@
      * 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}},
 
 };
diff --git a/agent/mibgroup/disman/mteTriggerTable.c b/agent/mibgroup/disman/mteTriggerTable.c
index 4a4408c..f4db62a 100644
--- a/agent/mibgroup/disman/mteTriggerTable.c
+++ b/agent/mibgroup/disman/mteTriggerTable.c
@@ -83,43 +83,44 @@
      * 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}},
 
 };
 /*
@@ -356,8 +357,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;
@@ -444,8 +444,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 +505,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 
          */
diff --git a/agent/mibgroup/disman/mteTriggerThresholdTable.c b/agent/mibgroup/disman/mteTriggerThresholdTable.c
index 038a2fb..28b33d8 100644
--- a/agent/mibgroup/disman/mteTriggerThresholdTable.c
+++ b/agent/mibgroup/disman/mteTriggerThresholdTable.c
@@ -53,49 +53,49 @@
      * 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}},
 
 };
diff --git a/agent/mibgroup/disman/nslookup/lookupCtlTable.c b/agent/mibgroup/disman/nslookup/lookupCtlTable.c
index bcedd07..0eb5c16 100644
--- a/agent/mibgroup/disman/nslookup/lookupCtlTable.c
+++ b/agent/mibgroup/disman/nslookup/lookupCtlTable.c
@@ -55,12 +55,18 @@
     /*
      * 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}}
 };
 
 
@@ -616,7 +622,7 @@
                         address));
         } else {
             while (*lookup->h_addr_list) {
-                bcopy(*lookup->h_addr_list++, (char *) &a, sizeof(a));
+                memcpy(&a, *lookup->h_addr_list++, sizeof(a));
 
                 temp = SNMP_MALLOC_STRUCT(lookupResultsTable_data);
                 if (temp == NULL) {
@@ -1005,7 +1011,7 @@
 
     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));
+    memset(newoid, '\0', MAX_OID_LEN * sizeof(oid));
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
 
 
diff --git a/agent/mibgroup/disman/nslookup/lookupResultsTable.c b/agent/mibgroup/disman/nslookup/lookupResultsTable.c
index c5fd2b7..bfb56c9 100644
--- a/agent/mibgroup/disman/nslookup/lookupResultsTable.c
+++ b/agent/mibgroup/disman/nslookup/lookupResultsTable.c
@@ -42,8 +42,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}}
 };
 
 /*
diff --git a/agent/mibgroup/disman/ping/pingCtlTable.c b/agent/mibgroup/disman/ping/pingCtlTable.c
index 1e102a0..3f4f128 100644
--- a/agent/mibgroup/disman/ping/pingCtlTable.c
+++ b/agent/mibgroup/disman/ping/pingCtlTable.c
@@ -75,27 +75,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}}
 };
 
 
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/schedCore.c b/agent/mibgroup/disman/schedule/schedCore.c
index 4055d46..28400f5 100644
--- a/agent/mibgroup/disman/schedule/schedCore.c
+++ b/agent/mibgroup/disman/schedule/schedCore.c
@@ -22,7 +22,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 +53,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);
@@ -239,20 +239,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,14 +277,14 @@
         } else {
              entry->schedNextRun = now + entry->schedInterval;
         }
-        DEBUGMSGTL(("disman:schedule:time", "periodic: (%d) %s",
+        DEBUGMSGTL(("disman:schedule:time", "periodic: (%ld) %s",
                                   entry->schedNextRun,
                            ctime(&entry->schedNextRun)));
         break;
 
     case SCHED_TYPE_ONESHOT:
         if ( entry->schedLastRun ) {
-            DEBUGMSGTL(("disman:schedule:time", "one-shot: expired (%d) %s",
+            DEBUGMSGTL(("disman:schedule:time", "one-shot: expired (%ld) %s",
                                   entry->schedNextRun,
                            ctime(&entry->schedNextRun)));
             return;
@@ -414,13 +400,13 @@
          * 'next_tm' now contains the time for the next scheduled run
          */
         entry->schedNextRun = mktime( &next_tm );
-        DEBUGMSGTL(("disman:schedule:time", "calendar: (%d) %s",
+        DEBUGMSGTL(("disman:schedule:time", "calendar: (%ld) %s",
                                   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;
     }
diff --git a/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c b/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
index 42f24dc..5c70e0d 100644
--- a/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
+++ b/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
@@ -41,31 +41,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 +151,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 +245,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 +260,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 +281,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 +718,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 +1352,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 +1383,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 +1414,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 +1473,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 +1487,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 +1496,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,
@@ -4093,11 +4119,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 +4961,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 +5058,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);
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..19e73b6 100644
--- a/agent/mibgroup/disman/traceroute/traceRouteResultsTable.c
+++ b/agent/mibgroup/disman/traceroute/traceRouteResultsTable.c
@@ -48,14 +48,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..b110950
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
@@ -0,0 +1,928 @@
+/*
+ * 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) {
+            if ( (list_head = (struct ifname *) malloc (sizeof(struct ifname))) < 0) {
+                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;
+
+        if ( (nameptr2->ifn_next = (struct ifname *) malloc (sizeof(struct ifname))) < 0) {
+            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, 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", name));
+            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..d992ab9
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
@@ -0,0 +1,417 @@
+/*
+ * 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)
+{
+    dot3StatsTable_rowreq_ctx *rowreq_ctx;
+    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) {
+        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 %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..f2685cc
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c
@@ -0,0 +1,1182 @@
+/*
+ * 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/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>
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** 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 retrival. 
+     */
+    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/example.c b/agent/mibgroup/examples/example.c
index 0ce817b..5869d37 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;
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..7f1edae 100644
--- a/agent/mibgroup/examples/netSnmpHostsTable.c
+++ b/agent/mibgroup/examples/netSnmpHostsTable.c
@@ -114,19 +114,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/ucdDemoPublic.c b/agent/mibgroup/examples/ucdDemoPublic.c
index 97a8f47..ea90ab6 100644
--- a/agent/mibgroup/examples/ucdDemoPublic.c
+++ b/agent/mibgroup/examples/ucdDemoPublic.c
@@ -35,7 +35,7 @@
 #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 +73,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}},
 
 };
 
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..5e42e96 100644
--- a/agent/mibgroup/hardware/cpu.h
+++ b/agent/mibgroup/hardware/cpu.h
@@ -15,7 +15,7 @@
 #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))
diff --git a/agent/mibgroup/hardware/cpu/cpu_kstat.c b/agent/mibgroup/hardware/cpu/cpu_kstat.c
index e16afb7..2e8db25 100644
--- a/agent/mibgroup/hardware/cpu/cpu_kstat.c
+++ b/agent/mibgroup/hardware/cpu/cpu_kstat.c
@@ -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..21cb1aa 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++;
@@ -232,7 +232,6 @@
 	    }
         }
         close(vmstatfd);
-
         if ( bytes_read < 0 ) {
             snmp_log_perror(VMSTAT_FILE "read error");
             return;
diff --git a/agent/mibgroup/hardware/cpu/cpu_sysctl.c b/agent/mibgroup/hardware/cpu/cpu_sysctl.c
index c610269..58328a9 100644
--- a/agent/mibgroup/hardware/cpu/cpu_sysctl.c
+++ b/agent/mibgroup/hardware/cpu/cpu_sysctl.c
@@ -103,8 +103,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
diff --git a/agent/mibgroup/hardware/fsys.h b/agent/mibgroup/hardware/fsys.h
new file mode 100644
index 0000000..81022ff
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys.h
@@ -0,0 +1,8 @@
+config_require(hardware/fsys/hw_fsys)
+#if defined(aix4) || defined(aix5) || defined(aix6)
+config_require(hardware/fsys/fsys_mntctl)
+#elif defined(HAVE_GETVFSSTAT) || defined(HAVE_GETFSSTAT)
+config_require(hardware/fsys/fsys_getfsstats)
+#else
+config_require(hardware/fsys/fsys_mntent)
+#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..ac00e03
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/fsys_getfsstats.c
@@ -0,0 +1,162 @@
+#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;
+
+       /*
+        * 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 = 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;
+        }
+        
+    }
+}
diff --git a/agent/mibgroup/hardware/fsys/fsys_mntctl.c b/agent/mibgroup/hardware/fsys/fsys_mntctl.c
new file mode 100644
index 0000000..da91557
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/fsys_mntctl.c
@@ -0,0 +1,178 @@
+#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
+        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), &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, 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;
+    }
+    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..2a45af5
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/fsys_mntent.c
@@ -0,0 +1,258 @@
+#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_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;
+    }
+    fclose( fp );
+}
+
diff --git a/agent/mibgroup/hardware/fsys/hw_fsys.c b/agent/mibgroup/hardware/fsys/hw_fsys.c
new file mode 100644
index 0000000..4a5a230
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/hw_fsys.c
@@ -0,0 +1,289 @@
+#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>
+
+
+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();
+}
+
+/*
+ *  Return the main fsys container
+ */
+netsnmp_container *netsnmp_fsys_get_container( void ) { return _fsys_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 )
+{
+    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();
+    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 int
+_fsys_to_K( int size, int 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 int
+netsnmp_fsys_size( netsnmp_fsys_info *f) {
+    if ( !f ) {
+        return 0;
+    }
+    return _fsys_to_K( f->size, f->units );
+}
+
+unsigned int
+netsnmp_fsys_used( netsnmp_fsys_info *f) {
+    if ( !f ) {
+        return 0;
+    }
+    return _fsys_to_K( f->used, f->units );
+}
+
+unsigned int
+netsnmp_fsys_avail( netsnmp_fsys_info *f) {
+    if ( !f ) {
+        return 0;
+    }
+    return _fsys_to_K( f->avail, f->units );
+}
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..fac935e
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/mnttypes.h
@@ -0,0 +1,178 @@
+#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
+
+/*
+ *  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..2148888
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/mounts.h
@@ -0,0 +1,159 @@
+#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 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/sensors.h b/agent/mibgroup/hardware/sensors.h
new file mode 100644
index 0000000..00af302
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors.h
@@ -0,0 +1,17 @@
+config_require(hardware/sensors/hw_sensors)
+
+#if defined(solaris)
+# 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..c466eac
--- /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( 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..7ac26cf
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/hw_sensors.h
@@ -0,0 +1 @@
+void init_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..d503c43
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/kstat_sensors.c
@@ -0,0 +1,160 @@
+#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++;
+        }
+    }
+
+    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..60af9e6
--- /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))) {
+            DEBUGMSGTL(("sensors:arch:detail", "get_features (%s, %d)\n", data->name, data->number));
+	    int             b = 0;
+ 
+
+            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..a4c7006
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/picld_sensors.c
@@ -0,0 +1,340 @@
+#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>
+#include </usr/platform/sun4u/include/sys/envctrl.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, 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, char *propname, 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
+ */
+char *switch_settings[] = { "OFF","ON","NORMAL","LOCKED",
+                            "UNKNOWN","DIAG","SECURE",
+                            NULL };
+char *led_settings[]    = { "OFF","ON","BLINK",
+                            NULL };
+char *i2c_settings[]    = { "OK",
+                            NULL };
+
+static int
+read_enum_sensor( picl_nodehdl_t childh, float *value, 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, char *propname, int typ, 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;
+}
+static int
+process_enum_sensor( picl_nodehdl_t childh, char *propname, int typ, char **options )
+{
+    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 = pick_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 = pick_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 = pick_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 = pick_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..9561ecd 100644
--- a/agent/mibgroup/header_complex.c
+++ b/agent/mibgroup/header_complex.c
@@ -94,7 +94,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 +130,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;
 
@@ -400,6 +400,8 @@
      */
     ourself = (struct header_complex_index *)
         SNMP_MALLOC_STRUCT(header_complex_index);
+    if (ourself == NULL)
+        return NULL;
 
     /*
      * change our pointers 
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..9ab8573
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst.c
@@ -0,0 +1,216 @@
+/*
+ * 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-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/swinst.h>
+
+#include <stdlib.h>
+#include <unistd.h>
+
+/* ---------------------------------------------------------------------
+ */
+
+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 %lu\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 
+ */
+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);
+}
+
+/* ---------------------------------------------------------------------
+ */
+
+#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..704a318
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst.h
@@ -0,0 +1,34 @@
+/*
+ * 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_require(host/data_access/swinst)
+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_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
+
+#endif /* NETSNMP_ACCESS_SWINST_CONFIG_H */
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..02c8b43
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst_darwin.c
@@ -0,0 +1,390 @@
+/*
+ * 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-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>
+
+/* ---------------------------------------------------------------------
+ */
+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;
+}
+
+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);
+            break;
+        }
+
+        entry->swName_len =
+            snprintf(entry->swName, sizeof(entry->swName),
+                     "%s %s", CFStringGetCStringPtr(prodName,0),
+                     CFStringGetCStringPtr(version,0));
+
+        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;
+}
+
+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..48adcd7
--- /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 %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..3e617f6
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst_pkginfo.c
@@ -0,0 +1,143 @@
+/*
+ * swinst_pkginfo.c:
+ *     hrSWInstalledTable data access:
+ */
+#include <net-snmp/net-snmp-config.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
+
+#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>
+
+   /*
+    * 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 ], *cp;
+    time_t                install_time;
+    size_t                date_len;
+    int                   rc, i = 1;
+    netsnmp_swinst_entry *entry;
+
+    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;
+        entry = netsnmp_swinst_entry_create( i++ );
+        if (NULL == entry)
+            continue;   /* error already logged by function */
+        rc = 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 );
+        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 );
+
+        /* no information about O/S vs application packages ??? */
+#endif
+
+        snprintf( buf, BUFSIZ, "%s/%s", pkg_directory, dp->d_name );
+        stat( buf, &stat_buf );
+        install_time = stat_buf.st_mtime;
+        cp = date_n_time( &install_time, &date_len );
+        memcpy( entry->swDate, cp, date_len );
+        entry->swDate_len = date_len;
+    }
+    closedir( d );
+
+    DEBUGMSGTL(("swinst:load:arch"," loaded %d entries\n",
+                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..a53aaea
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst_rpm.c
@@ -0,0 +1,151 @@
+/*
+ * 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
+
+#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>
+
+   /*
+    * 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);
+        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..a24669f
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun.c
@@ -0,0 +1,347 @@
+/*
+ *  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-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/swrun.h>
+
+
+/**---------------------------------------------------------------------*/
+/*
+ * 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 );
+}
+
+int
+swrun_max_processes( void )
+{
+    return _swrun_max;
+}
+
+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 = ITERATOR_NEXT( it )) {
+        if (0 == strcmp( entry->hrSWRunName, name ))
+            i++;
+    }
+    ITERATOR_RELEASE( it );
+
+    return i;
+}
+
+
+/**---------------------------------------------------------------------*/
+/*
+ * 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)
+{
+    netsnmp_container *container;
+
+    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..4ff1598
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun.h
@@ -0,0 +1,51 @@
+/*
+ * 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 )
+    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
+
+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..bbefc4e
--- /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 ((NULL == processes[i].kp_proc.p_comm) ||
+            (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.uw = AbsoluteToNanoseconds( at.uw );
+            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",
+                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",
+                    (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..15f3d00
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_kinfo.c
@@ -0,0 +1,343 @@
+/*
+ * 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
+                             ;
+
+        switch (proc_table[i].SWRUN_K_STAT) {
+        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 SZOMB:
+        default:      entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;   /* i.e. "not loaded" */
+                      break;
+        }
+        
+#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..c8124d4
--- /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",
+                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..622f590
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_procfs_status.c
@@ -0,0 +1,205 @@
+/*
+ * 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, rc, 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 */
+        rc = CONTAINER_INSERT(container, entry);
+
+        /*
+         * 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" );
+        memset(buf, 0, sizeof(buf));
+        fgets( buf, BUFSIZ-1, fp );
+        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" );
+        memset(buf, 0, sizeof(buf));
+        cp = fgets( buf, BUFSIZ-1, fp );
+        fclose(fp);
+
+        if ( cp ) {
+            /*
+             *     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 {
+            memcpy(entry->hrSWRunPath, entry->hrSWRunName, entry->hrSWRunName_len);
+            entry->hrSWRunPath_len       = entry->hrSWRunName_len;
+            entry->hrSWRunParameters_len = 0;
+            entry->hrSWRunType = HRSWRUNTYPE_OPERATINGSYSTEM;
+        }
+ 
+        /*
+         * XXX - No information regarding system processes vs applications
+         */
+        entry->hrSWRunType = HRSWRUNTYPE_APPLICATION;
+
+        /*
+         *   {xxx} {xxx} STATUS  {xxx}*10  UTIME STIME  {xxx}*8 RSS
+         */
+        snprintf( buf, BUFSIZ, "/proc/%d/stat", pid );
+        fp = fopen( buf, "r" );
+        fgets( buf, BUFSIZ-1, fp );
+        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 */
+    }
+    closedir( procdir );
+
+    DEBUGMSGTL(("swrun:load:arch"," loaded %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..2f44702
--- /dev/null
+++ b/agent/mibgroup/host/hrSWInstalledTable.c
@@ -0,0 +1,272 @@
+/*
+ * 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 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();
+}
+
+/** 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;
+    netsnmp_container *container;
+    netsnmp_cache *cache;
+    netsnmp_table_registration_info *table_info;
+
+    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..2a1da23
--- /dev/null
+++ b/agent/mibgroup/host/hrSWInstalledTable.h
@@ -0,0 +1,25 @@
+/*
+ * 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            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..5067bb2
--- /dev/null
+++ b/agent/mibgroup/host/hrSWRunPerfTable.c
@@ -0,0 +1,183 @@
+/*
+ * 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();
+}
+
+extern oid      hrSWRunTable_oid[];
+extern size_t   hrSWRunTable_oid_len;
+
+/** 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;
+    netsnmp_table_registration_info *table_info;
+
+    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);
+}
+
+/** 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..b793627
--- /dev/null
+++ b/agent/mibgroup/host/hrSWRunPerfTable.h
@@ -0,0 +1,32 @@
+/*
+ * 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            initialize_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..c09f58f
--- /dev/null
+++ b/agent/mibgroup/host/hrSWRunTable.c
@@ -0,0 +1,335 @@
+/*
+ * 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 "hrSWRunTable.h"
+#include "data_access/swrun.h"
+
+#include <signal.h>
+
+#define MYTABLE "hrSWRunTable"
+
+/** Initializes the hrSWRunTable module */
+void
+init_hrSWRunTable(void)
+{
+    /*
+     * here we initialize all the tables we're planning on supporting 
+     */
+    initialize_table_hrSWRunTable();
+}
+
+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;
+    netsnmp_table_registration_info *table_info = NULL;
+
+#ifdef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
+#  define SWRUN_ACCESS_LEVEL HANDLER_CAN_RWRITE
+#else
+#  define SWRUN_ACCESS_LEVEL HANDLER_CAN_RONLY
+#endif
+    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;
+
+#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 */
+    }
+    return SNMP_ERR_NOERROR;
+}
+
diff --git a/agent/mibgroup/host/hrSWRunTable.h b/agent/mibgroup/host/hrSWRunTable.h
new file mode 100644
index 0000000..6ca4989
--- /dev/null
+++ b/agent/mibgroup/host/hrSWRunTable.h
@@ -0,0 +1,38 @@
+/*
+ * 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            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..7725fa8 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,
@@ -132,9 +176,25 @@
 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);
 
+static void     Add_LVM_Disks(void);
+static void     Remove_LVM_Disks(void);
+
         /*********************
 	 *
 	 *  Initialisation & common implementation functions
@@ -147,10 +207,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 +236,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 +252,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 +284,12 @@
                                   free_disk_config, "name");
 }
 
+void
+shutdown_hr_disk(void)
+{
+    Remove_LVM_Disks();
+}
+
 #define ITEM_STRING	1
 #define ITEM_SET	2
 #define ITEM_STAR	3
@@ -240,12 +315,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 +557,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 +588,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 "));
@@ -601,7 +677,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++;
@@ -656,14 +732,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 +773,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 +826,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 +884,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 +961,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 +987,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 +1022,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 +1030,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 +1048,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 +1163,11 @@
         return (2);             /* read only */
 #endif
 
+#ifdef darwin
+    if (!HRD_access)
+        return (2);
+#endif
+
     return (1);                 /* read-write */
 }
 
@@ -984,6 +1240,9 @@
     }
 #endif
 
+#ifdef darwin
+    return HRD_type;
+#endif
 
     return (2);                 /* Unknown */
 }
@@ -1014,5 +1273,149 @@
         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
+
+
+#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 = 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
+}
+
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..e85bfec 100644
--- a/agent/mibgroup/host/hr_filesys.c
+++ b/agent/mibgroup/host/hr_filesys.c
@@ -2,6 +2,16 @@
  *  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-includes.h>
@@ -10,6 +20,7 @@
 #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
@@ -195,15 +206,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 };
 
@@ -279,7 +299,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 "));
@@ -326,9 +346,9 @@
         *var_len = strlen(string);
         return (u_char *) string;
     case HRFSYS_RMOUNT:
-        if (Check_HR_FileSys_NFS())
+        if (Check_HR_FileSys_NFS()) {
             strlcpy(string, HRFS_entry->HRFS_name, sizeof(string));
-        else
+        } else
             string[0] = '\0';
         *var_len = strlen(string);
         return (u_char *) string;
@@ -621,9 +641,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 +696,7 @@
     "proc",
     "fd",
 #endif
-    0
+    NULL
 };
 
 int
@@ -729,13 +747,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
@@ -955,7 +969,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..48d747d 100644
--- a/agent/mibgroup/host/hr_network.c
+++ b/agent/mibgroup/host/hr_network.c
@@ -51,7 +51,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 +137,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..abe7692 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,9 @@
 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
 
 static int      HRP_DiskIndex;
 
@@ -60,11 +72,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 +152,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 +162,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 +204,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 +244,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 +283,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 +298,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 +336,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_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..754884c 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>
@@ -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,15 +205,15 @@
 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 STRUCT_STATVFS_HAS_F_FRSIZE
+#define HRFS_HAS_FRSIZE HAVE_STRUCT_STATVFS_F_FRSIZE
 
 #elif defined(HAVE_GETFSSTAT)
 
@@ -221,14 +221,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 +249,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 +264,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 +290,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 +330,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 +341,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 +452,7 @@
         }
     }
 
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
 
     /*
@@ -475,7 +460,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 +474,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 +529,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 +548,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;
@@ -656,7 +660,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..fe969af 100644
--- a/agent/mibgroup/host/hr_swinst.c
+++ b/agent/mibgroup/host/hr_swinst.c
@@ -45,6 +45,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
@@ -157,13 +161,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 +197,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)
@@ -244,6 +252,7 @@
                  hrswinst_variables_oid);
 }
 
+
 /*
  * header_hrswinst(...
  * Arguments:
@@ -278,7 +287,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 +357,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 "));
@@ -492,12 +501,12 @@
     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) {
@@ -508,11 +517,12 @@
                 ret = date_n_time(&stat_buf.st_mtime, var_len);
             } else {
 #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 +694,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..b1727cb 100644
--- a/agent/mibgroup/host/hr_swrun.c
+++ b/agent/mibgroup/host/hr_swrun.c
@@ -122,6 +122,8 @@
 #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)
@@ -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 "));
@@ -570,7 +582,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
@@ -672,6 +684,12 @@
         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);
@@ -789,6 +807,12 @@
         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);
@@ -890,6 +914,17 @@
             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 +938,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;
@@ -957,6 +992,11 @@
 			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 +1054,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
@@ -1109,6 +1151,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 ...
@@ -1225,6 +1271,11 @@
 #endif
 #elif defined(aix4) || defined(aix5) || defined(aix6)
         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
@@ -1495,6 +1546,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 +1614,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)
@@ -1595,13 +1657,13 @@
 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)
@@ -1615,7 +1677,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..88b0fbb 100644
--- a/agent/mibgroup/host/hr_system.c
+++ b/agent/mibgroup/host/hr_system.c
@@ -106,7 +106,7 @@
 static int      get_load_dev(void);
 static int      count_users(void);
 extern int      count_processes(void);
-
+extern int      swrun_count_processes(void);
 
         /*********************
 	 *
@@ -124,23 +124,37 @@
 
 #if defined(solaris2)
 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
 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 +205,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 */
@@ -238,7 +252,7 @@
 #if defined(HAVE_MKTIME) && defined(HAVE_STIME)
         *write_method=ns_set_time;
 #endif
-        (void *) time(&now);
+        time(&now);
         return (u_char *) date_n_time(&now, var_len);
     case HRSYS_LOAD_DEV:
         long_return = get_load_dev();
@@ -270,7 +284,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
diff --git a/agent/mibgroup/host/hrh_filesys.c b/agent/mibgroup/host/hrh_filesys.c
new file mode 100644
index 0000000..6c75b1a
--- /dev/null
+++ b/agent/mibgroup/host/hrh_filesys.c
@@ -0,0 +1,424 @@
+/*
+ *  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-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)
+#include <sys/mntctl.h>
+#include <sys/vmount.h>
+#include <sys/statfs.h>
+#endif
+
+
+#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), HRFS_entry->path);
+        string[ sizeof(string)-1 ] = 0;
+        *var_len = strlen(string);
+        return (u_char *) string;
+    case HRFSYS_RMOUNT:
+        if (HRFS_entry->flags & NETSNMP_FS_FLAG_REMOTE) {
+            snprintf(string, sizeof(string), HRFS_entry->device);
+            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;
+}
+
+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 );
+
+    return (HRFS_entry ? HRFS_entry->idx.oids[0] : -1 );
+}
+
+
+
+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(*cp2))
+                ++cp2;          /* Now find the dump level */
+
+            if (level == FULL_DUMP) {
+                if (*(cp2++) != '0')
+                    continue;   /* Not interested in partial dumps */
+                while (isspace(*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(*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..c458d4d
--- /dev/null
+++ b/agent/mibgroup/host/hrh_storage.c
@@ -0,0 +1,504 @@
+/*
+ *  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);
+
+    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)
+            long_return = HRFS_entry->units;
+        else {
+            if ( !mem || mem->units == -1 )
+                goto try_next;
+            long_return = mem->units;
+        }
+        return (u_char *) & long_return;
+    case HRSTORE_SIZE:
+        if (store_idx > NETSNMP_MEM_TYPE_MAX)
+            long_return = HRFS_entry->size;
+        else {
+            if ( !mem || mem->size == -1 )
+                goto try_next;
+            long_return = mem->size;
+        }
+        return (u_char *) & long_return;
+    case HRSTORE_USED:
+        if (store_idx > NETSNMP_MEM_TYPE_MAX)
+            long_return = HRFS_entry->used;
+        else {
+            if ( !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..d9f54b9 100644
--- a/agent/mibgroup/host_res.h
+++ b/agent/mibgroup/host_res.h
@@ -17,7 +17,7 @@
 #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
diff --git a/agent/mibgroup/if-mib/data_access/interface.c b/agent/mibgroup/if-mib/data_access/interface.c
index d65fad0..629c99a 100644
--- a/agent/mibgroup/if-mib/data_access/interface.c
+++ b/agent/mibgroup/if-mib/data_access/interface.c
@@ -477,7 +477,7 @@
     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 %lu for %s\n",
                     index, name));
     }
     else
@@ -488,7 +488,7 @@
                          "interfaces will appear multiple times in IF-MIB.\n");
                 logged = 1;
             }
-            DEBUGMSGTL(("access:interface:ifIndex", "index %d != tmp for %s\n",
+            DEBUGMSGTL(("access:interface:ifIndex", "index %lu != tmp for %s\n",
                          index, name));
         }
 }
@@ -536,10 +536,19 @@
                                        &new_vals->stats.ibytes,
                                        &prev_vals->old_stats->ibytes,
                                        &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.iucast,
-                                       &new_vals->stats.iucast,
-                                       &prev_vals->old_stats->iucast,
-                                       &need_wrap_check);
+
+	if (new_vals->ns_flags & NETSNMP_INTERFACE_FLAGS_CALCULATE_UCAST) {
+            netsnmp_c64_check32_and_update(&prev_vals->stats.iall,
+                                           &new_vals->stats.iall,
+                                           &prev_vals->old_stats->iall,
+                                           &need_wrap_check);
+        } else {
+            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,
                                        &new_vals->stats.imcast,
                                        &prev_vals->old_stats->imcast,
@@ -596,6 +605,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 +643,7 @@
      * update stats
      */
     netsnmp_access_interface_entry_update_stats(lhs, rhs);
+    netsnmp_access_interface_entry_calculate_stats(lhs);
 
     /*
      * update data
diff --git a/agent/mibgroup/if-mib/data_access/interface.h b/agent/mibgroup/if-mib/data_access/interface.h
index 256d047..f4c0e5e 100644
--- a/agent/mibgroup/if-mib/data_access/interface.h
+++ b/agent/mibgroup/if-mib/data_access/interface.h
@@ -37,7 +37,7 @@
 
 #   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..aeab0ce 100644
--- a/agent/mibgroup/if-mib/data_access/interface_ioctl.c
+++ b/agent/mibgroup/if-mib/data_access/interface_ioctl.c
@@ -408,7 +408,7 @@
     rc = _ioctl_get(fd, SIOCGIFINDEX, &ifrq, name);
     if (rc < 0) {
         DEBUGMSGTL(("access:interface:ioctl",
-                   "ifindex_get error on inerface '%s'\n", name));
+                   "ifindex_get error on interface '%s'\n", name));
         return 0;
     }
 
diff --git a/agent/mibgroup/if-mib/data_access/interface_linux.c b/agent/mibgroup/if-mib/data_access/interface_linux.c
index 94bd983..0ed9303 100644
--- a/agent/mibgroup/if-mib/data_access/interface_linux.c
+++ b/agent/mibgroup/if-mib/data_access/interface_linux.c
@@ -29,18 +29,38 @@
 #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 <errno.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 +80,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 +122,11 @@
     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
 }
 
 /*
@@ -128,14 +163,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
@@ -402,16 +429,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 +481,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) {
@@ -622,7 +648,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 +665,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;
@@ -878,3 +934,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..5da2fdc
--- /dev/null
+++ b/agent/mibgroup/if-mib/data_access/interface_openbsd.c
@@ -0,0 +1,402 @@
+/*
+ *  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 "if-mib/ifTable/ifTable_constants.h"
+
+#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>
+
+extern struct timeval 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 = 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 = 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 = 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;
+}
+
+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;
+}
+
diff --git a/agent/mibgroup/if-mib/data_access/interface_solaris2.c b/agent/mibgroup/if-mib/data_access/interface_solaris2.c
index 66fb22f..0bc0afa 100644
--- a/agent/mibgroup/if-mib/data_access/interface_solaris2.c
+++ b/agent/mibgroup/if-mib/data_access/interface_solaris2.c
@@ -3,9 +3,9 @@
  */
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
-#include "mibII/mibII_common.h"
 #include "if-mib/ifTable/ifTable_constants.h"
 #include "kernel_sunos5.h"
+#include "mibII/mibII_common.h"
 
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -63,7 +63,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) {
@@ -306,7 +306,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,7 +340,7 @@
         &_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 */
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable.c b/agent/mibgroup/if-mib/ifTable/ifTable.c
index 69400fc..c212981 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable.c
@@ -37,8 +37,8 @@
 #   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 +147,7 @@
      * register scalar for ifNumber
      */
     {
-        oid             reg_oid[] =
-            { IFTABLE_NUMBER };
+        const oid       reg_oid[] = { IFTABLE_NUMBER };
         netsnmp_handler_registration *myreg;
 
         myreg =
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable.h b/agent/mibgroup/if-mib/ifTable/ifTable.h
index 6a6f0e5..2f96292 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable.h
+++ b/agent/mibgroup/if-mib/ifTable/ifTable.h
@@ -361,8 +361,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"
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
index 9fa0f93..b5bc3b7 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
@@ -23,12 +23,30 @@
 #   include "mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.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 +68,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 +114,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,16 +200,115 @@
          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
@@ -193,16 +340,32 @@
          * 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
         {
@@ -253,10 +416,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 +493,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);
         /*
          * fix this when we hit an arch that reports its own last change
@@ -313,6 +532,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.
@@ -376,7 +610,7 @@
 int
 ifTable_container_load(netsnmp_container *container)
 {
-    netsnmp_container *ifcontainer;
+    cd_container cdc;
 
     DEBUGMSGTL(("verbose:ifTable:ifTable_container_load", "called\n"));
 
@@ -389,23 +623,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);
 
@@ -413,11 +659,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..14e35cd 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.h
+++ b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.h
@@ -48,6 +48,8 @@
      */
 #define IFTABLE_CACHE_TIMEOUT   15
 
+#define IFTABLE_REMOVE_MISSING_AFTER     (5 * 60) /* seconds */
+
     void            ifTable_container_init(netsnmp_container
                                            **container_ptr_ptr,
                                            netsnmp_cache * cache);
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable_interface.c b/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
index 25749e3..e362fda 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
@@ -372,7 +372,7 @@
      * register ifTableLastChanged
      */
     {
-        oid             iftlc_oid[] = { IFTABLE_LAST_CHANGE };
+        const oid       iftlc_oid[] = { IFTABLE_LAST_CHANGE };
         netsnmp_register_watched_scalar(netsnmp_create_handler_registration
                                         ("ifTableLastChanged", NULL,
                                          iftlc_oid, OID_LENGTH(iftlc_oid),
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable.c b/agent/mibgroup/if-mib/ifXTable/ifXTable.c
index 8b9b7ce..1a24275 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable.c
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable.c
@@ -38,9 +38,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;
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable.h b/agent/mibgroup/if-mib/ifXTable/ifXTable.h
index e32acc8..f9b25d4 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"
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c b/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
index d9b1847..9f064cf 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
@@ -1784,7 +1784,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
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route.h b/agent/mibgroup/ip-forward-mib/data_access/route.h
index dac70ce..a2b4ee4 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route.h
+++ b/agent/mibgroup/ip-forward-mib/data_access/route.h
@@ -23,7 +23,7 @@
 config_require(ip-forward-mib/data_access/route_linux)
 config_require(ip-forward-mib/data_access/route_ioctl)
 #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..974de55 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route_common.c
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_common.c
@@ -47,12 +47,11 @@
 
     DEBUGMSGTL(("access:route:container", "load\n"));
 
+    if (NULL == container)
+        container = netsnmp_container_find("access:_route:table_container");
     if (NULL == container) {
-        container = netsnmp_container_find("access:_route:fifo");
-        if (NULL == container) {
-            snmp_log(LOG_ERR, "no container specified/found for access_route\n");
-            return NULL;
-        }
+        snmp_log(LOG_ERR, "no container specified/found for access_route\n");
+        return NULL;
     }
 
     rc =  netsnmp_access_route_container_arch_load(container, load_flags);
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..c20e0af 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c
@@ -69,10 +69,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
 
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..c5d7633 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route_linux.c
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_linux.c
@@ -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];
diff --git a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
index 41b5c95..b46080a 100644
--- a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
+++ b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
@@ -26,8 +26,8 @@
 
 #include "inetCidrRouteTable_interface.h"
 
-oid             inetCidrRouteTable_oid[] = { INETCIDRROUTETABLE_OID };
-int             inetCidrRouteTable_oid_size =
+const oid       inetCidrRouteTable_oid[] = { INETCIDRROUTETABLE_OID };
+const int       inetCidrRouteTable_oid_size =
 OID_LENGTH(inetCidrRouteTable_oid);
 
 inetCidrRouteTable_registration inetCidrRouteTable_user_context;
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..ffedb08 100644
--- a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
+++ b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
@@ -153,9 +153,7 @@
 #endif
 
 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 
@@ -2305,7 +2303,7 @@
     /*
      * cache init
      */
-    if_ctx->cache = netsnmp_cache_create(INETCIDRROUTETABLE_CACHE_TIMEOUT,
+    if_ctx->cache = netsnmp_cache_create(30,    /* timeout in seconds */
                                          _cache_load, _cache_free,
                                          inetCidrRouteTable_oid,
                                          inetCidrRouteTable_oid_size);
@@ -2318,20 +2316,15 @@
     if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
 
     inetCidrRouteTable_container_init(&if_ctx->container, if_ctx->cache);
-    if (NULL == if_ctx->container) {
+    if (NULL == if_ctx->container)
         if_ctx->container =
             netsnmp_container_find("inetCidrRouteTable:table_container");
-        if (NULL == if_ctx->container) {
-            snmp_log(LOG_ERR, "error creating container in "
-                     "inetCidrRouteTable_container_init\n");
-            return;
-        }
+    if (NULL == if_ctx->container) {
+        snmp_log(LOG_ERR, "error creating container in "
+                 "inetCidrRouteTable_container_init\n");
+        return;
     }
 
-    /* set allow duplicates this makes insert O(1) */
-    netsnmp_binary_array_options_set(if_ctx->container, 1,
-                                     CONTAINER_KEY_ALLOW_DUPLICATES);
-
     if (NULL != if_ctx->cache)
         if_ctx->cache->magic = (void *) if_ctx->container;
 }                               /* _inetCidrRouteTable_container_init */
diff --git a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c
index 75fde88..ae7b71d 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;
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..37c4a01 100644
--- a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
+++ b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
@@ -2254,7 +2254,7 @@
     /*
      * cache init
      */
-    if_ctx->cache = netsnmp_cache_create(IPCIDRROUTETABLE_CACHE_TIMEOUT,
+    if_ctx->cache = netsnmp_cache_create(30,    /* timeout in seconds */
                                          _cache_load, _cache_free,
                                          ipCidrRouteTable_oid,
                                          ipCidrRouteTable_oid_size);
@@ -2267,20 +2267,15 @@
     if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
 
     ipCidrRouteTable_container_init(&if_ctx->container, if_ctx->cache);
-    if (NULL == if_ctx->container) {
+    if (NULL == if_ctx->container)
         if_ctx->container =
             netsnmp_container_find("ipCidrRouteTable:table_container");
-        if (NULL == if_ctx->container) {
-            snmp_log(LOG_ERR, "error creating container in "
-                     "ipCidrRouteTable_container_init\n");
-            return;
-        }
+    if (NULL == if_ctx->container) {
+        snmp_log(LOG_ERR, "error creating container in "
+                 "ipCidrRouteTable_container_init\n");
+        return;
     }
 
-    /* set allow duplicates this makes insert O(1) */
-    netsnmp_binary_array_options_set(if_ctx->container, 1,
-                                     CONTAINER_KEY_ALLOW_DUPLICATES);
-
     if (NULL != if_ctx->cache)
         if_ctx->cache->magic = (void *) if_ctx->container;
 }                               /* _ipCidrRouteTable_container_init */
diff --git a/agent/mibgroup/ip-mib.h b/agent/mibgroup/ip-mib.h
index b45cbb4..83752e5 100644
--- a/agent/mibgroup/ip-mib.h
+++ b/agent/mibgroup/ip-mib.h
@@ -6,4 +6,8 @@
 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..e9c371b 100644
--- a/agent/mibgroup/ip-mib/data_access/arp.h
+++ b/agent/mibgroup/ip-mib/data_access/arp.h
@@ -23,8 +23,7 @@
 #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..c794c3a 100644
--- a/agent/mibgroup/ip-mib/data_access/arp_common.c
+++ b/agent/mibgroup/ip-mib/data_access/arp_common.c
@@ -143,3 +143,41 @@
 {
     netsnmp_access_arp_entry_free(entry);
 }
+
+/**
+ * Update given entry with new data. Calculate new arp_last_updated, if any
+ * field is changed.
+ */
+void netsnmp_access_arp_entry_update(netsnmp_arp_entry *entry,
+        netsnmp_arp_entry *new_data)
+{
+    int modified = 0;
+
+    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..2069ef1 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,9 +12,32 @@
 #include <netinet/in.h>
 #include <net/if_arp.h>
 #include <arpa/inet.h>
+#include <linux/types.h>
+#include <asm/types.h>
+#ifdef NETSNMP_ENABLE_IPV6
+#ifdef HAVE_LINUX_RTNETLINK_H
+#include <linux/rtnetlink.h>
+#define NIP6(addr) \
+        ntohs((addr).s6_addr16[0]), \
+        ntohs((addr).s6_addr16[1]), \
+        ntohs((addr).s6_addr16[2]), \
+        ntohs((addr).s6_addr16[3]), \
+        ntohs((addr).s6_addr16[4]), \
+        ntohs((addr).s6_addr16[5]), \
+        ntohs((addr).s6_addr16[6]), \
+        ntohs((addr).s6_addr16[7])
+#define NIP6_FMT "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x"
+#endif
+#endif
 
 int _load_v4(netsnmp_container *container, int idx_offset);
-
+static int _load_v6(netsnmp_container *container, int idx_offset);
+#ifdef HAVE_LINUX_RTNETLINK_H
+int get_translation_table_info (int sd, int *status, 
+                                char *buff, size_t size);
+int fillup_entry_info(netsnmp_arp_entry *entry,
+                      struct nlmsghdr *nlmp);
+#endif
 /**
  */
 int
@@ -28,11 +49,10 @@
     if(rc < 0) {
         u_int flags = NETSNMP_ACCESS_ARP_FREE_KEEP_CONTAINER;
         netsnmp_access_arp_container_free(container, flags);
-        return rc;
     }
 
-#if defined (NETSNMP_ENABLE_IPV6) && 0 /* xx-rks: arp for v6? */
-    idx_offset = rc;
+#if defined (NETSNMP_ENABLE_IPV6)
+    idx_offset = (rc < 0) ? 0 : rc;
 
     rc = _load_v6(container, idx_offset);
     if(rc < 0) {
@@ -67,7 +87,7 @@
 
 #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;
     }
 
@@ -191,3 +211,235 @@
 
     return idx_offset;
 }
+
+#if defined (NETSNMP_ENABLE_IPV6)
+static int
+_load_v6(netsnmp_container *container, int idx_offset)
+{
+    char              buffer[16384];
+#if defined(HAVE_LINUX_RTNETLINK_H)
+    struct nlmsghdr   *nlmp;
+#endif
+    int               sd = 0;
+    int               status = 0;
+    int               rc = 0;
+    int               len, req_len;
+    netsnmp_arp_entry *entry;
+
+    netsnmp_assert(NULL != container);
+#if defined(HAVE_LINUX_RTNETLINK_H)
+    if((sd = socket (PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE)) < 0) {
+        snmp_log(LOG_ERR,"Unable to create netlink socket\n");
+        return -2;
+    }
+
+    if(get_translation_table_info (sd, &status, buffer, sizeof(buffer)) < 0) {
+       snmp_log(LOG_ERR,"Unable to fetch translation table info\n");
+       close(sd);
+       return -2;
+    }
+
+    for (nlmp = (struct nlmsghdr *)buffer; status > sizeof(*nlmp); ) {
+         len = nlmp->nlmsg_len;
+         req_len = len - sizeof(*nlmp);
+         if (req_len < 0 || len > status) {
+             snmp_log(LOG_ERR,"invalid length\n");
+             return -2;
+         }
+         if (!NLMSG_OK (nlmp, status)) {
+             snmp_log(LOG_ERR,"NLMSG not OK\n");
+             return -2;
+         }
+         entry = netsnmp_access_arp_entry_create();
+         if(NULL == entry) {
+            rc = -3;
+            break;
+         }
+         entry->ns_arp_index = ++idx_offset;
+         if(fillup_entry_info (entry, nlmp) < 0) {
+            DEBUGMSGTL(("access:arp:load_v6", "skipping netlink message that"
+                        "did not contain valid ARP information\n"));
+            netsnmp_access_arp_entry_free(entry);
+            status -= NLMSG_ALIGN(len);
+            nlmp = (struct nlmsghdr*)((char*)nlmp + NLMSG_ALIGN(len));
+            continue;
+         }
+         CONTAINER_INSERT(container, entry);
+         status -= NLMSG_ALIGN(len);
+         nlmp = (struct nlmsghdr*)((char*)nlmp + NLMSG_ALIGN(len));
+    }
+
+    close(sd);
+#endif
+    if(rc<0) {
+        return rc;
+    }
+
+    return idx_offset;
+}
+#if defined(HAVE_LINUX_RTNETLINK_H)
+int 
+get_translation_table_info (int sd, int *status, char *buff, size_t size)
+{
+    struct {
+                struct nlmsghdr n;
+                struct ndmsg r;
+                char   buf[1024];
+    } req;
+    struct rtattr   *rta;
+
+    memset(&req, 0, sizeof(req));
+    req.n.nlmsg_len = NLMSG_LENGTH (sizeof(struct ndmsg));
+    req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT;
+    req.n.nlmsg_type = RTM_GETNEIGH;
+
+    req.r.ndm_family = AF_INET6;
+    rta = (struct rtattr *)(((char *)&req) + NLMSG_ALIGN(req.n.nlmsg_len));
+    rta->rta_len = RTA_LENGTH(16);
+
+    if(send(sd, &req, req.n.nlmsg_len, 0) < 0) {
+       snmp_log(LOG_ERR,"Sending request failed\n");
+       return -1;
+    }
+    if((*status = recv(sd, buff, size, 0)) < 0) {
+       snmp_log(LOG_ERR,"Recieving request failed\n");
+       return -1;
+    }
+    if(*status == 0) {
+       snmp_log(LOG_ERR,"End of file\n");
+       return -1;
+    }
+    return 0;
+}
+
+int
+fillup_entry_info(netsnmp_arp_entry *entry, struct nlmsghdr *nlmp)
+{
+    struct ndmsg   *rtmp;
+    struct in6_addr *in6p;
+    struct rtattr  *tb[NDA_MAX + 1], *rta;
+    size_t          in_len, out_len;
+    unsigned int    i;
+    int             length;
+    char            addr[40];
+    u_char         *buf;
+    u_char         *hwaddr;
+
+    rtmp = (struct ndmsg *) NLMSG_DATA(nlmp);
+    if (nlmp->nlmsg_type != RTM_NEWNEIGH) {
+        snmp_log(LOG_ERR, "Wrong netlink message type %d\n", nlmp->nlmsg_type);
+        return -1;
+    }
+
+    if (rtmp->ndm_state != NUD_NOARP) {
+        memset(tb, 0, sizeof(struct rtattr *) * (NDA_MAX + 1));
+        length = nlmp->nlmsg_len - NLMSG_LENGTH(sizeof(*rtmp));
+        if (length < 0) {
+            snmp_log(LOG_ERR, "netlink message length %d < %d is invalid\n",
+                     nlmp->nlmsg_len, (int)NLMSG_LENGTH(sizeof(*rtmp)));
+            return -1;
+        }
+        /*
+         * this is what the kernel-removed NDA_RTA define did 
+         */
+        rta = ((struct rtattr *) (((char *) (rtmp)) +
+                                  NLMSG_ALIGN(sizeof(struct ndmsg))));
+        while (RTA_OK(rta, length)) {
+            if (rta->rta_type <= NDA_MAX)
+                tb[rta->rta_type] = rta;
+            rta = RTA_NEXT(rta, length);
+        }
+        if (length) {
+            snmp_log(LOG_ERR, "Received uneven number of netlink"
+                        " messages - %d bytes remaining\n", length);
+            return -1;
+        }
+        /*
+         * Fill up the index
+         */
+        entry->if_index = rtmp->ndm_ifindex;
+        /*
+         * Fill up ip address 
+         */
+        if (tb[NDA_DST]) {
+            memset(&addr, '\0', sizeof(addr));
+            in6p = (struct in6_addr *) RTA_DATA(tb[NDA_DST]);
+            sprintf(addr, NIP6_FMT, NIP6(*in6p));
+            in_len = entry->arp_ipaddress_len =
+                sizeof(entry->arp_ipaddress);
+            netsnmp_assert(16 == in_len);
+            out_len = 0;
+            buf = entry->arp_ipaddress;
+            if (1 != netsnmp_hex_to_binary(&buf, &in_len,
+                                           &out_len, 0, addr, ":")) {
+                snmp_log(LOG_ERR, "error parsing '%s', skipping\n",
+                         entry->arp_ipaddress);
+                return -1;
+            }
+            netsnmp_assert(16 == out_len);
+            entry->arp_ipaddress_len = out_len;
+        }
+        if (tb[NDA_LLADDR]) {
+            memset(&addr, '\0', sizeof(addr));
+            hwaddr = RTA_DATA(tb[NDA_LLADDR]);
+            entry->arp_physaddress_len = RTA_PAYLOAD(tb[NDA_LLADDR]);
+            buf = entry->arp_physaddress;
+            for (i = 0; i < entry->arp_physaddress_len; i++)
+                entry->arp_physaddress[i] = hwaddr[i];
+        }
+
+        switch (rtmp->ndm_state) {
+        case NUD_INCOMPLETE:
+            entry->arp_state = INETNETTOMEDIASTATE_INCOMPLETE;
+            break;
+        case NUD_REACHABLE:
+        case NUD_PERMANENT:
+            entry->arp_state = INETNETTOMEDIASTATE_REACHABLE;
+            break;
+        case NUD_STALE:
+            entry->arp_state = INETNETTOMEDIASTATE_STALE;
+            break;
+        case NUD_DELAY:
+            entry->arp_state = INETNETTOMEDIASTATE_DELAY;
+            break;
+        case NUD_PROBE:
+            entry->arp_state = INETNETTOMEDIASTATE_PROBE;
+            break;
+        case NUD_FAILED:
+            entry->arp_state = INETNETTOMEDIASTATE_INVALID;
+            break;
+        case NUD_NONE:
+            entry->arp_state = INETNETTOMEDIASTATE_UNKNOWN;
+            break;
+        default:
+            snmp_log(LOG_ERR, "Unrecognized ARP entry state %d", rtmp->ndm_state);
+            break;
+        }
+
+        switch (rtmp->ndm_state) {
+        case NUD_INCOMPLETE:
+        case NUD_FAILED:
+        case NUD_NONE:
+            entry->arp_type = INETNETTOMEDIATYPE_INVALID;
+            break;
+        case NUD_REACHABLE:
+        case NUD_STALE:
+        case NUD_DELAY:
+        case NUD_PROBE:
+            entry->arp_type = INETNETTOMEDIATYPE_DYNAMIC;
+            break;
+        case NUD_PERMANENT:
+            entry->arp_type = INETNETTOMEDIATYPE_STATIC;
+            break;
+        default:
+            entry->arp_type = INETNETTOMEDIATYPE_LOCAL;
+            break;
+        }
+    } else {
+        return -1;              /* could not create data for this interface */
+    }
+
+    return 0;
+}
+#endif
+#endif
diff --git a/agent/mibgroup/ip-mib/data_access/defaultrouter.h b/agent/mibgroup/ip-mib/data_access/defaultrouter.h
new file mode 100644
index 0000000..a4dfbb1
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/defaultrouter.h
@@ -0,0 +1,28 @@
+/*
+ * 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)
+#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/ipaddress.h b/agent/mibgroup/ip-mib/data_access/ipaddress.h
index c66f161..9cf8181 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress.h
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress.h
@@ -20,11 +20,9 @@
 config_require(ip-mib/data_access/ipaddress_common)
 #if defined( linux )
 config_require(ip-mib/data_access/ipaddress_linux)
+#elif defined( solaris2 )
+config_require(ip-mib/data_access/ipaddress_solaris2)
 #else
-/*
- * 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..ac62c40 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
@@ -211,7 +211,7 @@
      * 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 %ld\n",
                   entry->if_index));
         return -1;
     }
@@ -304,6 +304,27 @@
         ++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;
 }
@@ -431,3 +452,49 @@
      */
     return memcmp(lh->ia_address, rh->ia_address, lh->ia_address_len);
 }
+
+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;
+}
+
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
index b19786d..57fb9bb 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
@@ -135,7 +135,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 +155,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 +191,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 +230,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 +263,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 +279,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,12 +294,23 @@
          *   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",
@@ -279,8 +328,17 @@
         /*
          * 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_access_ipaddress_entry_free(entry);
             continue;
@@ -368,10 +426,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;
 }
 
@@ -591,4 +652,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..fc6e771 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);
@@ -13,6 +24,8 @@
 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
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c b/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
index e78c8bd..8b34e86 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
@@ -12,6 +12,8 @@
 #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>
@@ -19,12 +21,27 @@
 #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
@@ -179,6 +196,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 +210,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 +255,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 +283,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 +295,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 +315,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 +335,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 +395,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_solaris2.c b/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c
new file mode 100644
index 0000000..f2d8e0b
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c
@@ -0,0 +1,286 @@
+/*
+ *  IP-MIB architecture support
+ *
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/ipaddress.h>
+#include <net-snmp/data_access/interface.h>
+
+#include "ip-mib/ipAddressTable/ipAddressTable_constants.h"
+
+#include "kernel_sunos5.h"
+#include "mibII/mibII_common.h"
+
+static int _load_v4(netsnmp_container *container, int idx_offset);
+#if defined( NETSNMP_ENABLE_IPV6 )
+static int _load_v6(netsnmp_container *container, int idx_offset);
+#endif
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_ipaddress_entry_init(netsnmp_ipaddress_entry *entry)
+{
+    init_kernel_sunos5();
+    return 0;
+}
+
+/*
+ * cleanup arch specific storage
+ */
+void
+netsnmp_arch_ipaddress_entry_cleanup(netsnmp_ipaddress_entry *entry)
+{
+    /*
+     * Nothing to do.
+     */
+}
+
+/*
+ * copy arch specific storage
+ */
+int
+netsnmp_arch_ipaddress_entry_copy(netsnmp_ipaddress_entry *lhs,
+                                  netsnmp_ipaddress_entry *rhs)
+{
+    /*
+     * Nothing to do. 
+     */
+    return 0;
+}
+
+/*
+ * create a new entry
+ */
+int
+netsnmp_arch_ipaddress_create(netsnmp_ipaddress_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    DEBUGMSGT(("access:ipaddress:create", "not applicable\n"));
+        return 0;
+}
+
+/*
+ * delete an entry
+ */
+int
+netsnmp_arch_ipaddress_delete(netsnmp_ipaddress_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    DEBUGMSGT(("access:ipaddress:create", "not applicable\n"));
+    return 0;
+}
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_ipaddress_container_load(netsnmp_container *container,
+                                      u_int load_flags)
+{
+    int rc = 0, idx_offset = 0;
+
+    if (!(load_flags & NETSNMP_ACCESS_IPADDRESS_LOAD_IPV6_ONLY)) {
+        rc = _load_v4(container, idx_offset);
+        if(rc < 0) {
+            u_int flags = NETSNMP_ACCESS_IPADDRESS_FREE_KEEP_CONTAINER;
+            netsnmp_access_ipaddress_container_free(container, flags);
+        }
+    }
+
+#if defined( NETSNMP_ENABLE_IPV6 )
+
+    if (!(load_flags & NETSNMP_ACCESS_IPADDRESS_LOAD_IPV4_ONLY)) {
+        if (rc < 0)
+            rc = 0;
+
+        idx_offset = rc;
+
+        rc = _load_v6(container, idx_offset);
+        if(rc < 0) {
+            u_int flags = NETSNMP_ACCESS_IPADDRESS_FREE_KEEP_CONTAINER;
+            netsnmp_access_ipaddress_container_free(container, flags);
+        }
+    }
+#endif
+
+    /*
+     * return no errors (0) if we found any interfaces
+     */
+    if(rc > 0)
+        rc = 0;
+    return rc;
+}
+
+/*
+ * @retval >=idx_offset ok
+ * @retval -1 memory allocation error
+ * @retval -2 interface lookup error
+ * @retval -3 container error
+ */
+static int
+_load_v4(netsnmp_container *container, int idx_offset)
+{
+    mib2_ipAddrEntry_t      ipae;
+    netsnmp_ipaddress_entry *entry;
+    req_e                   req = GET_FIRST;
+    int                     rc = 0;
+
+    DEBUGMSGTL(("access:ipaddress:container", "loading v4\n"));
+    while ((rc = getMibstat(MIB_IP_ADDR, &ipae, sizeof(ipae), req,
+                            &Get_everything, NULL)) == 0) {
+        req = GET_NEXT;
+        entry = netsnmp_access_ipaddress_entry_create();
+        if (entry == NULL)
+            return (-1);    
+        if (ipae.ipAdEntAddr == INADDR_ANY)
+            continue;
+
+        ipae.ipAdEntIfIndex.o_bytes[ipae.ipAdEntIfIndex.o_length] = '\0';
+        DEBUGMSGTL(("access:ipaddress:container", "found if %s\n",
+                    ipae.ipAdEntIfIndex.o_bytes));
+        /* Obtain interface index */
+        entry->if_index = 
+            netsnmp_access_interface_index_find(ipae.ipAdEntIfIndex.o_bytes);
+        if (entry->if_index == 0) {
+            DEBUGMSGTL(("access:ipaddress:container", "cannot find if %s\n",
+                        ipae.ipAdEntIfIndex));
+            netsnmp_access_ipaddress_entry_free(entry);
+            return (-2);    
+        }
+
+        if (strchr((const char *)&ipae.ipAdEntIfIndex.o_bytes, ':') != 0)
+            entry->flags |= NETSNMP_ACCESS_IPADDRESS_ISALIAS;
+
+        /* Get the address */
+        entry->ia_address_len = sizeof(ipae.ipAdEntAddr);
+        netsnmp_assert(entry->ia_address_len == 4 &&
+            entry->ia_address_len <= sizeof(entry->ia_address));
+        memcpy(&entry->ia_address, &ipae.ipAdEntAddr, entry->ia_address_len);
+
+        /* prefix */
+        entry->ia_prefix_len = ipae.ipAdEntInfo.ae_subnet_len;
+
+        /* set the Origin */
+        if (ipae.ipAdEntInfo.ae_flags & IFF_DHCPRUNNING)
+            entry->ia_origin = IPADDRESSORIGINTC_DHCP;
+        else
+            entry->ia_origin = IPADDRESSORIGINTC_MANUAL;
+
+        /* set ipv4 constants */
+        entry->ia_type = IPADDRESSTYPE_UNICAST;
+        entry->ia_status = IPADDRESSSTATUSTC_PREFERRED;
+
+        entry->ns_ia_index = ++idx_offset;
+
+        DEBUGMSGTL(("access:ipaddress:container", "insert if %" 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/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..fdf712b
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c
@@ -0,0 +1,152 @@
+/*
+ *  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 (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..b814f60
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c
@@ -0,0 +1,131 @@
+/*
+ *  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, idx_offset = 0;
+#if defined (NETSNMP_ENABLE_IPV6)
+
+    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_linux.c b/agent/mibgroup/ip-mib/data_access/scalars_linux.c
index d9c3914..02c416a 100644
--- a/agent/mibgroup/ip-mib/data_access/scalars_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/scalars_linux.c
@@ -8,7 +8,76 @@
 
 #include <net-snmp/data_access/ip_scalars.h>
 
-static const char ipfw_name[] = "/proc/sys/net/ipv6/conf/all/forwarding";
+static const char ipfw_name[] = "/proc/sys/net/ipv4/conf/all/forwarding";
+static const char ipfw6_name[] = "/proc/sys/net/ipv6/conf/all/forwarding";
+
+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, "%ld", 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_ipv6IpForwarding_get(u_long *value)
@@ -20,10 +89,10 @@
         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;
     }
 
@@ -31,13 +100,13 @@
     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 +129,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,7 +140,7 @@
     fclose(filep);
     if (1 != rc) {
         DEBUGMSGTL(("access:ipv6IpForwarding", "could not write %s\n",
-                    ipfw_name));
+                    ipfw6_name));
         return SNMP_ERR_GENERR;
     }
 
diff --git a/agent/mibgroup/ip-mib/data_access/systemstats.h b/agent/mibgroup/ip-mib/data_access/systemstats.h
index 6bba6d9..28810e3 100644
--- a/agent/mibgroup/ip-mib/data_access/systemstats.h
+++ b/agent/mibgroup/ip-mib/data_access/systemstats.h
@@ -20,11 +20,8 @@
 config_require(ip-mib/data_access/systemstats_common)
 #if defined( linux )
 config_require(ip-mib/data_access/systemstats_linux)
+#elif defined( solaris2 )
+config_require(ip-mib/data_access/systemstats_solaris2)
 #else
-/*
- * 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..f7c0212 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$
  */
@@ -163,7 +163,7 @@
 /**
  */
 netsnmp_systemstats_entry *
-netsnmp_access_systemstats_entry_create(int version)
+netsnmp_access_systemstats_entry_create(int version, int if_index)
 {
     netsnmp_systemstats_entry *entry =
         SNMP_MALLOC_TYPEDEF(netsnmp_systemstats_entry);
@@ -173,10 +173,10 @@
     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;
 
     return entry;
 }
@@ -217,6 +217,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 +289,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 +298,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 +316,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,16 +325,38 @@
         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.HCInNoRoutes,
+                                       &new_vals->stats.HCInNoRoutes,
+                                       &prev_vals->old_stats->HCInNoRoutes,
+                                       &need_wrap_check);
+        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutNoRoutes,
+                                       &new_vals->stats.HCOutNoRoutes,
+                                       &prev_vals->old_stats->HCOutNoRoutes,
+                                       &need_wrap_check);
+        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutDiscards,
+                                       &new_vals->stats.HCOutDiscards,
+                                       &prev_vals->old_stats->HCOutDiscards,
+                                       &need_wrap_check);
+        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutFragReqds,
+                                       &new_vals->stats.HCOutFragReqds,
+                                       &prev_vals->old_stats->HCOutFragReqds,
+                                       &need_wrap_check);
+        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutFragOKs,
+                                       &new_vals->stats.HCOutFragOKs,
+                                       &prev_vals->old_stats->HCOutFragOKs,
+                                       &need_wrap_check);
+        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutFragFails,
+                                       &new_vals->stats.HCOutFragFails,
+                                       &prev_vals->old_stats->HCOutFragFails,
+                                       &need_wrap_check);
+        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutFragCreates,
+                                       &new_vals->stats.HCOutFragCreates,
+                                       &prev_vals->old_stats->HCOutFragCreates,
+                                       &need_wrap_check);
         netsnmp_c64_check32_and_update(&prev_vals->stats.HCInReceives,
                                        &new_vals->stats.HCInReceives,
                                        &prev_vals->old_stats->HCInReceives,
@@ -334,20 +414,22 @@
                                        &prev_vals->old_stats->HCOutBcastPkts,
                                        &need_wrap_check);
     }
-    
+
     /*
      * 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 +450,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..3ba8646 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,11 +103,16 @@
     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"));
@@ -144,7 +160,7 @@
         while (*stats == ' ') /* skip spaces before stats */
             stats++;
 
-        entry = netsnmp_access_systemstats_entry_create(1);
+        entry = netsnmp_access_systemstats_entry_create(1, 0);
         if(NULL == entry) {
             netsnmp_access_systemstats_container_free(container,
                                                       NETSNMP_ACCESS_SYSTEMSTATS_FREE_NOFLAGS);
@@ -185,23 +201,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 +263,121 @@
     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"));
+        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 +407,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 +531,42 @@
         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);
+    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 +582,117 @@
 
     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);
+        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..202ab1a
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c
@@ -0,0 +1,212 @@
+#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); 
+
+    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/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..632854b 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
@@ -155,6 +155,9 @@
         int             inetNetToMediaRowStatus,
             inetNetToMediaRowStatus_undo;
 
+        /* flag, if the row was present in last read from operating system */
+        int valid;
+
         /*
          * storage for future expansion
          */
@@ -200,8 +203,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"
diff --git a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
index 8194534..e18f98a 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
@@ -129,17 +129,34 @@
      * cache->enabled to 0.
      */
     cache->timeout = INETNETTOMEDIATABLE_CACHE_TIMEOUT; /* seconds */
+
+    /* We want to manually delete entries in the cache to keep LastUpdated
+     * timestamp. */
+    cache->flags |= NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD
+                    | NETSNMP_CACHE_AUTO_RELOAD;
 }                               /* inetNetToMediaTable_container_init */
 
 /**
- * check entry for update
- *
+ * Put all entries with valid !=1 to the list to delete.
  */
 static void
-_snarf_arp_entry(netsnmp_arp_entry *arp_entry,
+_collect_invalid_arp_ctx(inetNetToMediaTable_rowreq_ctx *ctx,
+        netsnmp_container *to_delete)
+{
+    if (ctx->valid)
+            ctx->valid = 0;
+    else
+        CONTAINER_INSERT(to_delete, ctx);
+}
+
+/**
+ * check entry for update
+ */
+static void
+_add_or_update_arp_entry(netsnmp_arp_entry *arp_entry,
                  netsnmp_container *container)
 {
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx;
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx, *old;
     int             inetAddressType;
 
     DEBUGTRACE;
@@ -155,7 +172,7 @@
         inetAddressType = INETADDRESSTYPE_IPV4;
         break;
 
-    case 6:
+    case 16:
         inetAddressType = INETADDRESSTYPE_IPV6;
         break;
 
@@ -166,8 +183,8 @@
     }
 
     /*
-     * allocate an row context and set the index(es), then add it to
-     * the container
+     * 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) &&
@@ -175,8 +192,23 @@
          (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);
+
+        /* try to find old entry */
+        old = CONTAINER_FIND(container, rowreq_ctx);
+        if (old != NULL) {
+            /* the entry is already there, update it */
+            netsnmp_access_arp_entry_update(old->data, arp_entry);
+            old->valid = 1; /* do not delete it in following sweep */
+            /* delete the auxiliary context we used to find the entry
+             * (this deletes also arp_entry) */
+            inetNetToMediaTable_release_rowreq_ctx(rowreq_ctx);
+        } else {
+            /* create new entry and add it to the cache*/
+            rowreq_ctx->inetNetToMediaRowStatus = ROWSTATUS_ACTIVE;
+            rowreq_ctx->data->arp_last_updated = netsnmp_get_agent_uptime();
+            rowreq_ctx->valid = 1; /* do not delete it in following sweep */
+            CONTAINER_INSERT(container, rowreq_ctx);
+        }
     } else {
         if (rowreq_ctx) {
             snmp_log(LOG_ERR, "error setting index while loading "
@@ -253,6 +285,7 @@
 inetNetToMediaTable_container_load(netsnmp_container *container)
 {
     netsnmp_container *arp_container;
+    netsnmp_container *to_delete = netsnmp_container_find("lifo");
 
     DEBUGMSGTL(("verbose:inetNetToMediaTable:inetNetToMediaTable_cache_load", "called\n"));
 
@@ -272,17 +305,33 @@
      * we just got a fresh copy of data. snarf data
      */
     CONTAINER_FOR_EACH(arp_container,
-                       (netsnmp_container_obj_func *) _snarf_arp_entry,
+                       (netsnmp_container_obj_func *) _add_or_update_arp_entry,
                        container);
 
     /*
+     * Delete all cached entries, which were not provided by
+     * netsnmp_access_arp_container_load
+     */
+    CONTAINER_FOR_EACH(container,
+                       (netsnmp_container_obj_func *) _collect_invalid_arp_ctx,
+                       to_delete);
+    while (CONTAINER_SIZE(to_delete)) {
+        inetNetToMediaTable_rowreq_ctx *ctx = CONTAINER_FIRST(to_delete);
+        CONTAINER_REMOVE(container, ctx);
+        inetNetToMediaTable_release_rowreq_ctx(ctx);
+        CONTAINER_REMOVE(to_delete, NULL);
+    }
+    CONTAINER_FREE(to_delete);
+
+    /*
      * free the container. we've either claimed each entry, or released it,
      * so the access function doesn't need to clear the container.
      */
     netsnmp_access_arp_container_free(arp_container,
                                       NETSNMP_ACCESS_ARP_FREE_DONT_CLEAR);
 
-    DEBUGMSGT(("verbose:inetNetToMediaTable:inetNetToMediaTable_cache_load", "%d records\n", CONTAINER_SIZE(container)));
+    DEBUGMSGT(("verbose:inetNetToMediaTable:inetNetToMediaTable_cache_load",
+               "%" NETSNMP_PRIz "u records\n", CONTAINER_SIZE(container)));
 
     return MFD_SUCCESS;
 }                               /* inetNetToMediaTable_container_load */
diff --git a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
index 42ebcc0..18cc33a 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
@@ -735,6 +735,7 @@
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_inetNetToMediaTable_post_request */
 
+
 /**
  * @internal
  * wrapper
diff --git a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c
index 16e2200..16db509 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;
@@ -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 */
 
 /*---------------------------------------------------------------------
diff --git a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
index dfe973e..201e557 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"
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..9159e12 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
@@ -251,6 +251,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 +295,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/ipAddressTable/ipAddressTable.c b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
index 848c63d..c1fad74 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
@@ -28,8 +28,8 @@
 
 #include "ipAddressTable_interface.h"
 
-oid             ipAddressTable_oid[] = { IPADDRESSTABLE_OID };
-int             ipAddressTable_oid_size = OID_LENGTH(ipAddressTable_oid);
+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;
@@ -944,7 +944,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 */
@@ -1486,7 +1489,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;
     }
@@ -2032,7 +2035,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..740f4fa 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
@@ -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"
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
index a0d8c4a..7a4a23d 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
@@ -395,7 +395,7 @@
     }
 
     DEBUGMSGT(("verbose:ipAddressTable:ipAddressTable_cache_load",
-               "%d records\n", CONTAINER_SIZE(container)));
+               "%lu records\n", (unsigned long)CONTAINER_SIZE(container)));
 
     return MFD_SUCCESS;
 }
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
index 0c85073..e24e46f 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
@@ -686,6 +686,7 @@
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ipAddressTable_post_request */
 
+
 /**
  * @internal
  * wrapper
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..b354c3d
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
@@ -0,0 +1,420 @@
+/*
+ * 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 "ipDefaultRouterTable.h"
+
+
+#include "ipDefaultRouterTable_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 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..7da7ba0
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c
@@ -0,0 +1,1021 @@
+/*
+ * 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/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>
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** 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 retrival. 
+     */
+    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;
+
+#ifndef 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
+
+    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..50a6af8
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c
@@ -0,0 +1,408 @@
+/*
+ * 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)
+        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 = 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..d415a83
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
@@ -0,0 +1,1395 @@
+/*
+ * 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/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>
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** 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);
+
+
+netsnmp_container *
+ipIfStatsTable_container_get(void)
+{
+    return ipIfStatsTable_if_ctx.container;
+}
+
+ipIfStatsTable_registration *
+ipIfStatsTable_registration_get(void)
+{
+    return ipIfStatsTable_if_ctx.user_ctx;
+}
+
+ipIfStatsTable_registration *
+ipIfStatsTable_registration_set(ipIfStatsTable_registration * newreg)
+{
+    ipIfStatsTable_registration *old = ipIfStatsTable_if_ctx.user_ctx;
+    ipIfStatsTable_if_ctx.user_ctx = newreg;
+    return old;
+}
+
+int
+ipIfStatsTable_container_size(void)
+{
+    return CONTAINER_SIZE(ipIfStatsTable_if_ctx.container);
+}
+
+/*
+ * 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 retrival. 
+     */
+    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->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,
+                                            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_scalar(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 =
+        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 =
+        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 =
+        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 */
+
+
+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 = CONTAINER_FIND(ipIfStatsTable_if_ctx.container, &oid_idx);
+
+    return rowreq_ctx;
+}
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..a9027ae 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,9 @@
      * 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 == cache) {
         snmp_log(LOG_ERR,
@@ -192,6 +143,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 */
 
 /**
@@ -267,7 +219,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 +338,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/ip_scalars.c b/agent/mibgroup/ip-mib/ip_scalars.c
index 8af9613..d9ab529 100644
--- a/agent/mibgroup/ip-mib/ip_scalars.c
+++ b/agent/mibgroup/ip-mib/ip_scalars.c
@@ -12,19 +12,42 @@
 #include "ip_scalars.h"
 
 int
+handle_ipForwarding(netsnmp_mib_handler *handler,
+                    netsnmp_handler_registration *reginfo,
+                    netsnmp_agent_request_info *reqinfo,
+                    netsnmp_request_info *requests);
+
+int
+handle_ipDefaultTTL(netsnmp_mib_handler *handler,
+                          netsnmp_handler_registration *reginfo,
+                          netsnmp_agent_request_info *reqinfo,
+                          netsnmp_request_info *requests);
+
+int
 handle_ipv6IpForwarding(netsnmp_mib_handler *handler,
                         netsnmp_handler_registration *reginfo,
                         netsnmp_agent_request_info *reqinfo,
                         netsnmp_request_info *requests);
 
+int ipAddressSpinLockValue;
+
+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 	    ipForwarding_oid[] = { 1, 3, 6, 1, 2, 1, 4, 1 };
+    static oid 	    ipDefaultTTL_oid[] = { 1, 3, 6, 1, 2, 1, 4, 2, 0 };
     static oid      ipReasmTimeout_oid[] = { 1, 3, 6, 1, 2, 1, 4, 13, 0 };
     static oid      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      ipAddressSpinLock_oid[] = { 1, 3, 6, 1, 2, 1, 4, 33 };
 
     DEBUGMSGTL(("ip_scalar", "Initializing\n"));
 
@@ -35,20 +58,139 @@
          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
                             ("ipv6IpForwarding", handle_ipv6IpForwarding,
                              ipv6IpForwarding_oid,
                              OID_LENGTH(ipv6IpForwarding_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();
+
     netsnmp_register_num_file_instance
         ("ipv6IpDefaultHopLimit",
          ipv6IpDefaultHopLimit_oid, OID_LENGTH(ipv6IpDefaultHopLimit_oid),
          "/proc/sys/net/ipv6/conf/default/hop_limit", ASN_INTEGER,
          HANDLER_CAN_RWRITE, NULL, NULL);
+
+     netsnmp_register_num_file_instance
+        ("ipDefaultTTL",
+         ipDefaultTTL_oid, OID_LENGTH(ipDefaultTTL_oid),
+         "/proc/sys/net/ipv4/ip_default_ttl", ASN_INTEGER,
+         HANDLER_CAN_RWRITE, NULL, NULL);
                                        
 }
 
 int
+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;
+
+        /*
+         * 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;
+
+        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;
+}
+
+
+int
 handle_ipv6IpForwarding(netsnmp_mib_handler *handler,
                         netsnmp_handler_registration *reginfo,
                         netsnmp_agent_request_info *reqinfo,
@@ -151,3 +293,70 @@
 
     return SNMP_ERR_NOERROR;
 }
+
+int
+handle_ipAddressSpinLock(netsnmp_mib_handler *handler,
+                          netsnmp_handler_registration *reginfo,
+                          netsnmp_agent_request_info   *reqinfo,
+                          netsnmp_request_info         *requests)
+{
+    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:
+            snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
+                                     (u_char *)&ipAddressSpinLockValue, 
+                                     sizeof(ipAddressSpinLockValue));
+            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:
+        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;
+
+        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;
+}
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..41e791f 100644
--- a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h
+++ b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h
@@ -107,8 +107,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/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..a260732 100644
--- a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h
+++ b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h
@@ -191,8 +191,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/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..40769ad
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c
@@ -0,0 +1,1124 @@
+/*
+ * 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-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>
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** 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);
+
+
+netsnmp_container *
+ipv6ScopeZoneIndexTable_container_get(void)
+{
+    return ipv6ScopeZoneIndexTable_if_ctx.container;
+}
+
+ipv6ScopeZoneIndexTable_registration *
+ipv6ScopeZoneIndexTable_registration_get(void)
+{
+    return ipv6ScopeZoneIndexTable_if_ctx.user_ctx;
+}
+
+ipv6ScopeZoneIndexTable_registration *
+ipv6ScopeZoneIndexTable_registration_set
+    (ipv6ScopeZoneIndexTable_registration * newreg)
+{
+    ipv6ScopeZoneIndexTable_registration *old =
+        ipv6ScopeZoneIndexTable_if_ctx.user_ctx;
+    ipv6ScopeZoneIndexTable_if_ctx.user_ctx = newreg;
+    return old;
+}
+
+int
+ipv6ScopeZoneIndexTable_container_size(void)
+{
+    return CONTAINER_SIZE(ipv6ScopeZoneIndexTable_if_ctx.container);
+}
+
+/*
+ * 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 retrival. 
+     */
+    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->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,
+                                            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 =
+        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 =
+        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 =
+        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 (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 */
+
+
+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 =
+        CONTAINER_FIND(ipv6ScopeZoneIndexTable_if_ctx.container, &oid_idx);
+
+    return rowreq_ctx;
+}
+
+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..3b915c6 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,27 @@
     {MIB_TRANSMISSION, 0, (void *) -1, 0, 0, 0, 0},
     {MIB_SNMP, 0, (void *) -1, 0, 0, 0, 0},
 #ifdef SOLARIS_HAVE_IPV6_MIB_SUPPORT
+#ifdef SOLARIS_HAVE_RFC4293_SUPPORT
+    {MIB_IP_TRAFFIC_STATS, 20 * sizeof(mib2_ipIfStatsEntry_t), (void *)-1, 0,
+     30, 0, 0},
+    {MIB_IP6, 20 * sizeof(mib2_ipIfStatsEntry_t), (void *)-1, 0, 30, 0, 0},
+#else
+    {MIB_IP6, 20 * sizeof(mib2_ipv6IfStatsEntry_t), (void *)-1, 0, 30, 0, 0},
+#endif
     {MIB_IP6_ADDR, 20 * sizeof(mib2_ipv6AddrEntry_t), (void *)-1, 0, 30, 0, 0},
     {MIB_TCP6_CONN, 1000 * sizeof(mib2_tcp6ConnEntry_t), (void *) -1, 0, 30,
      0, 0},
     {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 +147,20 @@
     {MIB2_TRANSMISSION, 0,},
     {MIB2_SNMP, 0,},
 #ifdef SOLARIS_HAVE_IPV6_MIB_SUPPORT
+#ifdef SOLARIS_HAVE_RFC4293_SUPPORT
+    {MIB2_IP, MIB2_IP_TRAFFIC_STATS},
+#endif
+    {MIB2_IP6, 0},
     {MIB2_IP6, MIB2_IP6_ADDR},
     {MIB2_TCP6, MIB2_TCP6_CONN},
     {MIB2_UDP6, MIB2_UDP6_ENTRY},
 #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 +175,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);
 
@@ -348,7 +374,8 @@
     kstat_ctl_t    *ksc;
     kstat_t        *ks, *kstat_data;
     kstat_named_t  *d;
-    size_t          i, instance;
+    uint_t          i;
+    int             instance;
     char            module_name[64];
     int             ret;
     u_longlong_t    val;    /* The largest value */
@@ -698,8 +725,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);
 	}
 
@@ -841,7 +868,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 +880,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 +994,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 +1043,8 @@
 	    }
 	} while (rc == MOREDATA && result != FOUND);
 
+	DEBUGMSGTL(("kernel_sunos5", "...... getmib buffer size is %d\n", *size));
+
 	if (result == FOUND) {      /* Search is successful */
 	    if (rc != MOREDATA) {
 		ret = 0;    /* Found and no more data */
diff --git a/agent/mibgroup/kernel_sunos5.h b/agent/mibgroup/kernel_sunos5.h
index cdd2375..0bffcb9 100644
--- a/agent/mibgroup/kernel_sunos5.h
+++ b/agent/mibgroup/kernel_sunos5.h
@@ -71,10 +71,20 @@
     MIB_TRANSMISSION = 14,
     MIB_SNMP = 15,
 #ifdef SOLARIS_HAVE_IPV6_MIB_SUPPORT
-    MIB_IP6_ADDR = 16,
+#ifdef SOLARIS_HAVE_RFC4293_SUPPORT
+    MIB_IP_TRAFFIC_STATS,
+#endif
+    MIB_IP6,
+    MIB_IP6_ADDR,
     MIB_TCP6_CONN,
     MIB_UDP6_ENDPOINT,
 #endif
+#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..1b21057 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)
@@ -30,3 +30,10 @@
 #if defined( linux )
 config_require(ip-mib ip-forward-mib tcp-mib udp-mib)
 #endif
+
+/*
+ * For Solaris, enable additional tables when it has extended MIB support.
+ */
+#if defined( solaris2 ) && defined( HAVE_MIB2_IPIFSTATSENTRY_T )
+config_require(ip-mib/ipSystemStatsTable ip-mib/ipAddressTable)
+#endif
diff --git a/agent/mibgroup/mibII/at.c b/agent/mibgroup/mibII/at.c
index 45ab516..ebe4a03 100644
--- a/agent/mibgroup/mibII/at.c
+++ b/agent/mibgroup/mibII/at.c
@@ -25,7 +25,7 @@
 #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
@@ -146,9 +146,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 +307,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;
@@ -510,7 +513,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;
@@ -583,7 +586,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 +595,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;
@@ -779,7 +782,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 +811,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;
diff --git a/agent/mibgroup/mibII/icmp.c b/agent/mibgroup/mibII/icmp.c
index c80f0ee..e43380a 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,6 +37,14 @@
 #define ICMP_STATS_CACHE_TIMEOUT	MIB_STATS_CACHE_TIMEOUT
 #endif
 
+/* redefine ICMP6 message types from glibc < 2.4 to newer names */
+#ifdef ICMP6_MEMBERSHIP_QUERY
+#define MLD_LISTENER_QUERY ICMP6_MEMBERSHIP_QUERY
+#define MLD_LISTENER_REPORT ICMP6_MEMBERSHIP_REPORT
+#define MLD_LISTENER_REDUCTION ICMP6_MEMBERSHIP_REDUCTION
+#endif /* ICMP6_MEMBERSHIP_QUERY */
+
+
 #if defined(HAVE_LIBPERFSTAT_H) && (defined(aix4) || defined(aix5) || defined(aix6)) && !defined(FIRST_PROTOCOL)
 #include <libperfstat.h>
 #ifdef FIRST_PROTOCOL
@@ -54,40 +68,509 @@
 	 *********************/
 
 
-
 /*
  * 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 linux
+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;
+	struct icmp_mib v4icmp;
+	struct icmp6_mib v6icmp;
+	for(i=0;i<2;i++) {
+		switch(i) {
+			case 0:
+				linux_read_icmp_stat(&v4icmp);
+				icmp_stats_table[i].icmpStatsInMsgs = v4icmp.icmpInMsgs;
+				icmp_stats_table[i].icmpStatsInErrors = v4icmp.icmpInErrors;
+				icmp_stats_table[i].icmpStatsOutMsgs = v4icmp.icmpOutMsgs;
+				icmp_stats_table[i].icmpStatsOutErrors = v4icmp.icmpOutErrors;
+				break;
+			default:
+				memset(&icmp_stats_table[i],0,
+					sizeof(struct icmp_stats_table_entry));
+				linux_read_icmp6_stat(&v6icmp);
+				icmp_stats_table[i].icmpStatsInMsgs = v6icmp.icmp6InMsgs;
+				icmp_stats_table[i].icmpStatsInErrors = v6icmp.icmp6InErrors;
+				icmp_stats_table[i].icmpStatsOutMsgs = v6icmp.icmp6OutMsgs;
+				icmp_stats_table[i].icmpStatsOutErrors = v6icmp.icmp6OutDestUnreachs +
+					v6icmp.icmp6OutPktTooBigs +  v6icmp.icmp6OutTimeExcds +
+					v6icmp.icmp6OutParmProblems;
+				break;
+		}
+		icmp_stats_table[i].ipVer=i+1;
+	}
+
+	return 0;
+}
+
+int
+icmp_msg_stats_load(netsnmp_cache *cache, void *vmagic)
+{
+    struct icmp_mib v4icmp;
+    struct icmp4_msg_mib v4icmpmsg;
+    struct icmp6_mib v6icmp;
+    struct icmp6_msg_mib v6icmpmsg;
+    int i, j, k, flag, inc;
+
+    memset(&icmp_msg_stats_table, 0, sizeof(icmp_msg_stats_table));
+
+    i = 0;
+    flag = 0;
+    k = 0;
+    inc = 0;
+    linux_read_icmp_msg_stat(&v4icmp, &v4icmpmsg, &flag);
+    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;
+        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;
+        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;
+        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;
+        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;
+        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;
+        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;
+        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;
+        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;
+        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;
+        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;
+        i++;
+
+        /* set the IP version and default flags */
+        for (j = 0; j < ICMP_MSG_STATS_IPV4_COUNT; j++) {
+            icmp_msg_stats_table[j].ipVer = 1;
+            icmp_msg_stats_table[j].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        }
+    }
+
+#ifdef NETSNMP_ENABLE_IPV6
+    flag = 0;
+    k = 0;
+    inc = 0;
+    linux_read_icmp6_msg_stat(&v6icmp, &v6icmpmsg, &flag);
+    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;
+        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;
+        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;
+        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;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_ECHO_REQUEST;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InEchos;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = 0;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN;
+        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;
+        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].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;
+        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;
+        i++;
+#endif
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ND_ROUTER_SOLICIT;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InRouterSolicits;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutRouterSolicits;
+        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].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;
+        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;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ND_REDIRECT;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InRedirects;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutRedirects;
+
+        for (j = 0; j < ICMP_MSG_STATS_IPV6_COUNT; j++) {
+            icmp_msg_stats_table[ICMP_MSG_STATS_IPV4_COUNT + j].ipVer = 2;
+            icmp_msg_stats_table[ICMP_MSG_STATS_IPV4_COUNT + j].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        }
+    }
+#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)(*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 *)(++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)(*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 *)(++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 = 0;
+    *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 linux
+    netsnmp_handler_registration *table_reginfo = NULL;
+    netsnmp_handler_registration *msg_stats_reginfo = NULL;
+    netsnmp_iterator_info *iinfo = NULL;
+    netsnmp_iterator_info *msg_stats_iinfo = NULL;
+    netsnmp_table_registration_info *table_info = NULL;
+    netsnmp_table_registration_info *msg_stats_table_info = NULL;
+#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);
+    if (!scalar_reginfo)
+        return;
+
+    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 linux
+
+    /* 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);
+    if (!table_reginfo)
+        goto bail;
+
+    rc = netsnmp_register_table_iterator(table_reginfo, iinfo);
+    if (rc != SNMPERR_SUCCESS) {
+        table_reginfo = NULL;
+        goto bail;
+    }
+
+    /* 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);
+    if (!msg_stats_reginfo)
+        goto bail;
+
+    rc = netsnmp_register_table_iterator(msg_stats_reginfo, msg_stats_iinfo);
+    if (rc != SNMPERR_SUCCESS) {
+        msg_stats_reginfo = NULL;
+        goto bail;
+    }
+    
+    netsnmp_inject_handler( msg_stats_reginfo,
+            netsnmp_get_cache_handler(ICMP_STATS_CACHE_TIMEOUT,
+                icmp_load, icmp_free,
+                icmp_msg_stats_tbl_oid, OID_LENGTH(icmp_msg_stats_tbl_oid)));
+#ifndef hpux11
+    netsnmp_inject_handler( table_reginfo,
+		    netsnmp_get_cache_handler(ICMP_STATS_CACHE_TIMEOUT,
+			   		icmp_load, icmp_free,
+					icmp_stats_tbl_oid, OID_LENGTH(icmp_stats_tbl_oid)));
+#endif /* ! hpux11 */
+#endif /* linux */
 
 #ifdef USING_MIBII_IP_MODULE
     if (++ip_module_count == 2)
@@ -103,6 +586,19 @@
     init_kernel_sunos5();
 #endif
 #endif
+    return;
+
+#ifndef hpux11
+bail:
+#endif
+#ifdef linux
+    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);
 }
 
 
@@ -551,6 +1047,149 @@
 }
 
 
+#ifdef linux
+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:
+		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;
+		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:
+        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;
+        default:
+            snmp_log(LOG_WARNING, "mibII/icmpStatsTable: Unrecognised mode (%d)\n",
+                    reqinfo->mode);
+            break;
+
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+#endif		/* linux */
+
         /*********************
 	 *
 	 *  Internal implementation functions
@@ -680,6 +1319,8 @@
     } 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)
@@ -714,7 +1355,6 @@
     }
     return ret_value;
 }
-
 #elif defined (WIN32) || defined (cygwin)
 int
 icmp_load(netsnmp_cache *cache, void *vmagic)
diff --git a/agent/mibgroup/mibII/icmp.h b/agent/mibgroup/mibII/icmp.h
index cdaac5d..9307654 100644
--- a/agent/mibgroup/mibII/icmp.h
+++ b/agent/mibgroup/mibII/icmp.h
@@ -14,6 +14,8 @@
 
 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 +46,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..32883f3 100644
--- a/agent/mibgroup/mibII/interfaces.c
+++ b/agent/mibgroup/mibII/interfaces.c
@@ -16,7 +16,7 @@
 
 #include <net-snmp/net-snmp-config.h>
 
-#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
@@ -40,7 +40,7 @@
 #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
@@ -197,12 +197,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 <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?*/
 #define MINLOADFREQ 0                     /* min reload frequency in seconds */
@@ -213,33 +213,57 @@
 extern struct timeval 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}},
 #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}}
+    {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 +409,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 +596,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 +609,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 +624,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 +679,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,7 +776,7 @@
     static char     Name[16];
     char           *cp;
     conf_if_list   *if_ptr;
-#if STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_SEC
+#if HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC
     struct timeval  now;
 #endif
 
@@ -765,10 +789,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 +800,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,7 +838,7 @@
 #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)
 	*var_len = 0;
@@ -827,14 +851,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,8 +887,8 @@
         long_return = 0;        /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFINOCTETS:
-#ifdef STRUCT_IFNET_HAS_IF_IBYTES
+    case NETSNMP_IFINOCTETS:
+#ifdef HAVE_STRUCT_IFNET_IF_IBYTES
 #if defined(aix4) || defined(aix5) || defined(aix6)
         long_return = (u_long) ifnet.if_ibytes & 0xffffffff;
 #else
@@ -877,14 +901,14 @@
         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)
             long_return = (u_long) ifnet.if_ipackets & 0xffffffff;
 #else
             long_return = (u_long) ifnet.if_ipackets;
 #endif
-#if STRUCT_IFNET_HAS_IF_IMCASTS
+#if HAVE_STRUCT_IFNET_IF_IMCASTS
 #if defined(aix4) || defined(aix5) || defined(aix6)
             long_return -= (u_long) ifnet.if_imcasts & 0xffffffff;
 #else
@@ -893,8 +917,8 @@
 #endif
         }
         return (u_char *) & long_return;
-    case IFINNUCASTPKTS:
-#if STRUCT_IFNET_HAS_IF_IMCASTS
+    case NETSNMP_IFINNUCASTPKTS:
+#if HAVE_STRUCT_IFNET_IF_IMCASTS
 #if defined(aix4) || defined(aix5) || defined(aix6)
         long_return = (u_long) ifnet.if_imcasts & 0xffffffff;
 #else
@@ -907,8 +931,8 @@
         long_return = (u_long) 0;       /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFINDISCARDS:
-#if STRUCT_IFNET_HAS_IF_IQDROPS
+    case NETSNMP_IFINDISCARDS:
+#if HAVE_STRUCT_IFNET_IF_IQDROPS
 #if defined(aix4) || defined(aix5) || defined(aix6)
         long_return = (u_long) ifnet.if_iqdrops & 0xffffffff;
 #else
@@ -921,15 +945,15 @@
         long_return = (u_long) 0;       /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFINERRORS:
+    case NETSNMP_IFINERRORS:
 #if defined(aix4) || defined(aix5) || defined(aix6)
         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
+    case NETSNMP_IFINUNKNOWNPROTOS:
+#if HAVE_STRUCT_IFNET_IF_NOPROTO
 #if defined(aix4) || defined(aix5) || defined(aix6)
         long_return = (u_long) ifnet.if_noproto & 0xffffffff;
 #else
@@ -942,8 +966,8 @@
         long_return = (u_long) 0;       /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFOUTOCTETS:
-#ifdef STRUCT_IFNET_HAS_IF_OBYTES
+    case NETSNMP_IFOUTOCTETS:
+#ifdef HAVE_STRUCT_IFNET_IF_OBYTES
 #if defined(aix4) || defined(aix5) || defined(aix6)
         long_return = (u_long) ifnet.if_obytes & 0xffffffff;
 #else
@@ -956,14 +980,14 @@
         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)
             long_return = (u_long) ifnet.if_opackets & 0xffffffff;
 #else
             long_return = (u_long) ifnet.if_opackets;
 #endif
-#if STRUCT_IFNET_HAS_IF_OMCASTS
+#if HAVE_STRUCT_IFNET_IF_OMCASTS
 #if defined(aix4) || defined(aix5) || defined(aix6)
             long_return -= (u_long) ifnet.if_omcasts & 0xffffffff;
 #else
@@ -972,8 +996,8 @@
 #endif
         }
         return (u_char *) & long_return;
-    case IFOUTNUCASTPKTS:
-#if STRUCT_IFNET_HAS_IF_OMCASTS
+    case NETSNMP_IFOUTNUCASTPKTS:
+#if HAVE_STRUCT_IFNET_IF_OMCASTS
 #if defined(aix4) || defined(aix5) || defined(aix6)
         long_return = (u_long) ifnet.if_omcasts & 0xffffffff;
 #else
@@ -986,28 +1010,28 @@
         long_return = (u_long) 0;       /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFOUTDISCARDS:
+    case NETSNMP_IFOUTDISCARDS:
 #if defined(aix4) || defined(aix5) || defined(aix6)
         long_return = ifnet.if_snd.ifq_drops & 0xffffffff;
 #else
         long_return = ifnet.if_snd.ifq_drops;
 #endif
         return (u_char *) & long_return;
-    case IFOUTERRORS:
+    case NETSNMP_IFOUTERRORS:
 #if defined(aix4) || defined(aix5) || defined(aix6)
         long_return = ifnet.if_oerrors & 0xffffffff;
 #else
         long_return = ifnet.if_oerrors;
 #endif
         return (u_char *) & long_return;
-    case IFOUTQLEN:
+    case NETSNMP_IFOUTQLEN:
 #if defined(aix4) || defined(aix5) || defined(aix6)
         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 +1064,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 +1107,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 +1135,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 +1143,7 @@
 #endif
             return (u_char *) & long_return;
         }
-    case IFSPEED:
+    case NETSNMP_IFSPEED:
         if (if_ptr)
             long_return = if_ptr->speed;
         else {
@@ -1133,7 +1157,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 +1171,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 +1195,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 +1205,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 +1215,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 +1225,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 +1235,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 +1252,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 +1262,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 +1272,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 +1282,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 +1355,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 +1368,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:
@@ -1947,10 +1971,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 +2024,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 +2036,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
@@ -2068,7 +2095,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 +2556,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 +2569,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 +2586,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 +2606,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:
@@ -2712,7 +2739,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 +2777,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 +2789,68 @@
         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;
         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;
         *write_method = writeIfEntry;
         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:
@@ -2842,7 +2869,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;
     }
 
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..1401bd1 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
@@ -64,43 +64,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 +148,7 @@
 init_ip(void)
 {
     netsnmp_handler_registration *reginfo;
+    int rc;
 
     /*
      * register ourselves with the agent as a group of scalars...
@@ -129,7 +156,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,7 +229,7 @@
 #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
@@ -378,7 +407,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 +415,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 +423,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 +431,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 +439,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 +462,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 +473,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 +482,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 +490,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 +498,7 @@
         continue;
 #endif
     case IPROUTEDISCARDS:
-#if STRUCT_IPSTAT_HAS_IPS_NOROUTE
+#if HAVE_STRUCT_IPSTAT_IPS_NOROUTE
         ret_value = ipstat.ips_noroute;
         break;
 #else
@@ -806,9 +835,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..4199392 100644
--- a/agent/mibgroup/mibII/ipAddr.c
+++ b/agent/mibgroup/mibII/ipAddr.c
@@ -16,7 +16,7 @@
 
 #include <net-snmp/net-snmp-config.h>
 
-#if defined(IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
+#if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
 #define _KERNEL 1
 #define _I_DEFINED_KERNEL
 #endif
@@ -118,7 +118,6 @@
 
 #include "ip.h"
 #include "interfaces.h"
-#include "sysORTable.h"
 
 #ifdef cygwin
 #include <windows.h>
@@ -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:
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..81e6259 100644
--- a/agent/mibgroup/mibII/ipCidrRouteTable.c
+++ b/agent/mibgroup/mibII/ipCidrRouteTable.c
@@ -260,12 +260,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..5941cb0 100644
--- a/agent/mibgroup/mibII/ipv6.c
+++ b/agent/mibgroup/mibII/ipv6.c
@@ -4,10 +4,13 @@
  */
 
 #include <net-snmp/net-snmp-config.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 NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES
+#endif
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/socket.h>
@@ -137,7 +140,6 @@
 #include <net-snmp/agent/auto_nlist.h>
 
 #include "kernel.h"
-#include "util_funcs.h"
 #include "ipv6.h"
 #include "interfaces.h"
 
@@ -161,101 +163,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 +296,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 +371,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 +380,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 +434,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 +474,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 +965,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 +1994,7 @@
     return value;
 }
 
-void
+static void
 linux_read_ip6_stat(struct ip6_mib *ip6stat)
 {
     if (!ip6stat)
diff --git a/agent/mibgroup/mibII/kernel_linux.c b/agent/mibgroup/mibII/kernel_linux.c
index bb6f867..26b899c 100644
--- a/agent/mibgroup/mibII/kernel_linux.c
+++ b/agent/mibgroup/mibII/kernel_linux.c
@@ -7,8 +7,6 @@
 #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 +14,109 @@
 #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
 
+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;
+}
 
 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 +168,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 +209,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 +224,8 @@
      */
     if (!cached_tcp_mib.tcpRtoAlgorithm)
         cached_tcp_mib.tcpRtoAlgorithm = 1;
-    return 0;
+
+    return ret;
 }
 
 int
@@ -189,6 +238,136 @@
     return 0;
 }
 
+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;
+}
+
+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)
 {
@@ -201,6 +380,167 @@
 }
 
 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, "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)
 {
     memset((char *) tcpstat, (0), sizeof(*tcpstat));
@@ -216,6 +556,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..c6dfca9 100644
--- a/agent/mibgroup/mibII/kernel_linux.h
+++ b/agent/mibgroup/mibII/kernel_linux.h
@@ -29,6 +29,31 @@
     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;
@@ -58,6 +83,51 @@
     unsigned long   icmpOutAddrMaskReps;
 };
 
+struct icmp6_mib {
+    unsigned long icmp6InMsgs;
+    unsigned long icmp6InErrors;
+    unsigned long icmp6InDestUnreachs;
+    unsigned long icmp6InPktTooBigs;
+    unsigned long icmp6InTimeExcds;
+    unsigned long icmp6InParmProblems;
+    unsigned long icmp6InEchos;
+    unsigned long icmp6InEchoReplies;
+    unsigned long icmp6InGroupMembQueries;
+    unsigned long icmp6InGroupMembResponses;
+    unsigned long icmp6InGroupMembReductions;
+    unsigned long icmp6InRouterSolicits;
+    unsigned long icmp6InRouterAdvertisements;
+    unsigned long icmp6InNeighborSolicits;
+    unsigned long icmp6InNeighborAdvertisements;
+    unsigned long icmp6InRedirects;
+    unsigned long icmp6OutMsgs;
+    unsigned long icmp6OutDestUnreachs;
+    unsigned long icmp6OutPktTooBigs;
+    unsigned long icmp6OutTimeExcds;
+    unsigned long icmp6OutParmProblems;
+    unsigned long icmp6OutEchoReplies;
+    unsigned long icmp6OutRouterSolicits;
+    unsigned long icmp6OutNeighborSolicits;
+    unsigned long icmp6OutNeighborAdvertisements;
+    unsigned long icmp6OutRedirects;
+    unsigned long icmp6OutGroupMembResponses;
+    unsigned long icmp6OutGroupMembReductions;
+};
+
+struct icmp_msg_mib {
+    unsigned long InType;
+    unsigned long OutType;
+};
+
+/* Lets use wrapper structures for future expansion */
+struct icmp4_msg_mib {
+    struct icmp_msg_mib vals[256];
+};
+
+struct icmp6_msg_mib {
+    struct icmp_msg_mib vals[256];
+};
+
 struct udp_mib {
     unsigned long   udpInDatagrams;
     unsigned long   udpNoPorts;
@@ -65,6 +135,13 @@
     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;
@@ -86,8 +163,17 @@
 
 
 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/mibII_common.h b/agent/mibgroup/mibII/mibII_common.h
index 40a8c93..c7499d3 100644
--- a/agent/mibgroup/mibII/mibII_common.h
+++ b/agent/mibgroup/mibII/mibII_common.h
@@ -28,7 +28,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
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..bf7e806 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 */
 
@@ -94,28 +92,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
@@ -161,6 +159,17 @@
 
 #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..3e2799e 100644
--- a/agent/mibgroup/mibII/route_write.c
+++ b/agent/mibgroup/mibII/route_write.c
@@ -76,10 +76,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 +269,7 @@
 }
 
 
-#ifndef STRUCT_RTENTRY_HAS_RT_DST
+#ifndef HAVE_STRUCT_RTENTRY_RT_DST
 #undef rt_dst
 #endif
 
@@ -313,7 +313,7 @@
             return (&rtcache[i]);
         }
     }
-    return 0;
+    return NULL;
 }
 
 struct rtent   *
@@ -329,7 +329,7 @@
             return (&rtcache[i]);
         }
     }
-    return 0;
+    return NULL;
 
 }
 
@@ -351,7 +351,7 @@
 struct rtent   *
 cacheKernelRTE(u_long dst)
 {
-    return 0;                   /* for now */
+    return NULL;                /* for now */
     /*
      * ...... 
      */
diff --git a/agent/mibgroup/mibII/snmp_mib.c b/agent/mibgroup/mibII/snmp_mib.c
index b143bf7..0a23c9e 100644
--- a/agent/mibgroup/mibII/snmp_mib.c
+++ b/agent/mibgroup/mibII/snmp_mib.c
@@ -1,97 +1,15 @@
-/*
- *  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-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"
 
+static const oid snmp_oid[] = { 1, 3, 6, 1, 2, 1, 11 };
 
-        /*********************
-	 *
-	 *  Kernel & interface information,
-	 *   and internal forward declarations
-	 *
-	 *********************/
-
-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 +24,101 @@
     return 0;
 }
 
+static int
+handle_truthvalue(netsnmp_mib_handler *handler,
+                  netsnmp_handler_registration *reginfo,
+                  netsnmp_agent_request_info *reqinfo,
+                  netsnmp_request_info *requests)
+{
+    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);
+    }
+    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 +128,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..161e65d
--- /dev/null
+++ b/agent/mibgroup/mibII/snmp_mib_5_5.c
@@ -0,0 +1,115 @@
+#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 <utilities/snmp_get_statistic.h>
+
+#include "snmp_mib_5_5.h"
+#include "updates.h"
+
+#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)
+{
+    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);
+    }
+    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 =
+            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)
+        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..b3e452b
--- /dev/null
+++ b/agent/mibgroup/mibII/snmp_mib_5_5.h
@@ -0,0 +1,5 @@
+config_require(mibII/updates)
+config_require(utilities/snmp_get_statistic)
+config_exclude(mibII/snmp_mib)
+
+void            init_snmp_mib_5_5(void);
diff --git a/agent/mibgroup/mibII/sysORTable.c b/agent/mibgroup/mibII/sysORTable.c
index f8ffa50..941d53d 100644
--- a/agent/mibgroup/mibII/sysORTable.c
+++ b/agent/mibgroup/mibII/sysORTable.c
@@ -1,344 +1,289 @@
-/*
- *  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
-
-
-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 = it->curr(it);
+		 value && value->sysORIndex < cur;
+		 value = 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 = 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;
+    }
+
+    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..532ea22 100644
--- a/agent/mibgroup/mibII/system_mib.c
+++ b/agent/mibgroup/mibII/system_mib.c
@@ -31,11 +31,6 @@
 #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 +38,14 @@
 #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"
 
         /*********************
 	 *
@@ -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,18 +83,12 @@
 	 *
 	 *********************/
 
-void
+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);
+	netsnmp_config_error("sysdescr token too long (must be < %lu):\n\t%s",
+			     (unsigned long)sizeof(version_descr), cptr);
     } else if (strcmp(cptr, "\"\"") == 0) {
         version_descr[0] = '\0';
     } else {
@@ -120,168 +96,89 @@
     }
 }
 
-void
+NETSNMP_STATIC_INLINE void
+system_parse_config_string(const char *token, char *cptr,
+                           const char *name, char* value, size_t size,
+                           int* guard)
+{
+    if (strlen(cptr) >= size) {
+	netsnmp_config_error("%s token too long (must be < %lu):\n\t%s",
+			     token, (unsigned long)size, cptr);
+    }
+
+    if (*token == 'p' && strcasecmp(token + 1, name) == 0) {
+        if (*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);
+        }
+    } 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;
+    }
+
+    if (strcmp(cptr, "\"\"") == 0) {
+        *value = '\0';
+    } else if (strlen(cptr) < size) {
+        strcpy(value, cptr);
+    }
+}
+
+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 +188,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 +213,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 +300,99 @@
 #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;
+        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));
+    }
+    {
+        const oid sysName_oid[] = { 1, 3, 6, 1, 2, 1, 1, 5 };
+        static netsnmp_watcher_info sysName_winfo;
+        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));
+    }
+    {
+        const oid sysLocation_oid[] = { 1, 3, 6, 1, 2, 1, 1, 6 };
+        static netsnmp_watcher_info sysLocation_winfo;
+        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));
+    }
+    {
+        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 +426,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..d95cb94 100644
--- a/agent/mibgroup/mibII/tcp.c
+++ b/agent/mibgroup/mibII/tcp.c
@@ -49,11 +49,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
@@ -389,7 +389,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;
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..9368c89 100644
--- a/agent/mibgroup/mibII/tcpTable.c
+++ b/agent/mibgroup/mibII/tcpTable.c
@@ -29,6 +29,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 +41,6 @@
 
 #include "tcp.h"
 #include "tcpTable.h"
-#include "sysORTable.h"
 
 #ifdef hpux11
 #define	TCPTABLE_ENTRY_TYPE	mib_tcpConnEnt 
@@ -129,11 +133,11 @@
 #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;
@@ -404,7 +408,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 +551,118 @@
 #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
+static int
+tcpTable_load_netlink(void)
+{
+	/*  TODO: perhaps use permanent nl handle? */
+	struct nl_handle *nl = nl_handle_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;
+
+	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;
+	}
+
+	if (nl_connect(nl, NETLINK_INET_DIAG) < 0) {
+		DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror()));
+		snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror());
+		nl_handle_destroy(nl);
+		return -1;
+	}
+
+	nm = nlmsg_alloc_simple(TCPDIAG_GETSOCK, NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST);
+	nlmsg_append(nm, &req, sizeof(struct inet_diag_req), 0);
+
+	if (nl_send_auto_complete(nl, nm) < 0) {
+		DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror()));
+		snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror());
+		nl_handle_destroy(nl);
+		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()));
+			snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror());
+			nl_handle_destroy(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_handle_destroy(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,6 +671,12 @@
 
     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");
@@ -568,8 +690,6 @@
      */
     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;
 
         if (6 != sscanf(line,
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..832d32f 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>
@@ -235,7 +235,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 +244,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 +253,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 +263,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;
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..87d1c55 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 
@@ -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;
@@ -349,7 +349,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;
 
     /*
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..3dd5836
--- /dev/null
+++ b/agent/mibgroup/mibII/updates.c
@@ -0,0 +1,41 @@
+#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)
+{
+    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;
+    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..8b2ae77 100644
--- a/agent/mibgroup/mibII/vacm_conf.c
+++ b/agent/mibgroup/mibII/vacm_conf.c
@@ -49,25 +49,6 @@
 
 #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"
 
@@ -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;
     }
@@ -1017,7 +998,7 @@
                 if (!isalnum(*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);
@@ -1262,6 +1243,14 @@
 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;
@@ -1421,7 +1410,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 +1437,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_vars.c b/agent/mibgroup/mibII/vacm_vars.c
index 0937fc5..6b73a95 100644
--- a/agent/mibgroup/mibII/vacm_vars.c
+++ b/agent/mibgroup/mibII/vacm_vars.c
@@ -48,10 +48,10 @@
 #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>
@@ -66,41 +66,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 +137,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.");
 }
 
 
@@ -181,13 +188,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 +207,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;
@@ -315,11 +322,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 +336,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 +368,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 +382,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++;
             }
@@ -528,11 +535,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 +550,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 +573,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++;
                 }
diff --git a/agent/mibgroup/mibII/vacm_vars.h b/agent/mibgroup/mibII/vacm_vars.h
index 8093157..888c1b8 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)
diff --git a/agent/mibgroup/mibII/var_route.c b/agent/mibgroup/mibII/var_route.c
index 5cef1cf..dfc1e8d 100644
--- a/agent/mibgroup/mibII/var_route.c
+++ b/agent/mibgroup/mibII/var_route.c
@@ -61,7 +61,6 @@
 #include "kernel.h"
 #include "interfaces.h"
 #include "struct.h"
-#include "util_funcs.h"
 
 #ifndef  MIN
 #define  MIN(a,b)                     (((a) < (b)) ? (a) : (b))
@@ -313,7 +312,7 @@
 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);
@@ -762,6 +761,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 +868,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 +878,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 +911,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
@@ -1466,7 +1469,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];
@@ -1477,8 +1480,6 @@
     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 in_addr_t addr_ret;
 
 
@@ -1573,12 +1574,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/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..d6a1ee4 100644
--- a/agent/mibgroup/notification-log-mib/notification_log.c
+++ b/agent/mibgroup/notification-log-mib/notification_log.c
@@ -16,7 +16,7 @@
 #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"
 
 /*
@@ -143,11 +143,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);
     }
@@ -171,7 +171,7 @@
     }
 
     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);
     }
@@ -562,7 +562,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..20a955c 100644
--- a/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c
+++ b/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c
@@ -57,13 +57,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}},
 
 };
@@ -649,6 +649,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;
diff --git a/agent/mibgroup/notification/snmpNotifyTable.c b/agent/mibgroup/notification/snmpNotifyTable.c
index 3d3e401..f1abeab 100644
--- a/agent/mibgroup/notification/snmpNotifyTable.c
+++ b/agent/mibgroup/notification/snmpNotifyTable.c
@@ -38,7 +38,7 @@
 #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"
@@ -62,7 +62,7 @@
 
 void shutdown_snmpNotifyTable(void)
 {
-    unregister_sysORTable(snmpNotifyFullCompliance, OID_LENGTH(snmpNotifyFullCompliance));
+    UNREGISTER_SYSOR_ENTRY(snmpNotifyFullCompliance);
 }
 
 
@@ -78,15 +78,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}},
 
 };
 /*
@@ -219,7 +221,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) {
@@ -353,6 +355,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 +374,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 +395,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);
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..eb646fd
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
@@ -0,0 +1,315 @@
+/*
+ * 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) {
+            if ( (list_head = (struct ifname *) malloc (sizeof(struct ifname))) < 0) {
+                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;
+
+        if ( (nameptr2->ifn_next = (struct ifname *) malloc (sizeof(struct ifname))) < 0) {
+            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", name));
+            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..0f671d0
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
@@ -0,0 +1,525 @@
+/*
+ * 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)
+{
+    etherStatsTable_rowreq_ctx *rowreq_ctx;
+    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
+     */
+
+    long            etherStatsIndex;
+    int             fd;
+    int             rc = 0, retval = 0;
+
+#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)
+    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) {
+        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));
+        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 %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..910362a
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
@@ -0,0 +1,2223 @@
+/*
+ * 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/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>
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** 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 retrival. 
+     */
+    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..c03aef4 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c
@@ -103,6 +103,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 +122,9 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
+
     if (container)
         CONTAINER_FREE(container);
 
diff --git a/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c b/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c
index 6010d84..ad14a46 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c
@@ -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);
diff --git a/agent/mibgroup/sctp-mib/sctpAssocTable.c b/agent/mibgroup/sctp-mib/sctpAssocTable.c
index e720a38..f3a68a3 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocTable.c
+++ b/agent/mibgroup/sctp-mib/sctpAssocTable.c
@@ -133,6 +133,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 +152,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);
 
diff --git a/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c b/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c
index b798b7e..7a2b0b2 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c
@@ -98,6 +98,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 +117,8 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
 
     if (container)
         CONTAINER_FREE(container);
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c
index ed1b849..3370f52 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c
@@ -100,6 +100,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 +119,9 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
+
     if (container)
         CONTAINER_FREE(container);
 
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c
index fb7ff4b..2542ea6 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c
@@ -99,6 +99,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 +113,8 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
 
     if (container)
         CONTAINER_FREE(container);
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c
index b06205c..a7674e4 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c
@@ -98,6 +98,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 +112,8 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
 
     if (container)
         CONTAINER_FREE(container);
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c
index 442e207..6bc0de6 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c
@@ -100,6 +100,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 +114,8 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
 
     if (container)
         CONTAINER_FREE(container);
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_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_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.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..1586554 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) {
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..cd3385a 100644
--- a/agent/mibgroup/smux/smux.c
+++ b/agent/mibgroup/smux/smux.c
@@ -71,7 +71,6 @@
 #include <net-snmp/library/tools.h>
 
 #include "smux.h"
-#include "util_funcs.h"
 #include "mibdefs.h"
 #include "snmpd.h"
 
@@ -122,7 +121,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}},
 };
 
 
@@ -429,7 +429,7 @@
              * peek at what's received 
              */
             if ((len = recvfrom(rptr->sr_fd, buf,
-                            SMUXMAXPKTSIZE, MSG_PEEK, NULL, 0)) <= 0) {
+                            SMUXMAXPKTSIZE, MSG_PEEK, NULL, NULL)) <= 0) {
                 if ((len == -1) && ((errno == EINTR) || (errno == EAGAIN)))
                 {
                    continue;
@@ -444,8 +444,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 +468,7 @@
             do
             {
                len = tmp_len;
-               len = recvfrom(rptr->sr_fd, buf, len, 0, NULL, 0);
+               len = recvfrom(rptr->sr_fd, buf, len, 0, NULL, NULL);
             }
             while((len == -1) && ((errno == EINTR) || (errno == EAGAIN)));
 
@@ -480,8 +480,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"));
@@ -610,7 +610,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 +688,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 +717,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 +743,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 +786,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 +830,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 +845,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 +862,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 +880,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 +927,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 +984,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 +1016,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 +1025,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 +1164,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 +1266,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;
 }
 
@@ -1353,7 +1382,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;
     }
@@ -1373,7 +1402,8 @@
         /*
          * 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)))
             {
@@ -1412,7 +1442,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)));
 
@@ -1429,8 +1459,8 @@
         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 +1526,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 +1586,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:
@@ -2070,7 +2100,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/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..c85125d 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c
@@ -26,9 +26,9 @@
 
 #include "snmpNotifyFilterTable_interface.h"
 
-oid             snmpNotifyFilterTable_oid[] =
+const oid       snmpNotifyFilterTable_oid[] =
     { SNMPNOTIFYFILTERTABLE_OID };
-int             snmpNotifyFilterTable_oid_size =
+const int       snmpNotifyFilterTable_oid_size =
 OID_LENGTH(snmpNotifyFilterTable_oid);
 
 snmpNotifyFilterTable_registration snmpNotifyFilterTable_user_context;
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..3c6bcc5 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
@@ -243,7 +243,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 */
diff --git a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
index 48f3e7e..9f64b46 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
@@ -774,6 +774,7 @@
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_snmpNotifyFilterTable_post_request */
 
+
 /**
  * @internal
  * wrapper
@@ -2041,7 +2042,9 @@
                                                  NETSNMP_DS_LIB_APPTYPE);
     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);
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/snmpv3/snmpEngine.c b/agent/mibgroup/snmpv3/snmpEngine.c
index 4ca2987..d5998f0 100644
--- a/agent/mibgroup/snmpv3/snmpEngine.c
+++ b/agent/mibgroup/snmpv3/snmpEngine.c
@@ -10,21 +10,27 @@
 
 #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"
 
 struct variable2 snmpEngine_variables[] = {
-    {SNMPENGINEID, ASN_OCTET_STR, RONLY, var_snmpEngine, 1, {1}},
+    {SNMPENGINEID, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_snmpEngine, 1, {1}},
 #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}},
+    {SNMPENGINEMAXMESSAGESIZE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_snmpEngine, 1, {4}},
 };
 
 /*
@@ -56,10 +62,8 @@
 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();
 }
 
@@ -85,11 +89,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. 
@@ -125,7 +129,7 @@
         DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_snmpEngine\n",
                     vp->magic));
     }
-    return 0;
+    return NULL;
 }
 
 #ifdef NETSNMP_ENABLE_TESTING_CODE
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..3734acd 100644
--- a/agent/mibgroup/snmpv3/snmpMPDStats.c
+++ b/agent/mibgroup/snmpv3/snmpMPDStats.c
@@ -10,17 +10,19 @@
 
 #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 +34,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..9a2a937
--- /dev/null
+++ b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c
@@ -0,0 +1,47 @@
+/*
+ * snmpMPDStats.c: tallies errors for SNMPv3 message processing.
+ */
+
+#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 "snmpMPDStats_5_5.h"
+
+#include <utilities/snmp_get_statistic.h>
+
+#define snmpMPDMIB 1, 3, 6, 1, 6, 3, 11
+#define snmpMPDMIBObjects snmpMPDMIB, 2
+#define snmpMPDMIBCompliances snmpMPDMIB, 3, 1
+
+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..c4da03a
--- /dev/null
+++ b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.h
@@ -0,0 +1,11 @@
+#ifndef _MIBGROUP_SNMPMPDSTATS_H
+#define _MIBGROUP_SNMPMPDSTATS_H
+
+config_require(utilities/snmp_get_statistic)
+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..7451fe6 100644
--- a/agent/mibgroup/snmpv3/usmStats.c
+++ b/agent/mibgroup/snmpv3/usmStats.c
@@ -11,19 +11,24 @@
 
 #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 +40,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);
 }
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..ec48ae7
--- /dev/null
+++ b/agent/mibgroup/snmpv3/usmStats_5_5.c
@@ -0,0 +1,47 @@
+/*
+ * 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-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/sysORTable.h>
+
+#include "usmStats_5_5.h"
+
+#include <utilities/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 };
+
+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..afc9f76
--- /dev/null
+++ b/agent/mibgroup/snmpv3/usmStats_5_5.h
@@ -0,0 +1,11 @@
+#ifndef _MIBGROUP_USMSTATS_H
+#define _MIBGROUP_USMSTATS_H
+
+config_require(utilities/snmp_get_statistic)
+config_exclude(snmpv3/usmStats)
+config_add_mib(SNMP-USER-BASED-SM-MIB)
+
+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..266a63b 100644
--- a/agent/mibgroup/snmpv3/usmUser.c
+++ b/agent/mibgroup/snmpv3/usmUser.c
@@ -18,30 +18,36 @@
 #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"
 
 int usmStatusCheck(struct usmUser *uptr);
 
 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}},
 
 };
 
@@ -301,7 +307,7 @@
     if (!vp || !name || !length || !var_len)
         return NULL;
 
-    *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 (vp->magic != USMUSERSPINLOCK) {
@@ -315,7 +321,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) {
@@ -384,7 +390,7 @@
         }
     } else {
         if (header_generic(vp, name, length, exact, var_len, write_method))
-            return 0;
+            return NULL;
     }                           /* endif -- vp->magic != USMUSERSPINLOCK */
 
     switch (vp->magic) {
@@ -458,7 +464,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;
@@ -488,7 +494,7 @@
         DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_usmUser\n",
                     vp->magic));
     }
-    return 0;
+    return NULL;
 
 }                               /* end var_usmUser() */
 
@@ -1177,14 +1183,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 +1248,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));
 
diff --git a/agent/mibgroup/snmpv3/usmUser.h b/agent/mibgroup/snmpv3/usmUser.h
index e920b20..2afecb4 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)
 
     /*
diff --git a/agent/mibgroup/snmpv3mibs.h b/agent/mibgroup/snmpv3mibs.h
index 60f666d..8e5a015 100644
--- a/agent/mibgroup/snmpv3mibs.h
+++ b/agent/mibgroup/snmpv3mibs.h
@@ -7,8 +7,8 @@
  */
 
 config_require(snmpv3/snmpEngine)
-config_require(snmpv3/snmpMPDStats)
-config_require(snmpv3/usmStats)
+config_version_require((snmpv3/snmpMPDStats, 5.5, snmpv3/snmpMPDStats_5_5))
+config_version_require((snmpv3/usmStats, 5.5, snmpv3/usmStats_5_5))
 config_require(snmpv3/usmConf)
 config_require(snmpv3/usmUser)
 #endif                          /* NSMPV3MIBS_H */
diff --git a/agent/mibgroup/struct.h b/agent/mibgroup/struct.h
index 10b843d..c33c96b 100644
--- a/agent/mibgroup/struct.h
+++ b/agent/mibgroup/struct.h
@@ -19,7 +19,7 @@
     unsigned long   miboid[MIBMAX];
     size_t          miblen;
     int             pid;
-#if defined(WIN32)
+#if defined(WIN32) && !defined (mingw32)
     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..52f77b4 100644
--- a/agent/mibgroup/target/snmpTargetAddrEntry.c
+++ b/agent/mibgroup/target/snmpTargetAddrEntry.c
@@ -23,7 +23,7 @@
 #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 */
@@ -32,7 +32,7 @@
     { 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;
 
 
 /*
@@ -67,21 +67,21 @@
     newEntry = malloc(sizeof(*newEntry));
 
     if (newEntry) {
-        newEntry->name = 0;
+        newEntry->name = NULL;
 
         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;
@@ -197,14 +197,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,7 +234,7 @@
      */
     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];
@@ -252,7 +252,7 @@
             return temp_struct;
         }
     }
-    return (0);
+    return NULL;
 }                               /* search_snmpTargetAddrTable  */
 
 
@@ -278,27 +278,28 @@
  */
 
 struct variable2 snmpTargetAddrEntry_variables[] = {
-    {SNMPTARGETADDRTDOMAIN, ASN_OBJECT_ID, RWRITE,
+    {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}}
+    {SNMPTARGETSPINLOCK, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_targetSpinLock, 1, {1}}
 };
 
 static oid      snmpTargetSpinLock_oid[] = { 1, 3, 6, 1, 6, 3, 12, 1 };
@@ -313,7 +314,7 @@
 void
 init_snmpTargetAddrEntry(void)
 {
-    aAddrTable = 0;
+    aAddrTable = NULL;
     DEBUGMSGTL(("snmpTargetAddrEntry", "init\n"));
     REGISTER_MIB("target/snmpTargetAddrEntry",
                  snmpTargetAddrEntry_variables, variable2,
@@ -322,7 +323,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 
@@ -337,7 +339,7 @@
 snmpTargetAddr_addName(struct targetAddrTable_struct *entry, char *cptr)
 {
     size_t          len;
-    if (cptr == 0) {
+    if (cptr == NULL) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargetAddrEntry: no name in config string\n"));
         return (0);
@@ -362,7 +364,7 @@
 {
     size_t          len = 128;
 
-    if (cptr == 0) {
+    if (cptr == NULL) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargetAddrEntry: no tDomain in config string\n"));
         return (0);
@@ -392,7 +394,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,7 +420,7 @@
 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);
@@ -443,7 +445,7 @@
 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);
@@ -471,7 +473,7 @@
 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);
@@ -496,7 +498,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 +522,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))) {
         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 +542,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 +559,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))) {
         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 +577,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);
@@ -661,7 +661,7 @@
             newEntry->tagList, newEntry->params, newEntry->storageType,
             newEntry->rowStatus);
     buff[ sizeof(buff)-1 ] = 0;
-    DEBUGMSGTL(("snmpTargetAddrEntry", buff));
+    DEBUGMSGTL(("snmpTargetAddrEntry", "%s", buff));
 
     snmpTargetAddrTable_addToList(newEntry, &aAddrTable);
 }                               /* snmpd_parse_config_target */
@@ -685,8 +685,8 @@
     char            line[1024];
     int             i;
 
-    if ((curr_struct = aAddrTable) != 0) {
-        while (curr_struct != 0) {
+    if ((curr_struct = aAddrTable) != NULL) {
+        while (curr_struct != NULL) {
             if ((curr_struct->storageType == SNMP_STORAGE_NONVOLATILE ||
                  curr_struct->storageType == SNMP_STORAGE_PERMANENT)
                 &&
@@ -792,8 +792,8 @@
      */
     if ((temp_struct = search_snmpTargetAddrTable(vp->name, vp->namelen,
                                                   name, length,
-                                                  exact)) == 0) {
-        return (0);
+                                                  exact)) == NULL) {
+        return NULL;
     }
 
     /*
@@ -805,7 +805,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 +815,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 +830,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 +838,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,7 +857,7 @@
                     "unknown sub-id %d in var_snmpTargetAddrEntry\n",
                     vp->magic));
     }
-    return 0;
+    return NULL;
 }                               /* var_snmpTargetAddrEntry */
 
 
@@ -890,7 +890,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;
@@ -976,7 +976,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;
@@ -1082,7 +1082,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;
@@ -1296,7 +1296,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;
@@ -1504,7 +1504,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;
         }
 
diff --git a/agent/mibgroup/target/snmpTargetAddrEntry.h b/agent/mibgroup/target/snmpTargetAddrEntry.h
index b1b5ad1..7ed838f 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)
 
 
     /*
diff --git a/agent/mibgroup/target/snmpTargetParamsEntry.c b/agent/mibgroup/target/snmpTargetParamsEntry.c
index 06936b1..3967b82 100644
--- a/agent/mibgroup/target/snmpTargetParamsEntry.c
+++ b/agent/mibgroup/target/snmpTargetParamsEntry.c
@@ -30,7 +30,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 +51,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;
 }
 
@@ -113,7 +113,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 +168,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 +205,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 +223,7 @@
             return temp_struct;
         }
     }
-    return (0);
+    return NULL;
 }                               /* search_snmpTargetParamsTable */
 
 
@@ -236,7 +236,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 +254,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 +278,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 
@@ -301,7 +301,7 @@
                               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,7 +325,7 @@
 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);
@@ -350,7 +350,7 @@
 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);
@@ -376,7 +376,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,7 +391,7 @@
 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);
@@ -417,7 +417,7 @@
 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);
@@ -455,7 +455,7 @@
 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);
@@ -535,13 +535,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 +564,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)
                 &&
@@ -642,8 +640,8 @@
      */
     if ((temp_struct = search_snmpTargetParamsTable(vp->name, vp->namelen,
                                                     name, length,
-                                                    exact)) == 0) {
-        return (0);
+                                                    exact)) == NULL) {
+        return NULL;
     }
 
     /*
@@ -659,7 +657,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 +666,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 +674,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 +689,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,7 +706,7 @@
                     "unknown sub-id %d in var_snmpTargetParamsEntry\n",
                     vp->magic));
     }
-    return 0;
+    return NULL;
 }                               /* var_snmpTargetParamsEntry */
 
 /*
@@ -842,7 +840,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;
         }
@@ -1273,7 +1271,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;
         }
 
diff --git a/agent/mibgroup/target/snmpTargetParamsEntry.h b/agent/mibgroup/target/snmpTargetParamsEntry.h
index 9b5ab85..8286a64 100644
--- a/agent/mibgroup/target/snmpTargetParamsEntry.h
+++ b/agent/mibgroup/target/snmpTargetParamsEntry.h
@@ -9,12 +9,6 @@
 #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: 
      */
@@ -53,6 +47,7 @@
                                               targetParamTable_struct
                                               *newEntry);
      struct targetParamTable_struct *snmpTargetParamTable_create(void);
+     void snmpTargetParamTable_dispose(struct targetParamTable_struct *);
 
 /*
  * function definitions 
diff --git a/agent/mibgroup/target/target.c b/agent/mibgroup/target/target.c
index 3ccba1c..88ee770 100644
--- a/agent/mibgroup/target/target.c
+++ b/agent/mibgroup/target/target.c
@@ -163,7 +163,7 @@
                             thissess.timeout = (targaddrs->timeout) * 10000;
                             thissess.retries = targaddrs->retryCount;
                             DEBUGMSGTL(("target_sessions",
-                                        "timeout: %d -> %d\n",
+                                        "timeout: %d -> %ld\n",
                                         targaddrs->timeout,
                                         thissess.timeout));
 
diff --git a/agent/mibgroup/target/target_counters.c b/agent/mibgroup/target/target_counters.c
index 02ebb72..8a2f0d1 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"));
 
     /*
diff --git a/agent/mibgroup/target/target_counters.h b/agent/mibgroup/target/target_counters.h
index a7dbf0a..c485c4c 100644
--- a/agent/mibgroup/target/target_counters.h
+++ b/agent/mibgroup/target/target_counters.h
@@ -2,6 +2,8 @@
  * 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..6e8b25b
--- /dev/null
+++ b/agent/mibgroup/target/target_counters_5_5.c
@@ -0,0 +1,27 @@
+#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>
+
+#include "target_counters_5_5.h"
+
+#include <utilities/snmp_get_statistic.h>
+
+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..cb812fb
--- /dev/null
+++ b/agent/mibgroup/target/target_counters_5_5.h
@@ -0,0 +1,4 @@
+config_require(utilities/snmp_get_statistic)
+config_exclude(target/target_counters)
+
+void            init_target_counters_5_5(void);
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn.h b/agent/mibgroup/tcp-mib/data_access/tcpConn.h
index 5003157..1ec3588 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn.h
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn.h
@@ -20,6 +20,7 @@
 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)
 #else
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c b/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c
index 8ea082b..376cf5c 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 };
 
@@ -81,7 +81,7 @@
     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));
 
     if (NULL == container) {
         snmp_log(LOG_ERR, "no container specified/found for access_tcpconn\n");
@@ -135,16 +135,19 @@
     while (fgets(line, sizeof(line), in)) {
         netsnmp_tcpconn_entry *entry;
         int             state, rc, 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,6 +183,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);
@@ -253,28 +257,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 +279,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 +327,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/tcpConnectionTable/tcpConnectionTable.c b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c
index eb90f40..f5d054f 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;
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..a4f5bbe 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."));
+            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/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/testhandler.c b/agent/mibgroup/testhandler.c
index 80859ce..c0866dd 100644
--- a/agent/mibgroup/testhandler.c
+++ b/agent/mibgroup/testhandler.c
@@ -74,6 +74,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 +125,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);
diff --git a/agent/mibgroup/tunnel/tunnel.c b/agent/mibgroup/tunnel/tunnel.c
index cfbee46..cf6eeda 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;
@@ -252,8 +255,8 @@
     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;
diff --git a/agent/mibgroup/ucd-snmp/disk.c b/agent/mibgroup/ucd-snmp/disk.c
index bd784fc..4d3afa9 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
@@ -140,7 +146,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 +176,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 +185,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 +266,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;
@@ -254,9 +276,7 @@
           disks = 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));
@@ -265,9 +285,7 @@
           disks = 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 +303,7 @@
    * read optional minimum disk usage spec 
    */
   if(cptr != NULL) {
-      if(strchr(cptr, '%') == 0) {
+      if(strchr(cptr, '%') == NULL) {
           minspace = atoi(cptr);
           minpercent = -1;
       }
@@ -310,7 +328,6 @@
 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) {
@@ -319,8 +336,7 @@
           disks = 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));
@@ -329,8 +345,7 @@
           disks = 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 +355,7 @@
    * read the minimum disk usage percent
    */
   if(cptr != NULL) {
-      if(strchr(cptr, '%') != 0) {
+      if(strchr(cptr, '%') != NULL) {
           minpercent = atoi(cptr);
       }
   }
@@ -352,8 +367,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;
@@ -378,10 +392,7 @@
           maxdisks = 50;
           disks = 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));
@@ -389,11 +400,8 @@
           maxdisks *= 2;
           disks = 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 +472,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 +483,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 +500,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 +551,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;
@@ -576,7 +579,6 @@
 #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 +596,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 +614,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)
@@ -648,9 +648,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 +657,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 +705,132 @@
 #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) */
+
+#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");
+        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);
+#endif
+#endif
+
+    entry->dskErrorFlag =
+        (disks[disknum].minimumspace >= 0
+            ? entry->dskAvail < disks[disknum].minimumspace
+            : 100 - entry->dskPercent <= 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 +855,86 @@
         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;
-        return ((u_char *) (&long_ret));
-#endif
+        if (entry.dskPercentInode >= 0) {
+            long_ret = entry.dskPercentInode;
+            return ((u_char *) (&long_ret));
+        } else
+            return NULL;
+
     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/diskio.c b/agent/mibgroup/ucd-snmp/diskio.c
index 08ef3f1..f29388e 100644
--- a/agent/mibgroup/ucd-snmp/diskio.c
+++ b/agent/mibgroup/ucd-snmp/diskio.c
@@ -25,13 +25,12 @@
 # endif
 #endif
 
+#include <math.h>
+
 #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_simple_table.h"
 
 /*
  * include our .h file 
@@ -61,18 +60,22 @@
 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 +87,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>
@@ -102,7 +110,7 @@
 
 void            diskio_parse_config(const char *, char *);
 
-#if defined (freebsd4) || defined(freebsd5)
+#if defined (HAVE_GETDEVS) || defined(HAVE_DEVSTAT_GETDEVS)
 void		devla_getstats(unsigned int regno, void *dummy);
 #endif
 
@@ -142,19 +150,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}},
     };
 
     /*
@@ -200,10 +219,10 @@
     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
 
 }
@@ -422,12 +441,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 +735,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 +784,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 +797,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 +893,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 +908,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 +918,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 +927,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 +981,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,8 +995,59 @@
     int alloc;
 } linux_diskio_header;
 
-static linux_diskio_header head;
+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) {
+
+    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 getstats(void)
 {
@@ -826,6 +1180,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;
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..0a85213 100644
--- a/agent/mibgroup/ucd-snmp/dlmod.c
+++ b/agent/mibgroup/ucd-snmp/dlmod.c
@@ -29,9 +29,6 @@
 #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
@@ -51,11 +48,16 @@
  * 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}},
+    {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 };
@@ -293,11 +295,18 @@
 
     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) {
+        DEBUGMSGTL(("dlmod", "Calling deinit_%s()\n", dlm->name));
         dl_deinit();
+    } else {
+        snprintf(sym_deinit, sizeof(sym_deinit), "shutdown_%s", dlm->name);
+        dl_deinit = dlmod_dlsym(dlm->handle, sym_deinit);
+        if (dl_deinit) {
+            DEBUGMSGTL(("dlmod", "Calling shutdown_%s()\n", dlm->name));
+            dl_deinit();
+        } else {
+            DEBUGMSGTL(("dlmod", "No destructor for %s\n", dlm->name));
+        }
     }
     dlmod_dlclose(dlm->handle);
     dlm->status = DLMOD_UNLOADED;
@@ -658,14 +667,3 @@
     }
     return SNMP_ERR_NOERROR;
 }
-
-#else                           /* no dlopen support */
-
-void
-init_dlmod(void)
-{
-    DEBUGMSGTL(("dlmod",
-                "Dynamic modules not support on this platform\n"));
-}
-
-#endif
diff --git a/agent/mibgroup/ucd-snmp/dlmod.h b/agent/mibgroup/ucd-snmp/dlmod.h
index 690bc45..4fbfb9e 100644
--- a/agent/mibgroup/ucd-snmp/dlmod.h
+++ b/agent/mibgroup/ucd-snmp/dlmod.h
@@ -7,8 +7,11 @@
 #define _MIBGROUP_DLMOD_H
 
 /*
- * TODO #include "mibdefs.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
diff --git a/agent/mibgroup/ucd-snmp/errormib.c b/agent/mibgroup/ucd-snmp/errormib.c
index 0f11e99..0fafb54 100644
--- a/agent/mibgroup/ucd-snmp/errormib.c
+++ b/agent/mibgroup/ucd-snmp/errormib.c
@@ -122,7 +122,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 +159,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..db17a9a 100644
--- a/agent/mibgroup/ucd-snmp/extensible.c
+++ b/agent/mibgroup/ucd-snmp/extensible.c
@@ -115,7 +115,7 @@
 #include "struct.h"
 #include "extensible.h"
 #include "utilities/execute.h"
-#include "util_funcs.h"
+#include "util_funcs/header_simple_table.h"
 
 extern struct myproc *procwatch;        /* moved to proc.c */
 extern int      numprocs;       /* ditto */
@@ -133,20 +133,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 +155,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..9283692 100644
--- a/agent/mibgroup/ucd-snmp/extensible.h
+++ b/agent/mibgroup/ucd-snmp/extensible.h
@@ -7,7 +7,7 @@
 
 void            init_extensible(void);
 
-config_require(util_funcs)
+config_require(util_funcs/header_simple_table)
 config_require(utilities/execute)
 
      extern FindVarMethod var_extensible_shell;
diff --git a/agent/mibgroup/ucd-snmp/file.c b/agent/mibgroup/ucd-snmp/file.c
index 00c98d4..a8dd154 100644
--- a/agent/mibgroup/ucd-snmp/file.c
+++ b/agent/mibgroup/ucd-snmp/file.c
@@ -41,7 +41,7 @@
 
 #include "struct.h"
 #include "file.h"
-#include "util_funcs.h"
+#include "util_funcs/header_simple_table.h"
 
 #define MAXFILE   20
 
@@ -52,12 +52,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..519c80e 100644
--- a/agent/mibgroup/ucd-snmp/lmSensors.c
+++ b/agent/mibgroup/ucd-snmp/lmSensors.c
@@ -73,7 +73,7 @@
  * minimal include directives 
  */
 
-#include "util_funcs.h"
+#include "util_funcs/header_simple_table.h"
 #include <time.h>
 
 /*
@@ -131,41 +131,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 {
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..8dea74e
--- /dev/null
+++ b/agent/mibgroup/ucd-snmp/lmsensorsMib.c
@@ -0,0 +1,205 @@
+#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 "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 *)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  = (int)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..2548ed8 100644
--- a/agent/mibgroup/ucd-snmp/loadave.c
+++ b/agent/mibgroup/ucd-snmp/loadave.c
@@ -134,7 +134,7 @@
 
 #include "struct.h"
 #include "loadave.h"
-#include "util_funcs.h"
+#include "util_funcs/header_simple_table.h"
 #include "kernel.h"
 
 double          maxload[3];
@@ -148,24 +148,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_RONLY,
+         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}}
     };
 
     /*
@@ -343,7 +343,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..8d01732 100644
--- a/agent/mibgroup/ucd-snmp/logmatch.c
+++ b/agent/mibgroup/ucd-snmp/logmatch.c
@@ -38,11 +38,11 @@
 #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
+#define MAXLOGMATCH   250
 
 struct logmatchstat logmatchTable[MAXLOGMATCH];
 int             logmatchCount;
@@ -51,28 +51,37 @@
 init_logmatch(void)
 {
     struct variable2 logmatch_info[] = {
-        {LOGMATCH_INFO, ASN_INTEGER, RONLY, var_logmatch_table, 0}
+        {LOGMATCH_INFO, ASN_INTEGER, NETSNMP_OLDAPI_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}}
+        {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}}
     };
 
     /*
@@ -170,11 +179,15 @@
         sscanf(cptr, "%255s%c%255s%c %d %255c\n",
                logmatchTable[logmatchCount].name,
 	       &space_name,
-               logmatchTable[logmatchCount].filename,
+               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.
@@ -250,6 +263,7 @@
     int             toobig;
     int             anyChanges = FALSE;
     struct stat     sb;
+    char            lastFilename[256];
 
     /*
      * ------------------------------------ 
@@ -277,7 +291,6 @@
 
         if ((perfile = fopen(perfilename, "r"))) {
 
-
             /*
              * ------------------------------------ 
              * the persistent data file exists so   
@@ -288,7 +301,7 @@
 
             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 +312,52 @@
                  * ------------------------------------ 
                  */
 
-                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 +366,18 @@
         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 +465,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);
     }
@@ -549,4 +586,54 @@
     return NULL;
 }
 
+/*
+ * ------------------------------------------------
+ *  This function checks if the filename pattern 
+ *  contains the % character indicating a variable
+ *  filename (i.e. it uses date/time format control 
+ *  codes, see 'man date') then expands those control
+ *  codes based on current time and sets the 
+ *  filename field in the struct.
+ *  Returns 1 if the filename changed, 0 otherwise
+ *  -------------------------------------------------
+ */
+
+int logmatch_update_filename(char * pattern, char * currentFilename) {
+    time_t t;
+    struct tm *tmp;
+    char newFilename[256];
+
+    /* 
+     * -------------------------------------------------------------------
+     * if the filename pattern doesn't have the "%" character just return, 
+     * since there is no need for further processing
+     * -------------------------------------------------------------------
+     */
+    if (strstr(pattern, "%") == NULL) {
+        return 0;
+    }
+
+    t = time(NULL);
+    tmp = localtime(&t);
+
+    if (tmp == NULL) {
+        perror("localtime");
+        return 0;
+    }
+
+    /* result of expansion must fit into newFilename, otherwise returning */ 
+    if (strftime(newFilename, sizeof(newFilename), pattern, tmp) == 0) {
+        return 0;
+    }
+
+    /* if same as current filename, just return */
+    if (strcmp(currentFilename, newFilename) == 0) {
+        return 0;
+    } else {
+        /* otherwise update currentFilename and return 1 */
+        strcpy(currentFilename, newFilename); 
+        return 1;
+    }
+}
+
 #endif /* HAVE_REGEX */
diff --git a/agent/mibgroup/ucd-snmp/logmatch.h b/agent/mibgroup/ucd-snmp/logmatch.h
index eb2c070..35ad27f 100644
--- a/agent/mibgroup/ucd-snmp/logmatch.h
+++ b/agent/mibgroup/ucd-snmp/logmatch.h
@@ -5,10 +5,14 @@
 #ifndef _MIBGROUP_LOGMATCH_H
 #define _MIBGROUP_LOGMATCH_H
 
+config_require(util_funcs/header_generic)
+config_require(util_funcs/header_simple_table)
+
 #include "mibdefs.h"
 #include <regex.h>
 
 struct logmatchstat {
+    char            filenamePattern[256];
     char            filename[256];
     char            regEx[256];
     char            name[256];
diff --git a/agent/mibgroup/ucd-snmp/memory.c b/agent/mibgroup/ucd-snmp/memory.c
index 109e96f..a279cdd 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;
@@ -205,7 +203,7 @@
             return SNMP_ERR_NOERROR;
         default:
             snmp_log(LOG_ERR, "unknown object (%lu) in handle_memory\n",
-                     requests->requestvb->name[ memory_object_index ]);
+                     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..820f628 100644
--- a/agent/mibgroup/ucd-snmp/memory_aix4.c
+++ b/agent/mibgroup/ucd-snmp/memory_aix4.c
@@ -30,7 +30,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_aix4.h"    /* the module-specific header */
 
@@ -55,38 +55,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..fa933b6 100644
--- a/agent/mibgroup/ucd-snmp/pass.c
+++ b/agent/mibgroup/ucd-snmp/pass.c
@@ -49,7 +49,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}},
 };
 
 
@@ -148,7 +149,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);
@@ -300,12 +301,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..f685411 100644
--- a/agent/mibgroup/ucd-snmp/pass_persist.c
+++ b/agent/mibgroup/ucd-snmp/pass_persist.c
@@ -66,8 +66,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
@@ -179,7 +179,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);
@@ -381,18 +381,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()) {
@@ -725,7 +714,7 @@
 
     if (persist_pipes[iindex].pid != -1) {
 #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)) {
diff --git a/agent/mibgroup/ucd-snmp/proc.c b/agent/mibgroup/ucd-snmp/proc.c
index 72521a0..4284d08 100644
--- a/agent/mibgroup/ucd-snmp/proc.c
+++ b/agent/mibgroup/ucd-snmp/proc.c
@@ -54,6 +54,9 @@
 
 #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 +79,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}}
     };
 
     /*
@@ -348,6 +354,14 @@
     return (proc);
 }
 
+#ifdef USING_HOST_DATA_ACCESS_SWRUN_MODULE
+int
+sh_count_procs(char *procname)
+{
+    return swrun_count_processes_by_name( procname );
+}
+#else
+
 #ifdef bsdi2
 #include <sys/param.h>
 #include <sys/sysctl.h>
@@ -852,3 +866,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..1f8f470 100644
--- a/agent/mibgroup/ucd-snmp/proxy.c
+++ b/agent/mibgroup/ucd-snmp/proxy.c
@@ -419,7 +419,7 @@
              * suffix appended? 
              */
             DEBUGMSGTL(("proxy", "length=%d, base_len=%d, name_len=%d\n",
-                        ourlength, sp->base_len, sp->name_len));
+                        (int)ourlength, (int)sp->base_len, (int)sp->name_len));
             if (ourlength > (int) sp->name_len)
                 memcpy(&(sp->base[sp->base_len]), &(ourname[sp->name_len]),
                        sizeof(oid) * (ourlength - sp->name_len));
@@ -495,7 +495,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,7 +523,7 @@
              * 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"));
@@ -539,7 +539,7 @@
 		 *	?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);
@@ -583,7 +583,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 +595,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..4a109ed 100644
--- a/agent/mibgroup/ucd-snmp/versioninfo.c
+++ b/agent/mibgroup/ucd-snmp/versioninfo.c
@@ -41,28 +41,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 +109,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 +133,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/vmstat.c b/agent/mibgroup/ucd-snmp/vmstat.c
index 79f1004..eadbf5a 100644
--- a/agent/mibgroup/ucd-snmp/vmstat.c
+++ b/agent/mibgroup/ucd-snmp/vmstat.c
@@ -13,7 +13,7 @@
 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(
diff --git a/agent/mibgroup/ucd-snmp/vmstat_aix4.c b/agent/mibgroup/ucd-snmp/vmstat_aix4.c
index d4904f9..69fc372 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_aix4.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_aix4.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 
@@ -153,45 +153,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..7538a14 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_linux.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_linux.c
@@ -108,7 +108,7 @@
 
 #include "mibdefs.h"
 #include "struct.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 #include "vmstat.h"
 
 FindVarMethod var_extensible_vmstat;
@@ -128,54 +128,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..f92c2c4 100644
--- a/agent/mibgroup/ucd_snmp.h
+++ b/agent/mibgroup/ucd_snmp.h
@@ -8,7 +8,9 @@
 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..70e29d2 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint.h
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint.h
@@ -20,6 +20,7 @@
 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)
 #else
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..bcb002e 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c
@@ -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);
     }
 
@@ -153,23 +154,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_linux.c b/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c
index ba8f7a2..c87dc24 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c
@@ -14,7 +14,7 @@
 #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>
@@ -150,14 +150,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 +186,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,6 +222,11 @@
     inode = strtoull(ptr, &ptr, 0);
     ep->instance = (u_int)inode;
 
+    /*
+     * get the pid also
+     */
+    ep->pid = netsnmp_get_pid_from_inode(inode);
+
     ep->index = (u_int)(lpi->user_context);
     lpi->user_context = (void*)((u_int)(lpi->user_context) + 1);
 
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..ef83b9a 100644
--- a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c
+++ b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c
@@ -265,7 +265,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 +294,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/util_funcs.c b/agent/mibgroup/util_funcs.c
index a017658..749efb2 100644
--- a/agent/mibgroup/util_funcs.c
+++ b/agent/mibgroup/util_funcs.c
@@ -86,21 +86,6 @@
 #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>
 
@@ -270,7 +255,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
@@ -766,168 +751,6 @@
         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);
-}
-
 /*
  * checkmib(): provided for backwards compatibility, do not use: 
  */
@@ -1202,88 +1025,135 @@
     return table->data;
 }
 
-#ifdef linux
-# define PROC_PATH          "/proc"
-# define FILE_DISP          "fd/"
-# define SOCKET_TYPE_1      "socket:["
-# define SOCKET_TYPE_2      "[0000]:"
-
-unsigned long long
-extract_inode(char *format)
+#if defined(HAVE_LINUX_RTNETLINK_H)
+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;
 }
 
-unsigned int
-get_pid_from_inode(unsigned long long inode)
+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;
+}
 
-    while ((procinfo = readdir(procdirs)) != NULL) {
-        name = procinfo->d_name;
-        for (; *name; name++) {
-            if (!isdigit(*name))
-                break;
-        }
-        if(*name)
-            continue;
+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;
+}
 
-        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 */
+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
+
diff --git a/agent/mibgroup/util_funcs.h b/agent/mibgroup/util_funcs.h
index fba1a98..c5b52ef 100644
--- a/agent/mibgroup/util_funcs.h
+++ b/agent/mibgroup/util_funcs.h
@@ -4,12 +4,31 @@
 #ifndef _MIBGROUP_UTIL_FUNCS_H
 #define _MIBGROUP_UTIL_FUNCS_H
 
+config_require(util_funcs/header_generic)
+config_require(util_funcs/header_simple_table)
+
+#include "util_funcs/header_generic.h"
+#include "util_funcs/header_simple_table.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 #include "struct.h"
 
+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
 void            Exit(int);
 int             shell_command(struct extensible *);
 int             exec_command(struct extensible *);
@@ -21,11 +40,6 @@
 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 +48,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/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..77628b2
--- /dev/null
+++ b/agent/mibgroup/util_funcs/get_pid_from_inode.c
@@ -0,0 +1,95 @@
+#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]:"
+
+pid_t
+netsnmp_get_pid_from_inode(ino64_t inode)
+{
+    DIR            *procdirs = NULL, *piddirs = NULL;
+    char            path_name[PATH_MAX + 1];
+    char            socket_lnk[NAME_MAX + 1];
+    int             filelen = 0, readlen = 0, iflag = 0;
+    struct dirent  *procinfo, *pidinfo;
+    pid_t           pid = 0;
+    ino64_t         temp_inode;
+
+    if (inode == 0) {
+        /* an inode set to zero means it is not associated with a process. */
+        return 0;
+    }
+
+    if (!(procdirs = opendir(PROC_PATH))) {
+        snmp_log(LOG_ERR, "snmpd: cannot open /proc\n");
+        return 0;
+    }
+
+    while ((procinfo = readdir(procdirs)) != NULL) {
+	const char* name = procinfo->d_name;
+        for (; *name; name++) {
+            if (!isdigit(*name))
+                break;
+        }
+        if(*name)
+            continue;
+
+        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;
+
+        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);
+
+            memset(socket_lnk, '\0', NAME_MAX + 1);
+            readlen = readlink(path_name, socket_lnk, NAME_MAX);
+            if (readlen < 0)
+                continue;
+            socket_lnk[readlen] = '\0';
+
+            if (!strncmp(socket_lnk, SOCKET_TYPE_1, 8)) {
+                temp_inode = strtoull(socket_lnk + 8, NULL, 0);
+            } else if (!strncmp(socket_lnk, SOCKET_TYPE_2, 7)) {
+                temp_inode = strtoull(socket_lnk + 7, NULL, 0);
+            } else
+		temp_inode = 0;
+            if (inode == temp_inode) {
+                pid = strtoul(procinfo->d_name, NULL, 0);
+                iflag = 1;
+                break;
+            }
+        }
+        closedir(piddirs);
+        if (iflag == 1)
+            break;
+    }
+    if (procdirs)
+        closedir(procdirs);
+    return pid;
+}
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..2ad04e1
--- /dev/null
+++ b/agent/mibgroup/util_funcs/get_pid_from_inode.h
@@ -0,0 +1,33 @@
+/*
+ * 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_HEADER_SIMPLE_TABLE_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>
+
+pid_t netsnmp_get_pid_from_inode(ino64_t);
+
+#endif /* NETSNMP_MIBGROUP_UTIL_FUNCS_HEADER_SIMPLE_TABLE_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..8459a4c
--- /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] < 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 = (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/utilities/execute.c b/agent/mibgroup/utilities/execute.c
index 21bf682..4221f96 100644
--- a/agent/mibgroup/utilities/execute.c
+++ b/agent/mibgroup/utilities/execute.c
@@ -160,7 +160,7 @@
     if (cp) {
         argv[i++] = strdup( cp );
     }
-    argv[i] = 0;
+    argv[i] = NULL;
     *argc = i;
 
     return argv;
@@ -215,7 +215,7 @@
         argv[i] = strdup( cptr2 );
         cptr2  += strlen( cptr2 )+1;
     }
-    argv[count] = 0;
+    argv[count] = NULL;
     *argc       = count;
         
     return argv;
@@ -355,7 +355,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 +390,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/iquery.c b/agent/mibgroup/utilities/iquery.c
index 4f66d7e..de93d61 100644
--- a/agent/mibgroup/utilities/iquery.c
+++ b/agent/mibgroup/utilities/iquery.c
@@ -7,24 +7,19 @@
 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 +36,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 +54,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 +71,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;
diff --git a/agent/mibgroup/utilities/override.c b/agent/mibgroup/utilities/override.c
index 7c70a02..50cdb51 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;
@@ -183,7 +181,6 @@
         config_perror("memory allocation failure");
         return;
     }
-
     thedata->type = type;
 
     switch (type) {
@@ -249,7 +246,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/utilities/snmp_get_statistic.c b/agent/mibgroup/utilities/snmp_get_statistic.c
new file mode 100644
index 0000000..1e06f79
--- /dev/null
+++ b/agent/mibgroup/utilities/snmp_get_statistic.c
@@ -0,0 +1,44 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include "snmp_get_statistic.h"
+
+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] +
+            (((char*)handler->myvoid) - ((char*)0));
+        const uint32_t 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 = ((char*)0) + 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));
+}
diff --git a/agent/mibgroup/utilities/snmp_get_statistic.h b/agent/mibgroup/utilities/snmp_get_statistic.h
new file mode 100644
index 0000000..cc5d486
--- /dev/null
+++ b/agent/mibgroup/utilities/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/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.h b/agent/mibgroup/winExtDLL.h
index c90f669..a10b21c 100644
--- a/agent/mibgroup/winExtDLL.h
+++ b/agent/mibgroup/winExtDLL.h
@@ -17,8 +17,9 @@
      *  and writeable object methods ('WriteMethod').
      */
      void     init_winExtDLL(void);
-     void     shutdown_winExtDLL(void);
-   
+
+     Netsnmp_Node_Handler var_winExtDLL;
+     
 #ifdef __cplusplus
 }
 #endif
diff --git a/agent/snmp_agent.c b/agent/snmp_agent.c
index 5aa5552..b7761b0 100644
--- a/agent/snmp_agent.c
+++ b/agent/snmp_agent.c
@@ -99,8 +99,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 +114,66 @@
 #include "smux/smux.h"
 #endif
 
+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;
+	}
+    }
+}
+
+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);
+}
+
+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);
 
@@ -200,15 +258,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;
 }
 
@@ -543,7 +603,7 @@
 
 
 int
-getNextSessID()
+getNextSessID(void)
 {
     static int      SessionID = 0;
 
@@ -596,7 +656,7 @@
         timerclear(tvp);
     }
 
-    count = select(numfds, &fdset, 0, 0, tvp);
+    count = select(numfds, &fdset, NULL, NULL, tvp);
 
     if (count > 0) {
         /*
@@ -1251,6 +1311,7 @@
 			"NSAP\n", cptr));
         }
     } while(st && *st != '\0');
+    SNMP_FREE(buf);
 
 #ifdef USING_AGENTX_MASTER_MODULE
     if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
@@ -1291,7 +1352,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 +1378,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);
     
@@ -1389,7 +1450,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 +1477,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 +1524,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();
     }
     
@@ -1527,7 +1588,7 @@
      * 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;
     }
@@ -1716,7 +1777,7 @@
 
     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"));
 }
@@ -1726,7 +1787,7 @@
 {
     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) {
@@ -1755,7 +1816,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) {
@@ -1874,7 +1935,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;
 }
@@ -2375,6 +2436,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);
@@ -2690,7 +2755,7 @@
 
             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;
         }
 
@@ -2700,7 +2765,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 +2808,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) {
@@ -2992,6 +3057,9 @@
             return status;      /* should never really happen */
         }
     }
+    if (!netsnmp_running) {
+        return SNMP_ERR_GENERR;
+    }
     return SNMP_ERR_NOERROR;
 }
 
@@ -3112,7 +3180,7 @@
             netsnmp_add_queued(asp);
             DEBUGMSGTL(("snmp_agent",
                         "request queued while processing set, "
-                        "asp = %08p\n", asp));
+                        "asp = %8p\n", asp));
             return 1;
         }
 
@@ -3128,7 +3196,7 @@
              */
             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;
@@ -3385,7 +3453,7 @@
         case MODE_GETNEXT:
         case MODE_GETBULK:
             request->requestvb->type = error_value;
-            return SNMPERR_SUCCESS;
+            break;
 
             /*
              * These are technically illegal to set by the
@@ -3400,7 +3468,7 @@
 
         default:
             request->status = SNMP_ERR_NOSUCHNAME;      /* WWW: correct? */
-            return SNMPERR_SUCCESS;
+            break;
         }
         break;                  /* never get here */
 
@@ -3421,7 +3489,7 @@
              */
             request->status = error_value;
         }
-        return SNMPERR_SUCCESS;
+        break;
     }
     return SNMPERR_SUCCESS;
 }
@@ -3538,67 +3606,6 @@
 }
 
 
-
-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;
-	}
-    }
-}
-
-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);
-}
-
-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);
-    }
-}
-
 /*************************************************************************
  *
  * deprecated functions
diff --git a/agent/snmp_perl.c b/agent/snmp_perl.c
index 4821ad3..7caa335 100644
--- a/agent/snmp_perl.c
+++ b/agent/snmp_perl.c
@@ -53,6 +53,11 @@
         goto bail_out;
 
     perl_construct(my_perl);
+
+#ifdef PERL_EXIT_DESTRUCT_END
+    PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
+#endif
+
     if (perl_parse(my_perl, xs_init, 2, NETSNMP_REMOVE_CONST(char **, embedargs), NULL))
         goto bail_out;
 
diff --git a/agent/snmp_vars.c b/agent/snmp_vars.c
index aaf917f..d8ec51d 100644
--- a/agent/snmp_vars.c
+++ b/agent/snmp_vars.c
@@ -143,6 +143,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"
@@ -312,6 +313,7 @@
     netsnmp_init_helpers();
     init_traps();
     netsnmp_container_init_list();
+    init_agent_sysORTable();
 
 #if defined(USING_AGENTX_SUBAGENT_MODULE) || defined(USING_AGENTX_MASTER_MODULE)
     /*
@@ -366,6 +368,7 @@
     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();
diff --git a/agent/snmpd.c b/agent/snmpd.c
index f467592..f0a6efe 100644
--- a/agent/snmpd.c
+++ b/agent/snmpd.c
@@ -138,6 +138,7 @@
 #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/mib_module_config.h>
@@ -176,7 +177,7 @@
 #define TIMETICK         500000L
 
 int             snmp_dump_packet;
-int             reconfig = 0;
+static int      reconfig = 0;
 int             Facility = LOG_DAEMON;
 
 #ifdef WIN32SERVICE
@@ -430,6 +431,12 @@
     int fd;
     FILE           *PID;
 #endif
+#if HAVE_GETPWNAM && HAVE_PWD_H
+    struct passwd  *info;
+#endif
+#if HAVE_UNISTD_H
+    const char     *persistent_dir;
+#endif
 
 #ifndef WIN32
     /*
@@ -754,7 +761,6 @@
                 uid = strtoul(optarg, &ecp, 10);
                 if (*ecp) {
 #if HAVE_GETPWNAM && HAVE_PWD_H
-                    struct passwd  *info;
                     info = getpwnam(optarg);
                     if (info) {
                         uid = info->pw_uid;
@@ -898,23 +904,6 @@
     *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");
@@ -934,6 +923,20 @@
         Exit(1);                /*  Exit logs exit val for us  */
     }
 
+    /*
+     * 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  */
+    }
+
 #if HAVE_GETPID
     if (pid_file != NULL) {
         /*
@@ -967,20 +970,16 @@
 #endif
 
 #if HAVE_UNISTD_H
-    {
-    const char *const persistent_dir = get_persistent_directory();
+    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, 
 			     NETSNMP_DS_AGENT_GROUPID);
     
-#ifdef HAVE_CHOWN
     if ( uid != 0 || gid != 0 )
         chown( persistent_dir, uid, gid );
-#endif
-    }
 
 #ifdef HAVE_SETGID
     if ((gid = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID, 
@@ -1002,6 +1001,23 @@
 #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
+        /*
+         * 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 : 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);
+                }
+            }
+        }
+#endif
         DEBUGMSGTL(("snmpd/main", "Changing uid to %d.\n", uid));
         if (setuid(uid) == -1) {
             snmp_log_perror("setuid failed");
@@ -1119,13 +1135,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 +1187,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,14 +1206,14 @@
                 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);
+        netsnmp_external_event_info2(&numfds, &readfds, &writefds, &exceptfds);
 
     reselect:
         for (i = 0; i < NUM_EXTERNAL_SIGS; i++) {
@@ -1207,7 +1227,7 @@
                     numfds, tvp));
         if(tvp)
             DEBUGMSGTL(("timer", "tvp %ld.%ld\n", tvp->tv_sec, tvp->tv_usec));
-        count = select(numfds, &readfds, &writefds, &exceptfds, tvp);
+        count = select(numfds, readfds.lfs_setptr, writefds.lfs_setptr, exceptfds.lfs_setptr, tvp);
         DEBUGMSGTL(("snmpd/select", "returned, count = %d\n", count));
 
         if (count > 0) {
@@ -1219,7 +1239,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 +1248,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 +1256,11 @@
             }
 
 #endif                          /* USING_SMUX_MODULE */
-            netsnmp_dispatch_external_events(&count, &readfds,
-                                           &writefds, &exceptfds);
+            netsnmp_dispatch_external_events2(&count, &readfds,
+                                              &writefds, &exceptfds);
             /* If there are still events leftover, process them */
             if (count > 0) {
-              snmp_read(&readfds);
+              snmp_read2(&readfds);
             }
         } else
             switch (count) {
@@ -1276,6 +1296,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
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..61a7a69 100644
--- a/apps/Makefile.depend
+++ b/apps/Makefile.depend
@@ -8,32 +8,14 @@
 ./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/types.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_api.h
-./encode_keychange.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./encode_keychange.lo: ../include/net-snmp/library/asn1.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
@@ -44,11 +26,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./encode_keychange.lo: ../include/net-snmp/library/read_config.h
 ./encode_keychange.lo: ../include/net-snmp/library/default_store.h
@@ -71,22 +73,40 @@
 ./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/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/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/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/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/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
@@ -98,21 +118,7 @@
 ./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
@@ -138,32 +144,14 @@
 ./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/types.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_api.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmpbulkwalk.lo: ../include/net-snmp/varbind_api.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/pdu_api.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/asn1.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
@@ -174,11 +162,31 @@
 ./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/mib_api.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/parse.h
-./snmpbulkwalk.lo: ../include/net-snmp/varbind_api.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/read_config.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/default_store.h
@@ -203,32 +211,14 @@
 ./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/types.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_api.h
-./snmpdelta.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmpdelta.lo: ../include/net-snmp/varbind_api.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/pdu_api.h
+./snmpdelta.lo: ../include/net-snmp/library/asn1.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
@@ -239,10 +229,31 @@
 ./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/mib_api.h
 ./snmpdelta.lo: ../include/net-snmp/library/parse.h
-./snmpdelta.lo: ../include/net-snmp/varbind_api.h
+./snmpdelta.lo: ../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmpdelta.lo: ../include/net-snmp/library/read_config.h
 ./snmpdelta.lo: ../include/net-snmp/library/default_store.h
@@ -267,31 +278,13 @@
 ./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/types.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp_api.h
-./snmpdf.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmpdf.lo: ../include/net-snmp/varbind_api.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/pdu_api.h ../include/net-snmp/library/asn1.h
+./snmpdf.lo: ../include/net-snmp/session_api.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
@@ -302,11 +295,30 @@
 ./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/mib.h ../include/net-snmp/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -328,23 +340,38 @@
 ./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/utilities.h ../include/net-snmp/types.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/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/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/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/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
@@ -356,21 +383,7 @@
 ./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
@@ -396,32 +409,14 @@
 ./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/types.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_api.h
-./snmpgetnext.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmpgetnext.lo: ../include/net-snmp/varbind_api.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/pdu_api.h
+./snmpgetnext.lo: ../include/net-snmp/library/asn1.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
@@ -432,10 +427,31 @@
 ./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/mib_api.h
 ./snmpgetnext.lo: ../include/net-snmp/library/parse.h
-./snmpgetnext.lo: ../include/net-snmp/varbind_api.h
+./snmpgetnext.lo: ../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmpgetnext.lo: ../include/net-snmp/library/read_config.h
 ./snmpgetnext.lo: ../include/net-snmp/library/default_store.h
@@ -460,31 +476,14 @@
 ./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/types.h
 ./snmpset.lo: ../include/net-snmp/library/snmp_api.h
-./snmpset.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmpset.lo: ../include/net-snmp/varbind_api.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/pdu_api.h
+./snmpset.lo: ../include/net-snmp/library/asn1.h
+./snmpset.lo: ../include/net-snmp/session_api.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
@@ -495,11 +494,30 @@
 ./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/mib.h ../include/net-snmp/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -521,23 +539,39 @@
 ./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/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/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/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/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/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
@@ -549,21 +583,7 @@
 ./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
@@ -588,32 +608,14 @@
 ./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/types.h
 ./snmptable.lo: ../include/net-snmp/library/snmp_api.h
-./snmptable.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmptable.lo: ../include/net-snmp/varbind_api.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/pdu_api.h
+./snmptable.lo: ../include/net-snmp/library/asn1.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
@@ -624,10 +626,31 @@
 ./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/mib_api.h
 ./snmptable.lo: ../include/net-snmp/library/parse.h
-./snmptable.lo: ../include/net-snmp/varbind_api.h
+./snmptable.lo: ../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmptable.lo: ../include/net-snmp/library/read_config.h
 ./snmptable.lo: ../include/net-snmp/library/default_store.h
@@ -652,32 +675,14 @@
 ./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/types.h
 ./snmptest.lo: ../include/net-snmp/library/snmp_api.h
-./snmptest.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmptest.lo: ../include/net-snmp/varbind_api.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/pdu_api.h
+./snmptest.lo: ../include/net-snmp/library/asn1.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
@@ -688,11 +693,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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 ../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
@@ -716,21 +741,38 @@
 ./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/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/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/snmpUDPDomain.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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/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
@@ -749,10 +791,6 @@
 ./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
@@ -760,32 +798,14 @@
 ./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/library/types.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp_api.h
-./snmptrap.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmptrap.lo: ../include/net-snmp/varbind_api.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/pdu_api.h
+./snmptrap.lo: ../include/net-snmp/library/asn1.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
@@ -796,11 +816,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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 ../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
@@ -817,6 +857,79 @@
 ./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/snmpusm.h
+./snmptrapd_auth.lo: ../include/net-snmp/net-snmp-config.h
+./snmptrapd_auth.lo: ../include/net-snmp/system/linux.h
+./snmptrapd_auth.lo: ../include/net-snmp/system/sysv.h
+./snmptrapd_auth.lo: ../include/net-snmp/system/generic.h
+./snmptrapd_auth.lo: ../include/net-snmp/machine/generic.h
+./snmptrapd_auth.lo: ../include/net-snmp/net-snmp-includes.h
+./snmptrapd_auth.lo: ../include/net-snmp/definitions.h
+./snmptrapd_auth.lo: ../include/net-snmp/types.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/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/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/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/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/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/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/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: ../include/net-snmp/net-snmp-config.h
 ./snmptrapd.lo: ../include/net-snmp/system/linux.h
 ./snmptrapd.lo: ../include/net-snmp/system/sysv.h
@@ -824,32 +937,14 @@
 ./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/types.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_api.h
-./snmptrapd.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmptrapd.lo: ../include/net-snmp/varbind_api.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/pdu_api.h
+./snmptrapd.lo: ../include/net-snmp/library/asn1.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
@@ -860,10 +955,31 @@
 ./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/mib_api.h
 ./snmptrapd.lo: ../include/net-snmp/library/parse.h
-./snmptrapd.lo: ../include/net-snmp/varbind_api.h
+./snmptrapd.lo: ../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmptrapd.lo: ../include/net-snmp/library/read_config.h
 ./snmptrapd.lo: ../include/net-snmp/library/default_store.h
@@ -920,77 +1036,6 @@
 ./snmptrapd.lo: snmptrapd_log.h snmptrapd_ds.h 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_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
@@ -998,9 +1043,29 @@
 ./snmptrapd_handlers.lo: ../include/net-snmp/machine/generic.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/config_api.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/types.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/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/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/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/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
@@ -1010,15 +1075,8 @@
 ./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 +1094,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
@@ -1105,32 +1152,14 @@
 ./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/types.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_api.h
-./snmptrapd_log.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmptrapd_log.lo: ../include/net-snmp/library/asn1.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
@@ -1141,11 +1170,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/read_config.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/default_store.h
@@ -1164,6 +1213,11 @@
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpv3-security-includes.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/system/linux.h
+./snmptrapd_sql.lo: ../include/net-snmp/system/sysv.h
+./snmptrapd_sql.lo: ../include/net-snmp/system/generic.h
+./snmptrapd_sql.lo: ../include/net-snmp/machine/generic.h
 ./snmpusm.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpusm.lo: ../include/net-snmp/system/linux.h
 ./snmpusm.lo: ../include/net-snmp/system/sysv.h
@@ -1171,31 +1225,14 @@
 ./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/types.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_api.h
-./snmpusm.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmpusm.lo: ../include/net-snmp/varbind_api.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/pdu_api.h
+./snmpusm.lo: ../include/net-snmp/library/asn1.h
+./snmpusm.lo: ../include/net-snmp/session_api.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
@@ -1206,11 +1243,30 @@
 ./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/mib.h ../include/net-snmp/mib_api.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/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/library/getopt.h
+./snmpusm.lo: ../include/net-snmp/utilities.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/data_list.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/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
@@ -1234,32 +1290,14 @@
 ./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/types.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_api.h
-./snmpvacm.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmpvacm.lo: ../include/net-snmp/varbind_api.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/pdu_api.h
+./snmpvacm.lo: ../include/net-snmp/library/asn1.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
@@ -1270,11 +1308,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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 ../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
@@ -1298,32 +1356,14 @@
 ./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/library/types.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_api.h
-./snmpwalk.lo: ../include/net-snmp/library/asn1.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/utilities.h
+./snmpwalk.lo: ../include/net-snmp/varbind_api.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/pdu_api.h
+./snmpwalk.lo: ../include/net-snmp/library/asn1.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
@@ -1334,11 +1374,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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 ../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
@@ -1355,6 +1415,11 @@
 ./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/snmpusm.h
+./sshtosnmp.lo: ../include/net-snmp/net-snmp-config.h
+./sshtosnmp.lo: ../include/net-snmp/system/linux.h
+./sshtosnmp.lo: ../include/net-snmp/system/sysv.h
+./sshtosnmp.lo: ../include/net-snmp/system/generic.h
+./sshtosnmp.lo: ../include/net-snmp/machine/generic.h
 ./snmpnetstat/if.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpnetstat/if.lo: ../include/net-snmp/system/linux.h
 ./snmpnetstat/if.lo: ../include/net-snmp/system/sysv.h
@@ -1363,32 +1428,14 @@
 ./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/types.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_api.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/asn1.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
@@ -1399,11 +1446,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/read_config.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/default_store.h
@@ -1423,73 +1490,6 @@
 ./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
@@ -1498,32 +1498,14 @@
 ./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/types.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_api.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/asn1.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
@@ -1534,11 +1516,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/read_config.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/default_store.h
@@ -1557,6 +1559,75 @@
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpv3-security-includes.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/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/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/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/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/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/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/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/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/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
@@ -1565,32 +1636,14 @@
 ./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/types.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_api.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/asn1.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
@@ -1601,11 +1654,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/read_config.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/default_store.h
@@ -1623,8 +1696,7 @@
 ./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/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
@@ -1633,32 +1705,14 @@
 ./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/types.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_api.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/asn1.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
@@ -1669,11 +1723,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/read_config.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/default_store.h
@@ -1691,8 +1765,7 @@
 ./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/snmpusm.h
-./snmpnetstat/route.lo: ./snmpnetstat/main.h
-./snmpnetstat/route.lo: ./snmpnetstat/netstat.h
+./snmpnetstat/route.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/system/linux.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/system/sysv.h
@@ -1701,32 +1774,14 @@
 ./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/types.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_api.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/asn1.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
@@ -1737,11 +1792,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/read_config.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/default_store.h
diff --git a/apps/Makefile.in b/apps/Makefile.in
index 181d3ff..b847073 100644
--- a/apps/Makefile.in
+++ b/apps/Makefile.in
@@ -17,6 +17,8 @@
 # Things to install
 #
 
+SSHINSTALLBINPROGS = @SSHINSTALLBINPROGS@
+
 INSTALLBINPROGS	= snmpget$(EXEEXT) 			\
 		snmpgetnext$(EXEEXT) 			\
 		snmpset$(EXEEXT) 			\
@@ -32,7 +34,8 @@
 		snmptest$(EXEEXT)			\
 		encode_keychange$(EXEEXT) 		\
 		snmpdf$(EXEEXT) 			\
-		snmpvacm$(EXEEXT)
+		snmpvacm$(EXEEXT)                       \
+                $(SSHINSTALLBINPROGS)
 
 INSTALLSBINPROGS = snmptrapd$(EXEEXT)
 
@@ -50,6 +53,8 @@
 AGENTLIB        = ../agent/libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION)
 MIBLIB          = ../agent/libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION)
 USEAGENTLIBS	= $(MIBLIB) $(AGENTLIB) $(HELPERLIB) $(USELIBS)
+MYSQL_LIBS	= @MYSQL_LIBS@
+MYSQL_INCLUDES	= @MYSQL_INCLUDES@
 
 LIBS		= $(USELIBS) @LIBS@
 PERLLDOPTS_FOR_APPS = @PERLLDOPTS_FOR_APPS@
@@ -57,22 +62,23 @@
 
 #
 # hack for compiling trapd when agent is disabled
-TRAPDWITHAGENT  = $(USETRAPLIBS) @AGENTLIBS@
-TRAPDWITHOUTAGENT = $(LIBS)
+TRAPDWITHAGENT  = $(USETRAPLIBS) $(MYSQL_LIBS) @AGENTLIBS@
+TRAPDWITHOUTAGENT = $(LIBS) $(MYSQL_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
 OBJS  = *.o
 LOBJS = *.lo
 
@@ -158,5 +164,9 @@
 	  @rm -f $(INSTALL_PREFIX)$(snmplibdir)/snmp_perl_trapd.pl
 	  @echo "removed snmp_perl_trapd.pl from $(INSTALL_PREFIX)$(snmplibdir)"
 
+sshtosnmp: sshtosnmp.$(OSUFFIX)
+	$(LINK) ${CFLAGS} -o $@ sshtosnmp.$(OSUFFIX)
+
+
 installdirs:
 	@$(SHELL) $(srcdir)/../mkinstalldirs $(INSTALL_PREFIX)$(snmplibdir)
diff --git a/apps/encode_keychange.c b/apps/encode_keychange.c
index 5b6838e..9441723 100644
--- a/apps/encode_keychange.c
+++ b/apps/encode_keychange.c
@@ -233,8 +233,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 +295,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 +312,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 +323,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"));
diff --git a/apps/snmpdelta.c b/apps/snmpdelta.c
index 4f28f47..7388ec7 100644
--- a/apps/snmpdelta.c
+++ b/apps/snmpdelta.c
@@ -357,7 +357,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;
@@ -439,7 +439,7 @@
 	    	MAX_ARGS);
 	    exit(1);
 	}
-        varinfo[current_name++].name = 0;
+        varinfo[current_name++].name = NULL;
     }
 
     SOCK_STARTUP;
@@ -731,12 +731,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/snmpget.c b/apps/snmpget.c
index 10a6968..33d5d71 100644
--- a/apps/snmpget.c
+++ b/apps/snmpget.c
@@ -126,6 +126,7 @@
     int             failures = 0;
     int             exitval = 0;
 
+
     /*
      * get the common command line arguments 
      */
diff --git a/apps/snmpnetstat/Makefile.depend b/apps/snmpnetstat/Makefile.depend
index b05361a..a329634 100644
--- a/apps/snmpnetstat/Makefile.depend
+++ b/apps/snmpnetstat/Makefile.depend
@@ -7,32 +7,14 @@
 ./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/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/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/pdu_api.h
+./if.lo: ../../include/net-snmp/library/asn1.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
@@ -43,11 +25,31 @@
 ./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/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/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 ../../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/library/snmp_parse_args.h
@@ -66,71 +68,6 @@
 ./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
@@ -139,32 +76,14 @@
 ./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/types.h
 ./inet6.lo: ../../include/net-snmp/library/snmp_api.h
-./inet6.lo: ../../include/net-snmp/library/asn1.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/utilities.h
+./inet6.lo: ../../include/net-snmp/varbind_api.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/pdu_api.h
+./inet6.lo: ../../include/net-snmp/library/asn1.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
@@ -175,10 +94,31 @@
 ./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/mib_api.h
 ./inet6.lo: ../../include/net-snmp/library/parse.h
-./inet6.lo: ../../include/net-snmp/varbind_api.h
+./inet6.lo: ../../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./inet6.lo: ../../include/net-snmp/library/read_config.h
 ./inet6.lo: ../../include/net-snmp/library/default_store.h
@@ -196,6 +136,74 @@
 ./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/snmpusm.h main.h netstat.h
+./inet.lo: ../../include/net-snmp/net-snmp-config.h
+./inet.lo: ../../include/net-snmp/system/linux.h
+./inet.lo: ../../include/net-snmp/system/sysv.h
+./inet.lo: ../../include/net-snmp/system/generic.h
+./inet.lo: ../../include/net-snmp/machine/generic.h
+./inet.lo: ../../include/net-snmp/net-snmp-includes.h
+./inet.lo: ../../include/net-snmp/definitions.h
+./inet.lo: ../../include/net-snmp/types.h
+./inet.lo: ../../include/net-snmp/library/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/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/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/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/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/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/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
 ./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
@@ -204,32 +212,14 @@
 ./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/types.h
 ./main.lo: ../../include/net-snmp/library/snmp_api.h
-./main.lo: ../../include/net-snmp/library/asn1.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/utilities.h
+./main.lo: ../../include/net-snmp/varbind_api.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/pdu_api.h
+./main.lo: ../../include/net-snmp/library/asn1.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
@@ -240,10 +230,31 @@
 ./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/mib_api.h
 ./main.lo: ../../include/net-snmp/library/parse.h
-./main.lo: ../../include/net-snmp/varbind_api.h
+./main.lo: ../../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./main.lo: ../../include/net-snmp/library/read_config.h
 ./main.lo: ../../include/net-snmp/library/default_store.h
@@ -261,8 +272,7 @@
 ./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: 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
@@ -271,32 +281,14 @@
 ./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/types.h
 ./route.lo: ../../include/net-snmp/library/snmp_api.h
-./route.lo: ../../include/net-snmp/library/asn1.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/utilities.h
+./route.lo: ../../include/net-snmp/varbind_api.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/pdu_api.h
+./route.lo: ../../include/net-snmp/library/asn1.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
@@ -307,10 +299,31 @@
 ./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/mib_api.h
 ./route.lo: ../../include/net-snmp/library/parse.h
-./route.lo: ../../include/net-snmp/varbind_api.h
+./route.lo: ../../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./route.lo: ../../include/net-snmp/library/read_config.h
 ./route.lo: ../../include/net-snmp/library/default_store.h
@@ -328,8 +341,7 @@
 ./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: 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
@@ -338,32 +350,14 @@
 ./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/types.h
 ./winstub.lo: ../../include/net-snmp/library/snmp_api.h
-./winstub.lo: ../../include/net-snmp/library/asn1.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/utilities.h
+./winstub.lo: ../../include/net-snmp/varbind_api.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/pdu_api.h
+./winstub.lo: ../../include/net-snmp/library/asn1.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
@@ -374,11 +368,31 @@
 ./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/mib_api.h
 ./winstub.lo: ../../include/net-snmp/library/parse.h
-./winstub.lo: ../../include/net-snmp/varbind_api.h
+./winstub.lo: ../../include/net-snmp/library/oid_stash.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/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/data_list.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/config_api.h
 ./winstub.lo: ../../include/net-snmp/library/read_config.h
 ./winstub.lo: ../../include/net-snmp/library/default_store.h
diff --git a/apps/snmpnetstat/if.c b/apps/snmpnetstat/if.c
index 6a8a515..43e502d 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"
diff --git a/apps/snmpnetstat/inet.c b/apps/snmpnetstat/inet.c
index 7dc3ff1..a69fb5b 100644
--- a/apps/snmpnetstat/inet.c
+++ b/apps/snmpnetstat/inet.c
@@ -106,20 +106,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 = 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(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(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,7 +172,7 @@
      *   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;
@@ -135,45 +180,7 @@
         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 );
 }
@@ -230,6 +237,110 @@
     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;
+                    }
+
+					tcpprotoprint_line(name, vp, &first);
+
+                    if ((vp->type != SNMP_ENDOFMIBVIEW) &&
+                        (vp->type != SNMP_NOSUCHOBJECT) &&
+                        (vp->type != SNMP_NOSUCHINSTANCE)) {
+                        /*
+                         * 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);
+	}
+}
+
 
 	/*********************
 	 *
@@ -449,7 +560,7 @@
 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;
 
diff --git a/apps/snmpnetstat/inet6.c b/apps/snmpnetstat/inet6.c
index 799c961..4535c0a 100644
--- a/apps/snmpnetstat/inet6.c
+++ b/apps/snmpnetstat/inet6.c
@@ -413,7 +413,7 @@
 		(ret) = getservbyport((int)(port), (proto)); \
 	} while (0)
 
-	struct servent *sp = 0;
+	struct servent *sp = NULL;
 	char line[80], *cp;
 	int width;
 	int len = sizeof line;
@@ -470,7 +470,7 @@
 			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);
 		if (hp) {
diff --git a/apps/snmpnetstat/main.c b/apps/snmpnetstat/main.c
index 947c02b..ac2b04f 100644
--- a/apps/snmpnetstat/main.c
+++ b/apps/snmpnetstat/main.c
@@ -75,9 +75,11 @@
 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;
 
@@ -85,30 +87,32 @@
      * 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 */
+	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 */
 } 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 }
 };
 
 	/* {ipx,ns,atalk}protox Omitted */
@@ -231,6 +235,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 */
@@ -396,7 +418,7 @@
 			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)
+			if (tp->pr_name == NULL || tp->pr_wanted == 0)
 				continue;
 			printproto(tp, p->p_name);
 		}
diff --git a/apps/snmpnetstat/netstat.h b/apps/snmpnetstat/netstat.h
index 2762568..355c8b2 100644
--- a/apps/snmpnetstat/netstat.h
+++ b/apps/snmpnetstat/netstat.h
@@ -62,6 +62,7 @@
 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 */
 
diff --git a/apps/snmptable.c b/apps/snmptable.c
index 3970e97..1422ece 100644
--- a/apps/snmptable.c
+++ b/apps/snmptable.c
@@ -256,7 +256,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);
 
diff --git a/apps/snmptest.c b/apps/snmptest.c
index 499bacf..28f9254 100644
--- a/apps/snmptest.c
+++ b/apps/snmptest.c
@@ -127,7 +127,7 @@
     }
 
     varcount = 0;
-    while (1) {
+    for(;;) {
         vars = NULL;
         for (ret = 1; ret != 0;) {
             vp = (netsnmp_variable_list *)
@@ -277,8 +277,7 @@
         varcount = 0;
         nonRepeaters = -1;
     }
-    SOCK_CLEANUP;
-    return 0;
+    /* NOTREACHED */
 }
 
 int
@@ -286,8 +285,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);
@@ -368,13 +366,15 @@
         }
         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) {
@@ -481,14 +481,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/snmptranslate.c b/apps/snmptranslate.c
index 1ef9193..750d60f 100644
--- a/apps/snmptranslate.c
+++ b/apps/snmptranslate.c
@@ -240,6 +240,7 @@
         }
     }
 
+    snmp_enable_stderrlog();
     init_snmp("snmpapp");
     if (optind < argc)
         current_name = argv[optind];
diff --git a/apps/snmptrap.c b/apps/snmptrap.c
index d16d2fa..55320f8 100644
--- a/apps/snmptrap.c
+++ b/apps/snmptrap.c
@@ -104,26 +104,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)
 {
@@ -298,7 +278,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..4ee615d 100644
--- a/apps/snmptrapd.c
+++ b/apps/snmptrapd.c
@@ -139,22 +139,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,7 +210,7 @@
 #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
 
@@ -215,10 +220,6 @@
 
 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 +232,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 +252,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");
@@ -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 
@@ -614,13 +545,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)
@@ -666,7 +590,7 @@
     char            options[128] = "aAc:CdD::efF:g:hHI:L:m:M:no:O:PqsS:tu:vx:-:";
     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;
@@ -677,6 +601,7 @@
 #endif
     netsnmp_trapd_handler *traph;
 
+
 #ifndef WIN32
     /*
      * close all non-standard file descriptors we may have
@@ -693,6 +618,7 @@
 #ifdef SIGHUP
     signal(SIGHUP, SIG_IGN);   /* do not terminate on early SIGHUP */
 #endif
+
 #ifdef SIGINT
     signal(SIGINT, term_handler);
 #endif
@@ -700,14 +626,13 @@
     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
     init_usm_conf( "snmptrapd" );
     register_config_handler("snmptrapd", "snmpTrapdAddr",
                             parse_trapd_address, free_trapd_address, "string");
@@ -731,21 +656,12 @@
     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.  
      */
@@ -811,17 +727,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 +791,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 +820,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 +854,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':
@@ -1097,24 +963,6 @@
         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? 
@@ -1219,10 +1067,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, 
@@ -1245,6 +1090,63 @@
 #endif        
     }
 
+    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;
+        }
+    }
+    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 +1196,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
@@ -1401,10 +1251,7 @@
                          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);
+                parse_format( NULL, trap1_fmt_str_remember );
             }
             reconfig = 0;
         }
@@ -1421,7 +1268,7 @@
             tvp = NULL;         /* block without timeout */
         netsnmp_external_event_info(&numfds, &readfds, &writefds, &exceptfds);
         count = select(numfds, &readfds, &writefds, &exceptfds, tvp);
-        gettimeofday(&Now, 0);
+        gettimeofday(&Now, NULL);
         if (count > 0) {
             netsnmp_dispatch_external_events(&count, &readfds, &writefds,
                                              &exceptfds);
diff --git a/apps/snmptrapd_auth.c b/apps/snmptrapd_auth.c
index 119de58..b7fb605 100644
--- a/apps/snmptrapd_auth.c
+++ b/apps/snmptrapd_auth.c
@@ -126,8 +126,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_handlers.c b/apps/snmptrapd_handlers.c
index 37ca5ab..0176aa7 100644
--- a/apps/snmptrapd_handlers.c
+++ b/apps/snmptrapd_handlers.c
@@ -41,6 +41,11 @@
 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 +86,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 +121,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 +135,8 @@
         traph->flags = flags;
         traph->authtypes = TRAP_AUTH_EXE;
         traph->token = strdup(cptr);
+        if (format)
+            traph->format = format;
     }
 }
 
@@ -138,17 +150,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 +185,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,14 +201,16 @@
         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
@@ -209,8 +228,9 @@
         return;
     }
 
+    sep = cp;
     *(cp++) = '\0';
-    while (*cp && !isspace(*cp))
+    while (*cp && isspace(*cp))
         cp++;
 
     /*
@@ -240,7 +260,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 +322,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 +341,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 +371,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 +389,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,31 +400,14 @@
     return traph;
 }
 
-
 /*
  * 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);
 }
 
 
@@ -399,7 +433,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 +548,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 +569,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 +588,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 +602,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 +627,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 +709,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,159 +776,11 @@
 }
 
 
+#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)
@@ -928,16 +818,25 @@
                                              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 */
+        run_shell_command(handler->token, (char*)rbuf, NULL, NULL);   /* Not interested in output */
         snmp_set_quick_print(oldquick);
         if (pdu->command == SNMP_MSG_TRAP)
             snmp_free_pdu(v2_pdu);
@@ -950,23 +849,6 @@
 
 
 /*
- *  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,7 +937,7 @@
     netsnmp_variable_list *vars;
     netsnmp_trapd_handler *traph;
     netsnmp_transport *transport = (netsnmp_transport *) magic;
-    int ret;
+    int ret, idx;
     extern netsnmp_trapd_handler *netsnmp_auth_global_traphandlers;
     extern netsnmp_trapd_handler *netsnmp_pre_global_traphandlers;
     extern netsnmp_trapd_handler *netsnmp_post_global_traphandlers;
@@ -1156,77 +1038,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..f488302 100644
--- a/apps/snmptrapd_log.c
+++ b/apps/snmptrapd_log.c
@@ -619,6 +619,8 @@
     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) {
         return 0;
@@ -674,130 +676,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 +795,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);
diff --git a/apps/snmptrapd_sql.c b/apps/snmptrapd_sql.c
new file mode 100644
index 0000000..98d3fbe
--- /dev/null
+++ b/apps/snmptrapd_sql.c
@@ -0,0 +1,1115 @@
+/*
+ * 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>
+
+#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_WINSOCK_H
+#include <winsock.h>
+#else
+#include <netinet/in.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>
+
+/*
+ * 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) */
+    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;
+
+    u_int16_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;
+    u_int16_t  version, type;
+    u_int32_t  reqid;
+
+    char      *transport;
+    u_long     transport_len;
+
+    u_int16_t  security_level, security_model;
+    u_int32_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",
+               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);
+}
+
+#endif /* NETSNMP_USE_MYSQL */
diff --git a/apps/snmpusm.c b/apps/snmpusm.c
index d1cba87..f86515e 100644
--- a/apps/snmpusm.c
+++ b/apps/snmpusm.c
@@ -301,7 +301,7 @@
                 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]) {
diff --git a/apps/snmpvacm.c b/apps/snmpvacm.c
index cf071f2..bdba896 100644
--- a/apps/snmpvacm.c
+++ b/apps/snmpvacm.c
@@ -90,19 +90,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 +107,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;
diff --git a/apps/snmpwalk.c b/apps/snmpwalk.c
index 361341a..b0db3f4 100644
--- a/apps/snmpwalk.c
+++ b/apps/snmpwalk.c
@@ -80,6 +80,8 @@
 oid             objid_mib[] = { 1, 3, 6, 1, 2, 1 };
 int             numprinted = 0;
 
+char           *end_name = NULL;
+
 void
 usage(void)
 {
@@ -96,6 +98,7 @@
             "\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");
+    fprintf(stderr, "\t\t\t  E {OID}:  End the walk at the specified OID\n");
 }
 
 void
@@ -151,6 +154,10 @@
                 netsnmp_ds_toggle_boolean(NETSNMP_DS_APPLICATION_ID,
                                           NETSNMP_DS_WALK_TIME_RESULTS);
                 break;
+
+            case 'E':
+                end_name = argv[optind++];
+                break;
                 
             default:
                 fprintf(stderr, "Unknown flag passed to -C: %c\n",
@@ -173,6 +180,8 @@
     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;
@@ -233,6 +242,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;
 
     /*
@@ -284,9 +310,8 @@
                  */
                 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 
                          */
diff --git a/apps/sshtosnmp.c b/apps/sshtosnmp.c
new file mode 100644
index 0000000..070a45d
--- /dev/null
+++ b/apps/sshtosnmp.c
@@ -0,0 +1,234 @@
+/* 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);
+    u_short name_len;
+    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..ca2a03c 100755
--- a/config.guess
+++ b/config.guess
@@ -4,7 +4,7 @@
 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
 #   Free Software Foundation, Inc.
 
-timestamp='2008-01-23'
+timestamp='2008-01-08'
 
 # 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
@@ -1484,9 +1484,9 @@
 the operating system you are using. It is advised that you
 download the most up to date version of the config scripts from
 
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
 and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
 
 If the version you run ($0) is already up to date, please
 send the following data and any information you think might be
diff --git a/configure b/configure
index f0adeaf..8ae958a 100755
--- a/configure
+++ b/configure
Binary files differ
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..3cb4cdd
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,122 @@
+# 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.5.2], [net-snmp-coders@lists.sourceforge.net])
+AC_PREREQ([2.63])
+AC_CONFIG_SRCDIR([agent/mibgroup/ucd-snmp/extensible.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_os_progs])
+m4_include([configure.d/config_project_paths])
+m4_include([configure.d/config_os_headers])
+m4_include([configure.d/config_project_ipv6_types])
+m4_include([configure.d/config_modules_lib])
+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])
+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])
+m4_include([configure.d/config_os_functions])
+m4_include([configure.d/config_os_struct_members])
+m4_include([configure.d/config_os_misc4])
+
+#
+# define the agent libraries variables
+#
+AC_SUBST(LMIBLIBS)
+AC_SUBST(AGENTLIBS)
+AC_SUBST(OTHERAGENTLIBOBJS)
+AC_SUBST(OTHERAGENTLIBLOBJS)
+
+m4_include([configure.d/config_project_manual])
+
+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_FILES([net-snmp-create-v3-user:net-snmp-create-v3-user.in],
+		[chmod +x net-snmp-create-v3-user])
+
+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..7815448
--- /dev/null
+++ b/configure.d/config_modules_agent
@@ -0,0 +1,780 @@
+# -*- 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 -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:
+    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 | $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
+        #
+        AH_TOP([#define config_exclude(x)])
+	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
+        #
+        AH_TOP([#define config_arch_require(x,y)])
+        changequote(, )
+        new_list_arch=`$MODULECPP module_tmp_header.h | $GREP config_arch_require | $SED 's/.*config_arch_require( *\([^ ]*\) *, *\([^ ]*\) *).*/\1-xarchx-\2/'`
+        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 | \
+            $GREP config_version_require | \
+            $SED -e 's/  */ /g' \
+                 -e 's/.*config_version_require(( *\([^)]*\) *)).*/\1/' \
+                 -e 's/ *, */,/g' | \
+            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]);
+                }
+                {
+                    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 | $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
+        #
+        AH_TOP([#define config_add_mib(x)])
+	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)
+        #
+        AH_TOP([#define config_parse_dot_conf(w,x,y,z)])
+        changequote(, )
+        $MODULECPP module_tmp_header.h | $GREP config_parse_dot_conf | $SED 's@.*config_parse_dot_conf(\([^)]*\), *\([^),]*\), *\([^),]*\), *\([^),]*\)).*@register_config_handler("snmpd",\1, \2, \3, \4);@' >> $mibdir/mib_module_dot_conf.h
+	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 | $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
+        #
+        AH_TOP([#define config_warning(x)])
+	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 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 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=`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(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(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)
diff --git a/configure.d/config_modules_lib b/configure.d/config_modules_lib
new file mode 100644
index 0000000..4334f42
--- /dev/null
+++ b/configure.d/config_modules_lib
@@ -0,0 +1,345 @@
+# -*- 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_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"; 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=""
+new_with_transport_list=`echo $with_transports | $SED 's/,/ /g;'`
+new_with_out_transport_list=`echo $with_out_transports | $SED 's/,/ /g;'`
+
+#
+# Add the default transports to the list
+#
+if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then 
+  transport_default_list="UDP TCP Alias Callback"
+else
+  transport_default_list="UDP TCP Alias Unix Callback"
+fi
+if test "x$enable_ipv6" = "xyes"; then
+  transport_default_list="UDPIPv6 TCPIPv6 $transport_default_list"
+fi
+for i in $transport_default_list; do
+  if echo " $new_with_transport_list " | $GREP " $i " >/dev/null; then
+    :
+  else
+    transport_add_list="$i $transport_add_list"
+  fi
+done
+new_transport_list="$transport_add_list $new_with_transport_list"
+
+for i in $new_transport_list; do
+  if echo " $new_with_out_transport_list " | $GREP " $i " >/dev/null; then
+    if test "x$i" = "xUDP"; then
+      echo
+      AC_MSG_ERROR(It is not possible to compile without UDP/IP support.)
+    fi
+    continue
+  else
+    if test "x$i" = "xAAL5PVC"; then
+      if test "x$PARTIALTARGETOS" != "xlinux"; then
+        echo
+        AC_MSG_ERROR(AAL5 PVC support unavailable for this platform (Linux only))
+      fi
+    fi
+    if test "x$i" = "xIPX"; then
+      if test "x$PARTIALTARGETOS" != "xlinux"; then
+        echo
+        AC_MSG_ERROR(IPX support unavailable for this platform (Linux only))
+      fi
+    fi
+    if test "x$i" = "xUnix"; then
+      if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
+        echo
+        AC_MSG_ERROR(Unix domain protocol support unavailable for this platform)
+      fi
+    fi
+    if test ! "x$enable_ipv6" = "xyes"; then
+        if test "x$i" = "xUDPIPv6" -o "x$i" = "xTCPIPv6"; then
+            echo
+            AC_MSG_ERROR(IPv6 transports not available if IPv6 support is not enabled)
+        fi
+    fi
+    transport_src="snmp"$i"Domain.c"
+    transport_hdr="snmp"$i"Domain.h"
+    rel_transport_src="snmplib/"$transport_src
+    rel_transport_hdr="include/net-snmp/library/"$transport_hdr
+    if test -f "$srcdir/$rel_transport_src"; then
+      transport_result_list="$transport_result_list $i"
+      transport_src_list="$transport_src $transport_src_list"
+      if test -f "$srcdir/$rel_transport_hdr"; then
+        transport_hdr_list="$transport_hdr $transport_hdr_list"
+      fi
+      transport_def=`echo $i | $SED 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+      transport_def_list="NETSNMP_TRANSPORT_"$transport_def"_DOMAIN $transport_def_list"
+    else
+      echo
+      AC_MSG_ERROR(Cannot find file $srcdir/$rel_transport_src to support SNMP transport domain $i.)
+    fi
+  fi
+done
+transport_obj_list=`echo " $transport_src_list " | $SED 's/\.c/\.o/g'` 	 
+transport_lobj_list=`echo " $transport_src_list " | $SED 's/\.c/\.lo/g'`
+
+## MinGW requires inet_ntop() and inet_pton().
+if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
+  if echo "$transport_def_list" | $GREP "IPV6" >/dev/null; then
+    transport_obj_list="$transport_obj_list inet_ntop.o inet_pton.o"
+    transport_lobj_list="$transport_lobj_list inet_ntop.lo inet_pton.lo"
+  fi
+fi
+
+AC_SUBST(transport_hdr_list)
+AC_SUBST(transport_src_list)
+AC_SUBST(transport_obj_list)
+AC_SUBST(transport_lobj_list)
+for i in $transport_def_list; do
+  AC_DEFINE_UNQUOTED($i)
+done
+AC_MSG_RESULT($transport_result_list.)
+AC_MSG_CACHE_ADD(Network transport support: $transport_result_list)
+
+#
+# Security modules to use
+# 
+
+AC_MSG_CHECKING([for security modules to use])
+security_def_list="usm"
+security_src_list=""
+security_obj_list="" 	 
+security_lobj_list=""
+security_init_file="snmplib/snmpsm_init.h"
+security_incl_file="include/net-snmp/library/snmpv3-security-includes.h"
+new_with_security=`echo $with_security_modules | $SED 's/,/ /g;'`
+new_with_out_security=`echo $with_out_security_modules | $SED 's/,/ /g;'`
+
+if test ! -d include; then
+  mkdir include
+fi
+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
+#
+
+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 lim_sensors v3 or later])],,
+        [[#include <sensors/sensors.h>]])
+fi
diff --git a/configure.d/config_os_functions b/configure.d/config_os_functions
new file mode 100644
index 0000000..a7162d6
--- /dev/null
+++ b/configure.d/config_os_functions
@@ -0,0 +1,230 @@
+# -*- 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([fork            gai_strerror                   ] dnl
+               [getaddrinfo     gethostname   gethostbyname    ] dnl
+               [getipnodebyname               gettimeofday     ] dnl
+               [if_nametoindex  mkstemp       regcomp          ] dnl
+               [readdir                                        ] dnl
+               [setenv          setitimer     setlocale        ] dnl
+               [setsid          snprintf                       ] dnl
+               [strcasestr      strdup        strerror         ] dnl
+               [strlcat         strlcpy       strncasecmp      ] dnl
+               [strtok_r        strtol        strtoul          ] dnl
+               [strtoull        sysconf       times            ] dnl
+               [vsnprintf                                      ] )
+
+#  Agent:
+AC_CHECK_FUNCS([cgetnext        execv         gai_strerror     ] dnl
+               [getfsstat       getgrnam      gethostname      ] dnl
+               [                getloadavg                     ] dnl
+               [getpid          getpwnam      getvfsstat       ] dnl
+               [hasmntopt       initgroups                     ] dnl
+               [if_nameindex    if_nametoindex                 ] dnl
+               [kinfo_get_cpus                                 ] dnl
+               [mkstemp         mktime                         ] dnl
+               [poll            regcomp                        ] dnl
+               [setgid          setgroups                      ] dnl
+               [setmntent       setuid                         ] dnl
+               [sigaction       sigblock      sighold          ] 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_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, 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([[
+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])
diff --git a/configure.d/config_os_headers b/configure.d/config_os_headers
new file mode 100644
index 0000000..3803734
--- /dev/null
+++ b/configure.d/config_os_headers
@@ -0,0 +1,508 @@
+#########################################
+##
+# 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>
+
+##
+#   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/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
+                 [           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                        ])
+
+
+# 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
+    ]])
+
+#       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_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP6_H
+#include <netinet/ip6.h>
+#endif
+#if HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#if HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+    ]])
+
+#       requiring <netinet/in.h>                        (OpenBSD 2.6)
+#  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))
+
+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))
+        ;;
+    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])
+
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..cc47545
--- /dev/null
+++ b/configure.d/config_os_libs2
@@ -0,0 +1,385 @@
+# -*- 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)
+  ;;
+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)
+
+
+##
+#   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
+
+
+#   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_SEARCH_LIBS(
+	    nl_connect, nl,
+	    [AC_CHECK_HEADERS(netlink/netlink.h)],,, LMIBLIBS)
+    ;;
+    esac
+fi
+
+
+
+##
+#   More complex checks:
+##
+
+#   Security related functions
+#
+NONAGENTLIBS=$LIBS	 # save old libraries
+SSHINSTALLBINPROGS=""
+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_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 "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)
+        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]),)
+            SSHINSTALLBINPROGS=sshtosnmp
+        fi
+    fi
+elif test "x$askedpkcs" = "xyes"; then
+    AC_CHECK_LIB(pkcs11, C_Initialize,
+        AC_DEFINE(HAVE_LIBPKCS11)
+        LIBPKCS11="-lpkcs11")
+fi
+LIBS=$NONAGENTLIBS	 # restore old libraries
+AC_SUBST(SSHINSTALLBINPROGS)
+
+
+#   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_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
+
+
+##
+#   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..3d867b2
--- /dev/null
+++ b/configure.d/config_os_misc2
@@ -0,0 +1,88 @@
+# -*- 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$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(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
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..81dded5
--- /dev/null
+++ b/configure.d/config_os_misc4
@@ -0,0 +1,286 @@
+# -*- 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])
+
+
+#       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
+##
+
+#       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
diff --git a/configure.d/config_os_progs b/configure.d/config_os_progs
new file mode 100644
index 0000000..addbc71
--- /dev/null
+++ b/configure.d/config_os_progs
@@ -0,0 +1,397 @@
+# -*- 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(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=$?
+
+
+##
+#   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(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;;
+  *)
+    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*)
+        #   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*)
+        #   Flat Namespace linking                      (Mac OS/X)
+        #
+        AC_MSG_CHECKING([whether darwin ld might need -flat_namespace])
+	if test -z "$MACOSX_DEPLOYMENT_TARGET"; then
+		LDFLAGS="-flat_namespace $LDFLAGS"
+		AC_MSG_RESULT([yes])
+	else
+		AC_MSG_RESULT([no])
+	fi
+	;;
+
+    *)
+        ;;
+esac
+
+
+
+##
+#   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..6ca777b
--- /dev/null
+++ b/configure.d/config_os_struct_members
@@ -0,0 +1,703 @@
+# -*- 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
+    ]])
+#
+#   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 msghdr
+#   Library:
+#
+AC_CHECK_MEMBERS([struct msghdr.msg_control],,,[
+    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 statfs
+#   Agent:
+#
+AC_CHECK_MEMBERS([struct statfs.f_favail,
+                  struct statfs.f_ffree,
+                  struct statfs.f_files,
+                  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 
+    ]])
+
+#       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
+    ]])
+
+#       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_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
+    ]])
+
+
+##
+#   rtentry structure checks:
+##
+
+# Check struct rtentry for common fields
+#   Agent:
+#
+AC_CHECK_MEMBERS([struct rtentry.rt_dst,
+                  struct rtentry.rt_hash,
+                  struct rtentry.rt_next,
+                  struct rtentry.rt_refcnt,
+                  struct rtentry.rt_unit,
+                  struct rtentry.rt_use],,,
+    [
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#endif
+#ifdef HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+    ])
+
+
+# Check for BSD 4.3 vs 4.4 struct rtentry
+#
+AC_CACHE_CHECK([type of rtentry structure],
+    [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..5a1b3fb
--- /dev/null
+++ b/configure.d/config_project_ipv6_types
@@ -0,0 +1,220 @@
+# -*- 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"])
+			;;
+		cygwin)
+			AC_EGREP_CPP(yes, [
+#include <netinet/in.h>
+#ifdef _CYGWIN_IN6_H
+yes
+#endif],
+				[v6type=$i;
+				v6lib=dummy;
+				v6libdir=none
+				v6trylibc=yes;
+				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
+                       ;;
+		generic)
+                        AC_MSG_RESULT([[postponed]])
+			AC_CHECK_MEMBER([struct sockaddr_in6.sin6_addr],,,[
+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_have_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..cee8367
--- /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
+#
+if test "x$exec_prefix" = "xNONE"; then
+    exec_prefix=$prefix
+fi
+
+#       Prefix must be an absolute path
+#           i.e. begin with "/"                         (Unix)
+#                or "[A-Z]:"                            (Windows)
+#
+firstchar=`echo $exec_prefix | $SED 's/\(.\).*/\1/'`
+if test "x$firstchar" != "x/" ; then
+   secondchar=`echo $exec_prefix | $SED 's/.\(.\).*/\1/'`
+   if test "x$secondchar" != "x:" ; then
+      exec_prefix=`pwd`/$exec_prefix
+      echo "adjusting exec_prefix to $exec_prefix"
+   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..812b66f
--- /dev/null
+++ b/configure.d/config_project_perl_python
@@ -0,0 +1,362 @@
+# -*- 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
+    ;;
+
+    *)
+    ;;
+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"
+
+      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=""
+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 to pre-libwrap value   (???)
+#
+AGENTLIBS=$LIBS
+LIBS=$NONAGENTLIBS
+
+
+
+##
+#   Python checks
+##
+
+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)
+
+
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..3a93fec
--- /dev/null
+++ b/configure.d/config_project_with_enable
@@ -0,0 +1,1024 @@
+# -*- 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.],
+    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_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
+
+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:
+#       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"
+   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)
+
+#       Applications
+#
+NETSNMP_ARG_ENABLE(applications,
+[  --disable-applications          Do not build the apps (snmpget, ...).])
+if test "x$enable_applications" != "xno"; then
+   MAINSUBS="$MAINSUBS apps"
+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_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.
+    SSH         (alpha) support for tunneling SNMP over SSH
+    DTLSUDP     (alpha) support for tunneling SNMP over DTLS/UDP
+])
+
+#
+# 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
+                           (required and always compiled in)
+        ksm                support for kerberos based SNMP security
+        tsm                support for the Transport-based security
+                           (for use with the SSH and DTLSUDP transports)
+])
+
+
+##
+#   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])
+   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])
+
+
+##
+#   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..d7c8f84
--- /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.5.2
+
+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..c95fea5 100644
--- a/dist/autoconf-version
+++ b/dist/autoconf-version
@@ -1 +1 @@
-2.59
+2.63
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/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 967c5be..f0fb803 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>
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..ac1fe20 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.5.2
 # 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..6b71082
--- /dev/null
+++ b/dist/patme
@@ -0,0 +1,347 @@
+#!/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.4,5.3,5.2',
+ 'p' => '-p0',
+);
+
+# sets the order shown
+our @codetrees = ('main',
+		  '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',
+		  '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..29824b1 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. 
diff --git a/include/net-snmp/agent/agent_handler.h b/include/net-snmp/agent/agent_handler.h
index 69151a8..86fa1c5 100644
--- a/include/net-snmp/agent/agent_handler.h
+++ b/include/net-snmp/agent/agent_handler.h
@@ -207,12 +207,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 *,
diff --git a/include/net-snmp/agent/agent_registry.h b/include/net-snmp/agent/agent_registry.h
index e9e2845..44fe42e 100644
--- a/include/net-snmp/agent/agent_registry.h
+++ b/include/net-snmp/agent/agent_registry.h
@@ -35,14 +35,16 @@
 };
 
 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 {
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..3ef4c6e 100644
--- a/include/net-snmp/agent/agent_trap.h
+++ b/include/net-snmp/agent/agent_trap.h
@@ -14,7 +14,11 @@
 void            send_easy_trap(int, int);
 void            send_trap_pdu(netsnmp_pdu *);
 void            send_v2trap(netsnmp_variable_list *);
+void            send_v3trap(netsnmp_variable_list *vars, char *context);
 void            send_trap_vars(int, int, netsnmp_variable_list *);
+void            send_trap_vars_with_context(int trap, int specific, 
+                                          netsnmp_variable_list *vars, 
+										  char *context);
 void            send_enterprise_trap_vars(int trap, int specific,
                                           oid * enterprise,
                                           int enterprise_length,
diff --git a/include/net-snmp/agent/cache_handler.h b/include/net-snmp/agent/cache_handler.h
index e5ac653..b002159 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
 
@@ -74,7 +84,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 +94,13 @@
     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_free(netsnmp_cache *cache);
+
     netsnmp_mib_handler *
     netsnmp_cache_handler_get(netsnmp_cache* cache);
 
-    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);
diff --git a/include/net-snmp/agent/ds_agent.h b/include/net-snmp/agent/ds_agent.h
index aabb792..86c74d4 100644
--- a/include/net-snmp/agent/ds_agent.h
+++ b/include/net-snmp/agent/ds_agent.h
@@ -42,6 +42,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/fsys.h b/include/net-snmp/agent/hardware/fsys.h
new file mode 100644
index 0000000..cd7880c
--- /dev/null
+++ b/include/net-snmp/agent/hardware/fsys.h
@@ -0,0 +1,93 @@
+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_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;
+
+     long size;
+     long used;
+     long avail;
+     long units;
+
+     long inums_total;
+     long inums_avail;
+
+     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 );
+
+unsigned int netsnmp_fsys_size( netsnmp_fsys_info* );
+unsigned int netsnmp_fsys_used( netsnmp_fsys_info* );
+unsigned int netsnmp_fsys_avail(netsnmp_fsys_info* );
diff --git a/include/net-snmp/agent/hardware/sensors.h b/include/net-snmp/agent/hardware/sensors.h
new file mode 100644
index 0000000..66a10bd
--- /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( 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..efc8dd3 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,13 @@
                                    const char *contextName);
 
 Netsnmp_Node_Handler netsnmp_instance_helper_handler;
+#ifndef NETSNMP_NO_DEPRECATED_FUNCTIONS
 Netsnmp_Node_Handler netsnmp_instance_ulong_handler;
 Netsnmp_Node_Handler netsnmp_instance_long_handler;
 Netsnmp_Node_Handler netsnmp_instance_int_handler;
 Netsnmp_Node_Handler netsnmp_instance_uint_handler;
 Netsnmp_Node_Handler netsnmp_instance_counter32_handler;
+#endif
 Netsnmp_Node_Handler netsnmp_instance_num_file_handler;
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/agent/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..0608591
--- /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 = 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..82495ec 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,12 @@
     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);
+    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 +150,8 @@
     netsnmp_table_registration_info
         *netsnmp_find_table_registration_info(netsnmp_handler_registration
                                               *reginfo);
+    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 +163,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..dc6bfa8 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*
diff --git a/include/net-snmp/agent/table_dataset.h b/include/net-snmp/agent/table_dataset.h
index cc26eb6..7d8aeec 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
 
 
 /* ============================
@@ -177,11 +173,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_tdata.h b/include/net-snmp/agent/table_tdata.h
index 242b159..28c049d 100644
--- a/include/net-snmp/agent/table_tdata.h
+++ b/include/net-snmp/agent/table_tdata.h
@@ -83,9 +83,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 *);
diff --git a/include/net-snmp/agent/watcher.h b/include/net-snmp/agent/watcher.h
index 43a19d7..3c6d605 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,8 +57,11 @@
     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_scalar(   netsnmp_handler_registration *reginfo,
@@ -44,38 +79,51 @@
  */
 
 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_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..80cf5d6 100644
--- a/include/net-snmp/config_api.h
+++ b/include/net-snmp/config_api.h
@@ -8,6 +8,49 @@
 
 #include <net-snmp/types.h>
 
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    struct config_line *register_config_handler(const char *filePrefix,
+                                                const char *token,
+                                                void (*parser) (const char *, char *),
+                                                void (*releaser) (void),
+                                                const char *usageLine);
+    struct config_line *register_app_config_handler(
+                                                const char *token,
+                                                void (*parser) (const char *, char *),
+                                                void (*releaser) (void),
+                                                const char *usageLine);
+
+/* These two are documented as "register{,_app}_premib_handler() */
+/*?*/    struct config_line *register_prenetsnmp_mib_handler(const char *filePrefix,
+                                                const char *token,
+                                                void (*parser) (const char *, char *),
+                                                void (*releaser) (void),
+                                                const char *usageLine);
+/*?*/    struct config_line *register_app_prenetsnmp_mib_handler(
+                                                const char *token,
+                                                void (*parser) (const char *, char *),
+                                                void (*releaser) (void),
+                                                const char *usageLine);
+                                                            
+    void            unregister_config_handler(const char *filePrefix, const char *token);
+    void            unregister_app_config_handler(                    const char *token);
+    void            unregister_all_config_handlers(void);
+
+/*?*/ void register_mib_handlers(void);
+    void            read_configs(void);
+    void            read_premib_configs(void);
+
+    void            read_config_print_usage(const char *lead);
+    void            config_perror(const char *);
+    void            config_pwarn(const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
     /*
      *  For the initial release, this will just refer to the
      *  relevant UCD header files.
diff --git a/include/net-snmp/data_access/arp.h b/include/net-snmp/data_access/arp.h
index 4c6bae3..11e832c 100644
--- a/include/net-snmp/data_access/arp.h
+++ b/include/net-snmp/data_access/arp.h
@@ -83,6 +83,7 @@
    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;
 
 
@@ -119,6 +120,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/ipaddress.h b/include/net-snmp/data_access/ipaddress.h
index 6b51519..75056f2 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;
@@ -142,7 +145,19 @@
 
 int netsnmp_ipaddress_ipv4_prefix_len(in_addr_t 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/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..1baacd5 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 */
 
@@ -49,13 +53,15 @@
 #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 +74,7 @@
  * create/free an entry
  */
 netsnmp_systemstats_entry *
-netsnmp_access_systemstats_entry_create(int version);
+netsnmp_access_systemstats_entry_create(int version, int if_index);
 
 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..46ed441 100644
--- a/include/net-snmp/library/asn1.h
+++ b/include/net-snmp/library/asn1.h
@@ -41,9 +41,11 @@
 #ifndef EIGHTBIT_SUBIDS
     typedef u_long  oid;
 #define MAX_SUBID   0xFFFFFFFF
+#define NETSNMP_PRIo "l"
 #else
     typedef u_char  oid;
 #define MAX_SUBID   0xFF
+#define NETSNMP_PRIo ""
 #endif
 #endif
 
diff --git a/include/net-snmp/library/callback.h b/include/net-snmp/library/callback.h
index acd5d40..55bca19 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
 
 
     /*
diff --git a/include/net-snmp/library/container.h b/include/net-snmp/library/container.h
index c6a407f..3241a1c 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
 
@@ -276,6 +286,9 @@
     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);
+
     /** for_each callback to call free on data item */
     void  netsnmp_container_simple_free(void *data, void *context);
 
@@ -399,7 +412,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;
@@ -422,12 +436,15 @@
             x = x->next;
         while(x) {
             netsnmp_container *tmp;
+            const char *name;
             tmp = x->prev;
+            name = x->container_name;
             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);
+                snmp_log(LOG_ERR,"error on subcontainer '%s' cfree (%d)\n",
+                         name ? name : "", rc2);
                 rc = rc2;
             }
             x = tmp;
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/default_store.h b/include/net-snmp/library/default_store.h
index aed435a..92fdebf 100644
--- a/include/net-snmp/library/default_store.h
+++ b/include/net-snmp/library/default_store.h
@@ -29,7 +29,7 @@
 #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 
@@ -88,23 +88,30 @@
 #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_ALLOW_SELF_SIGNED   40 /* Certs for DTLS */
 
     /*
      * 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
+    
     /*
      * special meanings for the default SNMP version slot (NETSNMP_DS_LIB_SNMPVERSION) 
      */
@@ -143,6 +150,15 @@
 #define NETSNMP_DS_LIB_APPTYPES          20
 #define NETSNMP_DS_LIB_KSM_KEYTAB        21
 #define NETSNMP_DS_LIB_KSM_SERVICE_NAME  22
+/* for the client */
+#define NETSNMP_DS_LIB_X509_CLIENT_PUB   23
+#define NETSNMP_DS_LIB_X509_CLIENT_PRIV  24
+#define NETSNMP_DS_LIB_X509_SERVER_CERTS 25
+/* for the server */
+#define NETSNMP_DS_LIB_X509_SERVER_PUB   26
+#define NETSNMP_DS_LIB_X509_SERVER_PRIV  27
+#define NETSNMP_DS_LIB_X509_CLIENT_CERTS 28
+#define NETSNMP_DS_LIB_SSHTOSNMP_SOCKET  29
 
     /*
      * end storage definitions 
diff --git a/include/net-snmp/library/dir_utils.h b/include/net-snmp/library/dir_utils.h
new file mode 100644
index 0000000..a620d00
--- /dev/null
+++ b/include/net-snmp/library/dir_utils.h
@@ -0,0 +1,41 @@
+/* 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
+
+    /*------------------------------------------------------------------
+     *
+     * Prototypes
+     */
+    netsnmp_container * netsnmp_directory_container_read(netsnmp_container *c,
+                                                         const char *dir,
+                                                         u_int flags);
+    void netsnmp_directory_container_free(netsnmp_container *c);
+
+        
+
+    /*------------------------------------------------------------------
+     *
+     * flags
+     */
+#define NETSNMP_DIR_RECURSE                           0x1
+
+    
+        
+#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..14cdf51 100644
--- a/include/net-snmp/library/fd_event_manager.h
+++ b/include/net-snmp/library/fd_event_manager.h
@@ -90,6 +90,11 @@
  */
 void netsnmp_external_event_info(int *numfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds);
 
+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
  *
@@ -115,6 +120,10 @@
  * Side Effects: None
  */
 void netsnmp_dispatch_external_events(int *count, fd_set *readfds, fd_set *writefds, fd_set *exceptfds);
+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/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/large_fd_set.h b/include/net-snmp/library/large_fd_set.h
new file mode 100644
index 0000000..7ddf169
--- /dev/null
+++ b/include/net-snmp/library/large_fd_set.h
@@ -0,0 +1,168 @@
+/**
+ * @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)
+
+
+void   netsnmp_large_fd_setfd( SOCKET fd, netsnmp_large_fd_set *fdset);
+void   netsnmp_large_fd_clr(   SOCKET fd, netsnmp_large_fd_set *fdset);
+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().
+ */
+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. */
+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/mib.h b/include/net-snmp/library/mib.h
index f7c8bba..299f310 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,28 +117,19 @@
     struct variable_list;
     struct enum_list;
 
-    void            print_mib(FILE * fp);
     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);
     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);
     int             get_wild_node(const char *, oid *, size_t *);
     int             get_node(const char *, oid *, size_t *);
-    oid            *snmp_parse_oid(const char *, oid *, size_t *);
     struct tree    *get_tree(const oid *, size_t, struct tree *);
     struct tree    *get_tree_head(void);
     void            set_function(struct tree *);
@@ -151,27 +148,11 @@
                               netsnmp_variable_list * indexes);
     int             build_oid_segment(netsnmp_variable_list * var);
 
-
-    void            print_variable(const oid * objid, size_t objidlen,
+    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);
-
 #ifndef NETSNMP_DISABLE_MIB_LOADING
     struct tree    *
 #else
@@ -194,39 +175,14 @@
                                                  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,
+    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,
-                                 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);
-
+                                 size_t * out_len, int allow_realloc,
+                                 const oid * objid, size_t objidlen);
 
     int             sprint_realloc_by_type(u_char ** buf, size_t * buf_len,
                                            size_t * out_len,
diff --git a/include/net-snmp/library/parse.h b/include/net-snmp/library/parse.h
index 785106d..f5b0cd6 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
      */
@@ -70,33 +73,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 {
@@ -209,23 +185,13 @@
 #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 *);
     char           *module_name(int, char *);
     void            print_subtree(FILE *, struct tree *, int);
diff --git a/include/net-snmp/library/read_config.h b/include/net-snmp/library/read_config.h
index 78af56e..dd28411 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
@@ -47,50 +47,24 @@
     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);
     void            free_config(void);
-    void            config_perror(const char *);
-    void            config_pwarn(const char *);
+#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2&& __GNUC_MINOR__ < 8)
+    void            netsnmp_config_error(const char *, ...);
+    void            netsnmp_config_warn(const char *, ...);
+#else
+    void            netsnmp_config_error(const char *, ...)
+	__attribute__((__format__(__printf__, 1, 2)));
+    void            netsnmp_config_warn(const char *, ...)
+	__attribute__((__format__(__printf__, 1, 2)));
+#endif
+
     char           *skip_white(char *);
     char           *skip_not_white(char *);
     char           *skip_token(char *);
     char           *copy_nword(char *, char *, int);
     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);
     char           *read_config_save_octet_string(char *saveto,
                                                   const u_char * str,
                                                   size_t len);
diff --git a/include/net-snmp/library/snmp-tc.h b/include/net-snmp/library/snmp-tc.h
index bfb4c5f..d957bbe 100644
--- a/include/net-snmp/library/snmp-tc.h
+++ b/include/net-snmp/library/snmp-tc.h
@@ -18,8 +18,8 @@
                                           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 *);
+    u_char         *date_n_time(const time_t *, size_t *);
+    time_t          ctime_to_timet(const char *);
 
     /*
      * TrueValue 
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/snmpDTLSUDPDomain.h b/include/net-snmp/library/snmpDTLSUDPDomain.h
new file mode 100644
index 0000000..192dd17
--- /dev/null
+++ b/include/net-snmp/library/snmpDTLSUDPDomain.h
@@ -0,0 +1,61 @@
+#ifndef _SNMPDTLSUDPDOMAIN_H
+#define _SNMPDTLSUDPDOMAIN_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/asn1.h>
+
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+#define TRANSPORT_DOMAIN_DTLS_UDP_IP	1,3,6,1,4,1,8072,3,3,8
+NETSNMP_IMPORT oid netsnmpDTLSUDPDomain[];
+
+netsnmp_transport *netsnmp_dtlsudp_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.  
+ */
+
+void            netsnmp_dtlsudp_agent_config_tokens_register(void);
+
+void            netsnmp_dtlsudp_parse_security(const char *token, char *param);
+
+int             netsnmp_dtlsudp_getSecName(void *opaque, int olength,
+                                       const char *community,
+                                       size_t community_len,
+                                       char **secname,
+                                       char **contextName);
+
+int             netsnmp_sock_buffer_set(int s, int optname, int local,
+                                        int size);
+
+
+/*
+ * "Constructor" for transport domain object.  
+ */
+
+void            netsnmp_dtlsudp_ctor(void);
+
+#ifdef __cplusplus
+}
+#endif
+#endif/*_SNMPDTLSUDPDOMAIN_H*/
diff --git a/include/net-snmp/library/snmpSSHDomain.h b/include/net-snmp/library/snmpSSHDomain.h
new file mode 100644
index 0000000..6610818
--- /dev/null
+++ b/include/net-snmp/library/snmpSSHDomain.h
@@ -0,0 +1,41 @@
+#ifndef _SNMPSSHDOMAIN_H
+#define _SNMPSSHDOMAIN_H
+
+#ifdef NETSNMP_TRANSPORT_SSH_DOMAIN
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/asn1.h>
+
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+/*
+ * The SNMP over SSH over IPv4 transport domain is identified by
+ * transportDomainSshIpv4 as defined in RFC 3419.
+ */
+
+#define TRANSPORT_DOMAIN_SSH_IP		1,3,6,1,2,1,100,1,100
+NETSNMP_IMPORT oid netsnmp_snmpSSHDomain[];
+
+netsnmp_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/snmpUDPDomain.h b/include/net-snmp/library/snmpUDPDomain.h
index 540adf5..4ed7558 100644
--- a/include/net-snmp/library/snmpUDPDomain.h
+++ b/include/net-snmp/library/snmpUDPDomain.h
@@ -52,6 +52,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(linux) && defined(IP_PKTINFO) || \
+    defined(IP_RECVDSTADDR) && !defined(_MSC_VER)
+int netsnmp_udp_recvfrom(int s, void *buf, int len, struct sockaddr *from,
+                         socklen_t *fromlen, struct in_addr *dstip);
+int netsnmp_udp_sendto(int fd, struct in_addr *srcip, struct sockaddr *remote,
+                       void *data, int len);
+#endif
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/library/snmpUDPIPv6Domain.h b/include/net-snmp/library/snmpUDPIPv6Domain.h
index c4ea464..6824a5c 100644
--- a/include/net-snmp/library/snmpUDPIPv6Domain.h
+++ b/include/net-snmp/library/snmpUDPIPv6Domain.h
@@ -31,9 +31,11 @@
                                      int remote_port);
 
 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,
diff --git a/include/net-snmp/library/snmpUnixDomain.h b/include/net-snmp/library/snmpUnixDomain.h
index 51909f7..5d9e60c 100644
--- a/include/net-snmp/library/snmpUnixDomain.h
+++ b/include/net-snmp/library/snmpUnixDomain.h
@@ -41,9 +41,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_api.h b/include/net-snmp/library/snmp_api.h
index 2cad92e..d0bc907 100644
--- a/include/net-snmp/library/snmp_api.h
+++ b/include/net-snmp/library/snmp_api.h
@@ -24,6 +24,11 @@
  * @{
  */
 
+#include <net-snmp/types.h>
+#include <net-snmp/varbind_api.h>
+#include <net-snmp/pdu_api.h>
+#include <net-snmp/session_api.h>
+
 #ifndef DONT_SHARE_ERROR_WITH_OTHER_THREADS
 #define SET_SNMP_ERROR(x) snmp_errno=(x)
 #else
@@ -57,257 +62,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.
  */
@@ -404,6 +159,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 +256,26 @@
 #define SNMPERR_KRB5			(-63)
 #define SNMPERR_PROTOCOL		(-64)
 #define SNMPERR_OID_NONINCREASING       (-65)
+#define SNMPERR_JUST_A_CONTEXT_PROBE    (-66)
 
-#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			(-66)
 
 
     /*
-     * 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 +284,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 */
 
 
     /*
@@ -774,16 +375,6 @@
                                            size_t * length);
     void            snmp_store(const char *type);
     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);
     int             snmp_add_var(netsnmp_pdu *, const oid *, size_t, char,
                                  const char *);
     oid            *snmp_duplicate_objid(const oid * objToCopy, size_t);
@@ -793,6 +384,8 @@
     void            snmp_init_statistics(void);
     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,6 +404,8 @@
 
 
 
+struct netsnmp_transport_s;
+
     /*
      * Extended open; fpre_parse has changed.  
      */
@@ -842,56 +437,14 @@
     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            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);
 
     /*
      * Return the netsnmp_transport structure associated with the given opaque
@@ -981,28 +534,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 
      */
diff --git a/include/net-snmp/library/snmp_assert.h b/include/net-snmp/library/snmp_assert.h
index 578b6ce..51cb754 100644
--- a/include/net-snmp/library/snmp_assert.h
+++ b/include/net-snmp/library/snmp_assert.h
@@ -38,13 +38,14 @@
  *  if asserts weren't requested, just log, unless NETSNMP_NO_DEBUGGING specified
  */
 #   ifndef NETSNMP_NO_DEBUGGING
-#      ifdef  HAVE_CPP_UNDERBAR_FUNCTION_DEFINED
+#      ifdef  NETSNMP_FUNCTION
 #         define netsnmp_assert(x)  do { \
                  if ( x ) \
                     ; \
                  else \
                     snmp_log(LOG_ERR,"netsnmp_assert %s failed %s:%d %s()\n", \
-                             __STRING(x),__FILE__,__LINE__,__FUNCTION__); \
+                             __STRING(x),__FILE__,__LINE__, \
+                             NETSNMP_FUNCTION); \
               }while(0)
 #      else
 #         define netsnmp_assert(x)  do { \
diff --git a/include/net-snmp/library/snmp_client.h b/include/net-snmp/library/snmp_client.h
index 99e75b5..1e16ce6 100644
--- a/include/net-snmp/library/snmp_client.h
+++ b/include/net-snmp/library/snmp_client.h
@@ -26,6 +26,11 @@
 #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/session_api.h>
+
 #ifdef __cplusplus
 extern          "C" {
 #endif
@@ -48,17 +53,6 @@
         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);
     void            snmp_replace_var_types(netsnmp_variable_list * vbl,
                                            u_char old_type,
                                            u_char new_type);
@@ -73,32 +67,21 @@
     netsnmp_variable_list *find_varbind_in_list(netsnmp_variable_list *vblist,
                                                 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);
     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 **);
     int             snmp_synch_response_cb(netsnmp_session *,
                                            netsnmp_pdu *, netsnmp_pdu **,
                                            snmp_callback);
-    int             snmp_clone_mem(void **, void *, unsigned);
+    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 **);
 
 void              netsnmp_query_set_default_session(netsnmp_session *);
+netsnmp_session * netsnmp_query_get_default_session_unchecked( void );
 netsnmp_session * netsnmp_query_get_default_session( void );
 int netsnmp_query_get(     netsnmp_variable_list *, netsnmp_session *);
 int netsnmp_query_getnext( netsnmp_variable_list *, netsnmp_session *);
diff --git a/include/net-snmp/library/snmp_debug.h b/include/net-snmp/library/snmp_debug.h
index 9e3d5a9..765cc44 100644
--- a/include/net-snmp/library/snmp_debug.h
+++ b/include/net-snmp/library/snmp_debug.h
@@ -19,16 +19,21 @@
      * These functions should not be used, if at all possible.  Instead, use
      * the macros below. 
      */
-#if HAVE_STDARG_H
+#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
     void            debugmsg(const char *token, const char *format, ...);
     void            debugmsgtoken(const char *token, const char *format,
                                   ...);
     void            debug_combo_nc(const char *token, const char *format,
                                    ...);
 #else
-    void            debugmsg(va_alist);
-    void            debugmsgtoken(va_alist);
-    void            debug_combo_nc(va_alist);
+    void            debugmsg(const char *token, const char *format, ...)
+                        __attribute__ ((__format__ (__printf__, 2, 3)));
+    void            debugmsgtoken(const char *token, const char *format,
+                                  ...)
+                        __attribute__ ((__format__ (__printf__, 2, 3)));
+    void            debug_combo_nc(const char *token, const char *format,
+                                   ...)
+                        __attribute__ ((__format__ (__printf__, 2, 3)));
 #endif
     void            debugmsg_oid(const char *token, const oid * theoid,
                                  size_t len);
@@ -44,7 +49,13 @@
     void            debugmsg_hextli(const char *token, u_char * thedata,
                                     size_t len);
     void            debug_indent_add(int amount);
-    char           *debug_indent(void);
+    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.
+     */
+    const char     *debug_indent(void);
 
     /*
      * Use these macros instead of the functions above to allow them to be
@@ -121,9 +132,9 @@
 #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__))
 #else
 #define __DBGTRACE       __DBGMSGT(("trace"," %s, %d:\n", __FILE__,__LINE__))
 #endif
@@ -136,11 +147,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 +168,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,7 +180,7 @@
         } else { \
             debugmsg("dumpx_" token,"  "); \
         } \
-        debugmsg("dumpv" token, "dumpv_%s:%s", token, __DBGINDENT());
+        debugmsg("dumpv" token, "dumpv_%s:%*s", token, __DBGINDENT(), "");
 
 /******************* End   private macros ************************/
 /*****************************************************************/
@@ -189,7 +199,6 @@
 #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)
@@ -223,7 +232,6 @@
 #define DEBUGMSGHEX(x)
 #define DEBUGIF(x)        if(0)
 #define DEBUGDUMP(t,b,l,p)
-#define DEBUGINDENT()
 #define DEBUGINDENTMORE()
 #define DEBUGINDENTLESS()
 #define DEBUGINDENTADD(x)
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..550e664 100644
--- a/include/net-snmp/library/snmp_logging.h
+++ b/include/net-snmp/library/snmp_logging.h
@@ -5,15 +5,11 @@
 extern          "C" {
 #endif
 
-#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>
-#endif
 
 #ifndef LOG_ERR
 #define LOG_EMERG       0       /* system is unusable */
@@ -35,6 +31,14 @@
 #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);
@@ -53,15 +57,11 @@
 
     int             snmp_stderrlog_status(void);
 
-#if HAVE_STDARG_H
-# if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
+#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
     int             snmp_log(int priority, const char *format, ...);
-# else
+#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);
@@ -88,6 +88,7 @@
 #define NETSNMP_LOGHANDLER_CALLBACK	5
 #define NETSNMP_LOGHANDLER_NONE		6
 
+    void netsnmp_set_line_buffering(FILE *stream);
     int snmp_log_options(char *optarg, int argc, char *const *argv);
     void snmp_log_options_usage(const char *lead, FILE *outf);
     char *snmp_log_syslogname(const char *syslogname);
diff --git a/include/net-snmp/library/snmp_openssl.h b/include/net-snmp/library/snmp_openssl.h
new file mode 100644
index 0000000..8092f74
--- /dev/null
+++ b/include/net-snmp/library/snmp_openssl.h
@@ -0,0 +1,17 @@
+/*
+ * Header file for the OpenSSL Wrapper
+ */
+
+#ifndef SNMP_OPENSSL_H
+#define SNMP_OPENSSL_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    void netsnmp_init_openssl(void);
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* SNMP_OPENSSL_H */
diff --git a/include/net-snmp/library/snmp_secmod.h b/include/net-snmp/library/snmp_secmod.h
index aeeb24a..6a687df 100644
--- a/include/net-snmp/library/snmp_secmod.h
+++ b/include/net-snmp/library/snmp_secmod.h
@@ -11,7 +11,7 @@
  * (Net-SNMP enterprise number = 8072)*256 + local_num
  */
 #define NETSNMP_KSM_SECURITY_MODEL     2066432
-#define NETSNMP_LOCALSM_SECURITY_MODEL 2066433
+#define NETSNMP_TSM_SECURITY_MODEL     2066434
 
 struct snmp_secmod_def;
 
@@ -90,6 +90,8 @@
                                       netsnmp_session *,
                                       int result,
                                       netsnmp_pdu *origpdu);
+typedef int     (SecmodDiscoveryMethod) (void *slp,
+                                         netsnmp_session *session);
 
 /*
  * definition of a security module
@@ -125,6 +127,11 @@
     * error and report handling
     */
    SecmodHandleReport *handle_report;
+
+   /*
+    * default engineID discovery mechanism
+    */
+   SecmodDiscoveryMethod *probe_engineid;
 };
 
 
diff --git a/include/net-snmp/library/snmp_transport.h b/include/net-snmp/library/snmp_transport.h
index ce742d5..cd4ec37 100644
--- a/include/net-snmp/library/snmp_transport.h
+++ b/include/net-snmp/library/snmp_transport.h
@@ -16,9 +16,13 @@
 
 /*  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_HOSTNAME	 0x80  /* for fmtaddr hook */
 
 /*  The standard SNMP domains.  */
 
@@ -33,6 +37,35 @@
 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 struct netsnmp_addr_pair_s {
+   struct sockaddr_in remote_addr;
+   struct in_addr local_addr;
+} netsnmp_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;
+   int    sessionID;
+   
+   char   have_addresses;
+   netsnmp_addr_pair addresses;
+
+   void *otherTransportOpaque; /* XXX: May have mem leak issues */
+} netsnmp_tmStateReference;
+
 /*  Structure which defines the transport-independent API.  */
 
 typedef struct netsnmp_transport_s {
@@ -68,6 +101,9 @@
 
     size_t          msgMaxSize;
 
+    /* TM state reference per ISMS WG solution */
+    netsnmp_tmStateReference *tmStateRef;
+
     /*  Callbacks.  Arguments are:
      *		
      *              "this" pointer, fd, buf, size, *opaque, *opaque_length  
diff --git a/include/net-snmp/library/snmptsm.h b/include/net-snmp/library/snmptsm.h
new file mode 100644
index 0000000..edd5a19
--- /dev/null
+++ b/include/net-snmp/library/snmptsm.h
@@ -0,0 +1,30 @@
+/*
+ * Header file for Transport Security Model support
+ */
+
+#ifndef SNMPTSM_H
+#define SNMPTSM_H
+
+#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_usm(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;
+       int securityLevel;
+    } 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..18cf119 100644
--- a/include/net-snmp/library/snmpusm.h
+++ b/include/net-snmp/library/snmpusm.h
@@ -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. */
diff --git a/include/net-snmp/library/snmpv3.h b/include/net-snmp/library/snmpv3.h
index e248441..f3d295f 100644
--- a/include/net-snmp/library/snmpv3.h
+++ b/include/net-snmp/library/snmpv3.h
@@ -9,12 +9,13 @@
 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"
diff --git a/include/net-snmp/library/system.h b/include/net-snmp/library/system.h
index f32c43f..03c2b07 100644
--- a/include/net-snmp/library/system.h
+++ b/include/net-snmp/library/system.h
@@ -51,11 +51,14 @@
 
     /*
      * 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 
      */
@@ -79,32 +82,36 @@
     DIR            *opendir(const char *filename);
     struct direct  *readdir(DIR * dirp);
     int             closedir(DIR * dirp);
-#endif /* HAVE_DIRENT_H */
+#endif /* HAVE_READDIR */
 
 #ifndef HAVE_GETTIMEOFDAY
     int             gettimeofday(struct timeval *, struct timezone *tz);
 #endif
+
+#endif				/* MSVC_PERL */
+
 #ifndef HAVE_STRNCASECMP
     int             strcasecmp(const char *s1, const char *s2);
     int             strncasecmp(const char *s1, const char *s2, size_t n);
 #endif
 
+#ifdef WIN32
     char           *winsock_startup(void);
     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 */
+    int             netsnmp_gethostbyname_v4(const char* name,
+                                             in_addr_t *addr_out);
+
     in_addr_t       get_myaddr(void);
     long            get_uptime(void);
 
@@ -129,6 +136,9 @@
 #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
     char           *strtok_r(char *, const char *, char **);
 #endif
@@ -151,6 +161,9 @@
                                         const char *ospmrelprefix);
     int             netsnmp_os_kernel_width(void);
 
+    int             netsnmp_str_to_uid(const char *useroruid);
+    int             netsnmp_str_to_gid(const char *grouporgid);
+
 #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/mib_api.h b/include/net-snmp/mib_api.h
index 09ff5f5..7068bfb 100644
--- a/include/net-snmp/mib_api.h
+++ b/include/net-snmp/mib_api.h
@@ -7,6 +7,60 @@
 
 #include <net-snmp/types.h>
 
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /* Initialisation and Shutdown */
+    void            netsnmp_init_mib(void);
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
+    void            init_mib(void);
+    void            init_mib_internals(void);
+#endif
+    void            shutdown_mib(void);
+
+     /* Reading and Parsing MIBs */
+    int             add_mibdir(const char *);
+    NETSNMP_IMPORT
+    struct tree    *netsnmp_read_module(const char *);
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
+    struct tree    *read_module(const char *);
+#endif
+    struct tree    *read_mib(const char *);
+    struct tree    *read_all_mibs(void);
+    void            add_module_replacement(const char *, const char *,
+                                           const char *, int);
+
+         /* from ucd-compat.h */
+    void            snmp_set_mib_warnings(int);
+    void            snmp_set_mib_errors(int);
+    void            snmp_set_save_descriptions(int);
+
+
+     /* Searching the MIB Tree */
+    oid            *snmp_parse_oid(const char *, oid *, size_t *);
+    int             read_objid(const char *, oid *, size_t *);
+    int             get_module_node(const char *, const char *, oid *, size_t *);
+
+     /* Output */
+    void            print_mib(FILE * fp);
+
+    void            print_objid(const oid * objid, size_t objidlen);
+    void           fprint_objid(FILE * fp,
+                                const oid * objid, size_t objidlen);
+    int           snprint_objid(char *buf, size_t buf_len,
+                                const oid * objid, size_t objidlen);
+
+    void            print_description(oid * objid, size_t objidlen, int width);
+    void           fprint_description(FILE * fp,
+                                oid * objid, size_t objidlen, int width);
+    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.
@@ -18,7 +72,6 @@
      */
 
 #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..0ee6052 100644
--- a/include/net-snmp/net-snmp-config.h.in
+++ b/include/net-snmp/net-snmp-config.h.in
@@ -1,4 +1,4 @@
-/* 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
  */
@@ -24,236 +24,7 @@
  */
 #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 ';'
@@ -264,6 +35,27 @@
 
 /* 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 +64,12 @@
 /* Define to 1 if using `alloca.c'. */
 #undef C_ALLOCA
 
+/* location of swap device */
+#undef DMEM_LOC
+
+/* 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,18 +89,25 @@
 /* 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
 
-/* Define to 1 if you have the `chown' function. */
-#undef HAVE_CHOWN
-
 /* 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,6 +118,9 @@
 /* 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
+
 /* Define to 1 if you have the <err.h> header file. */
 #undef HAVE_ERR_H
 
@@ -343,6 +151,9 @@
 /* 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 +163,9 @@
 /* Define to 1 if you have the `getgrnam' function. */
 #undef HAVE_GETGRNAM
 
+/* Define to 1 if you have the `gethostbyname' function. */
+#undef HAVE_GETHOSTBYNAME
+
 /* Define to 1 if you have the `gethostname' function. */
 #undef HAVE_GETHOSTNAME
 
@@ -379,6 +193,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
 
@@ -394,23 +211,17 @@
 /* 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 the system has the type `int32_t'. */
-#undef HAVE_INT32_T
-
-/* 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 +232,33 @@
 /* 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
+
 /* Define to 1 if you have the `kinfo_get_cpus' function. */
 #undef HAVE_KINFO_GET_CPUS
 
 /* 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 +271,21 @@
 /* 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 if you have libnm */
+#undef HAVE_LIBNM
+
 /* Define to 1 if you have the `nsl' library (-lnsl). */
 #undef HAVE_LIBNSL
 
@@ -481,12 +295,21 @@
 /* Define to 1 if you have the `pkcs11' library (-lpkcs11). */
 #undef HAVE_LIBPKCS11
 
+/* 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 `ssh2' library (-lssh2). */
+#undef HAVE_LIBSSH2
+
+/* Define to 1 if you have the `ssl' library (-lssl). */
+#undef HAVE_LIBSSL
+
 /* Define to 1 if you have the <limits.h> header file. */
 #undef HAVE_LIMITS_H
 
@@ -496,14 +319,23 @@
 /* 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
 
 /* Define to 1 if you have the <locale.h> header file. */
 #undef HAVE_LOCALE_H
 
-/* Define to 1 if you have the `localtime_r' function. */
-#undef HAVE_LOCALTIME_R
+/* Define to 1 if the system has the type `long long int'. */
+#undef HAVE_LONG_LONG_INT
+
+/* Set if the lpstat command is available */
+#undef HAVE_LPSTAT
 
 /* Define to 1 if you have the `lrand48' function. */
 #undef HAVE_LRAND48
@@ -523,15 +355,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
 
@@ -574,6 +403,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 +415,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 +460,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 +484,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
 
@@ -679,18 +520,36 @@
 /* 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 `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 +562,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 +577,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 +595,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
 
@@ -781,7 +649,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 +661,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 +673,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 +703,211 @@
 /* Define to 1 if you have the `strtoul' function. */
 #undef HAVE_STRTOUL
 
+/* Define to 1 if you have the `strtoull' function. */
+#undef HAVE_STRTOULL
+
+/* Define to 1 if `at_next' is member of `struct arphd'. */
+#undef HAVE_STRUCT_ARPHD_AT_NEXT
+
+/* Define to 1 if `weak_key' is member of `struct des_ks_struct'. */
+#undef HAVE_STRUCT_DES_KS_STRUCT_WEAK_KEY
+
+/* Define to 1 if `d_type' is member of `struct dirent'. */
+#undef HAVE_STRUCT_DIRENT_D_TYPE
+
 /* Define to 1 if `speed_hi' is member of `struct ethtool_cmd'. */
 #undef HAVE_STRUCT_ETHTOOL_CMD_SPEED_HI
 
+/* Define to 1 if `ifa_next' is member of `struct ifaddr'. */
+#undef HAVE_STRUCT_IFADDR_IFA_NEXT
+
+/* Define to 1 if `if_addrhead.tqh_first' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_ADDRHEAD_TQH_FIRST
+
+/* Define to 1 if `if_addrlist' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_ADDRLIST
+
+/* Define to 1 if `if_baudrate' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_BAUDRATE
+
+/* Define to 1 if `if_baudrate.ifs_value' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_BAUDRATE_IFS_VALUE
+
+/* Define to 1 if `if_ibytes' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_IBYTES
+
+/* Define to 1 if `if_imcasts' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_IMCASTS
+
+/* Define to 1 if `if_iqdrops' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_IQDROPS
+
+/* Define to 1 if `if_lastchange.tv_nsec' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_NSEC
+
+/* Define to 1 if `if_lastchange.tv_sec' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC
+
+/* Define to 1 if `if_mtu' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_MTU
+
+/* Define to 1 if `if_noproto' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_NOPROTO
+
+/* Define to 1 if `if_obytes' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_OBYTES
+
+/* Define to 1 if `if_omcasts' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_OMCASTS
+
+/* Define to 1 if `if_speed' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_SPEED
+
+/* Define to 1 if `if_type' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_TYPE
+
+/* Define to 1 if `if_xname' is member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_XNAME
+
+/* Define to 1 if `ips_cantforward' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_CANTFORWARD
+
+/* Define to 1 if `ips_cantfrag' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_CANTFRAG
+
+/* Define to 1 if `ips_delivered' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_DELIVERED
+
+/* Define to 1 if `ips_fragdropped' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_FRAGDROPPED
+
+/* Define to 1 if `ips_fragmented' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_FRAGMENTED
+
+/* Define to 1 if `ips_fragtimeout' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_FRAGTIMEOUT
+
+/* Define to 1 if `ips_localout' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_LOCALOUT
+
+/* Define to 1 if `ips_noproto' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_NOPROTO
+
+/* Define to 1 if `ips_noroute' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_NOROUTE
+
+/* Define to 1 if `ips_odropped' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_ODROPPED
+
+/* Define to 1 if `ips_ofragments' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_OFRAGMENTS
+
+/* Define to 1 if `ips_reassembled' is member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_REASSEMBLED
+
+/* Define to 1 if `m_clfree' is member of `struct mbstat'. */
+#undef HAVE_STRUCT_MBSTAT_M_CLFREE
+
+/* Define to 1 if `m_clusters' is member of `struct mbstat'. */
+#undef HAVE_STRUCT_MBSTAT_M_CLUSTERS
+
+/* Define to 1 if `m_mbufs' is member of `struct mbstat'. */
+#undef HAVE_STRUCT_MBSTAT_M_MBUFS
+
+/* Define to 1 if `msg_control' is member of `struct msghdr'. */
+#undef HAVE_STRUCT_MSGHDR_MSG_CONTROL
+
+/* Define to 1 if `n_value' is member of `struct nlist64'. */
+#undef HAVE_STRUCT_NLIST64_N_VALUE
+
+/* Define to 1 if `n_value' is member of `struct nlist'. */
+#undef HAVE_STRUCT_NLIST_N_VALUE
+
+/* Define to 1 if `rt_dst' is member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_DST
+
+/* Define to 1 if `rt_hash' is member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_HASH
+
+/* Define to 1 if `rt_next' is member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_NEXT
+
+/* Define to 1 if `rt_refcnt' is member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_REFCNT
+
+/* Define to 1 if `rt_unit' is member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_UNIT
+
+/* Define to 1 if `rt_use' is member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_USE
+
+/* Define to 1 if `sa_sigaction' is member of `struct sigaction'. */
+#undef HAVE_STRUCT_SIGACTION_SA_SIGACTION
+
 /* Define to 1 if `sin6_scope_id' is member of `struct sockaddr_in6'. */
 #undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID
 
+/* Define to 1 if `sa_len' is member of `struct sockaddr'. */
+#undef HAVE_STRUCT_SOCKADDR_SA_LEN
+
+/* Define to 1 if `sa_union.sa_generic.sa_family2' is member of `struct
+   sockaddr'. */
+#undef HAVE_STRUCT_SOCKADDR_SA_UNION_SA_GENERIC_SA_FAMILY2
+
+/* Define to 1 if `ss_family' is member of `struct sockaddr_storage'. */
+#undef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
+
+/* Define to 1 if `__ss_family' is member of `struct sockaddr_storage'. */
+#undef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
+
+/* Define to 1 if `f_favail' is member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_FAVAIL
+
+/* Define to 1 if `f_ffree' is member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_FFREE
+
+/* Define to 1 if `f_files' is member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_FILES
+
+/* Define to 1 if `f_frsize' is member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_FRSIZE
+
+/* Define to 1 if `f_files' is member of `struct statvfs'. */
+#undef HAVE_STRUCT_STATVFS_F_FILES
+
+/* Define to 1 if `f_frsize' is member of `struct statvfs'. */
+#undef HAVE_STRUCT_STATVFS_F_FRSIZE
+
+/* Define to 1 if `mnt_dir' is member of `struct statvfs'. */
+#undef HAVE_STRUCT_STATVFS_MNT_DIR
+
+/* Define to 1 if `sw_nblksenabled' is member of `struct swdevt'. */
+#undef HAVE_STRUCT_SWDEVT_SW_NBLKSENABLED
+
+/* Define to 1 if `tcp_rcvmemdrop' is member of `struct tcpstat'. */
+#undef HAVE_STRUCT_TCPSTAT_TCP_RCVMEMDROP
+
+/* Define to 1 if `tm_gmtoff' is member of `struct tm'. */
+#undef HAVE_STRUCT_TM_TM_GMTOFF
+
+/* Define to 1 if `udps_discard' is member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_DISCARD
+
+/* Define to 1 if `udps_fullsock' is member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_FULLSOCK
+
+/* Define to 1 if `udps_noport' is member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORT
+
+/* Define to 1 if `udps_noportbcast' is member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORTBCAST
+
+/* Define to 1 if `udps_opackets' is member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_OPACKETS
+
+/* Define to 1 if `pgswapin' is member of `struct uvmexp'. */
+#undef HAVE_STRUCT_UVMEXP_PGSWAPIN
+
 /* Define to 1 if you have the `sysconf' function. */
 #undef HAVE_SYSCONF
 
@@ -866,6 +930,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 +982,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
 
@@ -1047,18 +1117,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 +1129,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,18 +1147,6 @@
 /* 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 the system has the type `u_int32_t'. */
-#undef HAVE_U_INT32_T
-
-/* 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 <vm/swap_pager.h> header file. */
 #undef HAVE_VM_SWAP_PAGER_H
 
@@ -1113,18 +1162,53 @@
 /* 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
 
+/* 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 DES encryption should not be supported */
 #undef NETSNMP_DISABLE_DES
 
@@ -1143,9 +1227,85 @@
 /* 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 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
+
+/* If you don't have root access don't exit upon kmem errors */
+#undef NETSNMP_NO_ROOT_ACCESS
+
+/* umask permissions to set up persistent files with */
+#undef NETSNMP_PERSISTENT_MASK
+
+/* 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 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 lim_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
@@ -1171,52 +1331,124 @@
 #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
 
 /* 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,55 +1458,62 @@
 #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 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)
@@ -1331,27 +1570,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 +1585,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 +1629,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. */
 
@@ -1621,9 +1823,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,10 +1857,22 @@
     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
 
+/*  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 stdin/out transport domain is available.   */
 #undef NETSNMP_TRANSPORT_STD_DOMAIN
 
@@ -1674,18 +1885,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,24 +1955,6 @@
 #  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
@@ -1779,7 +1963,7 @@
 #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(NETSNMP_NO_KMEM_USAGE)
 #define NETSNMP_CAN_USE_NLIST
 #endif
 
diff --git a/include/net-snmp/net-snmp-includes.h b/include/net-snmp/net-snmp-includes.h
index 53dc7b8..3aea094 100644
--- a/include/net-snmp/net-snmp-includes.h
+++ b/include/net-snmp/net-snmp-includes.h
@@ -71,6 +71,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>
diff --git a/include/net-snmp/pdu_api.h b/include/net-snmp/pdu_api.h
index a3a1dd6..87c1011 100644
--- a/include/net-snmp/pdu_api.h
+++ b/include/net-snmp/pdu_api.h
@@ -7,6 +7,19 @@
 
 #include <net-snmp/types.h>
 
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+netsnmp_pdu    *snmp_pdu_create(int type);
+netsnmp_pdu    *snmp_clone_pdu(netsnmp_pdu *pdu);
+netsnmp_pdu    *snmp_fix_pdu(  netsnmp_pdu *pdu, int idx);
+void            snmp_free_pdu( netsnmp_pdu *pdu);
+
+#ifdef __cplusplus
+}
+#endif
+
     /*
      *  For the initial release, this will just refer to the
      *  relevant UCD header files.
diff --git a/include/net-snmp/session_api.h b/include/net-snmp/session_api.h
index 3327f89..907b7b9 100644
--- a/include/net-snmp/session_api.h
+++ b/include/net-snmp/session_api.h
@@ -8,6 +8,234 @@
 
 #include <net-snmp/types.h>
 
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    void            snmp_sess_init(netsnmp_session *);
+
+    /*
+     * 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);
+
+
+    /*
+     * 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.
+     */
+    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 *);
+
+    /*
+     * 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.
+     */
+    void            snmp_read2(netsnmp_large_fd_set *);
+
+
+    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)
+     */
+    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.
+     */
+    int             snmp_select_info2(int *, netsnmp_large_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);
+
+    /*
+     * 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_open(netsnmp_session *);
+    void           *snmp_sess_pointer(netsnmp_session *);
+    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 
+     */
+
+    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_select_info2(void *, int *,
+					   netsnmp_large_fd_set *,
+                                           struct timeval *, int *);
+    /*
+     * Returns 0 if success, -1 if fail.
+     */
+    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.
+     */
+    int             snmp_sess_read2(void *,
+                                    netsnmp_large_fd_set *);
+    void            snmp_sess_timeout(void *);
+    int             snmp_sess_close(void *);
+
+    int             snmp_sess_synch_response(void *, netsnmp_pdu *,
+                                             netsnmp_pdu **);
+
+#ifdef __cplusplus
+}
+#endif
+
+
     /*
      *  For the initial release, this will just refer to the
      *  relevant UCD header files.
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/darwin9.h b/include/net-snmp/system/darwin9.h
index 62d8d30..b556d90 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
@@ -120,6 +141,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
  */
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/netbsd.h b/include/net-snmp/system/netbsd.h
index 13ad7ea..c67260d 100644
--- a/include/net-snmp/system/netbsd.h
+++ b/include/net-snmp/system/netbsd.h
@@ -44,3 +44,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/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..2930cc4 100644
--- a/include/net-snmp/types.h
+++ b/include/net-snmp/types.h
@@ -98,142 +98,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 +112,306 @@
      *  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 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;
+};
+
+
+#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..924977e 100644
--- a/include/net-snmp/varbind_api.h
+++ b/include/net-snmp/varbind_api.h
@@ -7,6 +7,65 @@
 
 #include <net-snmp/types.h>
 
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /* Creation */
+    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_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_variable_list *
+       snmp_add_null_var(netsnmp_pdu *pdu,
+                                 const oid * name, size_t name_length);
+    netsnmp_variable_list *
+       snmp_clone_varbind(netsnmp_variable_list * varlist);
+
+    /* Setting Values */
+    int             snmp_set_var_value(netsnmp_variable_list * var,
+                                       const void * value, size_t len);
+    int             snmp_set_var_objid(netsnmp_variable_list * var,
+                                       const oid * name, size_t name_length);
+    int             snmp_set_var_typed_value(netsnmp_variable_list * var,
+                                       u_char type,
+                                       const void * value, size_t len);
+    int             snmp_set_var_typed_integer(netsnmp_variable_list * var,
+                                       u_char type, long val);
+
+     /* Output */
+    void            print_variable(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);
+
+    void             print_value(const oid * objid, size_t objidlen,
+                                 const netsnmp_variable_list * variable);
+    void            fprint_value(FILE * fp,
+                                 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);
+
+    /* Deletion */
+    void            snmp_free_var(    netsnmp_variable_list *var);     /* frees just this one */
+    void            snmp_free_varbind(netsnmp_variable_list *varlist); /* frees all in list */
+
+#ifdef __cplusplus
+}
+#endif
+
     /*
      *  For the initial release, this will just refer to the
      *  relevant UCD header files.
@@ -16,7 +75,6 @@
      *  But for the time being, this header file is a placeholder,
      *  to allow application writers to adopt the new header file names.
      */
-
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/snmp_client.h>
 #include <net-snmp/library/mib.h>
diff --git a/install-sh b/install-sh
index 2c212cc..a5897de 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=2006-12-25.00
+
+# 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,480 @@
 #
 # 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
+  trap '(exit $?); exit' 1 2 13 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-end: "$"
+# End:
diff --git a/local/Makefile.in b/local/Makefile.in
index 823b66c..6d5cbe0 100644
--- a/local/Makefile.in
+++ b/local/Makefile.in
@@ -28,7 +28,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 \
diff --git a/local/Version-Munge.pl b/local/Version-Munge.pl
index fde5939..249cfec 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 = \'(.*)\'',
@@ -95,12 +76,6 @@
 	       exfiles => [qw(configure)],
 	     },
 
-	     # configure script files
-	     { type => 'doxygen',
-	       expr => 'PROJECT_NUMBER\s*= (.*)',
-	       repl => 'PROJECT_NUMBER         = $VERSION',
-	       files => [qw(doxygen.conf)],
-	     },
 	    );
 
 #
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-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..a7d1892 100644
--- a/local/mib2c-conf.d/mfd-interface.m2c
+++ b/local/mib2c-conf.d/mfd-interface.m2c
@@ -215,14 +215,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);
 
@@ -661,6 +654,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
@@ -975,54 +1013,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
-
 ########################################################################
 ##
 /***********************************************************************
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-update b/local/mib2c-update
index 669a745..223ec63 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()
diff --git a/local/mib2c.access_functions.conf b/local/mib2c.access_functions.conf
index 833a857..c209b29 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@
 
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.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..e409ba9 100644
--- a/local/mib2c.iterate.conf
+++ b/local/mib2c.iterate.conf
@@ -72,12 +72,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,
@@ -307,6 +309,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 +332,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 +368,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..90b8508 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);
@@ -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..6c1eb1a 100644
--- a/local/mib2c.notify.conf
+++ b/local/mib2c.notify.conf
@@ -30,20 +30,20 @@
 #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};
+static const oid snmptrap_oid[] = {1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0};
 
 @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@
 
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..5c4d416
--- /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 column@
+    @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..775c021 100644
--- a/local/mib2c.table_data.conf
+++ b/local/mib2c.table_data.conf
@@ -70,8 +70,8 @@
 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;
@@ -79,6 +79,8 @@
     netsnmp_cache                   *cache;
 @end@
 
+    DEBUGMSGTL(("${name}:init", "initializing table $i\n"));
+
     reg = netsnmp_create_handler_registration(
               "$i",     ${i}_handler,
               ${i}_oid, ${i}_oid_len,
@@ -285,6 +287,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 +313,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 +352,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/ltmain.sh b/ltmain.sh
old mode 100644
new mode 100755
index 27d498a..b36c4ad
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,52 +1,83 @@
-# ltmain.sh - Provide generalized library-building support services.
-# NOTE: Changing this file will not affect anything until you rerun configure.
-#
-# 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
+# Generated from ltmain.m4sh.
+
+# ltmain.sh (GNU libtool) 2.2.6
+# 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.
+# 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.
-
-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
+# Provide generalized library-building support services.
+#
+#     --config             show all configuration variables
+#     --debug              enable verbose shell tracing
+# -n, --dry-run            display commands without modifying any files
+#     --features           display basic configuration information and exit
+#     --mode=MODE          use operation mode MODE
+#     --preserve-dup-deps  don't remove duplicate dependency libraries
+#     --quiet, --silent    don't print informational messages
+#     --tag=TAG            use configuration variables from tag TAG
+# -v, --verbose            print informational messages (default)
+#     --version            print version information
+# -h, --help               print short or long help message
+#
+# 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 `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+#       host-triplet:	$host
+#       shell:		$SHELL
+#       compiler:		$LTCC
+#       compiler flags:		$LTCFLAGS
+#       linker:		$LD (gnu? $with_gnu_ld)
+#       $progname:		(GNU libtool) 2.2.6
+#       automake:		$automake_version
+#       autoconf:		$autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
 
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION=1.5.26
-TIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)"
+VERSION=2.2.6
+TIMESTAMP=""
+package_revision=1.3012
 
-# 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,18 +91,483 @@
 BIN_SH=xpg4; export BIN_SH # for Tru64
 DUALCASE=1; export DUALCASE # for MKS sh
 
-# Check that we have a working $echo.
+# NLS nuisances: We save the old values to restore during execute mode.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+          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
+
+$lt_unset CDPATH
+
+
+
+
+
+: ${CP="cp -f"}
+: ${ECHO="echo"}
+: ${EGREP="/usr/bin/grep -E"}
+: ${FGREP="/usr/bin/grep -F"}
+: ${GREP="/usr/bin/grep"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SED="/opt/local/bin/gsed"}
+: ${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"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# 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 "X${1}" | $Xsed -e "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+# Generated shell functions inserted here.
+
+# 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:
+# In the unlikely event $progname began with a '-', it would play havoc with
+# func_echo (imagine progname=-n), so we prepend ./ in that case:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+case $progname in
+  -*) progname=./$progname ;;
+esac
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+  [\\/]*|[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'
+
+# 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${mode+: }$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_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
+
+    # 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 "X$my_directory_path" | $Xsed -e "$dirname"`
+      done
+      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e '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
+# libtool processes, and avoids race conditions if possible.  If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+    if test "$opt_dry_run" = ":"; then
+      # Return a directory name, but don't create it in dry-run mode
+      my_tmpdir="${my_template}-$$"
+    else
+
+      # If mktemp works, use that first and foremost
+      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}$$"
+
+        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" || \
+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+    fi
+
+    $ECHO "X$my_tmpdir" | $Xsed
+}
+
+
+# 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 ()
+{
+    case $1 in
+      *[\\\`\"\$]*)
+	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$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 "X$1" | $Xsed \
+	    -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_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $SED -n '/^# '$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 ()
+{
+    $SED -n '/^# Usage:/,/# -h/ {
+        s/^# //
+	s/^# *$//
+	s/\$progname/'$progname'/
+	p
+    }' < "$progpath"
+    $ECHO
+    $ECHO "run \`$progname --help | more' for full usage"
+    exit $?
+}
+
+# func_help
+# Echo long help message to standard output and exit.
+func_help ()
+{
+    $SED -n '/^# Usage:/,/# Report bugs to/ {
+        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
+     }' < "$progpath"
+    exit $?
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    func_error "missing argument for $1"
+    exit_cmd=exit
+}
+
+exit_cmd=:
+
+
+
+
+
+# Check that we have a working $ECHO.
 if test "X$1" = X--no-reexec; then
   # Discard the --no-reexec flag, and continue.
   shift
 elif test "X$1" = X--fallback-echo; then
   # Avoid inline document here, it may be left over
   :
-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
-  # Yippee, $echo works!
+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.
+  # Restart under the correct shell, and then maybe $ECHO will work.
   exec $SHELL "$progpath" --no-reexec ${1+"$@"}
 fi
 
@@ -84,161 +580,424 @@
   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=
-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
-	  export $lt_var
-	fi"
-done
-
-if test -n "$lt_env"; then
-  lt_env="env $lt_env"
-fi
-
-# 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
+magic_exe="%%%MAGIC EXE variable%%%"
 
 # Global variables.
-mode=$default_mode
+# $mode is unset
 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
 
-#####################################
-# Shell function definitions:
-# This seems to be the best place for them
+opt_dry_run=false
+opt_duplicate_deps=false
+opt_silent=false
+opt_debug=:
 
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
+# 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_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
 {
-    my_template="${TMPDIR-/tmp}/${1-$progname}"
-
-    if test "$run" = ":"; then
-      # Return a directory name, but don't create it in dry-run mode
-      my_tmpdir="${my_template}-$$"
-    else
-
-      # If mktemp works, use that first and foremost
-      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}$$"
-
-	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
-      }
-    fi
-
-    $echo "X$my_tmpdir" | $Xsed
+    func_error ${1+"$@"}
+    func_error "See the $PACKAGE documentation for more information."
+    func_fatal_error "Fatal configuration error."
 }
 
 
-# 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_config
+# Display the configuration for all the tags in this script.
+func_config ()
 {
-  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
+    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
-    ;;
-  *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"
+    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
+  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
+}
+
+# Parse options once, thoroughly.  This comes as soon as possible in
+# the script to make things like `libtool --version' happen quickly.
+{
+
+  # Shorthand for --mode=foo, only valid as the first argument
+  case $1 in
+  clean|clea|cle|cl)
+    shift; set dummy --mode clean ${1+"$@"}; shift
+    ;;
+  compile|compil|compi|comp|com|co|c)
+    shift; set dummy --mode compile ${1+"$@"}; shift
+    ;;
+  execute|execut|execu|exec|exe|ex|e)
+    shift; set dummy --mode execute ${1+"$@"}; shift
+    ;;
+  finish|finis|fini|fin|fi|f)
+    shift; set dummy --mode finish ${1+"$@"}; shift
+    ;;
+  install|instal|insta|inst|ins|in|i)
+    shift; set dummy --mode install ${1+"$@"}; shift
+    ;;
+  link|lin|li|l)
+    shift; set dummy --mode link ${1+"$@"}; shift
+    ;;
+  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+    shift; set dummy --mode uninstall ${1+"$@"}; shift
     ;;
   esac
-  $echo $win32_libid_type
+
+  # Parse non-mode specific arguments:
+  while test "$#" -gt 0; do
+    opt="$1"
+    shift
+
+    case $opt in
+      --config)		func_config					;;
+
+      --debug)		preserve_args="$preserve_args $opt"
+			func_echo "enabling shell trace mode"
+			opt_debug='set -x'
+			$opt_debug
+			;;
+
+      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
+			execute_dlfiles="$execute_dlfiles $1"
+			shift
+			;;
+
+      --dry-run | -n)	opt_dry_run=:					;;
+      --features)       func_features					;;
+      --finish)		mode="finish"					;;
+
+      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
+			case $1 in
+			  # Valid mode arguments:
+			  clean)	;;
+			  compile)	;;
+			  execute)	;;
+			  finish)	;;
+			  install)	;;
+			  link)		;;
+			  relink)	;;
+			  uninstall)	;;
+
+			  # Catch anything else as an error
+			  *) func_error "invalid argument for $opt"
+			     exit_cmd=exit
+			     break
+			     ;;
+		        esac
+
+			mode="$1"
+			shift
+			;;
+
+      --preserve-dup-deps)
+			opt_duplicate_deps=:				;;
+
+      --quiet|--silent)	preserve_args="$preserve_args $opt"
+			opt_silent=:
+			;;
+
+      --verbose| -v)	preserve_args="$preserve_args $opt"
+			opt_silent=false
+			;;
+
+      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
+			preserve_args="$preserve_args $opt $1"
+			func_enable_tag "$1"	# tagname is set here
+			shift
+			;;
+
+      # Separate optargs to long options:
+      -dlopen=*|--mode=*|--tag=*)
+			func_opt_split "$opt"
+			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
+			shift
+			;;
+
+      -\?|-h)		func_usage					;;
+      --help)		opt_help=:					;;
+      --version)	func_version					;;
+
+      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
+
+      *)		nonopt="$opt"
+			break
+			;;
+    esac
+  done
+
+
+  case $host in
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
+      # don't eliminate duplications in $postdeps and $predeps
+      opt_duplicate_compiler_generated_deps=:
+      ;;
+    *)
+      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
+      ;;
+  esac
+
+  # Having warned about all mis-specified options, bail out if
+  # anything was wrong.
+  $exit_cmd $EXIT_FAILURE
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+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
+}
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+$opt_help || {
+  # Sanity checks first:
+  func_check_version_match
+
+  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+    func_fatal_configuration "not configured to build any kind of library"
+  fi
+
+  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
+
+
+  # Darwin sucks
+  eval std_shrext=\"$shrext_cmds\"
+
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    func_error "unrecognized option \`-dlopen'"
+    $ECHO "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$progname --help --mode=$mode' for more information."
+}
+
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# 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_ltwrapper_scriptname_result=""
+    if func_ltwrapper_executable_p "$1"; then
+	func_dirname_and_basename "$1" "" "."
+	func_stripname '' '.exe' "$func_basename_result"
+	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+    fi
+}
+
+# func_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
 }
 
 
@@ -250,39 +1009,32 @@
 # 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_quote_for_eval "$arg"
+	CC_quoted="$CC_quoted $func_quote_for_eval_result"
       done
       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 "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
       # 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_quote_for_eval "$arg"
+	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
+	    done
 	    case "$@ " in
-	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
 	      # The compiler in the base compile command matches
 	      # the one in the tagged configuration.
 	      # Assume this is the tagged configuration we want.
@@ -296,11 +1048,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 +1059,48 @@
 }
 
 
-# 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
-    ;;
-
-  -*)
-    $echo "$modename: unrecognized option \`$arg'" 1>&2
-    $echo "$help" 1>&2
-    exit $EXIT_FAILURE
-    ;;
-
-  *)
-    nonopt="$arg"
-    break
-    ;;
-  esac
-done
-
-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
-
-# 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
-
-  # 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
-      ;;
-    *)
-      # 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
-      ;;
-    esac
-  fi
-
-  # 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
-  fi
-
-  # 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_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 +1109,7 @@
     arg_mode=normal
     libobj=
     later=
+    pie_flag=
 
     for arg
     do
@@ -684,15 +1130,18 @@
 	# 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)
+	-pie | -fpie | -fPIE)
+          pie_flag="$pie_flag $arg"
+	  continue
+	  ;;
+
+	-shared | -static | -prefer-pic | -prefer-non-pic)
 	  later="$later $arg"
 	  continue
 	  ;;
@@ -708,31 +1157,25 @@
 	  ;;            #  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_quote_for_eval "$arg"
+	    lastarg="$lastarg $func_quote_for_eval_result"
 	  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"
 	  continue
 	  ;;
 
-	* )
+	*)
 	  # Accept the current argument as the source file.
 	  # The previous "srcfile" becomes the current argument.
 	  #
@@ -744,66 +1187,42 @@
       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_quote_for_eval "$lastarg"
+      base_compile="$base_compile $func_quote_for_eval_result"
     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)
+      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 +1230,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 +1255,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 +1274,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 +1288,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 "X$srcfile" | $Xsed -e 's%^.*/%%' -e '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 +1299,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 +1316,22 @@
 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"
+      removelist="$removelist $output_obj"
+      $ECHO "$srcfile" > "$lockfile"
     fi
 
+    $opt_dry_run || $RM $removelist
+    removelist="$removelist $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
     if test -n "$fix_srcfile_path"; then
       eval srcfile=\"$fix_srcfile_path\"
     fi
-    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
-    case $qsrcfile in
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-      qsrcfile="\"$qsrcfile\"" ;;
-    esac
-
-    $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_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 +1345,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"
       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,45 +1371,27 @@
 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
@@ -1033,17 +1401,12 @@
 
       # 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_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 +1420,2620 @@
 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
-    ;;
+}
 
-  # libtool link mode
-  link | relink)
-    modename="$modename: link"
+$opt_help || {
+test "$mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+    # We need to display help for each of the modes.
+    case $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 building PIC objects only
+  -prefer-non-pic   try to building 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
+
+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 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
+  -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
+
+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 \`$mode'"
+        ;;
+    esac
+
+    $ECHO
+    $ECHO "Try \`$progname --help' for more information about other modes."
+
+    exit $?
+}
+
+  # Now that we've collected a possible --mode arg, show help if necessary
+  $opt_help && func_mode_help
+
+
+# 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 $execute_dlfiles; do
+      test -f "$file" \
+	|| func_fatal_help "\`$file' is not a file"
+
+      dir=
+      case $file in
+      *.la)
+	# 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
+	  dir="$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
+      -*) ;;
+      *)
+	# 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_quote_for_eval "$file"
+      args="$args $func_quote_for_eval_result"
+    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 "$mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $opt_debug
+    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.
+	  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" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    $opt_silent && exit $EXIT_SUCCESS
+
+    $ECHO "X----------------------------------------------------------------------" | $Xsed
+    $ECHO "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $ECHO "   $libdir"
+    done
+    $ECHO
+    $ECHO "If you ever happen to want to link against installed libraries"
+    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
+    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $ECHO "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $ECHO "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $ECHO "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $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
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      solaris2.[6789]|solaris2.1[0-9])
+        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+	$ECHO "pages."
+	;;
+      *)
+        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
+        ;;
+    esac
+    $ECHO "X----------------------------------------------------------------------" | $Xsed
+    exit $EXIT_SUCCESS
+}
+
+test "$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.
+       $ECHO "X$nonopt" | $GREP shtool >/dev/null; 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"
+    install_prog="$install_prog$func_quote_for_eval_result"
+
+    # 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.
+      func_quote_for_eval "$arg"
+      install_prog="$install_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 -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.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# 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 "*) ;;
+	  *) 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
+
+	func_dirname "$file" "/" ""
+	dir="$func_dirname_result"
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
+
+	  # 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 "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "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_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" && 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
+	  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 "X$lib" | $Xsed -e '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 "X$relink_command" | $Xsed -e '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 "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)
+	    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 "$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
+
+/* 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 "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	  for progfile in $progfiles; do
+	    func_verbose "extracting global C symbols from \`$progfile'"
+	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
+	  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"
+	  $opt_dry_run || {
+	    eval '$ECHO ": $name " >> "$nlist"'
+	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	  }
+	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;
+"
+	  case $host in
+	  *cygwin* | *mingw* | *cegcc* )
+	    $ECHO >> "$output_objdir/$my_dlsyms" "\
+/* DATA imports from DLLs on WIN32 con't be const, because
+   runtime relocations are performed -- see ld's documentation
+   on pseudo-relocs.  */"
+	    lt_dlsym_const= ;;
+	  *osf5*)
+	    echo >> "$output_objdir/$my_dlsyms" "\
+/* This system does not cope well with relocations in const data */"
+	    lt_dlsym_const= ;;
+	  *)
+	    lt_dlsym_const=const ;;
+	  esac
+
+	  $ECHO >> "$output_objdir/$my_dlsyms" "\
+extern $lt_dlsym_const lt_dlsymlist
+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) ;;
+	  *) symtab_cflags="$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 "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	  else
+	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	  fi
+	  ;;
+	*)
+	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	  ;;
+	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 "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "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.
+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
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 |
+	$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_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    $opt_debug
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
+    if ($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 | $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 | $NL2SP`
+    done
+
+    func_extract_archives_result="$my_oldobjs"
+}
+
+
+
+# func_emit_wrapper_part1 [arg=no]
+#
+# Emit the first part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part1 ()
+{
+	func_emit_wrapper_part1_arg1=no
+	if test -n "$1" ; then
+	  func_emit_wrapper_part1_arg1=$1
+	fi
+
+	$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.
+Xsed='${SED} -e 1s/^X//'
+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
+    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 "\
+
+  # 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
+"
+}
+# end: func_emit_wrapper_part1
+
+# func_emit_wrapper_part2 [arg=no]
+#
+# Emit the second part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part2 ()
+{
+	func_emit_wrapper_part2_arg1=no
+	if test -n "$1" ; then
+	  func_emit_wrapper_part2_arg1=$1
+	fi
+
+	$ECHO "\
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
+  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 \"X\$thisdir\" | \$Xsed -e '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"
+
+	# 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 \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$ECHO "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2* | *-cegcc*)
+	  $ECHO "\
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $ECHO "\
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+    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\
+"
+}
+# end: func_emit_wrapper_part2
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+	func_emit_wrapper_arg1=no
+	if test -n "$1" ; then
+	  func_emit_wrapper_arg1=$1
+	fi
+
+	# split this up so that func_emit_cwrapperexe_src
+	# can call each part independently.
+	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
+	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
+}
+
+
+# func_to_host_path arg
+#
+# Convert paths to host format when used with build tools.
+# Intended for use with "native" mingw (where libtool itself
+# is running under the msys shell), or in the following cross-
+# build environments:
+#    $build          $host
+#    mingw (msys)    mingw  [e.g. native]
+#    cygwin          mingw
+#    *nix + wine     mingw
+# where wine is equipped with the `winepath' executable.
+# In the native mingw case, the (msys) shell automatically
+# converts paths for any non-msys applications it launches,
+# but that facility isn't available from inside the cwrapper.
+# Similar accommodations are necessary for $host mingw and
+# $build cygwin.  Calling this function does no harm for other
+# $host/$build combinations not listed above.
+#
+# ARG is the path (on $build) that should be converted to
+# the proper representation for $host. The result is stored
+# in $func_to_host_path_result.
+func_to_host_path ()
+{
+  func_to_host_path_result="$1"
+  if test -n "$1" ; then
+    case $host in
+      *mingw* )
+        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+        case $build in
+          *mingw* ) # actually, msys
+            # awkward: cmd appends spaces to result
+            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
+              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          *cygwin* )
+            func_to_host_path_tmp1=`cygpath -w "$1"`
+            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          * )
+            # Unfortunately, winepath does not exit with a non-zero
+            # error code, so we are forced to check the contents of
+            # stdout. On the other hand, if the command is not
+            # found, the shell will set an exit code of 127 and print
+            # *an error message* to stdout. So we must check for both
+            # error code of zero AND non-empty stdout, which explains
+            # the odd construction:
+            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
+            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
+              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+                $SED -e "$lt_sed_naive_backslashify"`
+            else
+              # Allow warning below.
+              func_to_host_path_result=""
+            fi
+            ;;
+        esac
+        if test -z "$func_to_host_path_result" ; then
+          func_error "Could not determine host path corresponding to"
+          func_error "  '$1'"
+          func_error "Continuing, but uninstalled executables may not work."
+          # Fallback:
+          func_to_host_path_result="$1"
+        fi
+        ;;
+    esac
+  fi
+}
+# end: func_to_host_path
+
+# func_to_host_pathlist arg
+#
+# Convert pathlists to host format when used with build tools.
+# See func_to_host_path(), above. This function supports the
+# following $build/$host combinations (but does no harm for
+# combinations not listed here):
+#    $build          $host
+#    mingw (msys)    mingw  [e.g. native]
+#    cygwin          mingw
+#    *nix + wine     mingw
+#
+# Path separators are also converted from $build format to
+# $host format. If ARG begins or ends with a path separator
+# character, it is preserved (but converted to $host format)
+# on output.
+#
+# ARG is a pathlist (on $build) that should be converted to
+# the proper representation on $host. The result is stored
+# in $func_to_host_pathlist_result.
+func_to_host_pathlist ()
+{
+  func_to_host_pathlist_result="$1"
+  if test -n "$1" ; then
+    case $host in
+      *mingw* )
+        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+        # Remove leading and trailing path separator characters from
+        # ARG. msys behavior is inconsistent here, cygpath turns them
+        # into '.;' and ';.', and winepath ignores them completely.
+        func_to_host_pathlist_tmp2="$1"
+        # Once set for this call, this variable should not be
+        # reassigned. It is used in tha fallback case.
+        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
+          $SED -e 's|^:*||' -e 's|:*$||'`
+        case $build in
+          *mingw* ) # Actually, msys.
+            # Awkward: cmd appends spaces to result.
+            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
+              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          *cygwin* )
+            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
+            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          * )
+            # unfortunately, winepath doesn't convert pathlists
+            func_to_host_pathlist_result=""
+            func_to_host_pathlist_oldIFS=$IFS
+            IFS=:
+            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
+              IFS=$func_to_host_pathlist_oldIFS
+              if test -n "$func_to_host_pathlist_f" ; then
+                func_to_host_path "$func_to_host_pathlist_f"
+                if test -n "$func_to_host_path_result" ; then
+                  if test -z "$func_to_host_pathlist_result" ; then
+                    func_to_host_pathlist_result="$func_to_host_path_result"
+                  else
+                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
+                  fi
+                fi
+              fi
+              IFS=:
+            done
+            IFS=$func_to_host_pathlist_oldIFS
+            ;;
+        esac
+        if test -z "$func_to_host_pathlist_result" ; then
+          func_error "Could not determine the host path(s) corresponding to"
+          func_error "  '$1'"
+          func_error "Continuing, but uninstalled executables may not work."
+          # Fallback. This may break if $1 contains DOS-style drive
+          # specifications. The fix is not to complicate the expression
+          # below, but for the user to provide a working wine installation
+          # with winepath so that path translation in the cross-to-mingw
+          # case works properly.
+          lt_replace_pathsep_nix_to_dos="s|:|;|g"
+          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
+            $SED -e "$lt_replace_pathsep_nix_to_dos"`
+        fi
+        # Now, add the leading and trailing path separators back
+        case "$1" in
+          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
+            ;;
+        esac
+        case "$1" in
+          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
+            ;;
+        esac
+        ;;
+    esac
+  fi
+}
+# end: func_to_host_pathlist
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# 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.
+
+   Currently, it simply execs the wrapper *script* "$SHELL $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+	    cat <<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+# define setmode _setmode
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+#  define HAVE_SETENV
+#  ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+#  endif
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.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 S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+#ifdef _MSC_VER
+# define S_IXUSR _S_IEXEC
+# define stat _stat
+# ifndef _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#endif
+
+#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 */
+
+#ifdef __CYGWIN__
+# define FOPEN_WB "wb"
+#endif
+
+#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)
+
+#undef LTWRAPPER_DEBUGPRINTF
+#if defined DEBUGWRAPPER
+# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
+static void
+ltwrapper_debugprintf (const char *fmt, ...)
+{
+    va_list args;
+    va_start (args, fmt);
+    (void) vfprintf (stderr, fmt, args);
+    va_end (args);
+}
+#else
+# define LTWRAPPER_DEBUGPRINTF(args)
+#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);
+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_fatal (const char *message, ...);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_opt_process_env_set (const char *arg);
+void lt_opt_process_env_prepend (const char *arg);
+void lt_opt_process_env_append (const char *arg);
+int lt_split_name_value (const char *arg, char** name, char** value);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+
+static const char *script_text_part1 =
+EOF
+
+	    func_emit_wrapper_part1 yes |
+	        $SED -e 's/\([\\"]\)/\\\1/g' \
+	             -e 's/^/  "/' -e 's/$/\\n"/'
+	    echo ";"
+	    cat <<EOF
+
+static const char *script_text_part2 =
+EOF
+	    func_emit_wrapper_part2 yes |
+	        $SED -e 's/\([\\"]\)/\\\1/g' \
+	             -e 's/^/  "/' -e 's/$/\\n"/'
+	    echo ";"
+
+	    cat <<EOF
+const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_pathlist "$temp_rpath"
+	      cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test -n "$dllsearchpath"; then
+              func_to_host_pathlist "$dllsearchpath:"
+	      cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_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-"
+#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
+
+static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+
+static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
+static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
+  /* argument is putenv-style "foo=bar", value of foo is set to bar */
+
+static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
+static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
+  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
+
+static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
+static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
+  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
+
+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]));
+  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
+  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
+
+  /* very simple arg parsing; don't want to rely on getopt */
+  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"
+	  printf ("%s", script_text_part1);
+	  printf ("%s", script_text_part2);
+	  return 0;
+	}
+    }
+
+  newargz = XMALLOC (char *, argc + 1);
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal ("Couldn't find %s", argv[0]);
+  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
+			  tmp_pathspec));
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  LTWRAPPER_DEBUGPRINTF (("(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;
+
+  LTWRAPPER_DEBUGPRINTF (("(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 */
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
+        {
+          if (argv[i][env_set_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_set_opt_len + 1;
+              lt_opt_process_env_set (p);
+            }
+          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_set (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_set_opt);
+          continue;
+        }
+      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
+        {
+          if (argv[i][env_prepend_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_prepend_opt_len + 1;
+              lt_opt_process_env_prepend (p);
+            }
+          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_prepend_opt);
+          continue;
+        }
+      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
+        {
+          if (argv[i][env_append_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_append_opt_len + 1;
+              lt_opt_process_env_append (p);
+            }
+          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_append (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_append_opt);
+          continue;
+        }
+      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal ("Unrecognized option in %s namespace: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
+  for (i = 0; i < newargc; i++)
+    {
+      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
+    }
+
+EOF
+
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
+      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 ("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;
+
+  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
+			  path ? (*path ? path : "EMPTY!") : "NULL!"));
+  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;
+
+  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
+			  path ? (*path ? path : "EMPTY!") : "NULL!"));
+  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;
+
+  LTWRAPPER_DEBUGPRINTF (("(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 *
+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)
+    {
+      LTWRAPPER_DEBUGPRINTF (("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
+	{
+	  char *errstr = strerror (errno);
+	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
+	}
+    }
+  XFREE (tmp_pathspec);
+
+  if (!has_symlinks)
+    {
+      return xstrdup (pathspec);
+    }
+
+  tmp_pathspec = realpath (pathspec, buf);
+  if (tmp_pathspec == 0)
+    {
+      lt_fatal ("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;
+}
+
+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);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
+                          (name ? name : "<NULL>"),
+                          (value ? value : "<NULL>")));
+  {
+#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;
+}
+
+int
+lt_split_name_value (const char *arg, char** name, char** value)
+{
+  const char *p;
+  int len;
+  if (!arg || !*arg)
+    return 1;
+
+  p = strchr (arg, (int)'=');
+
+  if (!p)
+    return 1;
+
+  *value = xstrdup (++p);
+
+  len = strlen (arg) - strlen (*value);
+  *name = XMALLOC (char, len);
+  strncpy (*name, arg, len-1);
+  (*name)[len - 1] = '\0';
+
+  return 0;
+}
+
+void
+lt_opt_process_env_set (const char *arg)
+{
+  char *name = NULL;
+  char *value = NULL;
+
+  if (lt_split_name_value (arg, &name, &value) != 0)
+    {
+      XFREE (name);
+      XFREE (value);
+      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
+    }
+
+  lt_setenv (name, value);
+  XFREE (name);
+  XFREE (value);
+}
+
+void
+lt_opt_process_env_prepend (const char *arg)
+{
+  char *name = NULL;
+  char *value = NULL;
+  char *new_value = NULL;
+
+  if (lt_split_name_value (arg, &name, &value) != 0)
+    {
+      XFREE (name);
+      XFREE (value);
+      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
+    }
+
+  new_value = lt_extend_str (getenv (name), value, 0);
+  lt_setenv (name, new_value);
+  XFREE (new_value);
+  XFREE (name);
+  XFREE (value);
+}
+
+void
+lt_opt_process_env_append (const char *arg)
+{
+  char *name = NULL;
+  char *value = NULL;
+  char *new_value = NULL;
+
+  if (lt_split_name_value (arg, &name, &value) != 0)
+    {
+      XFREE (name);
+      XFREE (value);
+      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
+    }
+
+  new_value = lt_extend_str (getenv (name), value, 1);
+  lt_setenv (name, new_value);
+  XFREE (new_value);
+  XFREE (name);
+  XFREE (value);
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                          (name ? name : "<NULL>"),
+                          (value ? value : "<NULL>")));
+
+  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)
+{
+  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                          (name ? name : "<NULL>"),
+                          (value ? value : "<NULL>")));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $opt_debug
+    case $host in
+    *-*-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 +4051,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,6 +4069,7 @@
     dllsearchpath=
     lib_search_path=`pwd`
     inst_prefix_dir=
+    new_inherited_linker_flags=
 
     avoid_version=no
     dlfiles=
@@ -1154,7 +4085,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 +4098,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,20 +4150,16 @@
     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
 
@@ -1235,8 +4167,8 @@
 	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
@@ -1274,10 +4206,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,58 +4216,52 @@
 	  prev=
 	  continue
 	  ;;
+	framework)
+	  case $host in
+	    *-*-darwin*)
+	      case "$deplibs " in
+		*" $qarg.ltframework "*) ;;
+		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
+		   ;;
+	      esac
+	      ;;
+	  esac
+	  prev=
+	  continue
+	  ;;
 	inst_prefix)
 	  inst_prefix_dir="$arg"
 	  prev=
 	  continue
 	  ;;
-	precious_regex)
-	  precious_files_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	release)
-	  release="-$arg"
-	  prev=
-	  continue
-	  ;;
 	objectlist)
 	  if test -f "$arg"; then
 	    save_arg=$arg
 	    moreargs=
-	    for fil in `cat $save_arg`
+	    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
+	      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.
@@ -1362,7 +4286,7 @@
 		  fi
 
 		  # A PIC object.
-		  libobjs="$libobjs $pic_object"
+		  func_append libobjs " $pic_object"
 		  arg="$pic_object"
 		fi
 
@@ -1372,7 +4296,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
@@ -1380,46 +4304,48 @@
 		  # 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
 	    done
 	  else
-	    $echo "$modename: link input file \`$save_arg' does not exist"
-	    exit $EXIT_FAILURE
+	    func_fatal_error "link input file \`$arg' does not exist"
 	  fi
 	  arg=$save_arg
 	  prev=
 	  continue
 	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$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
@@ -1436,39 +4362,37 @@
 	  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)
+	  weak_libs="$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"
 	  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)
+	  compiler_flags="$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)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
 	  prev=
+	  func_append compile_command " $wl$qarg"
+	  func_append finalize_command " $wl$qarg"
 	  continue
 	  ;;
 	*)
@@ -1484,16 +4408,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)
@@ -1518,8 +4442,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 +4452,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,25 +4467,30 @@
       -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"
+	dir=$func_stripname_result
+	if test -z "$dir"; 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
 	# 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
@@ -1581,14 +4502,16 @@
 	  ;;
 	esac
 	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
 	  case :$dllsearchpath: in
 	  *":$dir:"*) ;;
+	  ::) dllsearchpath=$dir;;
 	  *) dllsearchpath="$dllsearchpath:$dir";;
 	  esac
 	  case :$dllsearchpath: in
 	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
 	  *) dllsearchpath="$dllsearchpath:$testbindir";;
 	  esac
 	  ;;
@@ -1599,7 +4522,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*)
 	    # These systems don't actually have a C or math library (as such)
 	    continue
 	    ;;
@@ -1613,7 +4536,7 @@
 	    ;;
 	  *-*-rhapsody* | *-*-darwin1.[012])
 	    # Rhapsody C and math libraries are in the System framework
-	    deplibs="$deplibs -framework System"
+	    deplibs="$deplibs System.ltframework"
 	    continue
 	    ;;
 	  *-*-sco3.2v5* | *-*-sco5v6*)
@@ -1637,63 +4560,35 @@
 	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"
-	continue
-	;;
-
       -module)
 	module=yes
 	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)
+	compiler_flags="$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)
+	compiler_flags="$compiler_flags $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	case "$new_inherited_linker_flags " in
+	    *" $arg "*) ;;
+	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
 	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 +4599,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,13 +4644,13 @@
 	;;
 
       -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]:[\\/]*) ;;
 	*)
-	  $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
@@ -1765,6 +4660,16 @@
 	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 +4688,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"
+	  arg="$arg $wl$func_quote_for_eval_result"
+	  compiler_flags="$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"
+	  arg="$arg $wl$func_quote_for_eval_result"
+	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
+	  linker_flags="$linker_flags $func_quote_for_eval_result"
 	done
 	IFS="$save_ifs"
-	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
 	;;
 
       -Xcompiler)
@@ -1841,16 +4748,36 @@
 	continue
 	;;
 
+      # -msg_* for osf cc
+      -msg_*)
+	func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+	;;
+
+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+      # +DA*, +DD* enable 64-bit mode on the HP compiler
+      # -q* pass through compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* pass through architecture-specific
+      # compiler args for GCC
+      # -F/path gives path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+      # @file GCC response files
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+        func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+        func_append compile_command " $arg"
+        func_append finalize_command " $arg"
+        compiler_flags="$compiler_flags $arg"
+        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)
@@ -1862,32 +4789,23 @@
 	# 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.
@@ -1912,7 +4830,7 @@
 	    fi
 
 	    # A PIC object.
-	    libobjs="$libobjs $pic_object"
+	    func_append libobjs " $pic_object"
 	    arg="$pic_object"
 	  fi
 
@@ -1922,7 +4840,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,28 +4848,22 @@
 	    # 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
 	;;
@@ -1984,70 +4896,51 @@
       *)
 	# 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 \"X\${$shlibpath_var}\" \| \$Xsed -e \'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"
     # 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,22 +4948,13 @@
     *) 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_duplicate_deps ; then
 	case "$libs " in
 	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
 	esac
@@ -2085,7 +4969,7 @@
       # $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" ;;
@@ -2101,15 +4985,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 +5010,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 +5036,33 @@
 	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=
+	  case $lib in
+	  *.la)	func_source "$lib" ;;
+	  esac
+
+	  # Collect preopened libtool deplibs, except any this library
+	  # has declared as weak libs
+	  for deplib in $dependency_libs; do
+            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
+	    case " $weak_libs " in
+	    *" $deplib_base "*) ;;
+	    *) deplibs="$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
@@ -2153,15 +5073,22 @@
 	    finalize_deplibs="$deplib $finalize_deplibs"
 	  else
 	    compiler_flags="$compiler_flags $deplib"
+	    if test "$linkmode" = lib ; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) new_inherited_linker_flags="$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 +5124,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 +5146,35 @@
 		    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 "*) ;;
+		    * ) new_inherited_linker_flags="$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"
+	    newlib_search_path="$newlib_search_path $func_stripname_result"
 	    ;;
 	  prog)
 	    if test "$pass" = conv; then
@@ -2248,17 +5187,19 @@
 	      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"
+	    newlib_search_path="$newlib_search_path $func_stripname_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"
+	    dir=$func_stripname_result
 	    # Make sure the xrpath contains only unique directories.
 	    case "$xrpath " in
 	    *" $dir "*) ;;
@@ -2276,35 +5217,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 \"X$deplib\"" 2>/dev/null | $Xsed -e 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)
@@ -2339,21 +5286,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 +5305,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,11 +5314,19 @@
 
 
 	# 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 "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
+	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+	    case " $new_inherited_linker_flags " in
+	      *" $tmp_inherited_linker_flag "*) ;;
+	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
+	    esac
+	  done
+	fi
+	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
 	if test "$linkmode,$pass" = "lib,link" ||
 	   test "$linkmode,$pass" = "prog,scan" ||
 	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
@@ -2386,26 +5339,24 @@
 	  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
 	  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_duplicate_deps ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
 	  continue
 	fi # $pass = conv
 
@@ -2416,15 +5367,13 @@
 	  linklib="$l"
 	done
 	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 ||
@@ -2446,18 +5395,19 @@
 	*)
 	  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
+	    func_warning "library \`$lib' was moved."
 	    dir="$ladir"
 	    absdir="$abs_ladir"
 	    libdir="$abs_ladir"
@@ -2479,18 +5429,22 @@
 	    notinst_path="$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"
+	    # Keep a list of preopened convenience libraries to check
+	    # that they are being used correctly in the link pass.
+	    test -z "$libdir" && \
+		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
 	  # Otherwise, use the dlname, so that lt_dlopen finds it.
 	  elif test -n "$dlname"; then
 	    newdlprefiles="$newdlprefiles $dir/$dlname"
@@ -2526,7 +5480,9 @@
 	  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"
+	         newlib_search_path="$newlib_search_path $func_stripname_result"
+		 ;;
 	    esac
 	    # Need to link against all dependency_libs?
 	    if test "$linkalldeplibs" = yes; then
@@ -2536,7 +5492,7 @@
 	      # or/and link against static libraries
 	      newdependency_libs="$deplib $newdependency_libs"
 	    fi
-	    if test "X$duplicate_deps" = "Xyes" ; then
+	    if $opt_duplicate_deps ; then
 	      case "$tmp_libs " in
 	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
 	      esac
@@ -2549,15 +5505,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:"*) ;;
+	      *) temp_rpath="$temp_rpath$absdir:" ;;
 	      esac
 	    fi
 
@@ -2595,27 +5550,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
+	      notinst_deplibs="$notinst_deplibs $lib"
+	      need_relink=no
+	    ;;
+	  *)
+	    if test "$installed" = no; then
+	      notinst_deplibs="$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
@@ -2645,17 +5616,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,36 +5639,22 @@
 
 	    # 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
@@ -2717,17 +5676,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 +5708,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"
@@ -2769,8 +5733,7 @@
 	    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
@@ -2785,8 +5748,8 @@
 	    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:"*) ;;
@@ -2801,7 +5764,8 @@
 	    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"
@@ -2815,9 +5779,9 @@
 	    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.
@@ -2861,21 +5825,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,7 +5863,8 @@
 	    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";;
@@ -2917,7 +5882,7 @@
 	  tmp_libs=
 	  for deplib in $dependency_libs; do
 	    newdependency_libs="$deplib $newdependency_libs"
-	    if test "X$duplicate_deps" = "Xyes" ; then
+	    if $opt_duplicate_deps ; then
 	      case "$tmp_libs " in
 	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
 	      esac
@@ -2931,94 +5896,71 @@
 	      case $deplib in
 	      -L*) path="$deplib" ;;
 	      *.la)
-		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
-		test "X$dir" = "X$deplib" && dir="."
+	        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
+		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+		      linker_flags="$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 "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	fi
+      fi
       dependency_libs="$newdependency_libs"
       if test "$pass" = dlpreopen; then
 	# Link the dlpreopened libraries before other libraries
@@ -3117,39 +6059,36 @@
     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
@@ -3161,48 +6100,48 @@
       # 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!"
+	  $ECHO
+	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+	  $ECHO "*** objects $objs is not portable!"
 	  libobjs="$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 +6155,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 +6177,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,7 +6189,8 @@
 	  #
 	  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"
 	    ;;
@@ -3264,7 +6200,8 @@
 	    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 +6209,9 @@
 	  esac
 	  ;;
 	no)
-	  current="$2"
-	  revision="$3"
-	  age="$4"
+	  current="$1"
+	  revision="$2"
+	  age="$3"
 	  ;;
 	esac
 
@@ -3282,34 +6219,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 +6255,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 +6272,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 +6292,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,20 +6305,24 @@
 	  ;;
 
 	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
 
@@ -3387,6 +6330,11 @@
 	  verstring="$verstring:${current}.0"
 	  ;;
 
+	qnx)
+	  major=".$current"
+	  versuffix=".$current"
+	  ;;
+
 	sunos)
 	  major=".$current"
 	  versuffix=".$current.$revision"
@@ -3395,14 +6343,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 +6383,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,21 +6391,26 @@
 	  # Don't allow undefined symbols.
 	  allow_undefined_flag="$no_undefined_flag"
 	fi
+
       fi
 
+      func_generate_dlsyms "$libname" "$libname" "yes"
+      libobjs="$libobjs $symfileobj"
+      test "X$libobjs" = "X " && libobjs=
+
       if test "$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
@@ -3467,10 +6419,8 @@
 	    *) ;;
 	  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.
@@ -3478,14 +6428,14 @@
 	oldlibs="$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 "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$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 "X$lib_search_path " | $Xsed -e "s% $path % %g"`
+      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
+      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
       #done
 
       if test -n "$xrpath"; then
@@ -3526,12 +6476,12 @@
       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*)
 	    # 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"
+	    deplibs="$deplibs System.ltframework"
 	    ;;
 	  *-*-netbsd*)
 	    # Don't link with libc until the a.out ld.so is fixed.
@@ -3545,7 +6495,7 @@
 	  *-*-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"
@@ -3582,17 +6532,18 @@
 	  # 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 "*)
@@ -3600,37 +6551,40 @@
 		    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"
 		  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
+		;;
+	      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
@@ -3642,44 +6596,47 @@
 		    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"
 		    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
+		;;
+	      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 "*)
@@ -3689,13 +6646,13 @@
 		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
 		      # 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,12 +6665,12 @@
 			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
 			case $potliblink in
 			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
 			esac
 		      done
-		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
-			 | ${SED} 10q \
-			 | $EGREP "$file_magic_regex" > /dev/null; then
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+			 $SED -e 10q |
+			 $EGREP "$file_magic_regex" > /dev/null; then
 			newdeplibs="$newdeplibs $a_deplib"
 			a_deplib=""
 			break 2
@@ -3723,32 +6680,35 @@
 	      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
+	      ;;
+	    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 "*)
@@ -3758,14 +6718,13 @@
 		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
+		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
+		       $EGREP "$match_pattern_regex" > /dev/null; then
 		      newdeplibs="$newdeplibs $a_deplib"
 		      a_deplib=""
 		      break 2
@@ -3775,44 +6734,46 @@
 	      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
+	      ;;
+	    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 "X $deplibs" | $Xsed \
+	      -e 's/ -lc$//' -e '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 "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
 	    done
 	  fi
-	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
-	    | grep . >/dev/null; then
-	    $echo
+	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
+	     $GREP . >/dev/null; then
+	    $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
 	  ;;
@@ -3825,24 +6786,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 "X $newdeplibs" | $Xsed -e '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 +6813,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 +6836,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 "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  ;;
+      esac
 
       # move library search paths that coincide with paths to not yet
       # installed libraries to the beginning of the library search list
@@ -3904,7 +6872,6 @@
       done
       deplibs="$new_libs"
 
-
       # All the library-specific variables (install_libdir is set above).
       library_names=
       old_library=
@@ -3949,10 +6916,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
@@ -3978,8 +6942,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\"
@@ -3998,71 +6963,122 @@
 	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 "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	test "X$libobjs" = "X " && libobjs=
+
+	delfiles=
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+	  export_symbols="$output_objdir/$libname.uexp"
+	  delfiles="$delfiles $export_symbols"
+	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
 	      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
+	      func_len " $cmd"
+	      len=$func_len_result
+	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+		func_show_eval "$cmd" 'exit $?'
+		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 "X$include_expsyms" | $Xsed | $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
+	  delfiles="$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 "*) ;;
+	  *)
+	    tmp_deplibs="$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_extract_archives $gentop $convenience
 	    libobjs="$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"
@@ -4070,7 +7086,7 @@
 
 	# 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 $?
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
 	fi
 
 	# Do each of the archive commands.
@@ -4083,22 +7099,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 +7130,162 @@
 	    save_libobjs=$libobjs
 	  fi
 	  save_output=$output
-	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
+	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
 
 	  # 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
+	      $ECHO "$obj" >> $output
+	    done
+	    $ECHO ')' >> $output
+	    delfiles="$delfiles $output"
+	  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
+	      $ECHO "$obj" >> $output
+	    done
+	    delfiles="$delfiles $output"
+	    output=$firstobj\"$file_list_spec$output\"
+	  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.
+		    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~\$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~
+	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+	      if test -n "$last_robj"; then
+	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+	      fi
+	      delfiles="$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 "$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 "X$include_expsyms" | $Xsed | $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
+	      delfiles="$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 +7293,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 +7306,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"
+	  generated="$generated $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  libobjs="$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)'
+	      ( cd "$output_objdir" && \
+	        $RM "${realname}T" && \
+		$MV "${realname}U" "$realname" )
 	    fi
 
 	    exit $lt_exit
@@ -4233,12 +7354,11 @@
 
 	# 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 $?
+	  $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 +7368,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 +7381,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 +7418,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,7 +7434,7 @@
       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 "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
 	else
 	  gentop="$output_objdir/${obj}x"
 	  generated="$generated $gentop"
@@ -4330,24 +7445,15 @@
       fi
 
       # 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 "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$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 +7461,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 +7475,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 +7487,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 "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e '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])
+	      compile_command="$compile_command ${wl}-bind_at_load"
+	      finalize_command="$finalize_command ${wl}-bind_at_load"
+	    ;;
+	  esac
+	fi
+	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
+	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	;;
       esac
 
 
@@ -4498,14 +7600,16 @@
 	  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=$libdir;;
 	  *) dllsearchpath="$dllsearchpath:$libdir";;
 	  esac
 	  case :$dllsearchpath: in
 	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
 	  *) dllsearchpath="$dllsearchpath:$testbindir";;
 	  esac
 	  ;;
@@ -4557,281 +7661,51 @@
 
       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 "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$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
+      *cygwin* | *mingw* )
+        if test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      *cegcc)
+        # Disable wrappers for cegcc, we are cross compiling anyway.
+        wrappers_required=no
+        ;;
+      *)
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        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 "X$compile_command" | $Xsed -e '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=$?'
 
 	# 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
@@ -4864,12 +7738,11 @@
 	# 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 "X$link_command" | $Xsed -e '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 $?'
 	exit $EXIT_SUCCESS
       fi
 
@@ -4878,13 +7751,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 "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
 	  else
 	    # fast_install is set to needless
 	    relink_command=
@@ -4896,608 +7769,103 @@
       fi
 
       # Replace the output file specification.
-      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+      link_command=`$ECHO "X$link_command" | $Xsed -e '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 $?'
 
       # 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 "X$relink_command" | $Xsed -e "$sed_quote_subst"`
       fi
 
-      # Quote $echo for shipping.
-      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+      # 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"`
+	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
       else
-	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+	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 +7874,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,6 +7883,9 @@
 	  build_libtool_libs=no
 	else
 	  oldobjs="$old_deplibs $non_pic_objects"
+	  if test "$preload" = yes && test -f "$symfileobj"; then
+	    oldobjs="$oldobjs $symfileobj"
+	  fi
 	fi
 	addlibs="$old_convenience"
       fi
@@ -5529,8 +7900,18 @@
 
       # 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"
+	  generated="$generated $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  oldobjs="$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 +7920,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"
+	  generated="$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 +7943,62 @@
 		# 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"
+	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
 	      oldobjs="$oldobjs $gentop/$newobj"
 	      ;;
 	    *) oldobjs="$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
 	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 +8010,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 "X$relink_command" | $Xsed -e "$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,12 +8054,11 @@
 	    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
+		test -z "$libdir" && \
+		  func_fatal_error "\`$deplib' is not a valid libtool archive"
 		newdependency_libs="$newdependency_libs $libdir/$name"
 		;;
 	      *) newdependency_libs="$newdependency_libs $deplib" ;;
@@ -5702,25 +8066,37 @@
 	    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"
+		newdlfiles="$newdlfiles $libdir/$name"
+		;;
+	      *) newdlfiles="$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"
+		newdlprefiles="$newdlprefiles $libdir/$name"
+		;;
+	      esac
 	    done
 	    dlprefiles="$newdlprefiles"
 	  else
@@ -5743,15 +8119,15 @@
 	    done
 	    dlprefiles="$newdlprefiles"
 	  fi
-	  $rm $output
+	  $RM $output
 	  # place dlname in correct position for cygwin
 	  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) tdlname=../bin/$dlname ;;
 	  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 +8141,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 +8168,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 "$mode" = link || test "$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,30 +8202,28 @@
     for arg
     do
       case $arg in
-      -f) rm="$rm $arg"; rmforce=yes ;;
-      -*) rm="$rm $arg" ;;
+      -f) RM="$RM $arg"; rmforce=yes ;;
+      -*) RM="$RM $arg" ;;
       *) files="$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=.
+      func_dirname "$file" "" "."
+      dir="$func_dirname_result"
+      if test "X$dir" = X.; then
 	objdir="$origobjdir"
       else
 	objdir="$dir/$origobjdir"
       fi
-      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      func_basename "$file"
+      name="$func_basename_result"
       test "$mode" = uninstall && objdir="$dir"
 
       # Remember objdir for removal later, being careful to avoid duplicates
@@ -6574,9 +8235,9 @@
       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,8 +8251,8 @@
       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
@@ -6606,39 +8267,17 @@
 	    *" $dlname "*) ;;
 	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
 	    esac
-	     test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${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,20 +8287,20 @@
 
       *.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
+	  if test -n "$pic_object" &&
+	     test "$pic_object" != none; then
 	    rmfiles="$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
+	  if test -n "$non_pic_object" &&
+	     test "$non_pic_object" != none; then
 	    rmfiles="$rmfiles $dir/$non_pic_object"
 	  fi
 	fi
@@ -6672,17 +8311,26 @@
 	  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"
 	    ;;
 	  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
+	      rmfiles="$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
@@ -6697,239 +8345,38 @@
 	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 "$mode" = uninstall || test "$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 "$mode" && {
+  help="$generic_help"
+  func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+  func_fatal_help "invalid operation mode \`$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 +8390,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..39ba996
--- /dev/null
+++ b/m4/libtool.m4
@@ -0,0 +1,7357 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#   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 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 56 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_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
+
+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 "X$cc_temp" | $Xsed -e 's%.*/%%' -e "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
+_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_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])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
+_LT_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.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# 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_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 "X$][$1" | $Xsed -e "$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 "X$<var>" | $Xsed -e "$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'
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$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 "X\\\\\$\$var"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\[$]0 --fallback-echo"')dnl "
+  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
+  ;;
+esac
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+
+# LT_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])
+cat >"$CONFIG_LT" <<_LTEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+
+lt_cl_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AS_SHELL_SANITIZE
+_AS_PREPARE
+
+exec AS_MESSAGE_FD>&1
+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) 2008 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.
+if test "$no_create" != yes; then
+  lt_cl_success=:
+  test "$silent" = yes &&
+    lt_config_lt_args="$lt_config_lt_args --quiet"
+  exec AS_MESSAGE_LOG_FD>/dev/null
+  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+  exec AS_MESSAGE_LOG_FD>>config.log
+  $lt_cl_success || AS_EXIT(1)
+fi
+])# LT_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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  _LT_PROG_XSI_SHELLFNS
+
+  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  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)])
+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], [])
+
+
+# _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"
+    ])
+    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" != ":"; 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
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  _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=echo
+    _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
+# -----------------------
+# 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.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+	 [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_SHELL_INIT
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[_LT_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+ECHO=${lt_ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $ECHO works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<_LT_EOF
+[$]*
+_LT_EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$lt_ECHO"; then
+  if test "X${echo_test_string+set}" != Xset; then
+    # find a string as large as possible, as long as the shell can cope with it
+    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+      then
+        break
+      fi
+    done
+  fi
+
+  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+     test "X$echo_testing_string" = "X$echo_test_string"; then
+    :
+  else
+    # The Solaris, AIX, and Digital Unix default echo programs unquote
+    # backslashes.  This makes it impossible to quote backslashes using
+    #   echo "$something" | sed 's/\\/\\\\/g'
+    #
+    # So, first we look for a working echo in the user's PATH.
+
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for dir in $PATH /usr/ucb; do
+      IFS="$lt_save_ifs"
+      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+         test "X$echo_testing_string" = "X$echo_test_string"; then
+        ECHO="$dir/echo"
+        break
+      fi
+    done
+    IFS="$lt_save_ifs"
+
+    if test "X$ECHO" = Xecho; then
+      # We didn't find a better echo, so look for alternatives.
+      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+         test "X$echo_testing_string" = "X$echo_test_string"; then
+        # This shell has a builtin print -r that does the trick.
+        ECHO='print -r'
+      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+	   test "X$CONFIG_SHELL" != X/bin/ksh; then
+        # If we have ksh, try running configure again with it.
+        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+        export ORIGINAL_CONFIG_SHELL
+        CONFIG_SHELL=/bin/ksh
+        export CONFIG_SHELL
+        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+      else
+        # Try using printf.
+        ECHO='printf %s\n'
+        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	  # Cool, printf works
+	  :
+        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	     test "X$echo_testing_string" = 'X\t' &&
+	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	     test "X$echo_testing_string" = "X$echo_test_string"; then
+	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	  export CONFIG_SHELL
+	  SHELL="$CONFIG_SHELL"
+	  export SHELL
+	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	     test "X$echo_testing_string" = 'X\t' &&
+	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	     test "X$echo_testing_string" = "X$echo_test_string"; then
+	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+        else
+	  # maybe with a smaller string...
+	  prev=:
+
+	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+	    then
+	      break
+	    fi
+	    prev="$cmd"
+	  done
+
+	  if test "$prev" != 'sed 50q "[$]0"'; then
+	    echo_test_string=`eval $prev`
+	    export echo_test_string
+	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+	  else
+	    # Oops.  We lost completely, so just stick with echo.
+	    ECHO=echo
+	  fi
+        fi
+      fi
+    fi
+  fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(lt_ECHO)
+])
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1],
+    [An echo program that does not interpret backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _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 __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*|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_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[AC_CHECK_TOOL(AR, ar, false)
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1])
+
+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
+_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_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:__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
+    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 "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
+    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;
+    ;;
+
+  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"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+	         = "XX$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 __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
+
+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 ());
+
+  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:__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_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
+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
+  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])
+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=`$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'
+    ;;
+  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,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+    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}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    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
+    ;;
+
+  *)
+    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}${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
+  # Some binutils ld are patched to set DT_RUNPATH
+  save_LDFLAGS=$LDFLAGS
+  save_libdir=$libdir
+  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+       [shlibpath_overrides_runpath=yes])])
+  LDFLAGS=$save_LDFLAGS
+  libdir=$save_libdir
+
+  # 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=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([], [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
+
+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
+  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_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_DECL([], [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.
+  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
+  ;;
+
+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
+  ;;
+
+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=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_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_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.
+  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
+  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:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+  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_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[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_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
+  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+  _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([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
+
+  # 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
+#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.  */
+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_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	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
+
+_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_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)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+m4_if([$1], [CXX], [
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _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)=
+      ;;
+    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
+	;;
+      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)
+	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*)
+	    # IBM XL 8.0 on PPC
+	    _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*)
+	    # 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'
+      ;;
+
+    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
+  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)
+      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'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # 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*)
+	# IBM XL C 8.0/Fortran 10.1 on PPC
+	_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)='-Wl,'
+	  ;;
+	*Sun\ F*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    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*)
+	_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_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+	[How to pass a linker flag through the compiler])
+
+#
+# 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])
+
+#
+# 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_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'
+  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_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_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+  ;;
+  cygwin* | mingw* | cegcc*)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+], [
+  runpath_var=
+  _LT_TAGVAR(allow_undefined_flag, $1)=
+  _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
+  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_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
+      *\ [[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.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.
+
+_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(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=no
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+
+      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
+      ;;
+
+    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)
+      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=
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  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]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(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*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+	  if test "x$supports_anon_versioning" = xyes; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	      echo "local: *; };" >> $output_objdir/$libname.ver~
+	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  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 $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'
+      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 $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
+      ;;
+
+    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 $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
+
+    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
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	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
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      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
+	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  _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.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+      # FIXME: Should let the user specify the lib program.
+      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    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 -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 -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_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 -a "$with_gnu_ld" = no; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      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 -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -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_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'
+	  ;;
+	*)
+	  _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 $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+        save_LDFLAGS="$LDFLAGS"
+        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+        AC_LINK_IFELSE(int foo(void) {},
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+        )
+        LDFLAGS="$save_LDFLAGS"
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+      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} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+	# 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 ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      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_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_TAGVAR(lt_prog_compiler_wl, $1)
+	pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+        _LT_TAGVAR(allow_undefined_flag, $1)=
+        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+        then
+	  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        else
+	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+        fi
+        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $RM conftest*
+      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
+      ;;
+    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([], [fix_srcfile_path], [1],
+    [Fix the shell variable $srcfile for the compiler])
+_LT_TAGDECL([], [always_export_symbols], [0],
+    [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+    [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([], [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_PROG_CXX
+# ------------
+# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
+# compiler, we have our own version here.
+m4_defun([_LT_PROG_CXX],
+[
+pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
+AC_PROG_CXX
+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
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_CXX
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_CXX], [])
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[AC_REQUIRE([_LT_PROG_CXX])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_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(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_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_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 -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        _LT_TAGVAR(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 "\-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
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        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
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	    # Exported symbols can be pulled into shared objects from archives
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	    _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*)
+        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+        # as there is no search path for DLLs.
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+        _LT_TAGVAR(always_export_symbols, $1)=no
+        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+        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
+        ;;
+      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*)
+        ;;
+
+      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; $ECHO "X$list" | $Xsed'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            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; $ECHO "X$list" | $Xsed'
+	    ;;
+          *)
+	    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 -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -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_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" && $ECHO "X-set_version $verstring" | $Xsed` -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 -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	      else
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+	      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)
+        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; $ECHO "X$list" | $Xsed'
+
+	    _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 | $NL2SP`"'
+	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+		$RANLIB $oldlib'
+	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 will 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; $ECHO \"$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=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    ;;
+	  xl*)
+	    # 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	      _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='echo'
+
+	      # 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=echo
+	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" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+		;;
+	      *)
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	          echo "-hidden">> $lib.exp~
+	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
+	          $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=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    ;;
+	  *)
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	      case $host in
+	        osf3*)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	        *)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	      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 "\-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*)
+	    # 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='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_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 -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # 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_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 "\-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(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
+  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_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
+# 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
+])
+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 $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_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
+       ;;
+
+    *.$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
+
+# 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*)
+    # 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_PROG_F77
+# ------------
+# Since AC_PROG_F77 is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_F77],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
+AC_PROG_F77
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_F77
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_F77], [])
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_REQUIRE([_LT_PROG_F77])dnl
+AC_LANG_PUSH(Fortran 77)
+
+_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(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
+  CC=${F77-"f77"}
+  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"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_PROG_FC
+# -----------
+# Since AC_PROG_FC is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_FC],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
+AC_PROG_FC
+if test -z "$FC" || test "X$FC" = "Xno"; then
+  _lt_disable_FC=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_FC
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_FC], [])
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_REQUIRE([_LT_PROG_FC])dnl
+AC_LANG_PUSH(Fortran)
+
+_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(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
+  CC=${FC-"f95"}
+  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"
+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_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+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
+
+## 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"
+])# _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_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+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"
+])# _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_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"}, \
+      = c,a/b,, \
+    && 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_XSI_SHELLFNS
+# ---------------------
+# Bourne and XSI compatible variants of some useful shell functions.
+m4_defun([_LT_PROG_XSI_SHELLFNS],
+[case $xsi_shell in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+  func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+  # positional parameters, so assign one to ordinary parameter first.
+  func_stripname_result=${3}
+  func_stripname_result=${func_stripname_result#"${1}"}
+  func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=${1%%=*}
+  func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  case ${1} in
+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+    *)    func_lo2o_result=${1} ;;
+  esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=$(( $[*] ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=${#1}
+}
+
+_LT_EOF
+    ;;
+  *) # Bourne compatible functions.
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  # Extract subdirectory from the argument.
+  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+dnl func_dirname_and_basename
+dnl A portable version of this function is already defined in general.m4sh
+dnl so there is no need for it here.
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+  case ${2} in
+    .*) func_stripname_result=`$ECHO "X${3}" \
+           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+    *)  func_stripname_result=`$ECHO "X${3}" \
+           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
+  esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[[^=]]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
+  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=`expr "$[@]"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$[1]+=\$[2]"
+}
+_LT_EOF
+    ;;
+  *)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$[1]=\$$[1]\$[2]"
+}
+
+_LT_EOF
+    ;;
+  esac
+])
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
new file mode 100644
index 0000000..34151a3
--- /dev/null
+++ b/m4/ltoptions.m4
@@ -0,0 +1,368 @@
+# Helper functions for option handling.                    -*- 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 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],      [0], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [0], [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..b8e154f
--- /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.
+
+# Generated from ltversion.in.
+
+# serial 3012 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.2.6])
+m4_define([LT_PACKAGE_REVISION], [1.3012])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.2.6'
+macro_revision='1.3012'
+_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..637bb20
--- /dev/null
+++ b/m4/lt~obsolete.m4
@@ -0,0 +1,92 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 4 lt~obsolete.m4
+
+# 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_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+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])])
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..d903713 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -19,7 +19,8 @@
 	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			       \
@@ -46,10 +47,18 @@
 	netsnmp_container.3 netsnmp_iterator_info_s.3 netsnmp_leaf.3   \
 	netsnmp_row_merge.3		       \
 	netsnmp_scalar_group_group.3 netsnmp_stash_cache.3	       \
-	netsnmp_utilities.3
+	netsnmp_utilities.3 \
+	netsnmp_container_iterator.h.3 \
+	netsnmp_container_iterator.3 \
+	netsnmp_netsnmp_monitor_callback_header_s.3 \
+	netsnmp_table_row.3 \
+	netsnmp_agent_handler.h.3 \
+	netsnmp_access_multiplexer.3 \
+	netsnmp_null_container.3 \
+	netsnmp_tools.h.3
 
-MAN3G = default_store.3 mib_api.3 read_config.3 snmp_agent_api.3 snmp_alarm.3 \
-	snmp_api.3 snmp_sess_api.3 snmp_trap_api.3
+MAN3G = default_store.3 mib_api.3 config_api.3 snmp_agent_api.3 snmp_alarm.3 \
+	session_api.3 snmp_sess_api.3 snmp_trap_api.3 varbind_api.3 pdu_api.3 
 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
@@ -64,7 +73,7 @@
 	register_app_config_handler.3 register_app_premib_handler.3	\
 	register_config_handler.3 register_mib_handlers.3 		\
 	register_premib_handler.3 					\
-	unregister_app_config_handler.3 unregister_config_handler.3
+	unregister_app_config_handler.3 unregister_config_handler.3 read_config.3
 SNMP_ALARM_ALIASES = snmp_alarm_register.3 snmp_alarm_register_hr.3 	\
 	snmp_alarm_unregister.3
 SNMP_SET_SAVE_DESCRIPTIONS_ALIASES = fprint_description.3 fprint_objid.3 \
@@ -92,8 +101,8 @@
 		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 ; 			\
+		echo "making man page alias $$i -> config_api APIs" ;	\
+		echo ".so man3/config_api.3" > $$i ; 			\
 	done
 	@for i in $(SNMP_ALARM_ALIASES) ; do				\
 		echo "making man page alias $$i -> snmp_alarm APIs" ;	\
@@ -107,6 +116,7 @@
 		echo "making man page alias $$i -> snmp_trap APIs" ;	\
 		echo ".so man3/snmp_trap_api.3" > $$i ;			\
 	done
+	echo ".so man3/session_api.3" > snmp_api.3
 
 snmpbulkget.1: $(srcdir)/snmpbulkget.1.def ../sedscript
 	$(SED) -f ../sedscript < $(srcdir)/snmpbulkget.1.def > snmpbulkget.1
@@ -180,17 +190,29 @@
 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
 
 traptoemail.1: $(srcdir)/traptoemail.1.def ../sedscript
 	$(SED) -f ../sedscript < $(srcdir)/traptoemail.1.def > traptoemail.1
 
+varbind_api.3: $(srcdir)/varbind_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/varbind_api.3.def > varbind_api.3
+
+pdu_api.3: $(srcdir)/pdu_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/pdu_api.3.def > pdu_api.3
+
+session_api.3: $(srcdir)/session_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/session_api.3.def > session_api.3
+
 mib_api.3: $(srcdir)/mib_api.3.def ../sedscript
 	$(SED) -f ../sedscript < $(srcdir)/mib_api.3.def > mib_api.3
 
-read_config.3: $(srcdir)/read_config.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/read_config.3.def > read_config.3
+config_api.3: $(srcdir)/config_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/config_api.3.def > config_api.3
 
 snmp_agent_api.3: $(srcdir)/snmp_agent_api.3.def ../sedscript
 	$(SED) -f ../sedscript < $(srcdir)/snmp_agent_api.3.def > snmp_agent_api.3
@@ -198,9 +220,6 @@
 snmp_alarm.3: $(srcdir)/snmp_alarm.3.def ../sedscript
 	$(SED) -f ../sedscript < $(srcdir)/snmp_alarm.3.def > snmp_alarm.3
 
-snmp_api.3: $(srcdir)/snmp_api.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmp_api.3.def > snmp_api.3
-
 snmp_sess_api.3: $(srcdir)/snmp_sess_api.3.def ../sedscript
 	$(SED) -f ../sedscript < $(srcdir)/snmp_sess_api.3.def > snmp_sess_api.3
 
@@ -274,11 +293,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/config_api.3.def b/man/config_api.3.def
new file mode 100644
index 0000000..b107e6e
--- /dev/null
+++ b/man/config_api.3.def
@@ -0,0 +1,333 @@
+.TH CONFIG_API 3 "21 Apr 2009" "" "Net-SNMP"
+.SH NAME
+register_config_handler, register_premib_handler
+unregister_config_handler, register_mib_handlers, read_configs,
+read_premib_configs, config_perror, config_pwarn - config_api functions
+.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
+.B "void register_mib_handlers(void);"
+.PP
+.BI "void unregister_config_handler(const char *" filePrefix ","
+.br
+.BI "                     const char *" token ");"
+.br
+.PP
+.BI "void unregister_all_config_handlers(void);"
+.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_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 ");"
+.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_premib_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 ");"
+.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_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 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_premib_handler()
+(or
+.B register_app_premib_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,
+\fIapp\fP.conf\fP,
+\fIapp\fP.local.conf\fP,
+(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
+SYSCONFDIR/snmp, followed by DATADIR/snmp, followed by LIBDIR/snmp,
+followed by $HOME/.snmp.
+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_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 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"
+.BR mib_api "(3), " snmp_api (3)
+.\" Local Variables:
+.\"  mode: nroff
+.\" End:
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/mib_api.3.def b/man/mib_api.3.def
index 5b6d1b0..b05ed94 100644
--- a/man/mib_api.3.def
+++ b/man/mib_api.3.def
@@ -1,120 +1,149 @@
 .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,
+netsnmp_read_module, read_mib, read_all_mibs,
+add_module_replacement,
+read_objid, snmp_parse_oid, get_module_node,
+snmp_set_mib_errors, snmp_set_mib_warnings, snmp_set_save_descriptions,
 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
+print_objid, fprint_objid, snprint_objid,
+print_description, fprint_description, snprint_description - mib_api functions
 .SH SYNOPSIS
 .B #include <net-snmp/mib_api.h>
 .PP
 .B "void init_mib(void);
-.br
+.PP
 .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" );
+.PP
+.B "void shutdown_mib(void);
+.SS Reading and Parsing MIBs
+.PP
+.BI "struct tree *netsnmp_read_module(const char *" "name" );
 .br
 .BI "struct tree *read_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" );
+.BI "int add_module_replacement(const char *" "old_module" ","
 .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" );
+.BI "                           const char *" "new_module" ","
 .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 );
+.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, those that read in and
-parse MIB files, those that search the MIB tree, and various output
-routines.
+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
-.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.
+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 an initialisation step to make them available.
+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.  
 .PP
 .B init_mib_internals
 sets up the internal structures, preparatory to reading in MIB
-modules.  It should be called after all calls to
+modules.  It should be called \fIafter\fP all calls to
 .BR add_mibdir ,
-and before and calls to
-.BR read_module .
-This is called automatically if
+and before any calls to
+.BR netsnmp_read_module .
+.PP
 .B init_mib
-is used.
+is a convenience function that configures the MIB directory search path (using
+.B add_mibdir
+), set up the internal MIB framework (using
+.B init_mib_internals
+), and then loads the appropriate MIB modules (using
+.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.
 .PP
 .B shutdown_mib
 will clear the information that was gathered by 
-.BR read_module ", " add_mibdir " and " add_module_replacement .
+.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
+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
@@ -130,48 +159,11 @@
 .TE
 .RE
 It can also be used to handle errors in the module identifiers used
-in MIB import clauses (such as referring to
+in MIB IMPORTS 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.
+.SS Searching the MIB Tree
 .PP
 .B read_objid
 takes a string containing a textual version of an object identifier
@@ -189,7 +181,10 @@
 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
+.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
@@ -201,122 +196,97 @@
 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_variable
+.B print_objid
 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
+.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.
-.br
-.B snprint_variable
+.PP
+.B snprint_objid
 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
+.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 .
-.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.
+will typically contain a truncated version of the information (but
+this behaviour is not guaranteed).
 .PP
-.BR print_value ,
-.BR fprint_value ,
-.BR snprint_value
+.BR print_description ,
+.BR fprint_description ,
 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,
+.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, 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).
+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
-.TP 10
-MIBFILES
-A colon separated list of files to load.
-Default: (none)
+.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.
-Default: IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB: RFC1213-MIB:UCD-SNMP-MIB.
+.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"
-.BR snmp_api "(3)"
+.BR snmp_api "(3),"
+.BR output_api "(3)"
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_access_multiplexer.3 b/man/netsnmp_access_multiplexer.3
new file mode 100644
index 0000000..3b58ea2
--- /dev/null
+++ b/man/netsnmp_access_multiplexer.3
@@ -0,0 +1,26 @@
+.TH "baby_steps_access_multiplexer: calls individual access methods based on baby_step mode." 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+baby_steps_access_multiplexer: calls individual access methods based on baby_step mode. \- 
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_baby_steps_access_multiplexer_get\fP (\fBnetsnmp_baby_steps_access_methods\fP *am)"
+.br
+.RI "\fIreturns a baby_steps handler that can be injected into a given handler chain. \fP"
+.ti -1c
+.RI "int \fBnetsnmp_baby_step_mode2flag\fP (u_int mode)"
+.br
+.in -1c
+.SH "Function Documentation"
+.PP 
+.SS "\fBnetsnmp_mib_handler\fP* netsnmp_baby_steps_access_multiplexer_get (\fBnetsnmp_baby_steps_access_methods\fP * am)"
+.PP
+returns a baby_steps handler that can be injected into a given handler chain. 
+.PP
+Definition at line 336 of file baby_steps.c.
+.SH "Author"
+.PP 
+Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_agent.3 b/man/netsnmp_agent.3
index f3c7dd5..d45ae64 100644
--- a/man/netsnmp_agent.3
+++ b/man/netsnmp_agent.3
@@ -1,4 +1,4 @@
-.TH "The Net-SNMP agent" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "The Net-SNMP agent" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_agent_handler.h.3 b/man/netsnmp_agent_handler.h.3
new file mode 100644
index 0000000..41429e4
--- /dev/null
+++ b/man/netsnmp_agent_handler.h.3
@@ -0,0 +1,240 @@
+.TH "agent_handler.h" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+agent_handler.h \- 
+.SH SYNOPSIS
+.br
+.PP
+.SS "Data Structures"
+
+.in +1c
+.ti -1c
+.RI "struct \fBnetsnmp_mib_handler_s\fP"
+.br
+.RI "\fIthe mib handler structure to be registered \fP"
+.ti -1c
+.RI "struct \fBnetsnmp_handler_registration_s\fP"
+.br
+.RI "\fIRoot registration info. \fP"
+.ti -1c
+.RI "struct \fBnetsnmp_handler_args_s\fP"
+.br
+.ti -1c
+.RI "struct \fBnetsnmp_delegated_cache_s\fP"
+.br
+.in -1c
+.SS "Defines"
+
+.in +1c
+.ti -1c
+.RI "#define \fBMIB_HANDLER_AUTO_NEXT\fP   0x00000001"
+.br
+.ti -1c
+.RI "#define \fBMIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE\fP   0x00000002"
+.br
+.ti -1c
+.RI "#define \fBMIB_HANDLER_INSTANCE\fP   0x00000004"
+.br
+.ti -1c
+.RI "#define \fBMIB_HANDLER_CUSTOM4\fP   0x10000000"
+.br
+.ti -1c
+.RI "#define \fBMIB_HANDLER_CUSTOM3\fP   0x20000000"
+.br
+.ti -1c
+.RI "#define \fBMIB_HANDLER_CUSTOM2\fP   0x40000000"
+.br
+.ti -1c
+.RI "#define \fBMIB_HANDLER_CUSTOM1\fP   0x80000000"
+.br
+.ti -1c
+.RI "#define \fBHANDLER_CAN_GETANDGETNEXT\fP   0x01"
+.br
+.ti -1c
+.RI "#define \fBHANDLER_CAN_SET\fP   0x02"
+.br
+.ti -1c
+.RI "#define \fBHANDLER_CAN_GETBULK\fP   0x04"
+.br
+.ti -1c
+.RI "#define \fBHANDLER_CAN_NOT_CREATE\fP   0x08"
+.br
+.ti -1c
+.RI "#define \fBHANDLER_CAN_BABY_STEP\fP   0x10"
+.br
+.ti -1c
+.RI "#define \fBHANDLER_CAN_STASH\fP   0x20"
+.br
+.ti -1c
+.RI "#define \fBHANDLER_CAN_RONLY\fP   (HANDLER_CAN_GETANDGETNEXT)"
+.br
+.ti -1c
+.RI "#define \fBHANDLER_CAN_RWRITE\fP   (HANDLER_CAN_GETANDGETNEXT | HANDLER_CAN_SET)"
+.br
+.ti -1c
+.RI "#define \fBHANDLER_CAN_SET_ONLY\fP   (HANDLER_CAN_SET | HANDLER_CAN_NOT_CREATE)"
+.br
+.ti -1c
+.RI "#define \fBHANDLER_CAN_DEFAULT\fP   (HANDLER_CAN_RONLY | HANDLER_CAN_NOT_CREATE)"
+.br
+.ti -1c
+.RI "#define \fBREQUEST_IS_DELEGATED\fP   1"
+.br
+.ti -1c
+.RI "#define \fBREQUEST_IS_NOT_DELEGATED\fP   0"
+.br
+.in -1c
+.SS "Typedefs"
+
+.in +1c
+.ti -1c
+.RI "typedef struct \fBnetsnmp_mib_handler_s\fP \fBnetsnmp_mib_handler\fP"
+.br
+.RI "\fITypedefs the \fBnetsnmp_mib_handler_s\fP struct into netsnmp_mib_handler. \fP"
+.ti -1c
+.RI "typedef struct \fBnetsnmp_handler_registration_s\fP \fBnetsnmp_handler_registration\fP"
+.br
+.RI "\fITypedefs the \fBnetsnmp_handler_registration_s\fP struct into netsnmp_handler_registration. \fP"
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Node_Handler\fP )(\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
+.br
+.ti -1c
+.RI "typedef struct \fBnetsnmp_handler_args_s\fP \fBnetsnmp_handler_args\fP"
+.br
+.ti -1c
+.RI "typedef struct \fBnetsnmp_delegated_cache_s\fP \fBnetsnmp_delegated_cache\fP"
+.br
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBnetsnmp_init_handler_conf\fP (void)"
+.br
+.ti -1c
+.RI "int \fBnetsnmp_register_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
+.br
+.RI "\fIregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
+.ti -1c
+.RI "int \fBnetsnmp_unregister_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
+.br
+.RI "\fIunregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
+.ti -1c
+.RI "int \fBnetsnmp_register_handler_nocallback\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
+.br
+.RI "\fIregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
+.ti -1c
+.RI "int \fBnetsnmp_inject_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_mib_handler\fP *handler)"
+.br
+.RI "\fIinject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. \fP"
+.ti -1c
+.RI "int \fBnetsnmp_inject_handler_before\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_mib_handler\fP *handler, const char *before_what)"
+.br
+.RI "\fIinject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. \fP"
+.ti -1c
+.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_find_handler_by_name\fP (\fBnetsnmp_handler_registration\fP *reginfo, const char *name)"
+.br
+.RI "\fIReturns a handler from a chain based on the name. \fP"
+.ti -1c
+.RI "void * \fBnetsnmp_find_handler_data_by_name\fP (\fBnetsnmp_handler_registration\fP *reginfo, const char *name)"
+.br
+.RI "\fIReturns a handler's void * pointer from a chain based on the name. \fP"
+.ti -1c
+.RI "int \fBnetsnmp_call_handlers\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
+.br
+.ti -1c
+.RI "NETSNMP_INLINE int \fBnetsnmp_call_handler\fP (\fBnetsnmp_mib_handler\fP *next_handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
+.br
+.RI "\fIcalls a handler with with appropriate NULL checking of arguments, etc. \fP"
+.ti -1c
+.RI "NETSNMP_INLINE int \fBnetsnmp_call_next_handler\fP (\fBnetsnmp_mib_handler\fP *current, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
+.br
+.RI "\fIcalls the next handler in the chain after the current one with with appropriate NULL checking, etc. \fP"
+.ti -1c
+.RI "NETSNMP_INLINE int \fBnetsnmp_call_next_handler_one_request\fP (\fBnetsnmp_mib_handler\fP *current, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
+.br
+.RI "\fIcalls the next handler in the chain after the current one with with appropriate NULL checking, etc. \fP"
+.ti -1c
+.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_create_handler\fP (const char *name, Netsnmp_Node_Handler *handler_access_method)"
+.br
+.RI "\fIcreates a netsnmp_mib_handler structure given a name and a access method. \fP"
+.ti -1c
+.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_handler_registration_create\fP (const char *name, \fBnetsnmp_mib_handler\fP *handler, const oid *reg_oid, size_t reg_oid_len, int modes)"
+.br
+.RI "\fIcreates a handler registration structure given a name, a access_method function, a registration location oid and the modes the handler supports. \fP"
+.ti -1c
+.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_create_handler_registration\fP (const char *name, Netsnmp_Node_Handler *handler_access_method, const oid *reg_oid, size_t reg_oid_len, int modes)"
+.br
+.ti -1c
+.RI "NETSNMP_INLINE \fBnetsnmp_delegated_cache\fP * \fBnetsnmp_create_delegated_cache\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests, void *localinfo)"
+.br
+.RI "\fIcreates a cache of information which can be saved for future reference. \fP"
+.ti -1c
+.RI "NETSNMP_INLINE void \fBnetsnmp_free_delegated_cache\fP (\fBnetsnmp_delegated_cache\fP *dcache)"
+.br
+.RI "\fIfrees a cache once you're finished using it \fP"
+.ti -1c
+.RI "NETSNMP_INLINE \fBnetsnmp_delegated_cache\fP * \fBnetsnmp_handler_check_cache\fP (\fBnetsnmp_delegated_cache\fP *dcache)"
+.br
+.RI "\fIcheck's a given cache and returns it if it is still valid (ie, the agent still considers it to be an outstanding request. \fP"
+.ti -1c
+.RI "void \fBnetsnmp_register_handler_by_name\fP (const char *name, \fBnetsnmp_mib_handler\fP *handler)"
+.br
+.RI "\fIregisters a given handler by name so that it can be found easily later. \fP"
+.ti -1c
+.RI "void \fBnetsnmp_clear_handler_list\fP (void)"
+.br
+.RI "\fIclears the entire handler-registration list \fP"
+.ti -1c
+.RI "NETSNMP_INLINE void \fBnetsnmp_request_add_list_data\fP (\fBnetsnmp_request_info\fP *request, \fBnetsnmp_data_list\fP *\fBnode\fP)"
+.br
+.RI "\fIadd data to a request that can be extracted later by submodules \fP"
+.ti -1c
+.RI "NETSNMP_INLINE int \fBnetsnmp_request_remove_list_data\fP (\fBnetsnmp_request_info\fP *request, const char *name)"
+.br
+.RI "\fIremove data from a request \fP"
+.ti -1c
+.RI "void * \fBnetsnmp_request_get_list_data\fP (\fBnetsnmp_request_info\fP *request, const char *name)"
+.br
+.RI "\fIextract data from a request that was added previously by a parent \fBmodule\fP \fP"
+.ti -1c
+.RI "NETSNMP_INLINE void \fBnetsnmp_free_request_data_set\fP (\fBnetsnmp_request_info\fP *request)"
+.br
+.RI "\fIFree the extra data stored in a request. \fP"
+.ti -1c
+.RI "NETSNMP_INLINE void \fBnetsnmp_free_request_data_sets\fP (\fBnetsnmp_request_info\fP *request)"
+.br
+.RI "\fIFree the extra data stored in a bunch of requests (all data in the chain). \fP"
+.ti -1c
+.RI "void \fBnetsnmp_handler_free\fP (\fBnetsnmp_mib_handler\fP *handler)"
+.br
+.RI "\fIfrees the resources associated with a given handler \fP"
+.ti -1c
+.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_handler_dup\fP (\fBnetsnmp_mib_handler\fP *handler)"
+.br
+.RI "\fIduplicates a handler and all subsequent handlers see also _clone_handler \fP"
+.ti -1c
+.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_handler_registration_dup\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
+.br
+.RI "\fIduplicates the handler registration object \fP"
+.ti -1c
+.RI "void \fBnetsnmp_handler_registration_free\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
+.br
+.RI "\fIfree the resources associated with a handler registration object \fP"
+.ti -1c
+.RI "void \fBnetsnmp_handler_mark_requests_as_delegated\fP (\fBnetsnmp_request_info\fP *requests, int isdelegated)"
+.br
+.RI "\fImarks a list of requests as delegated (or not if isdelegaded = 0) \fP"
+.ti -1c
+.RI "void * \fBnetsnmp_handler_get_parent_data\fP (\fBnetsnmp_request_info\fP *, const char *)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP 
+
+.PP
+Definition in file \fBagent_handler.h\fP.
+.SH "Author"
+.PP 
+Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_agent_registry.3 b/man/netsnmp_agent_registry.3
index 10ba2f2..36c8d9f 100644
--- a/man/netsnmp_agent_registry.3
+++ b/man/netsnmp_agent_registry.3
@@ -1,4 +1,4 @@
-.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 -*-
+.TH "Maintain a registry of MIB subtrees, together with related information regarding mibmodule, sessions, etc" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -40,9 +40,6 @@
 
 .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"
@@ -51,6 +48,21 @@
 .br
 .RI "\fIretrieves the current value of the lookup cache size \fP"
 .ti -1c
+.RI "NETSNMP_STATIC_INLINE \fBlookup_cache_context\fP * \fBget_context_lookup_cache\fP (const char *context)"
+.br
+.ti -1c
+.RI "NETSNMP_STATIC_INLINE void \fBlookup_cache_add\fP (const char *context, \fBnetsnmp_subtree\fP *next, \fBnetsnmp_subtree\fP *previous)"
+.br
+.ti -1c
+.RI "NETSNMP_STATIC_INLINE void \fBlookup_cache_replace\fP (\fBlookup_cache\fP *ptr, \fBnetsnmp_subtree\fP *next, \fBnetsnmp_subtree\fP *previous)"
+.br
+.ti -1c
+.RI "NETSNMP_STATIC_INLINE \fBlookup_cache\fP * \fBlookup_cache_find\fP (const char *context, oid *name, size_t name_len, int *retcmp)"
+.br
+.ti -1c
+.RI "NETSNMP_STATIC_INLINE void \fBinvalidate_lookup_cache\fP (const char *context)"
+.br
+.ti -1c
 .RI "void \fBnetsnmp_subtree_free\fP (\fBnetsnmp_subtree\fP *a)"
 .br
 .ti -1c
@@ -140,18 +152,6 @@
 .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
@@ -201,10 +201,10 @@
 
 .in +1c
 .ti -1c
-.RI "\fBsubtree_context_cache\fP * \fBcontext_subtrees\fP = NULL"
+.RI "int \fBlookup_cache_size\fP = 0"
 .br
 .ti -1c
-.RI "int \fBlookup_cache_size\fP = 0"
+.RI "\fBsubtree_context_cache\fP * \fBcontext_subtrees\fP = NULL"
 .br
 .ti -1c
 .RI "int \fBexternal_signal_scheduled\fP [NUM_EXTERNAL_SIGS]"
@@ -226,7 +226,7 @@
 .PP
 
 .PP
-Definition at line 1323 of file agent_registry.c.
+Definition at line 1475 of file agent_registry.c.
 .SS "int netsnmp_get_lookup_cache_size (void)"
 .PP
 retrieves the current value of the lookup cache size \fBReturns:\fP
@@ -236,7 +236,7 @@
 .PP
 
 .PP
-Definition at line 1396 of file agent_registry.c.
+Definition at line 118 of file agent_registry.c.
 .SS "void netsnmp_set_lookup_cache_size (int newsize)"
 .PP
 set the lookup cache size for optimized agent registration performance. \fBParameters:\fP
@@ -246,7 +246,7 @@
 .PP
 
 .PP
-Definition at line 1383 of file agent_registry.c.
+Definition at line 105 of file agent_registry.c.
 .SS "int unregister_mib_context (oid * name, size_t len, int priority, int range_subid, oid range_ubound, const char * context)"
 .PP
 Unregisters an OID that has an associated context name value. Typically used when a \fBmodule\fP has multiple contexts defined. The parameters priority, range_subid, and range_ubound should be used in conjunction with agentx, see RFC 2741, otherwise these values should always be 0.
@@ -272,7 +272,7 @@
 .PP
 
 .PP
-Definition at line 969 of file agent_registry.c.
+Definition at line 1121 of file agent_registry.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_agent_trap.3 b/man/netsnmp_agent_trap.3
index 5b5171d..d362617 100644
--- a/man/netsnmp_agent_trap.3
+++ b/man/netsnmp_agent_trap.3
@@ -1,4 +1,4 @@
-.TH "Trap generation routines for mib modules to use" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "Trap generation routines for mib modules to use" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -74,6 +74,9 @@
 .RI "void \fBsend_trap_vars\fP (int trap, int specific, \fBnetsnmp_variable_list\fP *vars)"
 .br
 .ti -1c
+.RI "void \fBsend_trap_vars_with_context\fP (int trap, int specific, \fBnetsnmp_variable_list\fP *vars, char *context)"
+.br
+.ti -1c
 .RI "void \fBsend_easy_trap\fP (int trap, int specific)"
 .br
 .RI "\fISends an SNMPv1 trap (or the SNMPv2 equivalent) to the list of configured trap destinations (or 'sinks'), using the provided values for the generic trap type and specific trap value. \fP"
@@ -82,6 +85,10 @@
 .br
 .RI "\fIUses the supplied list of \fBvariable\fP bindings to form an SNMPv2 trap, which is sent to SNMPv2-capable sinks on the configured list. \fP"
 .ti -1c
+.RI "void \fBsend_v3trap\fP (\fBnetsnmp_variable_list\fP *vars, char *context)"
+.br
+.RI "\fISimilar to \fBsend_v2trap()\fP, with the added ability to specify a context. \fP"
+.ti -1c
 .RI "void \fBsend_trap_pdu\fP (\fBnetsnmp_pdu\fP *pdu)"
 .br
 .ti -1c
@@ -182,7 +189,7 @@
 .RI "char * \fBsnmp_trapcommunity\fP = NULL"
 .br
 .ti -1c
-.RI "int \fBsnmp_enableauthentraps\fP = SNMP_AUTHENTICATED_TRAPS_DISABLED"
+.RI "long \fBsnmp_enableauthentraps\fP = SNMP_AUTHENTICATED_TRAPS_DISABLED"
 .br
 .ti -1c
 .RI "int \fBsnmp_enableauthentrapsset\fP = 0"
@@ -194,7 +201,7 @@
 .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.
+Definition at line 875 of file agent_trap.c.
 .SS "int netsnmp_send_traps (int trap, int specific, oid * enterprise, int enterprise_length, \fBnetsnmp_variable_list\fP * vars, char * context, int flags)"
 .PP
 This function allows you to make a distinction between generic traps from different classes of equipment. For example, you may want to handle a SNMP_TRAP_LINKDOWN trap for a particular device in a different manner to a generic system SNMP_TRAP_LINKDOWN trap.
@@ -245,7 +252,7 @@
 .PP
 
 .PP
-Definition at line 629 of file agent_trap.c.
+Definition at line 632 of file agent_trap.c.
 .SS "void send_easy_trap (int trap, int specific)"
 .PP
 Sends an SNMPv1 trap (or the SNMPv2 equivalent) to the list of configured trap destinations (or 'sinks'), using the provided values for the generic trap type and specific trap value. This function eventually calls send_enterprise_trap_vars. If the trap type is not set to SNMP_TRAP_ENTERPRISESPECIFIC the enterprise and enterprise_length paramater is set to the pre defined NETSNMP_SYSTEM_MIB oid and length respectively. If the trap type is set to SNMP_TRAP_ENTERPRISESPECIFIC the enterprise and enterprise_length parameters are set to the pre-defined NETSNMP_NOTIFICATION_MIB oid and length respectively.
@@ -271,7 +278,7 @@
 .PP
 
 .PP
-Definition at line 978 of file agent_trap.c.
+Definition at line 1018 of file agent_trap.c.
 .SS "void send_v2trap (\fBnetsnmp_variable_list\fP * vars)"
 .PP
 Uses the supplied list of \fBvariable\fP bindings to form an SNMPv2 trap, which is sent to SNMPv2-capable sinks on the configured list. An equivalent INFORM is sent to the configured list of inform sinks. Sinks that can only handle SNMPv1 traps are skipped.
@@ -301,7 +308,31 @@
 .in +1c
 \fBnotification.c\fP.
 .PP
-Definition at line 1007 of file agent_trap.c.
+Definition at line 1047 of file agent_trap.c.
+.SS "void send_v3trap (\fBnetsnmp_variable_list\fP * vars, char * context)"
+.PP
+Similar to \fBsend_v2trap()\fP, with the added ability to specify a context. If the last parameter is NULL, then this call is equivalent to \fBsend_v2trap()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIvars\fP is used to supply the list of \fBvariable\fP bindings for the trap.
+.br
+\fIcontext\fP is used to specify the context of the trap.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+void
+.RE
+.PP
+\fBSee also:\fP
+.RS 4
+\fBsend_v2trap\fP 
+.RE
+.PP
+
+.PP
+Definition at line 1064 of file agent_trap.c.
 .SH "Variable Documentation"
 .PP 
 .SS "oid snmptrapenterprise_oid[]"\fBInitial value:\fP
@@ -311,7 +342,7 @@
     { SNMPV2_TRAP_OBJS_PREFIX, 3, 0 }
 .fi
 .PP
-Definition at line 99 of file agent_trap.c.
+Definition at line 100 of file agent_trap.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_asn1_packet_parse.3 b/man/netsnmp_asn1_packet_parse.3
index a52d5b0..eb866d5 100644
--- a/man/netsnmp_asn1_packet_parse.3
+++ b/man/netsnmp_asn1_packet_parse.3
@@ -1,4 +1,4 @@
-.TH "asn1 parsing and datatype manipulation routines." 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "asn1 parsing and datatype manipulation routines." 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_baby_steps.3 b/man/netsnmp_baby_steps.3
index fa874bb..1ee4e60 100644
--- a/man/netsnmp_baby_steps.3
+++ b/man/netsnmp_baby_steps.3
@@ -1,4 +1,4 @@
-.TH "baby_steps" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "baby_steps" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_bulk_to_next.3 b/man/netsnmp_bulk_to_next.3
index 9d28220..62b47fd 100644
--- a/man/netsnmp_bulk_to_next.3
+++ b/man/netsnmp_bulk_to_next.3
@@ -1,4 +1,4 @@
-.TH "bulk_to_next" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "bulk_to_next" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -36,17 +36,17 @@
 .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.
+Definition at line 36 of file bulk_to_next.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_bulk_to_next_handler (void)"
 .PP
 returns a bulk_to_next handler that can be injected into a given handler chain. 
 .PP
-Definition at line 27 of file bulk_to_next.c.
+Definition at line 21 of file bulk_to_next.c.
 .SS "void netsnmp_init_bulk_to_next_helper (void)"
 .PP
 initializes the bulk_to_next helper which then registers a bulk_to_next handler as a run-time injectable handler for configuration file use. 
 .PP
-Definition at line 139 of file bulk_to_next.c.
+Definition at line 133 of file bulk_to_next.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_cache_handler.3 b/man/netsnmp_cache_handler.3
index b53bb81..e0a9ad0 100644
--- a/man/netsnmp_cache_handler.3
+++ b/man/netsnmp_cache_handler.3
@@ -1,4 +1,4 @@
-.TH "cache_handler" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "cache_handler" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -14,14 +14,18 @@
 .br
 .RI "\fIget cache head \fP"
 .ti -1c
-.RI "\fBnetsnmp_cache\fP * \fBnetsnmp_cache_find_by_oid\fP (oid *rootoid, int rootoid_len)"
+.RI "\fBnetsnmp_cache\fP * \fBnetsnmp_cache_find_by_oid\fP (const oid *rootoid, int rootoid_len)"
 .br
 .RI "\fIfind existing cache \fP"
 .ti -1c
-.RI "\fBnetsnmp_cache\fP * \fBnetsnmp_cache_create\fP (int timeout, NetsnmpCacheLoad *load_hook, NetsnmpCacheFree *free_hook, oid *rootoid, int rootoid_len)"
+.RI "\fBnetsnmp_cache\fP * \fBnetsnmp_cache_create\fP (int timeout, NetsnmpCacheLoad *load_hook, NetsnmpCacheFree *free_hook, const oid *rootoid, int rootoid_len)"
 .br
 .RI "\fIreturns a cache \fP"
 .ti -1c
+.RI "int \fBnetsnmp_cache_free\fP (\fBnetsnmp_cache\fP *cache)"
+.br
+.RI "\fIfrees a cache \fP"
+.ti -1c
 .RI "unsigned int \fBnetsnmp_cache_timer_start\fP (\fBnetsnmp_cache\fP *cache)"
 .br
 .RI "\fIstarts the recurring cache_load callback \fP"
@@ -34,7 +38,7 @@
 .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)"
+.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_cache_handler\fP (int timeout, NetsnmpCacheLoad *load_hook, NetsnmpCacheFree *free_hook, const oid *rootoid, int rootoid_len)"
 .br
 .RI "\fIreturns a cache handler that can be injected into a given handler chain. \fP"
 .ti -1c
@@ -95,7 +99,7 @@
 .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.
+The load_cache routine should return a negative number if the cache was not successfully loaded. 0 or any positive number indicates successs.
 .PP
 Several flags can be set to affect the operations on the cache.
 .PP
@@ -126,37 +130,42 @@
 .PP
 Reload the cache if required. 
 .PP
-Definition at line 385 of file cache_handler.c.
+Definition at line 429 of file cache_handler.c.
 .SS "int netsnmp_cache_check_expired (\fBnetsnmp_cache\fP * cache)"
 .PP
 Check if the cache timeout has passed. Sets and return the expired flag. 
 .PP
-Definition at line 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)"
+Definition at line 414 of file cache_handler.c.
+.SS "\fBnetsnmp_cache\fP* netsnmp_cache_create (int timeout, NetsnmpCacheLoad * load_hook, NetsnmpCacheFree * free_hook, const oid * rootoid, int rootoid_len)"
 .PP
 returns a cache 
 .PP
-Definition at line 136 of file cache_handler.c.
-.SS "\fBnetsnmp_cache\fP* netsnmp_cache_find_by_oid (oid * rootoid, int rootoid_len)"
+Definition at line 146 of file cache_handler.c.
+.SS "\fBnetsnmp_cache\fP* netsnmp_cache_find_by_oid (const oid * rootoid, int rootoid_len)"
 .PP
 find existing cache 
 .PP
-Definition at line 120 of file cache_handler.c.
+Definition at line 130 of file cache_handler.c.
+.SS "int netsnmp_cache_free (\fBnetsnmp_cache\fP * cache)"
+.PP
+frees a cache 
+.PP
+Definition at line 189 of file cache_handler.c.
 .SS "\fBnetsnmp_cache\fP* netsnmp_cache_get_head (void)"
 .PP
 get cache head 
 .PP
-Definition at line 112 of file cache_handler.c.
+Definition at line 122 of file cache_handler.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_cache_handler_get (\fBnetsnmp_cache\fP * cache)"
 .PP
 returns a cache handler that can be injected into a given handler chain. 
 .PP
-Definition at line 247 of file cache_handler.c.
+Definition at line 291 of file cache_handler.c.
 .SS "int netsnmp_cache_handler_register (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_cache\fP * cache)"
 .PP
 functionally the same as calling \fBnetsnmp_register_handler()\fP but also injects a cache handler at the same time for you. 
 .PP
-Definition at line 295 of file cache_handler.c.
+Definition at line 339 of file cache_handler.c.
 .SS "int netsnmp_cache_helper_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
 .PP
 Implements the cache handler. 
@@ -167,59 +176,59 @@
 .PP
 next handler called automatically - 'AUTO_NEXT' 
 .PP
-Definition at line 420 of file cache_handler.c.
+Definition at line 464 of file cache_handler.c.
 .SS "int netsnmp_cache_is_valid (\fBnetsnmp_agent_request_info\fP * reqinfo, const char * name)"
 .PP
 Is the cache valid for a given request? 
 .PP
-Definition at line 402 of file cache_handler.c.
+Definition at line 446 of file cache_handler.c.
 .SS "\fBnetsnmp_cache\fP* netsnmp_cache_reqinfo_extract (\fBnetsnmp_agent_request_info\fP * reqinfo, const char * name)"
 .PP
 Extract the cache information for a given request (PDU). 
 .PP
-Definition at line 350 of file cache_handler.c.
+Definition at line 394 of file cache_handler.c.
 .SS "void netsnmp_cache_reqinfo_insert (\fBnetsnmp_cache\fP * cache, \fBnetsnmp_agent_request_info\fP * reqinfo, const char * name)"
 .PP
 Insert the cache information for a given request (PDU). 
 .PP
-Definition at line 333 of file cache_handler.c.
+Definition at line 377 of file cache_handler.c.
 .SS "unsigned int netsnmp_cache_timer_start (\fBnetsnmp_cache\fP * cache)"
 .PP
 starts the recurring cache_load callback 
 .PP
-Definition at line 191 of file cache_handler.c.
+Definition at line 235 of file cache_handler.c.
 .SS "void netsnmp_cache_timer_stop (\fBnetsnmp_cache\fP * cache)"
 .PP
 stops the recurring cache_load callback 
 .PP
-Definition at line 226 of file cache_handler.c.
+Definition at line 270 of file cache_handler.c.
 .SS "\fBnetsnmp_cache\fP* netsnmp_extract_cache_info (\fBnetsnmp_agent_request_info\fP * reqinfo)"
 .PP
 Extract the cache information for a given request (PDU). 
 .PP
-Definition at line 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)"
+Definition at line 406 of file cache_handler.c.
+.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_cache_handler (int timeout, NetsnmpCacheLoad * load_hook, NetsnmpCacheFree * free_hook, const oid * rootoid, int rootoid_len)"
 .PP
 returns a cache handler that can be injected into a given handler chain. 
 .PP
-Definition at line 276 of file cache_handler.c.
+Definition at line 320 of file cache_handler.c.
 .SS "int netsnmp_is_cache_valid (\fBnetsnmp_agent_request_info\fP * reqinfo)"
 .PP
 Is the cache valid for a given request? for backwards compatability. for backwards compat
 .PP
 \fBnetsnmp_cache_is_valid()\fP is preferred. 
 .PP
-Definition at line 413 of file cache_handler.c.
+Definition at line 457 of file cache_handler.c.
 .SS "int netsnmp_register_cache_handler (\fBnetsnmp_handler_registration\fP * reginfo, int timeout, NetsnmpCacheLoad * load_hook, NetsnmpCacheFree * free_hook)"
 .PP
 functionally the same as calling \fBnetsnmp_register_handler()\fP but also injects a cache handler at the same time for you. 
 .PP
-Definition at line 308 of file cache_handler.c.
+Definition at line 352 of file cache_handler.c.
 .SS "void release_cached_resources (unsigned int regNo, void * clientargs)"
 .PP
 run regularly to automatically release cached resources. xxx - method to prevent cache from expiring while a request is being processed (e.g. delegated request). proposal: set a flag, which would be cleared when request finished (which could be acomplished by a dummy data list item in agent req info & custom free function). 
 .PP
-Definition at line 581 of file cache_handler.c.
+Definition at line 623 of file cache_handler.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_callback.3 b/man/netsnmp_callback.3
index cfeec89..e691ab8 100644
--- a/man/netsnmp_callback.3
+++ b/man/netsnmp_callback.3
@@ -1,4 +1,4 @@
-.TH "A generic callback mechanism" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "A generic callback mechanism" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_container.3 b/man/netsnmp_container.3
index b2f414d..f75be4c 100644
--- a/man/netsnmp_container.3
+++ b/man/netsnmp_container.3
@@ -1,4 +1,4 @@
-.TH "container" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "container" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_container_iterator.3 b/man/netsnmp_container_iterator.3
new file mode 100644
index 0000000..1bfcf7e
--- /dev/null
+++ b/man/netsnmp_container_iterator.3
@@ -0,0 +1,43 @@
+.TH "Container_iterator" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Container_iterator \- 
+.SS "Typedefs"
+
+.in +1c
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Loop_Key\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *key)"
+.br
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Loop_Data\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *data)"
+.br
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Ctx\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx)"
+.br
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Ctx_Dup\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *dup_ctx, int reuse)"
+.br
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Op\fP )(void *iterator_ctx)"
+.br
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Data\fP )(void *iterator_ctx, const void *data)"
+.br
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBnetsnmp_container_iterator_init\fP (void)"
+.br
+.ti -1c
+.RI "\fBnetsnmp_container\fP * \fBnetsnmp_container_iterator_get\fP (void *iterator_user_ctx, netsnmp_container_compare *compare, Netsnmp_Iterator_Loop_Key *get_first, Netsnmp_Iterator_Loop_Key *get_next, Netsnmp_Iterator_Loop_Data *get_data, Netsnmp_Iterator_Ctx_Dup *save_pos, Netsnmp_Iterator_Ctx *init_loop_ctx, Netsnmp_Iterator_Ctx *cleanup_loop_ctx, Netsnmp_Iterator_Data *free_user_ctx, int sorted)"
+.br
+.ti -1c
+.RI "void \fBnetsnmp_container_iterator_set_data_cb\fP (\fBnetsnmp_container\fP *c, Netsnmp_Iterator_Data *insert_data, Netsnmp_Iterator_Data *remove_data, Netsnmp_Iterator_Op *get_size)"
+.br
+.in -1c
+.SH "Author"
+.PP 
+Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_container_iterator.h.3 b/man/netsnmp_container_iterator.h.3
new file mode 100644
index 0000000..7fec585
--- /dev/null
+++ b/man/netsnmp_container_iterator.h.3
@@ -0,0 +1,54 @@
+.TH "container_iterator.h" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+container_iterator.h \- 
+.SH SYNOPSIS
+.br
+.PP
+\fC#include 'container.h'\fP
+.br
+
+.SS "Typedefs"
+
+.in +1c
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Loop_Key\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *key)"
+.br
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Loop_Data\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *data)"
+.br
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Ctx\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx)"
+.br
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Ctx_Dup\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *dup_ctx, int reuse)"
+.br
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Op\fP )(void *iterator_ctx)"
+.br
+.ti -1c
+.RI "typedef int( \fBNetsnmp_Iterator_Data\fP )(void *iterator_ctx, const void *data)"
+.br
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBnetsnmp_container_iterator_init\fP (void)"
+.br
+.ti -1c
+.RI "\fBnetsnmp_container\fP * \fBnetsnmp_container_iterator_get\fP (void *iterator_user_ctx, netsnmp_container_compare *compare, Netsnmp_Iterator_Loop_Key *get_first, Netsnmp_Iterator_Loop_Key *get_next, Netsnmp_Iterator_Loop_Data *get_data, Netsnmp_Iterator_Ctx_Dup *save_pos, Netsnmp_Iterator_Ctx *init_loop_ctx, Netsnmp_Iterator_Ctx *cleanup_loop_ctx, Netsnmp_Iterator_Data *free_user_ctx, int sorted)"
+.br
+.ti -1c
+.RI "void \fBnetsnmp_container_iterator_set_data_cb\fP (\fBnetsnmp_container\fP *c, Netsnmp_Iterator_Data *insert_data, Netsnmp_Iterator_Data *remove_data, Netsnmp_Iterator_Op *get_size)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP 
+
+.PP
+Definition in file \fBcontainer_iterator.h\fP.
+.SH "Author"
+.PP 
+Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_data_list.3 b/man/netsnmp_data_list.3
index 0eccafe..cca108a 100644
--- a/man/netsnmp_data_list.3
+++ b/man/netsnmp_data_list.3
@@ -1,4 +1,4 @@
-.TH "generic linked-list data handling with a string as a key." 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "generic linked-list data handling with a string as a key." 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -19,11 +19,11 @@
 .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)"
+.RI "NETSNMP_INLINE void \fBnetsnmp_data_list_add_node\fP (\fBnetsnmp_data_list\fP **head, \fBnetsnmp_data_list\fP *\fBnode\fP)"
 .br
 .RI "\fIadds data to a datalist \fP"
 .ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_data_list_add_node\fP (\fBnetsnmp_data_list\fP **head, \fBnetsnmp_data_list\fP *\fBnode\fP)"
+.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
@@ -79,7 +79,7 @@
 .PP
 
 .PP
-Definition at line 87 of file data_list.c.
+Definition at line 121 of file data_list.c.
 .SS "NETSNMP_INLINE \fBnetsnmp_data_list\fP* netsnmp_create_data_list (const char * name, void * data, Netsnmp_Free_List_Data * beer)"
 .PP
 adds creates a data_list \fBnode\fP given a name, data and a free function ptr. \fBParameters:\fP
@@ -102,7 +102,7 @@
 .in +1c
 \fBdelayed_instance.c\fP.
 .PP
-Definition at line 60 of file data_list.c.
+Definition at line 53 of file data_list.c.
 .SS "NETSNMP_INLINE \fBnetsnmp_data_list\fP* netsnmp_data_list_add_data (\fBnetsnmp_data_list\fP ** head, const char * name, void * data, Netsnmp_Free_List_Data * beer)"
 .PP
 adds data to a datalist \fBParameters:\fP
@@ -123,7 +123,7 @@
 .PP
 
 .PP
-Definition at line 141 of file data_list.c.
+Definition at line 134 of file data_list.c.
 .SS "NETSNMP_INLINE void netsnmp_data_list_add_node (\fBnetsnmp_data_list\fP ** head, \fBnetsnmp_data_list\fP * node)"
 .PP
 adds data to a datalist \fBParameters:\fP
@@ -135,7 +135,7 @@
 .PP
 
 .PP
-Definition at line 97 of file data_list.c.
+Definition at line 78 of file data_list.c.
 .SS "NETSNMP_INLINE void netsnmp_free_all_list_data (\fBnetsnmp_data_list\fP * head)"
 .PP
 frees all data and nodes in a list. \fBParameters:\fP
@@ -145,7 +145,7 @@
 .PP
 
 .PP
-Definition at line 42 of file data_list.c.
+Definition at line 35 of file data_list.c.
 .SS "NETSNMP_INLINE void netsnmp_free_list_data (\fBnetsnmp_data_list\fP * node)"
 .PP
 frees the data and a name at a given data_list \fBnode\fP. Note that this doesn't free the \fBnode\fP itself. 
@@ -157,7 +157,7 @@
 .PP
 
 .PP
-Definition at line 26 of file data_list.c.
+Definition at line 19 of file data_list.c.
 .SS "NETSNMP_INLINE void* netsnmp_get_list_data (\fBnetsnmp_data_list\fP * head, const char * name)"
 .PP
 returns a data_list node's data for a given name within a data_list \fBParameters:\fP
@@ -174,7 +174,7 @@
 .PP
 
 .PP
-Definition at line 166 of file data_list.c.
+Definition at line 159 of file data_list.c.
 .SS "NETSNMP_INLINE \fBnetsnmp_data_list\fP* netsnmp_get_list_node (\fBnetsnmp_data_list\fP * head, const char * name)"
 .PP
 returns a data_list \fBnode\fP for a given name within a data_list \fBParameters:\fP
@@ -191,7 +191,7 @@
 .PP
 
 .PP
-Definition at line 184 of file data_list.c.
+Definition at line 177 of file data_list.c.
 .SS "void netsnmp_read_data_callback (const char * token, char * line)"
 .PP
 intended to be registerd as a .conf parser It should be registered using: register_app_config_handler('token', netsnmp_read_data_callback, XXX)
@@ -205,7 +205,7 @@
 .PP
 
 .PP
-Definition at line 337 of file data_list.c.
+Definition at line 335 of file data_list.c.
 .SS "void netsnmp_register_save_list (\fBnetsnmp_data_list\fP ** datalist, const char * type, const char * token, Netsnmp_Save_List_Data * data_list_save_ptr, Netsnmp_Read_List_Data * data_list_read_ptr, Netsnmp_Free_List_Data * data_list_free_ptr)"
 .PP
 registers to store a data_list set of data at persistent storage time \fBParameters:\fP
@@ -232,7 +232,7 @@
 .PP
 
 .PP
-Definition at line 235 of file data_list.c.
+Definition at line 228 of file data_list.c.
 .SS "int netsnmp_remove_list_node (\fBnetsnmp_data_list\fP ** realhead, const char * name)"
 .PP
 Removes a named \fBnode\fP from a data_list (and frees it). \fBParameters:\fP
@@ -249,12 +249,12 @@
 .PP
 
 .PP
-Definition at line 202 of file data_list.c.
+Definition at line 195 of file data_list.c.
 .SS "int netsnmp_save_all_data (\fBnetsnmp_data_list\fP * head, const char * type, const char * token, Netsnmp_Save_List_Data * data_list_save_ptr)"
 .PP
 intended to be called as a callback during persistent save operations. See the netsnmp_save_all_data_callback for where this is typically used. 
 .PP
-Definition at line 301 of file data_list.c.
+Definition at line 299 of file data_list.c.
 .SS "int netsnmp_save_all_data_callback (int major, int minor, void * serverarg, void * clientarg)"
 .PP
 intended to be registerd as a callback operation. It should be registered using:
@@ -263,7 +263,7 @@
 .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.
+Definition at line 282 of file data_list.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_debug.3 b/man/netsnmp_debug.3
index 63a8b89..45d7102 100644
--- a/man/netsnmp_debug.3
+++ b/man/netsnmp_debug.3
@@ -1,4 +1,4 @@
-.TH "debug" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "debug" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -24,33 +24,6 @@
 .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. 
@@ -70,37 +43,12 @@
 .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.
+Definition at line 44 of file debug_handler.c.
 .SS "void netsnmp_init_debug_helper (void)"
 .PP
 initializes the debug helper which then registers a debug handler as a run-time injectable handler for configuration file use. 
 .PP
-Definition at line 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.
+Definition at line 148 of file debug_handler.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_default_store.3 b/man/netsnmp_default_store.3
index 4a3287b..07cdb53 100644
--- a/man/netsnmp_default_store.3
+++ b/man/netsnmp_default_store.3
@@ -1,4 +1,4 @@
-.TH "storage space for defaults" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "storage space for defaults" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -64,7 +64,7 @@
 .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 ()"
+.RI "void \fBnetsnmp_ds_shutdown\fP (void)"
 .br
 .in -1c
 .SH "Detailed Description"
diff --git a/man/netsnmp_handler.3 b/man/netsnmp_handler.3
index 11ca3a0..3f33778 100644
--- a/man/netsnmp_handler.3
+++ b/man/netsnmp_handler.3
@@ -1,4 +1,4 @@
-.TH "Net-SNMP Agent handler and extensibility API" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "Net-SNMP Agent handler and extensibility API" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -154,11 +154,11 @@
 .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)"
+.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_handler_registration_create\fP (const char *name, \fBnetsnmp_mib_handler\fP *handler, const oid *reg_oid, size_t reg_oid_len, int modes)"
 .br
 .RI "\fIcreates a handler registration structure given a name, a access_method function, a registration location oid and the modes the handler supports. \fP"
 .ti -1c
-.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_create_handler_registration\fP (const char *name, Netsnmp_Node_Handler *handler_access_method, oid *reg_oid, size_t reg_oid_len, int modes)"
+.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_create_handler_registration\fP (const char *name, Netsnmp_Node_Handler *handler_access_method, const oid *reg_oid, size_t reg_oid_len, int modes)"
 .br
 .ti -1c
 .RI "int \fBnetsnmp_register_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
@@ -382,7 +382,7 @@
 .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)"
+.SS "\fBnetsnmp_handler_registration\fP * netsnmp_handler_registration_create (const char * name, \fBnetsnmp_mib_handler\fP * handler, const oid * reg_oid, size_t reg_oid_len, int modes)"
 .PP
 creates a handler registration structure given a name, a access_method function, a registration location oid and the modes the handler supports. If modes == 0, then modes will automatically be set to the default value of only HANDLER_CAN_DEFAULT, which is by default read-only GET and GETNEXT requests. A hander which supports sets but not row creation should set us a mode of HANDLER_CAN_SET_ONLY. 
 .PP
diff --git a/man/netsnmp_instance.3 b/man/netsnmp_instance.3
index f387725..8ed81dd 100644
--- a/man/netsnmp_instance.3
+++ b/man/netsnmp_instance.3
@@ -1,4 +1,4 @@
-.TH "instance" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "instance" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -22,61 +22,61 @@
 .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)"
+.RI "int \fBnetsnmp_register_read_only_ulong_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_ulong_instance\fP (const char *name, oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_ulong_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_counter32_instance\fP (const char *name, oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_read_only_counter32_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_long_instance\fP (const char *name, oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_read_only_long_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_long_instance\fP (const char *name, oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_long_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_uint_instance\fP (const char *name, oid *reg_oid, size_t reg_oid_len, unsigned int *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_read_only_uint_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, unsigned int *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_uint_instance\fP (const char *name, oid *reg_oid, size_t reg_oid_len, unsigned int *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_uint_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, unsigned int *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_int_instance\fP (const char *name, oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_read_only_int_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBregister_read_only_int_instance\fP (const char *name, oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBregister_read_only_int_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_ulong_instance_context\fP (const char *name, oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
+.RI "int \fBnetsnmp_register_read_only_ulong_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_ulong_instance_context\fP (const char *name, oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
+.RI "int \fBnetsnmp_register_ulong_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_counter32_instance_context\fP (const char *name, oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
+.RI "int \fBnetsnmp_register_read_only_counter32_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_long_instance_context\fP (const char *name, oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
+.RI "int \fBnetsnmp_register_read_only_long_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_long_instance_context\fP (const char *name, oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
+.RI "int \fBnetsnmp_register_long_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_int_instance_context\fP (const char *name, oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
+.RI "int \fBnetsnmp_register_int_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_int_instance_context\fP (const char *name, oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
+.RI "int \fBnetsnmp_register_read_only_int_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
 .br
 .ti -1c
-.RI "int \fBregister_read_only_int_instance_context\fP (const char *name, oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
+.RI "int \fBregister_read_only_int_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_num_file_instance\fP (const char *name, oid *reg_oid, size_t reg_oid_len, char *file_name, int asn_type, int mode, Netsnmp_Node_Handler *subhandler, const char *contextName)"
+.RI "int \fBnetsnmp_register_num_file_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, const char *file_name, int asn_type, int mode, Netsnmp_Node_Handler *subhandler, const char *contextName)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_int_instance\fP (const char *name, oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_int_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .RI "\fIThis function registers an int helper handler to a specified OID. \fP"
 .ti -1c
@@ -115,12 +115,52 @@
 .PP
 
 .PP
-Definition at line 48 of file instance.c.
+Definition at line 49 of file instance.c.
+.SS "int netsnmp_instance_counter32_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"\fBDeprecated\fP
+.RS 4
+This function is unused and scheduled for removal in Net-SNMP 5.6 
+.RE
+.PP
+
+.PP
+Definition at line 572 of file instance.c.
+.SS "int netsnmp_instance_int_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"\fBDeprecated\fP
+.RS 4
+This function is unused and scheduled for removal in Net-SNMP 5.6 
+.RE
+.PP
+
+.PP
+Definition at line 689 of file instance.c.
+.SS "int netsnmp_instance_long_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"\fBDeprecated\fP
+.RS 4
+This function is unused and scheduled for removal in Net-SNMP 5.6 
+.RE
+.PP
+
+.PP
+Definition at line 611 of file instance.c.
 .SS "int netsnmp_instance_num_file_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
 .PP
 fall through 
 .PP
-Definition at line 742 of file instance.c.
+Definition at line 771 of file instance.c.
+.SS "int netsnmp_instance_uint_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"\fBDeprecated\fP
+.RS 4
+This function is unused and scheduled for removal in Net-SNMP 5.6 
+.RE
+.PP
+
+.PP
+Definition at line 905 of file instance.c.
+.SS "int netsnmp_instance_ulong_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"\fBDeprecated\fP
+.RS 4
+This function is unused and scheduled for removal in Net-SNMP 5.6 
+.RE
+.PP
+
+.PP
+Definition at line 492 of file instance.c.
 .SS "int netsnmp_register_instance (\fBnetsnmp_handler_registration\fP * reginfo)"
 .PP
 This function registers an instance helper handler, which is a way of registering an exact OID such that GENEXT requests are handled entirely by the helper. First need to inject it into the calling chain of the handler defined by the netsnmp_handler_registration struct, reginfo. The new handler is injected at the top of the list and will be the new handler to be called first. This function also injects a serialize handler before actually calling netsnmp_register_handle, registering reginfo.
@@ -141,8 +181,8 @@
 .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)"
+Definition at line 74 of file instance.c.
+.SS "int netsnmp_register_int_instance (const char * name, const oid * reg_oid, size_t reg_oid_len, int * it, Netsnmp_Node_Handler * subhandler)"
 .PP
 This function registers an int helper handler to a specified OID. \fBParameters:\fP
 .RS 4
@@ -164,7 +204,7 @@
 .PP
 
 .PP
-Definition at line 461 of file instance.c.
+Definition at line 475 of file instance.c.
 .SS "int netsnmp_register_read_only_instance (\fBnetsnmp_handler_registration\fP * reginfo)"
 .PP
 This function injects a 'read only' handler into the handler chain prior to serializing/registering the handler. The only purpose of this 'read only' handler is to return an appropriate error for any requests passed to it in a SET mode. Inserting it into your handler chain will ensure you're never asked to perform a SET request so you can ignore those error conditions.
@@ -181,7 +221,7 @@
 .PP
 
 .PP
-Definition at line 100 of file instance.c.
+Definition at line 101 of file instance.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_iterator_info_s.3 b/man/netsnmp_iterator_info_s.3
index 030bcc0..829660e 100644
--- a/man/netsnmp_iterator_info_s.3
+++ b/man/netsnmp_iterator_info_s.3
@@ -1,4 +1,4 @@
-.TH "iterator_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "iterator_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_leaf.3 b/man/netsnmp_leaf.3
index b8b69a0..19f2888 100644
--- a/man/netsnmp_leaf.3
+++ b/man/netsnmp_leaf.3
@@ -1,4 +1,4 @@
-.TH "leaf_handlers" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "leaf_handlers" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_library.3 b/man/netsnmp_library.3
index 8096d38..41cc6fc 100644
--- a/man/netsnmp_library.3
+++ b/man/netsnmp_library.3
@@ -1,4 +1,4 @@
-.TH "The Net-SNMP library" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "The Net-SNMP library" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -190,6 +190,7 @@
 .ti -1c
 .RI "void \fBsnmp_sess_init\fP (\fBnetsnmp_session\fP *session)"
 .br
+.RI "\fILibrary API routines concerned with specifying and using SNMP 'sessions' including sending and receiving requests. \fP"
 .ti -1c
 .RI "void \fBinit_snmp\fP (const char *type)"
 .br
@@ -208,6 +209,10 @@
 .RI "\fBnetsnmp_session\fP * \fBsnmp_open_ex\fP (\fBnetsnmp_session\fP *session, int(*fpre_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_transport\fP *, void *, int), int(*fparse)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char *, size_t), int(*fpost_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, int), int(*fbuild)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char *, size_t *), int(*frbuild)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char **, size_t *, size_t *), int(*fcheck)(u_char *, size_t))"
 .br
 .ti -1c
+.RI "int \fBsnmpv3_probe_contextEngineID_rfc5343\fP (void *slp, \fBnetsnmp_session\fP *session)"
+.br
+.RI "\fIprobe for engineID using RFC 5343 probing mechanisms \fP"
+.ti -1c
 .RI "int \fBsnmpv3_engineID_probe\fP (struct \fBsession_list\fP *slp, \fBnetsnmp_session\fP *in_session)"
 .br
 .RI "\fIprobe for peer engineID \fP"
@@ -284,6 +289,9 @@
 .RI "int \fBsnmp_sess_async_send\fP (void *sessp, \fBnetsnmp_pdu\fP *pdu, snmp_callback callback, void *cb_data)"
 .br
 .ti -1c
+.RI "void \fBsnmp_free_var_internals\fP (\fBnetsnmp_variable_list\fP *var)"
+.br
+.ti -1c
 .RI "void \fBsnmp_free_var\fP (\fBnetsnmp_variable_list\fP *var)"
 .br
 .ti -1c
@@ -299,18 +307,30 @@
 .RI "void \fBsnmp_read\fP (fd_set *fdset)"
 .br
 .ti -1c
-.RI "int \fB_sess_read\fP (void *sessp, fd_set *fdset)"
+.RI "void \fBsnmp_read2\fP (\fBnetsnmp_large_fd_set\fP *fdset)"
+.br
+.ti -1c
+.RI "int \fB_sess_read\fP (void *sessp, \fBnetsnmp_large_fd_set\fP *fdset)"
 .br
 .ti -1c
 .RI "int \fBsnmp_sess_read\fP (void *sessp, fd_set *fdset)"
 .br
 .ti -1c
+.RI "int \fBsnmp_sess_read2\fP (void *sessp, \fBnetsnmp_large_fd_set\fP *fdset)"
+.br
+.ti -1c
 .RI "int \fBsnmp_select_info\fP (int *numfds, fd_set *fdset, struct timeval *timeout, int *block)"
 .br
 .ti -1c
+.RI "int \fBsnmp_select_info2\fP (int *numfds, \fBnetsnmp_large_fd_set\fP *fdset, struct timeval *timeout, int *block)"
+.br
+.ti -1c
 .RI "int \fBsnmp_sess_select_info\fP (void *sessp, int *numfds, fd_set *fdset, struct timeval *timeout, int *block)"
 .br
 .ti -1c
+.RI "int \fBsnmp_sess_select_info2\fP (void *sessp, int *numfds, \fBnetsnmp_large_fd_set\fP *fdset, struct timeval *timeout, int *block)"
+.br
+.ti -1c
 .RI "void \fBsnmp_timeout\fP (void)"
 .br
 .ti -1c
@@ -347,10 +367,11 @@
 .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)"
+.RI "\fBnetsnmp_variable_list\fP * \fBsnmp_pdu_add_variable\fP (\fBnetsnmp_pdu\fP *pdu, const oid *name, size_t name_length, u_char type, const void *value, size_t len)"
 .br
+.RI "\fILibrary API routines concerned with \fBvariable\fP bindings and values. \fP"
 .ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBsnmp_varlist_add_variable\fP (\fBnetsnmp_variable_list\fP **varlist, const oid *name, size_t name_length, u_char type, const u_char *value, size_t len)"
+.RI "\fBnetsnmp_variable_list\fP * \fBsnmp_varlist_add_variable\fP (\fBnetsnmp_variable_list\fP **varlist, const oid *name, size_t name_length, u_char type, const void *value, size_t len)"
 .br
 .ti -1c
 .RI "int \fBsnmp_add_var\fP (\fBnetsnmp_pdu\fP *pdu, const oid *name, size_t name_length, char type, const char *value)"
@@ -436,16 +457,16 @@
         (tvp)->tv_usec cmp (uvp)->tv_usec))
 .fi
 .PP
-Definition at line 148 of file snmp_api.c.
+Definition at line 149 of file snmp_api.c.
 .SH "Function Documentation"
 .PP 
-.SS "int _sess_read (void * sessp, fd_set * fdset)"
+.SS "int _sess_read (void * sessp, \fBnetsnmp_large_fd_set\fP * fdset)"
 .PP
 XXX-rks: why no SNMP_FREE(isp->packet); ??
 .PP
 XXX-rks: why no SNMP_FREE(isp->packet); ?? 
 .PP
-Definition at line 5448 of file snmp_api.c.
+Definition at line 5715 of file snmp_api.c.
 .SS "int init_agent (const char * app)"
 .PP
 Initialize the agent. Calls into init_agent_read_config to set tha app's configuration file in the appropriate default storage space, NETSNMP_DS_LIB_APPTYPE. Need to call init_agent before calling init_snmp.
@@ -467,7 +488,7 @@
 .PP
 
 .PP
-Definition at line 270 of file snmp_vars.c.
+Definition at line 277 of file snmp_vars.c.
 .SS "void init_snmp (const char * type)"
 .PP
 Calls the functions to do config file loading and mib \fBmodule\fP parsing in the correct order. \fBParameters:\fP
@@ -487,7 +508,7 @@
 .PP
 
 .PP
-Definition at line 787 of file snmp_api.c.
+Definition at line 796 of file snmp_api.c.
 .SS "int netsnmp_oid_compare_ll (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2, size_t * offpt)"
 .PP
 lexicographical compare two object identifiers and return the point where they differ Caution: this method is called often by command responder applications (ie, agent).
@@ -499,7 +520,7 @@
 .PP
 
 .PP
-Definition at line 6386 of file snmp_api.c.
+Definition at line 6716 of file snmp_api.c.
 .SS "int netsnmp_oid_equals (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)"
 .PP
 Compares 2 OIDs to determine if they are exactly equal. This should be faster than doing a snmp_oid_compare for different length OIDs, since the length is checked first and if != returns immediately. Might be very slighly faster if lengths are ==. 
@@ -522,7 +543,7 @@
 .PP
 
 .PP
-Definition at line 6467 of file snmp_api.c.
+Definition at line 6797 of file snmp_api.c.
 .SS "int netsnmp_oid_find_prefix (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)"
 .PP
 Given two OIDs, determine the common prefix to them both. \fBParameters:\fP
@@ -543,7 +564,7 @@
 .PP
 
 .PP
-Definition at line 6531 of file snmp_api.c.
+Definition at line 6861 of file snmp_api.c.
 .SS "int netsnmp_oid_is_subtree (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)"
 .PP
 Identical to netsnmp_oid_equals, except only the length up to len1 is compared. Functionally, this determines if in_name2 is equal or a subtree of in_name1 
@@ -566,7 +587,7 @@
 .PP
 
 .PP
-Definition at line 6510 of file snmp_api.c.
+Definition at line 6840 of file snmp_api.c.
 .SS "int snmp_oid_compare (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)"
 .PP
 lexicographical compare two object identifiers. Caution: this method is called often by command responder applications (ie, agent).
@@ -578,7 +599,7 @@
 .PP
 
 .PP
-Definition at line 6337 of file snmp_api.c.
+Definition at line 6667 of file snmp_api.c.
 .SS "int snmp_oidtree_compare (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)"
 .PP
 Compares 2 OIDs to determine if they are equal up until the shortest length. \fBParameters:\fP
@@ -599,7 +620,17 @@
 .PP
 
 .PP
-Definition at line 6439 of file snmp_api.c.
+Definition at line 6769 of file snmp_api.c.
+.SS "\fBnetsnmp_variable_list\fP* snmp_pdu_add_variable (\fBnetsnmp_pdu\fP * pdu, const oid * name, size_t name_length, u_char type, const void * value, size_t len)"
+.PP
+Library API routines concerned with \fBvariable\fP bindings and values. 
+.PP
+Definition at line 6932 of file snmp_api.c.
+.SS "void snmp_sess_init (\fBnetsnmp_session\fP * session)"
+.PP
+Library API routines concerned with specifying and using SNMP 'sessions' including sending and receiving requests. 
+.PP
+Definition at line 718 of file snmp_api.c.
 .SS "\fBnetsnmp_session\fP* snmp_sess_session_lookup (void * sessp)"
 .PP
 Look up a session that already may have been closed. \fBParameters:\fP
@@ -619,7 +650,7 @@
 .PP
 
 .PP
-Definition at line 7197 of file snmp_api.c.
+Definition at line 7525 of file snmp_api.c.
 .SS "void snmp_shutdown (const char * type)"
 .PP
 Shuts down the application, saving any needed persistent storage, and appropriate clean up. \fBParameters:\fP
@@ -634,7 +665,7 @@
 .PP
 
 .PP
-Definition at line 853 of file snmp_api.c.
+Definition at line 862 of file snmp_api.c.
 .SS "int snmpv3_engineID_probe (struct \fBsession_list\fP * slp, \fBnetsnmp_session\fP * in_session)"
 .PP
 probe for peer engineID \fBParameters:\fP
@@ -664,7 +695,12 @@
 .PP
 
 .PP
-Definition at line 1278 of file snmp_api.c.
+Definition at line 1377 of file snmp_api.c.
+.SS "int snmpv3_probe_contextEngineID_rfc5343 (void * slp, \fBnetsnmp_session\fP * session)"
+.PP
+probe for engineID using RFC 5343 probing mechanisms Designed to be a callback for within a security model's probe_engineid hook. Since it's likely multiple security models won't have engineIDs to probe for then this function is a callback likely to be used by multiple future security models. E.G. both SSH and DTLS. 
+.PP
+Definition at line 1279 of file snmp_api.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_mib_maintenance.3 b/man/netsnmp_mib_maintenance.3
index 65b3916..f408806 100644
--- a/man/netsnmp_mib_maintenance.3
+++ b/man/netsnmp_mib_maintenance.3
@@ -1,4 +1,4 @@
-.TH "mib_maintenance" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "mib_maintenance" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_mib_utilities.3 b/man/netsnmp_mib_utilities.3
index 07727bd..542d381 100644
--- a/man/netsnmp_mib_utilities.3
+++ b/man/netsnmp_mib_utilities.3
@@ -1,4 +1,4 @@
-.TH "mib parsing and datatype manipulation routines." 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "mib parsing and datatype manipulation routines." 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -151,6 +151,18 @@
 .RI "void \fBinit_mib\fP (void)"
 .br
 .ti -1c
+.RI "int \fB_mibindex_add\fP (const char *dirname, int i)"
+.br
+.ti -1c
+.RI "void \fBnetsnmp_mibindex_load\fP (void)"
+.br
+.ti -1c
+.RI "char * \fBnetsnmp_mibindex_lookup\fP (const char *dirname)"
+.br
+.ti -1c
+.RI "FILE * \fBnetsnmp_mibindex_new\fP (const char *dirname)"
+.br
+.ti -1c
 .RI "void \fBshutdown_mib\fP (void)"
 .br
 .RI "\fIUnloads all mibs. \fP"
@@ -386,6 +398,9 @@
 .ti -1c
 .RI "\fBPrefixList\fP \fBmib_prefixes\fP []"
 .br
+.ti -1c
+.RI "char ** \fB_mibindexes\fP = NULL"
+.br
 .in -1c
 .SH "Function Documentation"
 .PP 
@@ -417,12 +432,12 @@
 .PP
 
 .PP
-Definition at line 274 of file mib.c.
+Definition at line 292 of file mib.c.
 .SS "int build_oid (oid ** out, size_t * out_len, oid * prefix, size_t prefix_len, \fBnetsnmp_variable_list\fP * indexes)"
 .PP
 xxx-rks: should free previous value? 
 .PP
-Definition at line 3582 of file mib.c.
+Definition at line 3731 of file mib.c.
 .SS "int build_oid_segment (\fBnetsnmp_variable_list\fP * var)"
 .PP
 Takes the value in VAR and turns it into an OID segment in var->name. \fBParameters:\fP
@@ -437,7 +452,7 @@
 .PP
 
 .PP
-Definition at line 3448 of file mib.c.
+Definition at line 3597 of file mib.c.
 .SS "void fprint_description (FILE * f, oid * objid, size_t objidlen, int width)"
 .PP
 Prints on oid description into a file descriptor. \fBParameters:\fP
@@ -453,7 +468,7 @@
 .PP
 
 .PP
-Definition at line 4452 of file mib.c.
+Definition at line 4601 of file mib.c.
 .SS "void fprint_objid (FILE * f, const oid * objid, size_t objidlen)"
 .PP
 Prints an oid to a file descriptor. \fBParameters:\fP
@@ -467,7 +482,7 @@
 .PP
 
 .PP
-Definition at line 3167 of file mib.c.
+Definition at line 3320 of file mib.c.
 .SS "void fprint_variable (FILE * f, const oid * objid, size_t objidlen, const \fBnetsnmp_variable_list\fP * variable)"
 .PP
 Prints a \fBvariable\fP to a file descriptor. \fBParameters:\fP
@@ -483,7 +498,7 @@
 .PP
 
 .PP
-Definition at line 3321 of file mib.c.
+Definition at line 3474 of file mib.c.
 .SS "struct \fBtree\fP* get_tree_head (void)\fC [read]\fP"
 .PP
 Retrieves the \fBtree\fP head. \fBReturns:\fP
@@ -493,7 +508,7 @@
 .PP
 
 .PP
-Definition at line 2020 of file mib.c.
+Definition at line 2031 of file mib.c.
 .SS "int get_wild_node (const char * name, oid * objid, size_t * objidlen)"\fBSee also:\fP
 .RS 4
 comments on find_best_tree_node for usage after first time. 
@@ -501,24 +516,26 @@
 .PP
 
 .PP
-Definition at line 5491 of file mib.c.
+Definition at line 5639 of file mib.c.
 .SS "void netsnmp_fixup_mib_directory (void)"
 .PP
 swap in the new value and repeat 
 .PP
-Definition at line 2483 of file mib.c.
+Definition at line 2496 of file mib.c.
 .SS "char* netsnmp_get_mib_directory (void)"
 .PP
 Check if the environment \fBvariable\fP is set
 .PP
 Not set use hard coded path 
 .PP
-Definition at line 2436 of file mib.c.
+Definition at line 2449 of file mib.c.
 .SS "void netsnmp_init_mib (void)"
 .PP
-Initialises the mib reader. Reads in all settings from the environment. 
+Initialises the mib reader. Library API routines concerned with MIB files and objects, and OIDs.
 .PP
-Definition at line 2530 of file mib.c.
+Reads in all settings from the environment. 
+.PP
+Definition at line 2543 of file mib.c.
 .SS "int netsnmp_oid2chars (char * C, int L, const oid * O)"
 .PP
 Converts an OID to its character form. in example 5 . 1 . 2 . 3 . 4 . 5 = 12345
@@ -541,7 +558,7 @@
 .PP
 length 
 .PP
-Definition at line 6278 of file mib.c.
+Definition at line 6425 of file mib.c.
 .SS "int netsnmp_oid2str (char * S, int L, oid * O)"
 .PP
 Converts an OID to its string form. in example 5 . 'h' . 'e' . 'l' . 'l' . 'o' = 'hello\\0' (null terminated)
@@ -562,7 +579,7 @@
 .PP
 
 .PP
-Definition at line 6306 of file mib.c.
+Definition at line 6453 of file mib.c.
 .SS "void netsnmp_set_mib_directory (const char * dir)"
 .PP
 New dir starts with '+', thus we add it.
@@ -571,7 +588,7 @@
 .PP
 set_string calls strdup, so if we allocated memory, free it 
 .PP
-Definition at line 2381 of file mib.c.
+Definition at line 2394 of file mib.c.
 .SS "int netsnmp_str2oid (const char * S, oid * O, int L)"
 .PP
 Converts a string to its OID form. in example 'hello' = 5 . 'h' . 'e' . 'l' . 'l' . 'o'
@@ -592,7 +609,7 @@
 .PP
 
 .PP
-Definition at line 6243 of file mib.c.
+Definition at line 6390 of file mib.c.
 .SS "void print_description (oid * objid, size_t objidlen, int width)"
 .PP
 Prints on oid description on stdout. \fBSee also:\fP
@@ -602,7 +619,7 @@
 .PP
 
 .PP
-Definition at line 4436 of file mib.c.
+Definition at line 4585 of file mib.c.
 .SS "void print_mib (FILE * fp)"
 .PP
 Prints the MIBs to the file fp. \fBParameters:\fP
@@ -612,7 +629,7 @@
 .PP
 
 .PP
-Definition at line 2745 of file mib.c.
+Definition at line 2901 of file mib.c.
 .SS "void print_objid (const oid * objid, size_t objidlen)"
 .PP
 Prints an oid to stdout. \fBParameters:\fP
@@ -624,7 +641,7 @@
 .PP
 
 .PP
-Definition at line 3153 of file mib.c.
+Definition at line 3306 of file mib.c.
 .SS "void print_variable (const oid * objid, size_t objidlen, const \fBnetsnmp_variable_list\fP * variable)"
 .PP
 Prints a \fBvariable\fP to stdout. \fBParameters:\fP
@@ -638,7 +655,7 @@
 .PP
 
 .PP
-Definition at line 3305 of file mib.c.
+Definition at line 3458 of file mib.c.
 .SS "int read_objid (const char * input, oid * output, size_t * out_len)"
 .PP
 Reads an object identifier from an input string into internal OID form. When called, out_len must hold the maximum length of the output array.
@@ -659,7 +676,7 @@
 .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.
+Definition at line 2999 of file mib.c.
 .SS "void set_function (struct \fBtree\fP * subtree)"
 .PP
 Set's the printing function printomat in a subtree according it's type. \fBParameters:\fP
@@ -669,12 +686,12 @@
 .PP
 
 .PP
-Definition at line 2766 of file mib.c.
+Definition at line 2922 of file mib.c.
 .SS "void shutdown_mib (void)"
 .PP
 Unloads all mibs. 
 .PP
-Definition at line 2720 of file mib.c.
+Definition at line 2867 of file mib.c.
 .SS "void snmp_in_toggle_options_usage (const char * lead, FILE * outf)"
 .PP
 Prints out a help usage for the in* toggle options. \fBParameters:\fP
@@ -686,7 +703,7 @@
 .PP
 
 .PP
-Definition at line 2293 of file mib.c.
+Definition at line 2304 of file mib.c.
 .SS "oid* snmp_parse_oid (const char * argv, oid * root, size_t * rootlen)"
 .PP
 Given a string, parses an oid out of it (if possible). It will try to parse it based on predetermined configuration if present or by every method possible otherwise. If a suffix has been registered using NETSNMP_DS_LIB_OIDSUFFIX, it will be appended to the input string before processing.
@@ -707,7 +724,7 @@
 .PP
 
 .PP
-Definition at line 5849 of file mib.c.
+Definition at line 5996 of file mib.c.
 .SS "int sprint_realloc_asciistring (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const u_char * cp, size_t len)"
 .PP
 Prints an ascii string into a buffer. The characters pointed by *cp are encoded as an ascii string.
@@ -736,7 +753,7 @@
 .PP
 
 .PP
-Definition at line 370 of file mib.c.
+Definition at line 388 of file mib.c.
 .SS "int sprint_realloc_badtype (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Fallback routine for a bad type, prints 'Variable has bad type' into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -767,7 +784,7 @@
 .PP
 
 .PP
-Definition at line 1905 of file mib.c.
+Definition at line 1916 of file mib.c.
 .SS "int sprint_realloc_bitstring (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints a bit string into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -798,7 +815,7 @@
 .PP
 
 .PP
-Definition at line 1766 of file mib.c.
+Definition at line 1777 of file mib.c.
 .SS "int sprint_realloc_by_type (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Universal print routine, prints a \fBvariable\fP into a buffer according to the \fBvariable\fP type. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -829,7 +846,7 @@
 .PP
 
 .PP
-Definition at line 1940 of file mib.c.
+Definition at line 1951 of file mib.c.
 .SS "int sprint_realloc_counter (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints a counter value into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -860,7 +877,7 @@
 .PP
 
 .PP
-Definition at line 1533 of file mib.c.
+Definition at line 1544 of file mib.c.
 .SS "int sprint_realloc_counter64 (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints a counter into a buffer. The \fBvariable\fP var is encoded as a counter value.
@@ -893,7 +910,7 @@
 .PP
 
 .PP
-Definition at line 849 of file mib.c.
+Definition at line 860 of file mib.c.
 .SS "int sprint_realloc_gauge (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints a gauge value into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -924,7 +941,7 @@
 .PP
 
 .PP
-Definition at line 1460 of file mib.c.
+Definition at line 1471 of file mib.c.
 .SS "int sprint_realloc_hinted_integer (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, long val, const char decimaltype, const char * hint, const char * units)"
 .PP
 Prints an integer according to the hint into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -955,7 +972,7 @@
 .PP
 
 .PP
-Definition at line 1186 of file mib.c.
+Definition at line 1197 of file mib.c.
 .SS "int sprint_realloc_integer (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints an integer into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -986,7 +1003,7 @@
 .PP
 
 .PP
-Definition at line 1260 of file mib.c.
+Definition at line 1271 of file mib.c.
 .SS "int sprint_realloc_ipaddress (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints an ip-address into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -1017,7 +1034,7 @@
 .PP
 
 .PP
-Definition at line 1662 of file mib.c.
+Definition at line 1673 of file mib.c.
 .SS "int sprint_realloc_networkaddress (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints a network address into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -1048,7 +1065,7 @@
 .PP
 
 .PP
-Definition at line 1596 of file mib.c.
+Definition at line 1607 of file mib.c.
 .SS "int sprint_realloc_null (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints a null value into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -1079,7 +1096,7 @@
 .PP
 
 .PP
-Definition at line 1722 of file mib.c.
+Definition at line 1733 of file mib.c.
 .SS "int sprint_realloc_object_identifier (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints an object identifier into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -1110,7 +1127,7 @@
 .PP
 
 .PP
-Definition at line 1042 of file mib.c.
+Definition at line 1053 of file mib.c.
 .SS "int sprint_realloc_octet_string (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints an octet string into a buffer. The \fBvariable\fP var is encoded as octet string.
@@ -1143,7 +1160,7 @@
 .PP
 
 .PP
-Definition at line 430 of file mib.c.
+Definition at line 448 of file mib.c.
 .SS "int sprint_realloc_opaque (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints an object identifier into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -1174,7 +1191,7 @@
 .PP
 
 .PP
-Definition at line 952 of file mib.c.
+Definition at line 963 of file mib.c.
 .SS "int sprint_realloc_timeticks (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints a timetick \fBvariable\fP into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -1205,7 +1222,7 @@
 .PP
 
 .PP
-Definition at line 1112 of file mib.c.
+Definition at line 1123 of file mib.c.
 .SS "int sprint_realloc_uinteger (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
 .PP
 Prints an unsigned integer into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
@@ -1236,7 +1253,7 @@
 .PP
 
 .PP
-Definition at line 1363 of file mib.c.
+Definition at line 1374 of file mib.c.
 .SS "char* uptime_string (u_long timeticks, char * buf)"
 .PP
 Converts timeticks to hours, minutes, seconds string. CMU compatible does not show centiseconds.
@@ -1260,7 +1277,7 @@
 .PP
 
 .PP
-Definition at line 5814 of file mib.c.
+Definition at line 5961 of file mib.c.
 .SH "Variable Documentation"
 .PP 
 .SS "\fBPrefixList\fP mib_prefixes[]"\fBInitial value:\fP
@@ -1277,7 +1294,7 @@
 }
 .fi
 .PP
-Definition at line 163 of file mib.c.
+Definition at line 181 of file mib.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_mode_end_call.3 b/man/netsnmp_mode_end_call.3
index e941b09..d366921 100644
--- a/man/netsnmp_mode_end_call.3
+++ b/man/netsnmp_mode_end_call.3
@@ -1,4 +1,4 @@
-.TH "mode_end_call" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "mode_end_call" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_multiplexer.3 b/man/netsnmp_multiplexer.3
index c6b2c4d..e374365 100644
--- a/man/netsnmp_multiplexer.3
+++ b/man/netsnmp_multiplexer.3
@@ -1,4 +1,4 @@
-.TH "multiplexer" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "multiplexer" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_netsnmp_agent_request_info_s.3 b/man/netsnmp_netsnmp_agent_request_info_s.3
index 2fe6fe4..d370961 100644
--- a/man/netsnmp_netsnmp_agent_request_info_s.3
+++ b/man/netsnmp_netsnmp_agent_request_info_s.3
@@ -1,4 +1,4 @@
-.TH "netsnmp_agent_request_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "netsnmp_agent_request_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_netsnmp_column_info_t.3 b/man/netsnmp_netsnmp_column_info_t.3
index 7e852bc..e8a291c 100644
--- a/man/netsnmp_netsnmp_column_info_t.3
+++ b/man/netsnmp_netsnmp_column_info_t.3
@@ -1,4 +1,4 @@
-.TH "netsnmp_column_info_t" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "netsnmp_column_info_t" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -43,14 +43,14 @@
 
 OVERLAPPING RANGES ARE NOT SUPPORTED. 
 .PP
-Definition at line 52 of file table.h.
+Definition at line 58 of file table.h.
 .SH "Field Documentation"
 .PP 
 .SS "char \fBnetsnmp_column_info_t::list_count\fP"
 .PP
 only useful if isRange == 0 
 .PP
-Definition at line 55 of file table.h.
+Definition at line 61 of file table.h.
 
 .SH "Author"
 .PP 
diff --git a/man/netsnmp_netsnmp_data_list_s.3 b/man/netsnmp_netsnmp_data_list_s.3
index de579a8..1cfd69d 100644
--- a/man/netsnmp_netsnmp_data_list_s.3
+++ b/man/netsnmp_netsnmp_data_list_s.3
@@ -1,4 +1,4 @@
-.TH "netsnmp_data_list_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "netsnmp_data_list_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_netsnmp_handler_registration_s.3 b/man/netsnmp_netsnmp_handler_registration_s.3
index 0731ad2..85dd3e1 100644
--- a/man/netsnmp_netsnmp_handler_registration_s.3
+++ b/man/netsnmp_netsnmp_handler_registration_s.3
@@ -1,4 +1,4 @@
-.TH "netsnmp_handler_registration_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "netsnmp_handler_registration_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_netsnmp_iterator_info_s.3 b/man/netsnmp_netsnmp_iterator_info_s.3
index 359f788..4266e02 100644
--- a/man/netsnmp_netsnmp_iterator_info_s.3
+++ b/man/netsnmp_netsnmp_iterator_info_s.3
@@ -1,4 +1,4 @@
-.TH "netsnmp_iterator_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "netsnmp_iterator_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_netsnmp_mib_handler_access_methods.3 b/man/netsnmp_netsnmp_mib_handler_access_methods.3
index 36791b1..6ab57a0 100644
--- a/man/netsnmp_netsnmp_mib_handler_access_methods.3
+++ b/man/netsnmp_netsnmp_mib_handler_access_methods.3
@@ -1,4 +1,4 @@
-.TH "netsnmp_mib_handler_access_methods" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "netsnmp_mib_handler_access_methods" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_netsnmp_mib_handler_methods.3 b/man/netsnmp_netsnmp_mib_handler_methods.3
index 934ae09..74941f9 100644
--- a/man/netsnmp_netsnmp_mib_handler_methods.3
+++ b/man/netsnmp_netsnmp_mib_handler_methods.3
@@ -1,4 +1,4 @@
-.TH "netsnmp_mib_handler_methods" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "netsnmp_mib_handler_methods" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_netsnmp_mib_handler_s.3 b/man/netsnmp_netsnmp_mib_handler_s.3
index 65fb3ca..5556261 100644
--- a/man/netsnmp_netsnmp_mib_handler_s.3
+++ b/man/netsnmp_netsnmp_mib_handler_s.3
@@ -1,4 +1,4 @@
-.TH "netsnmp_mib_handler_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "netsnmp_mib_handler_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_netsnmp_monitor_callback_header_s.3 b/man/netsnmp_netsnmp_monitor_callback_header_s.3
new file mode 100644
index 0000000..1a4c5a6
--- /dev/null
+++ b/man/netsnmp_netsnmp_monitor_callback_header_s.3
@@ -0,0 +1,85 @@
+.TH "netsnmp_monitor_callback_header_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+netsnmp_monitor_callback_header_s \- 
+.PP
+callback header  
+
+.SH SYNOPSIS
+.br
+.PP
+.PP
+\fC#include <object_monitor.h>\fP
+.SS "Data Fields"
+
+.in +1c
+.ti -1c
+.RI "unsigned int \fBevent\fP"
+.br
+.RI "\fIcallback type \fP"
+.ti -1c
+.RI "\fBnetsnmp_index\fP \fBmonitored_object\fP"
+.br
+.RI "\fIregistered oid \fP"
+.ti -1c
+.RI "int \fBpriority\fP"
+.br
+.RI "\fIpriority \fP"
+.ti -1c
+.RI "void * \fBwatcher_data\fP"
+.br
+.RI "\fIpointer given by watcher at registration \fP"
+.ti -1c
+.RI "void * \fBobject_info\fP"
+.br
+.RI "\fIpointer passed from the monitored object \fP"
+.ti -1c
+.RI "struct \fBnetsnmp_monitor_callback_header_s\fP * \fBprivate\fP"
+.br
+.RI "\fIDO NOT USE, INTERNAL USE ONLY. \fP"
+.ti -1c
+.RI "int \fBrefs\fP"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP 
+callback header 
+.PP
+Definition at line 64 of file object_monitor.h.
+.SH "Field Documentation"
+.PP 
+.SS "unsigned int \fBnetsnmp_monitor_callback_header_s::event\fP"
+.PP
+callback type 
+.PP
+Definition at line 67 of file object_monitor.h.
+.SS "\fBnetsnmp_index\fP \fBnetsnmp_monitor_callback_header_s::monitored_object\fP"
+.PP
+registered oid 
+.PP
+Definition at line 70 of file object_monitor.h.
+.SS "void* \fBnetsnmp_monitor_callback_header_s::object_info\fP"
+.PP
+pointer passed from the monitored object 
+.PP
+Definition at line 79 of file object_monitor.h.
+.SS "int \fBnetsnmp_monitor_callback_header_s::priority\fP"
+.PP
+priority 
+.PP
+Definition at line 73 of file object_monitor.h.
+.SS "struct \fBnetsnmp_monitor_callback_header_s\fP* \fBnetsnmp_monitor_callback_header_s::private\fP\fC [read]\fP"
+.PP
+DO NOT USE, INTERNAL USE ONLY. 
+.PP
+Definition at line 82 of file object_monitor.h.
+.SS "void* \fBnetsnmp_monitor_callback_header_s::watcher_data\fP"
+.PP
+pointer given by watcher at registration 
+.PP
+Definition at line 76 of file object_monitor.h.
+
+.SH "Author"
+.PP 
+Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_request_info_s.3 b/man/netsnmp_netsnmp_request_info_s.3
index 15bd168..6f4af18 100644
--- a/man/netsnmp_netsnmp_request_info_s.3
+++ b/man/netsnmp_netsnmp_request_info_s.3
@@ -1,4 +1,4 @@
-.TH "netsnmp_request_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "netsnmp_request_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_netsnmp_table_registration_info_s.3 b/man/netsnmp_netsnmp_table_registration_info_s.3
index 1ec5e9b..e8b0c33 100644
--- a/man/netsnmp_netsnmp_table_registration_info_s.3
+++ b/man/netsnmp_netsnmp_table_registration_info_s.3
@@ -1,4 +1,4 @@
-.TH "netsnmp_table_registration_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "netsnmp_table_registration_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -39,34 +39,34 @@
 .PP 
 Table registration structure. 
 .PP
-Definition at line 74 of file table.h.
+Definition at line 80 of file table.h.
 .SH "Field Documentation"
 .PP 
 .SS "\fBnetsnmp_variable_list\fP* \fBnetsnmp_table_registration_info_s::indexes\fP"
 .PP
 list of varbinds with only 'type' set 
 .PP
-Definition at line 76 of file table.h.
+Definition at line 82 of file table.h.
 .SS "unsigned int \fBnetsnmp_table_registration_info_s::max_column\fP"
 .PP
 the maximum columns number 
 .PP
-Definition at line 87 of file table.h.
+Definition at line 93 of file table.h.
 .SS "unsigned int \fBnetsnmp_table_registration_info_s::min_column\fP"
 .PP
 the minimum columns number. If there are columns in-between which are not valid, use valid_columns to get automatic column range checking. 
 .PP
-Definition at line 85 of file table.h.
+Definition at line 91 of file table.h.
 .SS "unsigned int \fBnetsnmp_table_registration_info_s::number_indexes\fP"
 .PP
 calculated automatically 
 .PP
-Definition at line 78 of file table.h.
+Definition at line 84 of file table.h.
 .SS "\fBnetsnmp_column_info\fP* \fBnetsnmp_table_registration_info_s::valid_columns\fP"
 .PP
 more details on columns 
 .PP
-Definition at line 90 of file table.h.
+Definition at line 96 of file table.h.
 
 .SH "Author"
 .PP 
diff --git a/man/netsnmp_netsnmp_table_request_info_s.3 b/man/netsnmp_netsnmp_table_request_info_s.3
index 556c869..3b94397 100644
--- a/man/netsnmp_netsnmp_table_request_info_s.3
+++ b/man/netsnmp_netsnmp_table_request_info_s.3
@@ -1,4 +1,4 @@
-.TH "netsnmp_table_request_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "netsnmp_table_request_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -40,24 +40,24 @@
 .PP 
 The table request info structure. 
 .PP
-Definition at line 102 of file table.h.
+Definition at line 108 of file table.h.
 .SH "Field Documentation"
 .PP 
 .SS "unsigned int \fBnetsnmp_table_request_info_s::colnum\fP"
 .PP
 0 if OID not long enough 
 .PP
-Definition at line 104 of file table.h.
+Definition at line 110 of file table.h.
 .SS "\fBnetsnmp_variable_list\fP* \fBnetsnmp_table_request_info_s::indexes\fP"
 .PP
 contents freed by helper upon exit 
 .PP
-Definition at line 108 of file table.h.
+Definition at line 114 of file table.h.
 .SS "unsigned int \fBnetsnmp_table_request_info_s::number_indexes\fP"
 .PP
 0 if failure to parse any 
 .PP
-Definition at line 106 of file table.h.
+Definition at line 112 of file table.h.
 
 .SH "Author"
 .PP 
diff --git a/man/netsnmp_null_container.3 b/man/netsnmp_null_container.3
new file mode 100644
index 0000000..d3c2fb4
--- /dev/null
+++ b/man/netsnmp_null_container.3
@@ -0,0 +1,33 @@
+.TH "null_container" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+null_container \- 
+.PP
+Helps you implement specialized containers.  
+
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "\fBnetsnmp_container\fP * \fBnetsnmp_container_get_null\fP (void)"
+.br
+.ti -1c
+.RI "\fBnetsnmp_factory\fP * \fBnetsnmp_container_get_null_factory\fP (void)"
+.br
+.ti -1c
+.RI "void \fBnetsnmp_container_null_init\fP (void)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP 
+Helps you implement specialized containers. 
+
+This is a simple container that doesn't actually contain anything. All the methods simply log a debug message and return.
+.PP
+The original intent for this container is as a wrapper for a specialized container. Implement the functions you need, create a null_container, and override the default functions with your specialized versions.
+.PP
+You can use the 'container:null' debug token to see what functions are being called, to help determine if you need to implement them. 
+.SH "Author"
+.PP 
+Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_oid_stash.3 b/man/netsnmp_oid_stash.3
index 8ab034b..fad28e9 100644
--- a/man/netsnmp_oid_stash.3
+++ b/man/netsnmp_oid_stash.3
@@ -1,4 +1,4 @@
-.TH "Store and retrieve data referenced by an OID." 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "Store and retrieve data referenced by an OID." 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -18,11 +18,11 @@
 .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)"
+.RI "int \fBnetsnmp_oid_stash_add_data\fP (\fBnetsnmp_oid_stash_node\fP **root, const oid *lookup, size_t lookup_len, void *mydata)"
 .br
 .RI "\fIadds data to the stash at a given oid. \fP"
 .ti -1c
-.RI "\fBnetsnmp_oid_stash_node\fP * \fBnetsnmp_oid_stash_get_node\fP (\fBnetsnmp_oid_stash_node\fP *root, oid *lookup, size_t lookup_len)"
+.RI "\fBnetsnmp_oid_stash_node\fP * \fBnetsnmp_oid_stash_get_node\fP (\fBnetsnmp_oid_stash_node\fP *root, const oid *lookup, size_t lookup_len)"
 .br
 .RI "\fIreturns a \fBnode\fP associated with a given OID. \fP"
 .ti -1c
@@ -30,7 +30,7 @@
 .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)"
+.RI "void * \fBnetsnmp_oid_stash_get_data\fP (\fBnetsnmp_oid_stash_node\fP *root, const oid *lookup, size_t lookup_len)"
 .br
 .RI "\fIreturns a data pointer associated with a given OID. \fP"
 .ti -1c
@@ -60,7 +60,7 @@
 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)"
+.SS "int netsnmp_oid_stash_add_data (\fBnetsnmp_oid_stash_node\fP ** root, const oid * lookup, size_t lookup_len, void * mydata)"
 .PP
 adds data to the stash at a given oid. \fBParameters:\fP
 .RS 4
@@ -120,7 +120,7 @@
 
 .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)"
+.SS "void* netsnmp_oid_stash_get_data (\fBnetsnmp_oid_stash_node\fP * root, const oid * lookup, size_t lookup_len)"
 .PP
 returns a data pointer associated with a given OID. This is equivelent to netsnmp_oid_stash_get_node, but returns only the data not the entire \fBnode\fP.
 .PP
@@ -136,7 +136,7 @@
 
 .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)"
+.SS "\fBnetsnmp_oid_stash_node\fP* netsnmp_oid_stash_get_node (\fBnetsnmp_oid_stash_node\fP * root, const oid * lookup, size_t lookup_len)"
 .PP
 returns a \fBnode\fP associated with a given OID. \fBParameters:\fP
 .RS 4
diff --git a/man/netsnmp_old_api.3 b/man/netsnmp_old_api.3
index 1e6cc75..a1328de 100644
--- a/man/netsnmp_old_api.3
+++ b/man/netsnmp_old_api.3
@@ -1,4 +1,4 @@
-.TH "old_api" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "old_api" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -37,24 +37,24 @@
 .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.
+Definition at line 38 of file old_api.c.
 .SS "int netsnmp_old_api_helper (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
 .PP
 implements the old_api handler 
 .PP
-Definition at line 226 of file old_api.c.
+Definition at line 235 of file old_api.c.
 .SS "int netsnmp_register_mib_table_row (const char * moduleName, struct \fBvariable\fP * var, size_t varsize, size_t numvars, oid * mibloc, size_t mibloclen, int priority, int var_subid, \fBnetsnmp_session\fP * ss, const char * context, int timeout, int flags)"
 .PP
 registers a row within a mib table 
 .PP
-Definition at line 107 of file old_api.c.
+Definition at line 116 of file old_api.c.
 .SS "int netsnmp_register_old_api (const char * moduleName, struct \fBvariable\fP * var, size_t varsize, size_t numvars, oid * mibloc, size_t mibloclen, int priority, int range_subid, oid range_ubound, \fBnetsnmp_session\fP * ss, const char * context, int timeout, int flags)"
 .PP
 Registers an old API set into the mib \fBtree\fP. Functionally this mimics the old register_mib_context() function (and in fact the new register_mib_context() function merely calls this new old_api one). 
 .PP
 netsnmp_handler_registration_free(reginfo); already freed 
 .PP
-Definition at line 48 of file old_api.c.
+Definition at line 49 of file old_api.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_read_config.3 b/man/netsnmp_read_config.3
index d240e1b..53c137a 100644
--- a/man/netsnmp_read_config.3
+++ b/man/netsnmp_read_config.3
@@ -1,4 +1,4 @@
-.TH "parsing various configuration files at run time" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "parsing various configuration files at run time" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -37,7 +37,7 @@
 .RI "void \fBunregister_app_config_handler\fP (const char *token)"
 .br
 .ti -1c
-.RI "void \fBunregister_all_config_handlers\fP ()"
+.RI "void \fBunregister_all_config_handlers\fP (void)"
 .br
 .ti -1c
 .RI "struct \fBconfig_line\fP * \fBread_config_get_handlers\fP (const char *type)"
@@ -97,19 +97,19 @@
 .RI "void \fBset_configuration_directory\fP (const char *dir)"
 .br
 .ti -1c
-.RI "const char * \fBget_configuration_directory\fP ()"
+.RI "const char * \fBget_configuration_directory\fP (void)"
 .br
 .ti -1c
 .RI "void \fBset_persistent_directory\fP (const char *dir)"
 .br
 .ti -1c
-.RI "const char * \fBget_persistent_directory\fP ()"
+.RI "const char * \fBget_persistent_directory\fP (void)"
 .br
 .ti -1c
 .RI "void \fBset_temp_file_pattern\fP (const char *pattern)"
 .br
 .ti -1c
-.RI "const char * \fBget_temp_file_pattern\fP ()"
+.RI "const char * \fBget_temp_file_pattern\fP (void)"
 .br
 .ti -1c
 .RI "void \fBread_config_files\fP (int when)"
@@ -131,6 +131,12 @@
 .RI "void \fBsnmp_clean_persistent\fP (const char *type)"
 .br
 .ti -1c
+.RI "void \fBnetsnmp_config_error\fP (const char *str,...)"
+.br
+.ti -1c
+.RI "void \fBnetsnmp_config_warn\fP (const char *str,...)"
+.br
+.ti -1c
 .RI "void \fBconfig_perror\fP (const char *str)"
 .br
 .ti -1c
@@ -252,7 +258,7 @@
 .PP
 
 .PP
-Definition at line 1836 of file read_config.c.
+Definition at line 1859 of file read_config.c.
 .SS "void read_config_store (const char * type, const char * line)"
 .PP
 read_config_store intended for use by applications to store permenant configuration information generated by sets or persistent counters. Appends line to a file named either ENV(SNMP_PERSISTENT_FILE) or '<NETSNMP_PERSISTENT_DIRECTORY>/<type>.conf'. Adds a trailing newline to the stored file if necessary.
@@ -271,7 +277,7 @@
 .PP
 
 .PP
-Definition at line 1272 of file read_config.c.
+Definition at line 1262 of file read_config.c.
 .SS "char* read_config_store_data (int type, char * storeto, void * dataptr, size_t * len)"
 .PP
 read_config_store_data stores data of a given type to a configuration line into the storeto buffer. Calls read_config_store_data_prefix with the prefix parameter set to a char space. The supported types are:
@@ -308,10 +314,12 @@
 .PP
 
 .PP
-Definition at line 1995 of file read_config.c.
+Definition at line 2013 of file read_config.c.
 .SS "struct \fBconfig_line\fP* register_config_handler (const char * type, const char * token, void(*)(const char *, char *) parser, void(*)(void) releaser, const char * help)\fC [read]\fP"
 .PP
-register_config_handler registers handlers for certain tokens specified in certain types of files. 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.
+register_config_handler registers handlers for certain tokens specified in certain types of files. Library API routines concerned with configuration and control of the behaviour of the library, agent and other applications.
+.PP
+Allows a \fBmodule\fP writer use/register multiple configuration files based off of the type parameter. A \fBmodule\fP writer may want to set up multiple configuration files to separate out related tasks/variables or just for management of where to put tokens as the \fBmodule\fP or modules get more complex in regard to handling token registrations.
 .PP
 \fBParameters:\fP
 .RS 4
diff --git a/man/netsnmp_read_only.3 b/man/netsnmp_read_only.3
index 53a40fd..1e5a35b 100644
--- a/man/netsnmp_read_only.3
+++ b/man/netsnmp_read_only.3
@@ -1,4 +1,4 @@
-.TH "read_only" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "read_only" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -32,12 +32,12 @@
 .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.
+Definition at line 23 of file read_only.c.
 .SS "void netsnmp_init_read_only_helper (void)"
 .PP
 initializes the read_only helper which then registers a read_only handler as a run-time injectable handler for configuration file use. 
 .PP
-Definition at line 81 of file read_only.c.
+Definition at line 72 of file read_only.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_row_merge.3 b/man/netsnmp_row_merge.3
index 96c62d2..c6daa4e 100644
--- a/man/netsnmp_row_merge.3
+++ b/man/netsnmp_row_merge.3
@@ -1,4 +1,4 @@
-.TH "row_merge" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "row_merge" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_scalar.3 b/man/netsnmp_scalar.3
index 89ed4cc..dcca671 100644
--- a/man/netsnmp_scalar.3
+++ b/man/netsnmp_scalar.3
@@ -1,4 +1,4 @@
-.TH "scalar" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "scalar" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -46,7 +46,7 @@
 .PP
 
 .PP
-Definition at line 46 of file scalar.c.
+Definition at line 47 of file scalar.c.
 .SS "int netsnmp_register_read_only_scalar (\fBnetsnmp_handler_registration\fP * reginfo)"
 .PP
 This function registers a read only scalar helper handler. This function is very similar to netsnmp_register_scalar the only addition is that the 'read_only' handler is injected into the handler chain prior to injecting the serialize handler and registering reginfo.
@@ -70,7 +70,7 @@
 .PP
 
 .PP
-Definition at line 109 of file scalar.c.
+Definition at line 110 of file scalar.c.
 .SS "int netsnmp_register_scalar (\fBnetsnmp_handler_registration\fP * reginfo)"
 .PP
 This function registers a scalar helper handler. The registered OID, reginfo->rootoid, space is extended for the instance subid using realloc() but the reginfo->rootoid_len length is not extended just yet. .This function subsequently injects the instance, scalar, and serialize helper handlers before actually registering reginfo.
@@ -96,7 +96,7 @@
 .PP
 
 .PP
-Definition at line 74 of file scalar.c.
+Definition at line 75 of file scalar.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_scalar_group_group.3 b/man/netsnmp_scalar_group_group.3
index cbba9b0..5402fbc 100644
--- a/man/netsnmp_scalar_group_group.3
+++ b/man/netsnmp_scalar_group_group.3
@@ -1,4 +1,4 @@
-.TH "scalar_group" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "scalar_group" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_serialize.3 b/man/netsnmp_serialize.3
index 4474f3d..df08e89 100644
--- a/man/netsnmp_serialize.3
+++ b/man/netsnmp_serialize.3
@@ -1,4 +1,4 @@
-.TH "serialize" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "serialize" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -37,22 +37,22 @@
 .PP
 returns a serialize handler that can be injected into a given handler chain. 
 .PP
-Definition at line 31 of file serialize.c.
+Definition at line 25 of file serialize.c.
 .SS "void netsnmp_init_serialize (void)"
 .PP
 initializes the serialize helper which then registers a serialize handler as a run-time injectable handler for configuration file use. 
 .PP
-Definition at line 93 of file serialize.c.
+Definition at line 87 of file serialize.c.
 .SS "int netsnmp_register_serialize (\fBnetsnmp_handler_registration\fP * reginfo)"
 .PP
 functionally the same as calling \fBnetsnmp_register_handler()\fP but also injects a serialize handler at the same time for you. 
 .PP
-Definition at line 40 of file serialize.c.
+Definition at line 34 of file serialize.c.
 .SS "int netsnmp_serialize_helper_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
 .PP
 Implements the serial handler. 
 .PP
-Definition at line 48 of file serialize.c.
+Definition at line 42 of file serialize.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_snmp_agent.3 b/man/netsnmp_snmp_agent.3
index b921dad..d6f4784 100644
--- a/man/netsnmp_snmp_agent.3
+++ b/man/netsnmp_snmp_agent.3
@@ -1,4 +1,4 @@
-.TH "net-snmp agent related processing" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "net-snmp agent related processing" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -50,6 +50,24 @@
 
 .in +1c
 .ti -1c
+.RI "NETSNMP_INLINE void \fBnetsnmp_agent_add_list_data\fP (\fBnetsnmp_agent_request_info\fP *ari, \fBnetsnmp_data_list\fP *\fBnode\fP)"
+.br
+.ti -1c
+.RI "NETSNMP_INLINE int \fBnetsnmp_agent_remove_list_data\fP (\fBnetsnmp_agent_request_info\fP *ari, const char *name)"
+.br
+.ti -1c
+.RI "NETSNMP_INLINE void * \fBnetsnmp_agent_get_list_data\fP (\fBnetsnmp_agent_request_info\fP *ari, const char *name)"
+.br
+.ti -1c
+.RI "NETSNMP_INLINE void \fBnetsnmp_free_agent_data_set\fP (\fBnetsnmp_agent_request_info\fP *ari)"
+.br
+.ti -1c
+.RI "NETSNMP_INLINE void \fBnetsnmp_free_agent_data_sets\fP (\fBnetsnmp_agent_request_info\fP *ari)"
+.br
+.ti -1c
+.RI "NETSNMP_INLINE void \fBnetsnmp_free_agent_request_info\fP (\fBnetsnmp_agent_request_info\fP *ari)"
+.br
+.ti -1c
 .RI "int \fBnetsnmp_agent_check_packet\fP (\fBnetsnmp_session\fP *, struct \fBnetsnmp_transport_s\fP *, void *, int)"
 .br
 .ti -1c
@@ -61,7 +79,6 @@
 .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
@@ -112,7 +129,7 @@
 .RI "NETSNMP_STATIC_INLINE void \fB_fix_endofmibview\fP (\fBnetsnmp_agent_session\fP *asp)"
 .br
 .ti -1c
-.RI "int \fBgetNextSessID\fP ()"
+.RI "int \fBgetNextSessID\fP (void)"
 .br
 .ti -1c
 .RI "int \fBagent_check_and_process\fP (int block)"
@@ -249,24 +266,6 @@
 .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"
@@ -316,7 +315,7 @@
 .PP
 set error for a request 
 .PP
-Definition at line 3417 of file snmp_agent.c.
+Definition at line 3431 of file snmp_agent.c.
 .SS "int agent_check_and_process (int block)"
 .PP
 This function checks for packets arriving on the SNMP port and processes them(snmp_read) if some are found, using the select(). If block is non zero, the function call blocks until a packet arrives
@@ -333,92 +332,22 @@
 .PP
 
 .PP
-Definition at line 566 of file snmp_agent.c.
+Definition at line 626 of file snmp_agent.c.
 .SS "int check_getnext_results (\fBnetsnmp_agent_session\fP * asp)"
 .PP
 returns 1 if there are valid GETNEXT requests left. Returns 0 if not. 
 .PP
-Definition at line 2818 of file snmp_agent.c.
+Definition at line 2883 of file snmp_agent.c.
 .SS "int handle_getnext_loop (\fBnetsnmp_agent_session\fP * asp)"
 .PP
 repeatedly calls getnext handlers looking for an answer till all requests are satisified. It's expected that one pass has been made before entering this function 
 .PP
-Definition at line 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.
+Definition at line 3000 of file snmp_agent.c.
 .SS "int handle_snmp_packet (int op, \fBnetsnmp_session\fP * session, int reqid, \fBnetsnmp_pdu\fP * pdu, void * magic)"
 .PP
 handles an incoming SNMP packet into the agent 
 .PP
-Definition at line 1774 of file snmp_agent.c.
+Definition at line 1835 of file snmp_agent.c.
 .SS "\fBnetsnmp_request_info\fP* netsnmp_add_varbind_to_cache (\fBnetsnmp_agent_session\fP * asp, int vbcount, \fBnetsnmp_variable_list\fP * varbind_ptr, \fBnetsnmp_subtree\fP * tp)"
 .PP
 \fBTodo\fP
@@ -428,14 +357,14 @@
 .PP
 
 .PP
-Definition at line 1883 of file snmp_agent.c.
+Definition at line 1944 of file snmp_agent.c.
 .SS "int netsnmp_check_transaction_id (int transaction_id)"
 .PP
 Decide if the requested transaction_id is still being processed within the agent. This is used to validate whether a delayed cache (containing possibly freed pointers) is still usable.
 .PP
 returns SNMPERR_SUCCESS if it's still valid, or SNMPERR_GENERR if not. 
 .PP
-Definition at line 2721 of file snmp_agent.c.
+Definition at line 2786 of file snmp_agent.c.
 .SS "int netsnmp_request_set_error (\fBnetsnmp_request_info\fP * request, int error_value)"
 .PP
 set error for a request \fBParameters:\fP
@@ -447,7 +376,7 @@
 .PP
 
 .PP
-Definition at line 3485 of file snmp_agent.c.
+Definition at line 3499 of file snmp_agent.c.
 .SS "NETSNMP_INLINE int netsnmp_request_set_error_all (\fBnetsnmp_request_info\fP * requests, int error)"
 .PP
 set error for all requests \fBParameters:\fP
@@ -466,7 +395,7 @@
 .PP
 paranoid sanity checks 
 .PP
-Definition at line 3528 of file snmp_agent.c.
+Definition at line 3542 of file snmp_agent.c.
 .SS "int netsnmp_request_set_error_idx (\fBnetsnmp_request_info\fP * request, int error_value, int idx)"
 .PP
 set error for a request within a request list \fBParameters:\fP
@@ -480,7 +409,7 @@
 .PP
 
 .PP
-Definition at line 3500 of file snmp_agent.c.
+Definition at line 3514 of file snmp_agent.c.
 .SS "int netsnmp_set_all_requests_error (\fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests, int error_value)"
 .PP
 set error for all request \fBDeprecated\fP
@@ -504,7 +433,7 @@
 .PP
 
 .PP
-Definition at line 3702 of file snmp_agent.c.
+Definition at line 3655 of file snmp_agent.c.
 .SS "int netsnmp_set_mode_request_error (int mode, \fBnetsnmp_request_info\fP * request, int error_value)"
 .PP
 set error for a request deprecated, use netsnmp_request_set_error instead
@@ -530,7 +459,7 @@
 .PP
 
 .PP
-Definition at line 3686 of file snmp_agent.c.
+Definition at line 3639 of file snmp_agent.c.
 .SS "int netsnmp_set_request_error (\fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * request, int error_value)"
 .PP
 set error for a request deprecated, use netsnmp_request_set_error instead
@@ -560,12 +489,12 @@
 .in +1c
 \fBdelayed_instance.c\fP.
 .PP
-Definition at line 3667 of file snmp_agent.c.
+Definition at line 3620 of file snmp_agent.c.
 .SS "int netsnmp_wrap_up_request (\fBnetsnmp_agent_session\fP * asp, int status)"
 .PP
 if asp->pdu 
 .PP
-Definition at line 1520 of file snmp_agent.c.
+Definition at line 1581 of file snmp_agent.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_snmp_alarm.3 b/man/netsnmp_snmp_alarm.3
index 6b83d58..01bcbad 100644
--- a/man/netsnmp_snmp_alarm.3
+++ b/man/netsnmp_snmp_alarm.3
@@ -1,4 +1,4 @@
-.TH "snmp_alarm" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "snmp_alarm" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_snmp_client.3 b/man/netsnmp_snmp_client.3
index 4fff1c5..8c8c1ab 100644
--- a/man/netsnmp_snmp_client.3
+++ b/man/netsnmp_snmp_client.3
@@ -1,4 +1,4 @@
-.TH "various PDU processing routines" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "various PDU processing routines" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -9,6 +9,7 @@
 .ti -1c
 .RI "\fBnetsnmp_pdu\fP * \fBsnmp_pdu_create\fP (int command)"
 .br
+.RI "\fILibrary API routines concerned with SNMP PDUs. \fP"
 .ti -1c
 .RI "\fBnetsnmp_variable_list\fP * \fBsnmp_add_null_var\fP (\fBnetsnmp_pdu\fP *pdu, const oid *name, size_t name_length)"
 .br
@@ -16,7 +17,7 @@
 .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)"
+.RI "int \fBsnmp_clone_mem\fP (void **dstPtr, const void *srcPtr, unsigned len)"
 .br
 .ti -1c
 .RI "void \fBsnmp_reset_var_buffers\fP (\fBnetsnmp_variable_list\fP *var)"
@@ -40,7 +41,7 @@
 .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)"
+.RI "int \fBsnmp_set_var_typed_value\fP (\fBnetsnmp_variable_list\fP *newvar, u_char type, const void *val_str, size_t val_len)"
 .br
 .RI "\fIsnmp_set_var_typed_value is used to set data into the netsnmp_variable_list structure. \fP"
 .ti -1c
@@ -59,7 +60,7 @@
 .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)"
+.RI "int \fBsnmp_set_var_value\fP (\fBnetsnmp_variable_list\fP *vars, const void *value, size_t len)"
 .br
 .ti -1c
 .RI "void \fBsnmp_replace_var_types\fP (\fBnetsnmp_variable_list\fP *vbl, u_char old_type, u_char new_type)"
@@ -83,8 +84,13 @@
 .RI "void \fBnetsnmp_query_set_default_session\fP (\fBnetsnmp_session\fP *sess)"
 .br
 .ti -1c
+.RI "\fBnetsnmp_session\fP * \fBnetsnmp_query_get_default_session_unchecked\fP (void)"
+.br
+.RI "\fIReturn a pointer to the default internal query session. \fP"
+.ti -1c
 .RI "\fBnetsnmp_session\fP * \fBnetsnmp_query_get_default_session\fP (void)"
 .br
+.RI "\fIReturn a pointer to the default internal query session and log a warning message once if this session does not exist. \fP"
 .ti -1c
 .RI "int \fBnetsnmp_query_get\fP (\fBnetsnmp_variable_list\fP *list, \fBnetsnmp_session\fP *session)"
 .br
@@ -100,7 +106,22 @@
 .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)"
+.SS "\fBnetsnmp_session\fP* netsnmp_query_get_default_session (void)"
+.PP
+Return a pointer to the default internal query session and log a warning message once if this session does not exist. 
+.PP
+Definition at line 1242 of file snmp_client.c.
+.SS "\fBnetsnmp_session\fP* netsnmp_query_get_default_session_unchecked (void)"
+.PP
+Return a pointer to the default internal query session. 
+.PP
+Definition at line 1232 of file snmp_client.c.
+.SS "\fBnetsnmp_pdu\fP* snmp_pdu_create (int command)"
+.PP
+Library API routines concerned with SNMP PDUs. 
+.PP
+Definition at line 131 of file snmp_client.c.
+.SS "int snmp_set_var_typed_value (\fBnetsnmp_variable_list\fP * newvar, u_char type, const void * val_str, size_t val_len)"
 .PP
 snmp_set_var_typed_value is used to set data into the netsnmp_variable_list structure. Used to return data to the snmp request via the netsnmp_request_info structure's requestvb pointer.
 .PP
@@ -126,12 +147,12 @@
 .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)"
+Definition at line 719 of file snmp_client.c.
+.SS "int snmp_set_var_value (\fBnetsnmp_variable_list\fP * vars, const void * value, size_t len)"
 .PP
 FALL THROUGH 
 .PP
-Definition at line 754 of file snmp_client.c.
+Definition at line 784 of file snmp_client.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_snmp_logging.3 b/man/netsnmp_snmp_logging.3
index 7dfcfba..3552e5e 100644
--- a/man/netsnmp_snmp_logging.3
+++ b/man/netsnmp_snmp_logging.3
@@ -1,4 +1,4 @@
-.TH "generic logging for net-snmp" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "generic logging for net-snmp" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -32,6 +32,9 @@
 .RI "void \fBshutdown_snmp_logging\fP (void)"
 .br
 .ti -1c
+.RI "void \fBnetsnmp_set_line_buffering\fP (FILE *stream)"
+.br
+.ti -1c
 .RI "int \fBdecode_priority\fP (char **optarg, int *pri_max)"
 .br
 .ti -1c
@@ -159,7 +162,7 @@
 .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.
+Definition at line 657 of file snmp_logging.c.
 .SS "int snmp_get_do_logging (void)"
 .PP
 Is logging done? \fBReturns:\fP
@@ -169,7 +172,7 @@
 .PP
 
 .PP
-Definition at line 496 of file snmp_logging.c.
+Definition at line 514 of file snmp_logging.c.
 .SS "int snmp_log (int priority, const char * format,  ...)"
 .PP
 This snmp logging function allows \fBvariable\fP argument list given the specified format and priority. Calls the snmp_vlog function. The default logfile this function writes to is /var/log/snmpd.log.
@@ -185,7 +188,7 @@
 .in +1c
 \fBdelayed_instance.c\fP.
 .PP
-Definition at line 1278 of file snmp_logging.c.
+Definition at line 1286 of file snmp_logging.c.
 .SS "int snmp_vlog (int priority, const char * format, va_list ap)"
 .PP
 This snmp logging function allows \fBvariable\fP argument list given the specified priority, format and a populated va_list structure. The default logfile this function writes to is /var/log/snmpd.log.
@@ -240,7 +243,7 @@
 .PP
 
 .PP
-Definition at line 1217 of file snmp_logging.c.
+Definition at line 1226 of file snmp_logging.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_snmp_pdu.3 b/man/netsnmp_snmp_pdu.3
index 7964827..ad658f4 100644
--- a/man/netsnmp_snmp_pdu.3
+++ b/man/netsnmp_snmp_pdu.3
@@ -1,4 +1,4 @@
-.TH "snmp_pdu" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "snmp_pdu" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -10,7 +10,7 @@
 .br
 .PP
 .PP
-\fC#include <snmp_api.h>\fP
+\fC#include <types.h>\fP
 .SS "Data Fields"
 
 .in +1c
@@ -153,139 +153,139 @@
 .PP 
 The snmp protocol data unit. 
 .PP
-Definition at line 75 of file snmp_api.h.
+Definition at line 169 of file types.h.
 .SH "Field Documentation"
 .PP 
 .SS "unsigned char \fBsnmp_pdu::agent_addr\fP[4]"
 .PP
 This is ONLY used for v1 TRAPs. 
 .PP
-Definition at line 142 of file snmp_api.h.
+Definition at line 239 of file types.h.
 .SS "int \fBsnmp_pdu::command\fP"
 .PP
 Type of this PDU. 
 .PP
-Definition at line 83 of file snmp_api.h.
+Definition at line 180 of file types.h.
 .SS "u_char* \fBsnmp_pdu::community\fP"
 .PP
 community for outgoing requests. 
 .PP
-Definition at line 127 of file snmp_api.h.
+Definition at line 224 of file types.h.
 .SS "size_t \fBsnmp_pdu::community_len\fP"
 .PP
 length of community name. 
 .PP
-Definition at line 129 of file snmp_api.h.
+Definition at line 226 of file types.h.
 .SS "u_char* \fBsnmp_pdu::contextEngineID\fP"
 .PP
 context snmpEngineID 
 .PP
-Definition at line 148 of file snmp_api.h.
+Definition at line 245 of file types.h.
 .SS "size_t \fBsnmp_pdu::contextEngineIDLen\fP"
 .PP
 Length of contextEngineID. 
 .PP
-Definition at line 150 of file snmp_api.h.
+Definition at line 247 of file types.h.
 .SS "char* \fBsnmp_pdu::contextName\fP"
 .PP
 authoritative contextName 
 .PP
-Definition at line 152 of file snmp_api.h.
+Definition at line 249 of file types.h.
 .SS "size_t \fBsnmp_pdu::contextNameLen\fP"
 .PP
 Length of contextName. 
 .PP
-Definition at line 154 of file snmp_api.h.
+Definition at line 251 of file types.h.
 .SS "oid* \fBsnmp_pdu::enterprise\fP"
 .PP
 System OID. 
 .PP
-Definition at line 135 of file snmp_api.h.
+Definition at line 232 of file types.h.
 .SS "long \fBsnmp_pdu::errindex\fP"
 .PP
 Error index (max_repetitions in GetBulk). 
 .PP
-Definition at line 95 of file snmp_api.h.
+Definition at line 192 of file types.h.
 .SS "long \fBsnmp_pdu::errstat\fP"
 .PP
 Error status (non_repeaters in GetBulk). 
 .PP
-Definition at line 93 of file snmp_api.h.
+Definition at line 190 of file types.h.
 .SS "long \fBsnmp_pdu::msgid\fP"
 .PP
 Message id for V3 messages note: incremented for each retry. 
 .PP
-Definition at line 87 of file snmp_api.h.
+Definition at line 184 of file types.h.
 .SS "long \fBsnmp_pdu::reqid\fP"
 .PP
 Request id - note: not incremented on retries. 
 .PP
-Definition at line 85 of file snmp_api.h.
+Definition at line 182 of file types.h.
 .SS "u_char* \fBsnmp_pdu::securityEngineID\fP"
 .PP
 authoritative snmpEngineID for security 
 .PP
-Definition at line 156 of file snmp_api.h.
+Definition at line 253 of file types.h.
 .SS "size_t \fBsnmp_pdu::securityEngineIDLen\fP"
 .PP
 Length of securityEngineID. 
 .PP
-Definition at line 158 of file snmp_api.h.
+Definition at line 255 of file types.h.
 .SS "int \fBsnmp_pdu::securityLevel\fP"
 .PP
 noAuthNoPriv, authNoPriv, authPriv 
 .PP
-Definition at line 102 of file snmp_api.h.
+Definition at line 199 of file types.h.
 .SS "char* \fBsnmp_pdu::securityName\fP"
 .PP
 on behalf of this principal 
 .PP
-Definition at line 160 of file snmp_api.h.
+Definition at line 257 of file types.h.
 .SS "size_t \fBsnmp_pdu::securityNameLen\fP"
 .PP
 Length of securityName. 
 .PP
-Definition at line 162 of file snmp_api.h.
+Definition at line 259 of file types.h.
 .SS "long \fBsnmp_pdu::sessid\fP"
 .PP
 Session id for AgentX messages. 
 .PP
-Definition at line 91 of file snmp_api.h.
+Definition at line 188 of file types.h.
 .SS "long \fBsnmp_pdu::specific_type\fP"
 .PP
 specific type 
 .PP
-Definition at line 140 of file snmp_api.h.
+Definition at line 237 of file types.h.
 .SS "const oid* \fBsnmp_pdu::tDomain\fP"
 .PP
 The actual transport domain. This SHOULD NOT BE FREE()D. 
 .PP
-Definition at line 117 of file snmp_api.h.
+Definition at line 214 of file types.h.
 .SS "u_long \fBsnmp_pdu::time\fP"
 .PP
 Uptime. 
 .PP
-Definition at line 97 of file snmp_api.h.
+Definition at line 194 of file types.h.
 .SS "long \fBsnmp_pdu::transid\fP"
 .PP
 Unique ID for incoming transactions. 
 .PP
-Definition at line 89 of file snmp_api.h.
+Definition at line 186 of file types.h.
 .SS "void* \fBsnmp_pdu::transport_data\fP"
 .PP
 Transport-specific opaque data. This replaces the IP-centric address field. 
 .PP
-Definition at line 110 of file snmp_api.h.
+Definition at line 207 of file types.h.
 .SS "long \fBsnmp_pdu::trap_type\fP"
 .PP
 trap type 
 .PP
-Definition at line 138 of file snmp_api.h.
+Definition at line 235 of file types.h.
 .SS "long \fBsnmp_pdu::version\fP"
 .PP
 snmp version 
 .PP
-Definition at line 81 of file snmp_api.h.
+Definition at line 178 of file types.h.
 
 .SH "Author"
 .PP 
diff --git a/man/netsnmp_snmp_session.3 b/man/netsnmp_snmp_session.3
index 00e383f..04ab944 100644
--- a/man/netsnmp_snmp_session.3
+++ b/man/netsnmp_snmp_session.3
@@ -1,4 +1,4 @@
-.TH "snmp_session" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "snmp_session" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -10,7 +10,7 @@
 .br
 .PP
 .PP
-\fC#include <snmp_api.h>\fP
+\fC#include <types.h>\fP
 .SS "Data Fields"
 
 .in +1c
@@ -208,7 +208,7 @@
 .PP 
 The snmp session structure. 
 .PP
-Definition at line 187 of file snmp_api.h.
+Definition at line 287 of file types.h.
 .SH "Field Documentation"
 .PP 
 .SS "u_char*(* \fBsnmp_session::authenticator\fP)(u_char *, size_t *, u_char *, size_t)"
@@ -218,222 +218,222 @@
 .PP
 Function to interpret incoming data. 
 .PP
-Definition at line 214 of file snmp_api.h.
+Definition at line 314 of file types.h.
 .SS "void* \fBsnmp_session::callback_magic\fP"
 .PP
 Pointer to data that the callback function may consider important. 
 .PP
-Definition at line 218 of file snmp_api.h.
+Definition at line 318 of file types.h.
 .SS "u_char* \fBsnmp_session::community\fP"
 .PP
 community for outgoing requests. 
 .PP
-Definition at line 230 of file snmp_api.h.
+Definition at line 330 of file types.h.
 .SS "size_t \fBsnmp_session::community_len\fP"
 .PP
 Length of community name. 
 .PP
-Definition at line 232 of file snmp_api.h.
+Definition at line 332 of file types.h.
 .SS "u_char* \fBsnmp_session::contextEngineID\fP"
 .PP
 authoritative snmpEngineID 
 .PP
-Definition at line 244 of file snmp_api.h.
+Definition at line 344 of file types.h.
 .SS "size_t \fBsnmp_session::contextEngineIDLen\fP"
 .PP
 Length of contextEngineID. 
 .PP
-Definition at line 246 of file snmp_api.h.
+Definition at line 346 of file types.h.
 .SS "char* \fBsnmp_session::contextName\fP"
 .PP
 authoritative contextName 
 .PP
-Definition at line 252 of file snmp_api.h.
+Definition at line 352 of file types.h.
 .SS "size_t \fBsnmp_session::contextNameLen\fP"
 .PP
 Length of contextName. 
 .PP
-Definition at line 254 of file snmp_api.h.
+Definition at line 354 of file types.h.
 .SS "u_int \fBsnmp_session::engineBoots\fP"
 .PP
 initial engineBoots for remote engine 
 .PP
-Definition at line 248 of file snmp_api.h.
+Definition at line 348 of file types.h.
 .SS "u_int \fBsnmp_session::engineTime\fP"
 .PP
 initial engineTime for remote engine 
 .PP
-Definition at line 250 of file snmp_api.h.
+Definition at line 350 of file types.h.
 .SS "u_char \fBsnmp_session::isAuthoritative\fP"
 .PP
 are we the authoritative engine? 
 .PP
-Definition at line 242 of file snmp_api.h.
+Definition at line 342 of file types.h.
 .SS "u_short \fBsnmp_session::local_port\fP"
 .PP
 My UDP port number, 0 for default, picked randomly. 
 .PP
-Definition at line 208 of file snmp_api.h.
+Definition at line 308 of file types.h.
 .SS "char* \fBsnmp_session::localname\fP"
 .PP
 My Domain name or dotted IP address, 0 for default. 
 .PP
-Definition at line 206 of file snmp_api.h.
+Definition at line 306 of file types.h.
 .SS "void* \fBsnmp_session::myvoid\fP"
 .PP
 use as you want data used by 'SNMP_FLAGS_RESP_CALLBACK' handling in the agent XXX: or should we add a new field into this structure? 
 .PP
-Definition at line 308 of file snmp_api.h.
+Definition at line 408 of file types.h.
 .SS "char* \fBsnmp_session::paramName\fP"
 .PP
 target param name 
 .PP
-Definition at line 295 of file snmp_api.h.
+Definition at line 395 of file types.h.
 .SS "char* \fBsnmp_session::peername\fP"
 .PP
 name or address of default peer (may include transport specifier and/or port number) 
 .PP
-Definition at line 202 of file snmp_api.h.
+Definition at line 302 of file types.h.
 .SS "size_t \fBsnmp_session::rcvMsgMaxSize\fP"
 .PP
 Largest message to try to receive. 
 .PP
-Definition at line 234 of file snmp_api.h.
+Definition at line 334 of file types.h.
 .SS "u_short \fBsnmp_session::remote_port\fP"
 .PP
 UDP port number of peer. (NO LONGER USED - USE peername INSTEAD) 
 .PP
-Definition at line 204 of file snmp_api.h.
+Definition at line 304 of file types.h.
 .SS "int \fBsnmp_session::retries\fP"
 .PP
 Number of retries before timeout. 
 .PP
-Definition at line 194 of file snmp_api.h.
+Definition at line 294 of file types.h.
 .SS "int \fBsnmp_session::s_errno\fP"
 .PP
 copy of system errno 
 .PP
-Definition at line 220 of file snmp_api.h.
+Definition at line 320 of file types.h.
 .SS "int \fBsnmp_session::s_snmp_errno\fP"
 .PP
 copy of library errno 
 .PP
-Definition at line 222 of file snmp_api.h.
+Definition at line 322 of file types.h.
 .SS "u_char \fBsnmp_session::securityAuthKey\fP[USM_AUTH_KU_LEN]"
 .PP
 Ku for auth protocol XXX. 
 .PP
-Definition at line 269 of file snmp_api.h.
+Definition at line 369 of file types.h.
 .SS "size_t \fBsnmp_session::securityAuthKeyLen\fP"
 .PP
 Length of Ku for auth protocol. 
 .PP
-Definition at line 271 of file snmp_api.h.
+Definition at line 371 of file types.h.
 .SS "u_char* \fBsnmp_session::securityAuthLocalKey\fP"
 .PP
 Kul for auth protocol. 
 .PP
-Definition at line 273 of file snmp_api.h.
+Definition at line 373 of file types.h.
 .SS "size_t \fBsnmp_session::securityAuthLocalKeyLen\fP"
 .PP
 Length of Kul for auth protocol XXX. 
 .PP
-Definition at line 275 of file snmp_api.h.
+Definition at line 375 of file types.h.
 .SS "oid* \fBsnmp_session::securityAuthProto\fP"
 .PP
 auth protocol oid 
 .PP
-Definition at line 265 of file snmp_api.h.
+Definition at line 365 of file types.h.
 .SS "size_t \fBsnmp_session::securityAuthProtoLen\fP"
 .PP
 Length of auth protocol oid. 
 .PP
-Definition at line 267 of file snmp_api.h.
+Definition at line 367 of file types.h.
 .SS "u_char* \fBsnmp_session::securityEngineID\fP"
 .PP
 authoritative snmpEngineID 
 .PP
-Definition at line 256 of file snmp_api.h.
+Definition at line 356 of file types.h.
 .SS "size_t \fBsnmp_session::securityEngineIDLen\fP"
 .PP
 Length of contextEngineID. 
 .PP
-Definition at line 258 of file snmp_api.h.
+Definition at line 358 of file types.h.
 .SS "void* \fBsnmp_session::securityInfo\fP"
 .PP
 security \fBmodule\fP specific 
 .PP
-Definition at line 300 of file snmp_api.h.
+Definition at line 400 of file types.h.
 .SS "int \fBsnmp_session::securityLevel\fP"
 .PP
 noAuthNoPriv, authNoPriv, authPriv 
 .PP
-Definition at line 293 of file snmp_api.h.
+Definition at line 393 of file types.h.
 .SS "int \fBsnmp_session::securityModel\fP"
 .PP
 snmp security model, v1, v2c, usm 
 .PP
-Definition at line 291 of file snmp_api.h.
+Definition at line 391 of file types.h.
 .SS "char* \fBsnmp_session::securityName\fP"
 .PP
 on behalf of this principal 
 .PP
-Definition at line 260 of file snmp_api.h.
+Definition at line 360 of file types.h.
 .SS "size_t \fBsnmp_session::securityNameLen\fP"
 .PP
 Length of securityName. 
 .PP
-Definition at line 262 of file snmp_api.h.
+Definition at line 362 of file types.h.
 .SS "u_char \fBsnmp_session::securityPrivKey\fP[USM_PRIV_KU_LEN]"
 .PP
 Ku for privacy protocol XXX. 
 .PP
-Definition at line 282 of file snmp_api.h.
+Definition at line 382 of file types.h.
 .SS "size_t \fBsnmp_session::securityPrivKeyLen\fP"
 .PP
 Length of Ku for priv protocol. 
 .PP
-Definition at line 284 of file snmp_api.h.
+Definition at line 384 of file types.h.
 .SS "u_char* \fBsnmp_session::securityPrivLocalKey\fP"
 .PP
 Kul for priv protocol. 
 .PP
-Definition at line 286 of file snmp_api.h.
+Definition at line 386 of file types.h.
 .SS "size_t \fBsnmp_session::securityPrivLocalKeyLen\fP"
 .PP
 Length of Kul for priv protocol XXX. 
 .PP
-Definition at line 288 of file snmp_api.h.
+Definition at line 388 of file types.h.
 .SS "oid* \fBsnmp_session::securityPrivProto\fP"
 .PP
 priv protocol oid 
 .PP
-Definition at line 278 of file snmp_api.h.
+Definition at line 378 of file types.h.
 .SS "size_t \fBsnmp_session::securityPrivProtoLen\fP"
 .PP
 Length of priv protocol oid. 
 .PP
-Definition at line 280 of file snmp_api.h.
+Definition at line 380 of file types.h.
 .SS "long \fBsnmp_session::sessid\fP"
 .PP
 Session id - AgentX only. 
 .PP
-Definition at line 224 of file snmp_api.h.
+Definition at line 324 of file types.h.
 .SS "size_t \fBsnmp_session::sndMsgMaxSize\fP"
 .PP
 Largest message to try to send. 
 .PP
-Definition at line 236 of file snmp_api.h.
+Definition at line 336 of file types.h.
 .SS "long \fBsnmp_session::timeout\fP"
 .PP
 Number of uS until first timeout, then exponential backoff. 
 .PP
-Definition at line 196 of file snmp_api.h.
+Definition at line 296 of file types.h.
 .SS "long \fBsnmp_session::version\fP"
 .PP
 snmp version 
 .PP
-Definition at line 192 of file snmp_api.h.
+Definition at line 292 of file types.h.
 
 .SH "Author"
 .PP 
diff --git a/man/netsnmp_stash_cache.3 b/man/netsnmp_stash_cache.3
index 0f3a474..34e237f 100644
--- a/man/netsnmp_stash_cache.3
+++ b/man/netsnmp_stash_cache.3
@@ -1,4 +1,4 @@
-.TH "stash_cache" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "stash_cache" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -58,37 +58,37 @@
 .PP
 updates a given cache depending on whether it needs to or not. 
 .PP
-Definition at line 195 of file stash_cache.c.
+Definition at line 190 of file stash_cache.c.
 .SS "\fBnetsnmp_oid_stash_node\fP** netsnmp_extract_stash_cache (\fBnetsnmp_agent_request_info\fP * reqinfo)"
 .PP
 extracts a pointer to the stash_cache info from the reqinfo structure. 
 .PP
-Definition at line 113 of file stash_cache.c.
+Definition at line 109 of file stash_cache.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_bare_stash_cache_handler (void)"
 .PP
 returns a single stash_cache handler that can be injected into a given handler chain (with a fixed timeout), but *only* if that handler chain explicitly supports stash cache processing. 
 .PP
-Definition at line 79 of file stash_cache.c.
+Definition at line 75 of file stash_cache.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_stash_cache_handler (void)"
 .PP
 returns a stash_cache handler sub-chain that can be injected into a given (arbitrary) handler chain, using a fixed cache timeout. 
 .PP
-Definition at line 88 of file stash_cache.c.
+Definition at line 84 of file stash_cache.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_timed_bare_stash_cache_handler (int timeout, oid * rootoid, size_t rootoid_len)"
 .PP
 returns a stash_cache handler that can be injected into a given handler chain (with the specified timeout and root OID values), but *only* if that handler chain explicitly supports stash cache processing. 
 .PP
-Definition at line 44 of file stash_cache.c.
+Definition at line 40 of file stash_cache.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_timed_stash_cache_handler (int timeout, oid * rootoid, size_t rootoid_len)"
 .PP
 returns a stash_cache handler sub-chain that can be injected into a given (arbitrary) handler chain, using a configurable cache timeout. 
 .PP
-Definition at line 101 of file stash_cache.c.
+Definition at line 97 of file stash_cache.c.
 .SS "void netsnmp_init_stash_cache_helper (void)"
 .PP
 initializes the stash_cache helper which then registers a stash_cache handler as a run-time injectable handler for configuration file use. 
 .PP
-Definition at line 238 of file stash_cache.c.
+Definition at line 233 of file stash_cache.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_stash_to_next.3 b/man/netsnmp_stash_to_next.3
index 478220e..240bdea 100644
--- a/man/netsnmp_stash_to_next.3
+++ b/man/netsnmp_stash_to_next.3
@@ -1,4 +1,4 @@
-.TH "stash_to_next" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "stash_to_next" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -28,7 +28,7 @@
 .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.
+Definition at line 23 of file stash_to_next.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table.3 b/man/netsnmp_table.3
index 09e5515..a070a5a 100644
--- a/man/netsnmp_table.3
+++ b/man/netsnmp_table.3
@@ -1,4 +1,4 @@
-.TH "table" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "table" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -71,6 +71,9 @@
 .br
 .RI "\fIcreates a table handler given the netsnmp_table_registration_info object, inserts it into the request chain and then calls \fBnetsnmp_register_handler()\fP to register the table into the agent. \fP"
 .ti -1c
+.RI "int \fBnetsnmp_unregister_table\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
+.br
+.ti -1c
 .RI "NETSNMP_INLINE \fBnetsnmp_table_request_info\fP * \fBnetsnmp_extract_table_info\fP (\fBnetsnmp_request_info\fP *request)"
 .br
 .RI "\fIExtracts the processed table information from a given request. \fP"
@@ -114,6 +117,9 @@
 .RI "int \fBnetsnmp_check_getnext_reply\fP (\fBnetsnmp_request_info\fP *request, oid *prefix, size_t prefix_len, \fBnetsnmp_variable_list\fP *newvar, \fBnetsnmp_variable_list\fP **outvar)"
 .br
 .RI "\fIchecks the original request against the current data being passed in if its greater than the request oid but less than the current valid return, set the current valid return to the new value. \fP"
+.ti -1c
+.RI "void \fBnetsnmp_table_registration_info_free\fP (\fBnetsnmp_table_registration_info\fP *tri)"
+.br
 .in -1c
 .SH "Detailed Description"
 .PP 
@@ -130,7 +136,7 @@
 .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.
+Definition at line 929 of file table.c.
 .SS "NETSNMP_INLINE \fBnetsnmp_table_request_info\fP* netsnmp_extract_table_info (\fBnetsnmp_request_info\fP * request)"
 .PP
 Extracts the processed table information from a given request. Call this from subhandlers on a request to extract the processed netsnmp_request_info information. The resulting information includes the index values and the column number.
@@ -147,12 +153,12 @@
 .PP
 
 .PP
-Definition at line 125 of file table.c.
+Definition at line 143 of file table.c.
 .SS "\fBnetsnmp_table_registration_info\fP* netsnmp_find_table_registration_info (\fBnetsnmp_handler_registration\fP * reginfo)"
 .PP
 extracts the registered netsnmp_table_registration_info object from a netsnmp_handler_registration object 
 .PP
-Definition at line 134 of file table.c.
+Definition at line 152 of file table.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_table_handler (\fBnetsnmp_table_registration_info\fP * tabreq)"
 .PP
 Given a netsnmp_table_registration_info object, creates a table handler. You can use this table handler by injecting it into a calling chain. When the handler gets called, it'll do processing and store it's information into the request->parent_data structure.
@@ -171,22 +177,26 @@
 .PP
 
 .PP
-Definition at line 85 of file table.c.
+Definition at line 91 of file table.c.
 .SS "int netsnmp_register_table (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_registration_info\fP * tabreq)"
 .PP
 creates a table handler given the netsnmp_table_registration_info object, inserts it into the request chain and then calls \fBnetsnmp_register_handler()\fP to register the table into the agent. 
 .PP
-Definition at line 108 of file table.c.
+Definition at line 114 of file table.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_sparse_table_handler_get (void)"
 .PP
 create sparse table handler 
 .PP
-Definition at line 722 of file table.c.
+Definition at line 745 of file table.c.
 .SS "int netsnmp_sparse_table_register (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_registration_info\fP * tabreq)"
 .PP
 creates a table handler given the netsnmp_table_registration_info object, inserts it into the request chain and then calls \fBnetsnmp_register_handler()\fP to register the table into the agent. 
 .PP
-Definition at line 733 of file table.c.
+handler1 is in reginfo... remove and free??
+.PP
+both handlers now in reginfo, so nothing to do on error 
+.PP
+Definition at line 756 of file table.c.
 .SS "int netsnmp_table_build_oid (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_request_info\fP * reqinfo, \fBnetsnmp_table_request_info\fP * table_info)"
 .PP
 given a registration info object, a request object and the table info object it builds the request->requestvb->name oid from the index values and column information found in the table_info object. Index values are extracted from the table_info varbinds. 
@@ -195,27 +205,27 @@
 .PP
 .column 
 .PP
-Definition at line 784 of file table.c.
+Definition at line 832 of file table.c.
 .SS "int netsnmp_table_build_oid_from_index (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_request_info\fP * reqinfo, \fBnetsnmp_table_request_info\fP * table_info)"
 .PP
 given a registration info object, a request object and the table info object it builds the request->requestvb->name oid from the index values and column information found in the table_info object. Index values are extracted from the table_info index oid. 
 .PP
-Definition at line 821 of file table.c.
+Definition at line 869 of file table.c.
 .SS "int netsnmp_table_build_result (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_request_info\fP * reqinfo, \fBnetsnmp_table_request_info\fP * table_info, u_char type, u_char * result, size_t result_len)"
 .PP
 Builds the result to be returned to the agent given the table information. Use this function to return results from lowel level handlers to the agent. It takes care of building the proper resulting oid (containing proper indexing) and inserts the result value into the returning varbind. 
 .PP
-Definition at line 751 of file table.c.
+Definition at line 799 of file table.c.
 .SS "int netsnmp_update_indexes_from_variable_list (\fBnetsnmp_table_request_info\fP * tri)"
 .PP
 builds an oid given a set of indexes. 
 .PP
-Definition at line 863 of file table.c.
+Definition at line 911 of file table.c.
 .SS "int netsnmp_update_variable_list_from_index (\fBnetsnmp_table_request_info\fP * tri)"
 .PP
 parses an OID into table indexses 
 .PP
-Definition at line 847 of file table.c.
+Definition at line 895 of file table.c.
 .SS "int table_helper_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
 .PP
 implements the table helper handler 
@@ -228,7 +238,7 @@
 .PP
 for loop 
 .PP
-Definition at line 142 of file table.c.
+Definition at line 160 of file table.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_array.3 b/man/netsnmp_table_array.3
index 4deb404..38b1bec 100644
--- a/man/netsnmp_table_array.3
+++ b/man/netsnmp_table_array.3
@@ -1,4 +1,4 @@
-.TH "table_array" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "table_array" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -64,22 +64,22 @@
 .PP
 find the context data used by the table_array helper 
 .PP
-Definition at line 229 of file table_array.c.
+Definition at line 230 of file table_array.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_find_table_array_handler (\fBnetsnmp_handler_registration\fP * reginfo)"
 .PP
 find the handler for the table_array helper. 
 .PP
-Definition at line 212 of file table_array.c.
+Definition at line 213 of file table_array.c.
 .SS "int netsnmp_table_array_check_row_status (\fBnetsnmp_table_array_callbacks\fP * cb, \fBnetsnmp_request_group\fP * ag, long * rs_new, long * rs_old)"
 .PP
 this function is called to validate RowStatus transitions. 
 .PP
-Definition at line 236 of file table_array.c.
+Definition at line 237 of file table_array.c.
 .SS "int netsnmp_table_container_register (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_registration_info\fP * tabreg, \fBnetsnmp_table_array_callbacks\fP * cb, \fBnetsnmp_container\fP * container, int group_rows)"
 .PP
 register specified callbacks for the specified table/oid. If the group_rows parameter is set, the row related callbacks will be called once for each unique row index. Otherwise, each callback will be called only once, for all objects. 
 .PP
-Definition at line 149 of file table_array.c.
+Definition at line 150 of file table_array.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_container.3 b/man/netsnmp_table_container.3
index c087258..e25ec02 100644
--- a/man/netsnmp_table_container.3
+++ b/man/netsnmp_table_container.3
@@ -1,4 +1,4 @@
-.TH "table_container" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "table_container" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -32,6 +32,9 @@
 .RI "int \fBnetsnmp_container_table_register\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_table_registration_info\fP *tabreg, \fBnetsnmp_container\fP *container, char key_type)"
 .br
 .ti -1c
+.RI "int \fBnetsnmp_container_table_unregister\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
+.br
+.ti -1c
 .RI "\fBnetsnmp_container\fP * \fBnetsnmp_container_table_container_extract\fP (\fBnetsnmp_request_info\fP *request)"
 .br
 .RI "\fIretrieve the container used by the table_container helper \fP"
@@ -87,17 +90,17 @@
 .PP
 retrieve the container used by the table_container helper 
 .PP
-Definition at line 320 of file table_container.c.
+Definition at line 339 of file table_container.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_container_table_handler_get (\fBnetsnmp_table_registration_info\fP * tabreg, \fBnetsnmp_container\fP * container, char key_type)"
 .PP
 returns a netsnmp_mib_handler object for the table_container helper 
 .PP
-Definition at line 254 of file table_container.c.
+Definition at line 255 of file table_container.c.
 .SS "void netsnmp_container_table_row_insert (\fBnetsnmp_request_info\fP * request, \fBnetsnmp_index\fP * row)"
 .PP
 inserts a newly created table_container entry into a request list 
 .PP
-Definition at line 351 of file table_container.c.
+Definition at line 370 of file table_container.c.
 .SS "\fBnetsnmp_index\fP* netsnmp_table_index_find_next_row (\fBnetsnmp_container\fP * c, \fBnetsnmp_table_request_info\fP * tblreq)"
 .PP
 deprecated, backwards compatability only expected impact to remove: none
@@ -111,7 +114,7 @@
 .PP
 
 .PP
-Definition at line 721 of file table_container.c.
+Definition at line 740 of file table_container.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_data.3 b/man/netsnmp_table_data.3
index e33290b..c81d874 100644
--- a/man/netsnmp_table_data.3
+++ b/man/netsnmp_table_data.3
@@ -1,4 +1,4 @@
-.TH "table_data" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "table_data" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -43,7 +43,7 @@
 .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)"
+.RI "void \fBnetsnmp_table_data_replace_row\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_row\fP *origrow, \fBnetsnmp_table_row\fP *newrow)"
 .br
 .RI "\fIswaps out origrow with newrow. \fP"
 .ti -1c
@@ -82,6 +82,9 @@
 .br
 .RI "\fIregisters a handler as a read-only data table If table_info != NULL, it registers it as a normal table too. \fP"
 .ti -1c
+.RI "int \fBnetsnmp_unregister_table_data\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
+.br
+.ti -1c
 .RI "int \fBnetsnmp_table_data_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
 .br
 .ti -1c
@@ -97,7 +100,7 @@
 .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)"
+.RI "void \fBnetsnmp_insert_table_row\fP (\fBnetsnmp_request_info\fP *request, \fBnetsnmp_table_row\fP *row)"
 .br
 .RI "\fIinserts a newly created table_data row into a request \fP"
 .ti -1c
@@ -181,7 +184,7 @@
 .PP
 creates and returns a pointer to table data set 
 .PP
-Definition at line 52 of file table_data.c.
+Definition at line 53 of file table_data.c.
 .SS "\fBnetsnmp_table_row\fP* netsnmp_create_table_data_row (void)"
 .PP
 creates and returns a pointer to table data set 
@@ -190,42 +193,42 @@
 .in +1c
 \fBdata_set.c\fP.
 .PP
-Definition at line 62 of file table_data.c.
+Definition at line 63 of file table_data.c.
 .SS "\fBnetsnmp_table_data\fP* netsnmp_extract_table (\fBnetsnmp_request_info\fP * request)"
 .PP
 extracts the table being accessed passed from the table_data helper 
 .PP
-Definition at line 656 of file table_data.c.
+Definition at line 662 of file table_data.c.
 .SS "\fBnetsnmp_table_row\fP* netsnmp_extract_table_row (\fBnetsnmp_request_info\fP * request)"
 .PP
 extracts the row being accessed passed from the table_data helper 
 .PP
-Definition at line 664 of file table_data.c.
+Definition at line 670 of file table_data.c.
 .SS "void* netsnmp_extract_table_row_data (\fBnetsnmp_request_info\fP * request)"
 .PP
 extracts the data from the row being accessed passed from the table_data helper 
 .PP
-Definition at line 673 of file table_data.c.
+Definition at line 679 of file table_data.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_table_data_handler (\fBnetsnmp_table_data\fP * table)"
 .PP
 Creates a table_data handler and returns it. 
 .PP
-Definition at line 378 of file table_data.c.
-.SS "NETSNMP_INLINE void netsnmp_insert_table_row (\fBnetsnmp_request_info\fP * request, \fBnetsnmp_table_row\fP * row)"
+Definition at line 377 of file table_data.c.
+.SS "void netsnmp_insert_table_row (\fBnetsnmp_request_info\fP * request, \fBnetsnmp_table_row\fP * row)"
 .PP
 inserts a newly created table_data row into a request 
 .PP
-Definition at line 685 of file table_data.c.
+Definition at line 691 of file table_data.c.
 .SS "int netsnmp_register_read_only_table_data (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_registration_info\fP * table_info)"
 .PP
 registers a handler as a read-only data table If table_info != NULL, it registers it as a normal table too. 
 .PP
-Definition at line 412 of file table_data.c.
+Definition at line 411 of file table_data.c.
 .SS "int netsnmp_register_table_data (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_registration_info\fP * table_info)"
 .PP
 registers a handler as a data table. If table_info != NULL, it registers it as a normal table too. 
 .PP
-Definition at line 401 of file table_data.c.
+Definition at line 400 of file table_data.c.
 .SS "int netsnmp_table_data_add_row (\fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_row\fP * row)"
 .PP
 Adds a row of data to a given table (stored in proper lexographical order). returns SNMPERR_SUCCESS on successful addition. or SNMPERR_GENERR on failure (E.G., indexes already existed) 
@@ -237,7 +240,7 @@
 .PP
 clones a data row. DOES NOT CLONE THE CONTAINED DATA. 
 .PP
-Definition at line 70 of file table_data.c.
+Definition at line 71 of file table_data.c.
 .SS "void* netsnmp_table_data_delete_row (\fBnetsnmp_table_row\fP * row)"
 .PP
 deletes a row's memory. returns the void data that it doesn't know how to delete. 
@@ -247,22 +250,22 @@
 .PP
 finds the data in 'datalist' stored at 'indexes' 
 .PP
-Definition at line 811 of file table_data.c.
+Definition at line 817 of file table_data.c.
 .SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_get_first_row (\fBnetsnmp_table_data\fP * table)"
 .PP
 returns the first row in the table 
 .PP
-Definition at line 792 of file table_data.c.
+Definition at line 798 of file table_data.c.
 .SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_get_from_oid (\fBnetsnmp_table_data\fP * table, oid * searchfor, size_t searchfor_len)"
 .PP
 finds the data in 'datalist' stored at the searchfor oid 
 .PP
-Definition at line 825 of file table_data.c.
+Definition at line 831 of file table_data.c.
 .SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_get_next_row (\fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_row\fP * row)"
 .PP
 returns the next row in the table 
 .PP
-Definition at line 801 of file table_data.c.
+Definition at line 807 of file table_data.c.
 .SS "void* netsnmp_table_data_remove_and_delete_row (\fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_row\fP * row)"
 .PP
 removes and frees a row of data to a given table and returns the void * returns the void * data on successful deletion. or NULL on failure (bad arguments) 
@@ -273,7 +276,7 @@
 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)"
+.SS "void netsnmp_table_data_replace_row (\fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_row\fP * origrow, \fBnetsnmp_table_row\fP * newrow)"
 .PP
 swaps out origrow with newrow. This does *not* delete/free anything! 
 .PP
diff --git a/man/netsnmp_table_dataset.3 b/man/netsnmp_table_dataset.3
index 8a01c3c..4a0cd4c 100644
--- a/man/netsnmp_table_dataset.3
+++ b/man/netsnmp_table_dataset.3
@@ -1,4 +1,4 @@
-.TH "table_dataset" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "table_dataset" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -13,17 +13,6 @@
 .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"
@@ -52,6 +41,17 @@
 .br
 .RI "\fIremoves a row from the table and then deletes it (and all its data) \fP"
 .ti -1c
+.RI "\fBnetsnmp_table_data_set\fP * \fBnetsnmp_create_table_data_set\fP (const char *table_name)"
+.br
+.RI "\fICreate a netsnmp_table_data_set structure given a table_data definition. \fP"
+.ti -1c
+.RI "void \fBnetsnmp_delete_table_data_set\fP (\fBnetsnmp_table_data_set\fP *table_set)"
+.br
+.ti -1c
+.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_set_clone_row\fP (\fBnetsnmp_table_row\fP *row)"
+.br
+.RI "\fIclones a dataset row, including all data. \fP"
+.ti -1c
 .RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_set_create_row_from_defaults\fP (\fBnetsnmp_table_data_set_storage\fP *defrow)"
 .br
 .RI "\fIcreates a new row from an existing defined default set \fP"
@@ -115,7 +115,7 @@
 .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)"
+.RI "int \fBnetsnmp_set_row_column\fP (\fBnetsnmp_table_row\fP *row, unsigned int column, int type, const void *value, size_t value_len)"
 .br
 .RI "\fIsets a given column in a row with data given a type, value, and length. \fP"
 .ti -1c
@@ -144,22 +144,22 @@
 .in +1c
 \fBdata_set.c\fP.
 .PP
-Definition at line 77 of file table_dataset.c.
+Definition at line 165 of file table_dataset.c.
 .SS "NETSNMP_INLINE \fBnetsnmp_table_data_set\fP* netsnmp_extract_table_data_set (\fBnetsnmp_request_info\fP * request)"
 .PP
 extracts a netsnmp_table_data_set pointer from a given request 
 .PP
-Definition at line 838 of file table_dataset.c.
+Definition at line 839 of file table_dataset.c.
 .SS "\fBnetsnmp_table_data_set_storage\fP* netsnmp_extract_table_data_set_column (\fBnetsnmp_request_info\fP * request, unsigned int column)"
 .PP
 extracts a netsnmp_table_data_set pointer from a given request 
 .PP
-Definition at line 848 of file table_dataset.c.
+Definition at line 849 of file table_dataset.c.
 .SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_table_data_set_handler (\fBnetsnmp_table_data_set\fP * data_set)"
 .PP
 Given a netsnmp_table_data_set definition, create a handler for it. 
 .PP
-Definition at line 372 of file table_dataset.c.
+Definition at line 363 of file table_dataset.c.
 .SS "int netsnmp_mark_row_column_writable (\fBnetsnmp_table_row\fP * row, int column, int writable)"
 .PP
 marks a given column in a row as writable or not. 
@@ -168,7 +168,7 @@
 .in +1c
 \fBdata_set.c\fP.
 .PP
-Definition at line 1214 of file table_dataset.c.
+Definition at line 1217 of file table_dataset.c.
 .SS "void netsnmp_register_auto_data_table (\fBnetsnmp_table_data_set\fP * table_set, char * registration_name)"
 .PP
 registers a table_dataset so that the 'add_row' snmpd.conf token can be used to add data to this table. If registration_name is NULL then the name used when the table was created will be used instead.
@@ -184,7 +184,7 @@
 .in +1c
 \fBdata_set.c\fP.
 .PP
-Definition at line 875 of file table_dataset.c.
+Definition at line 876 of file table_dataset.c.
 .SS "int netsnmp_register_table_data_set (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_data_set\fP * data_set, \fBnetsnmp_table_registration_info\fP * table_info)"
 .PP
 register a given data_set at a given oid (specified in the netsnmp_handler_registration pointer). The reginfo->handler->access_method *may* be null if the call doesn't ever want to be called for SNMP operations. 
@@ -193,8 +193,8 @@
 .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)"
+Definition at line 389 of file table_dataset.c.
+.SS "int netsnmp_set_row_column (\fBnetsnmp_table_row\fP * row, unsigned int column, int type, const void * value, size_t value_len)"
 .PP
 sets a given column in a row with data given a type, value, and length. Data is memdup'ed by the function. 
 .PP
@@ -202,32 +202,32 @@
 .in +1c
 \fBdata_set.c\fP.
 .PP
-Definition at line 1249 of file table_dataset.c.
+Definition at line 1252 of file table_dataset.c.
 .SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_set_clone_row (\fBnetsnmp_table_row\fP * row)"
 .PP
 clones a dataset row, including all data. 
 .PP
-Definition at line 108 of file table_dataset.c.
+Definition at line 196 of file table_dataset.c.
 .SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_set_create_row_from_defaults (\fBnetsnmp_table_data_set_storage\fP * defrow)"
 .PP
 creates a new row from an existing defined default set 
 .PP
-Definition at line 242 of file table_dataset.c.
+Definition at line 244 of file table_dataset.c.
 .SS "\fBnetsnmp_table_data_set_storage\fP* netsnmp_table_data_set_find_column (\fBnetsnmp_table_data_set_storage\fP * start, unsigned int column)"
 .PP
 Finds a column within a given storage set, given the pointer to the start of the storage set list. 
 .PP
-Definition at line 1202 of file table_dataset.c.
+Definition at line 1205 of file table_dataset.c.
 .SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_set_get_first_row (\fBnetsnmp_table_data_set\fP * table)"
 .PP
 returns the first row in the table 
 .PP
-Definition at line 1171 of file table_dataset.c.
+Definition at line 1174 of file table_dataset.c.
 .SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_set_get_next_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * row)"
 .PP
 returns the next row in the table 
 .PP
-Definition at line 1178 of file table_dataset.c.
+Definition at line 1181 of file table_dataset.c.
 .SS "void netsnmp_table_dataset_add_index (\fBnetsnmp_table_data_set\fP * table, u_char type)"
 .PP
 adds an index to the table. Call this repeatly for each index. 
@@ -236,7 +236,7 @@
 .in +1c
 \fBdata_set.c\fP.
 .PP
-Definition at line 1303 of file table_dataset.c.
+Definition at line 1306 of file table_dataset.c.
 .SS "NETSNMP_INLINE void netsnmp_table_dataset_add_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * row)"
 .PP
 adds a new row to a dataset table 
@@ -245,49 +245,49 @@
 .in +1c
 \fBdata_set.c\fP.
 .PP
-Definition at line 187 of file table_dataset.c.
+Definition at line 117 of file table_dataset.c.
 .SS "NETSNMP_INLINE void netsnmp_table_dataset_delete_all_data (\fBnetsnmp_table_data_set_storage\fP * data)"
 .PP
 deletes all the data from this \fBnode\fP and beyond in the linked list 
 .PP
-Definition at line 164 of file table_dataset.c.
+Definition at line 94 of file table_dataset.c.
 .SS "NETSNMP_INLINE \fBnetsnmp_table_data_set_storage\fP* netsnmp_table_dataset_delete_data (\fBnetsnmp_table_data_set_storage\fP * data)"
 .PP
 deletes a single dataset table data. returns the (possibly still good) next pointer of the deleted data object. 
 .PP
-Definition at line 151 of file table_dataset.c.
+Definition at line 81 of file table_dataset.c.
 .SS "NETSNMP_INLINE void netsnmp_table_dataset_delete_row (\fBnetsnmp_table_row\fP * row)"
 .PP
 deletes all the data from this \fBnode\fP and beyond in the linked list 
 .PP
-Definition at line 174 of file table_dataset.c.
+Definition at line 104 of file table_dataset.c.
 .SS "NETSNMP_INLINE void netsnmp_table_dataset_remove_and_delete_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * row)"
 .PP
 removes a row from the table and then deletes it (and all its data) 
 .PP
-Definition at line 219 of file table_dataset.c.
+Definition at line 149 of file table_dataset.c.
 .SS "NETSNMP_INLINE void netsnmp_table_dataset_remove_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * row)"
 .PP
 removes a row from the table, but doesn't delete/free the column values 
 .PP
-Definition at line 208 of file table_dataset.c.
+Definition at line 138 of file table_dataset.c.
 .SS "NETSNMP_INLINE void netsnmp_table_dataset_replace_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * origrow, \fBnetsnmp_table_row\fP * newrow)"
 .PP
 adds a new row to a dataset table 
 .PP
-Definition at line 197 of file table_dataset.c.
+Definition at line 127 of file table_dataset.c.
 .SS "int netsnmp_table_set_add_default_row (\fBnetsnmp_table_data_set\fP * table_set, unsigned int column, int type, int writable, void * default_value, size_t default_value_len)"
 .PP
 adds a new default row to a table_set. Arguments should be the table_set, column number, \fBvariable\fP type and finally a 1 if it is allowed to be writable, or a 0 if not. If the default_value field is not NULL, it will be used to populate new valuse in that column fro newly created rows. It is copied into the storage template (free your calling argument).
 .PP
 returns SNMPERR_SUCCESS or SNMPERR_FAILURE 
 .PP
-Definition at line 268 of file table_dataset.c.
+Definition at line 270 of file table_dataset.c.
 .SS "void netsnmp_table_set_add_indexes (\fBnetsnmp_table_data_set\fP * tset,  ...)"
 .PP
 adds multiple indexes to a table_dataset helper object. To end the list, use a 0 after the list of ASN index types. 
 .PP
-Definition at line 1314 of file table_dataset.c.
+Definition at line 1316 of file table_dataset.c.
 .SS "void netsnmp_table_set_multi_add_default_row (\fBnetsnmp_table_data_set\fP * tset,  ...)"
 .PP
 adds multiple data column definitions to each row. Functionally, this is a wrapper around calling netsnmp_table_set_add_default_row repeatedly for you. 
@@ -296,7 +296,7 @@
 .in +1c
 \fBdata_set.c\fP.
 .PP
-Definition at line 329 of file table_dataset.c.
+Definition at line 332 of file table_dataset.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_generic.3 b/man/netsnmp_table_generic.3
index aebc89e..dd4456f 100644
--- a/man/netsnmp_table_generic.3
+++ b/man/netsnmp_table_generic.3
@@ -1,4 +1,4 @@
-.TH "generic_table_API" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "generic_table_API" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_table_indexes.3 b/man/netsnmp_table_indexes.3
index 1e94667..5d0feb4 100644
--- a/man/netsnmp_table_indexes.3
+++ b/man/netsnmp_table_indexes.3
@@ -1,4 +1,4 @@
-.TH "table_indexes" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "table_indexes" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_table_iterator.3 b/man/netsnmp_table_iterator.3
index 5765aea..76cc4ac 100644
--- a/man/netsnmp_table_iterator.3
+++ b/man/netsnmp_table_iterator.3
@@ -1,4 +1,4 @@
-.TH "table_iterator" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "table_iterator" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_table_iterator.h.3 b/man/netsnmp_table_iterator.h.3
index 2c06db4..5fa3af3 100644
--- a/man/netsnmp_table_iterator.h.3
+++ b/man/netsnmp_table_iterator.h.3
@@ -1,4 +1,4 @@
-.TH "table_iterator.h" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "table_iterator.h" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_table_maintenance.3 b/man/netsnmp_table_maintenance.3
index 84463af..c318ecb 100644
--- a/man/netsnmp_table_maintenance.3
+++ b/man/netsnmp_table_maintenance.3
@@ -1,4 +1,4 @@
-.TH "table_maintenance" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "table_maintenance" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_table_row.3 b/man/netsnmp_table_row.3
new file mode 100644
index 0000000..d659dcf
--- /dev/null
+++ b/man/netsnmp_table_row.3
@@ -0,0 +1,41 @@
+.TH "table_row" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+table_row \- 
+.PP
+Helps you implement a table shared across two or more subagents, or otherwise split into individual row slices.  
+
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_table_row_handler_get\fP (void *row)"
+.br
+.RI "\fIreturns a netsnmp_mib_handler object for the table_container helper \fP"
+.ti -1c
+.RI "int \fBnetsnmp_table_row_register\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_table_registration_info\fP *tabreg, void *row, \fBnetsnmp_variable_list\fP *index)"
+.br
+.ti -1c
+.RI "void * \fBnetsnmp_table_row_extract\fP (\fBnetsnmp_request_info\fP *request)"
+.br
+.RI "\fIreturn the row data structure supplied to the table_row helper \fP"
+.in -1c
+.SH "Detailed Description"
+.PP 
+Helps you implement a table shared across two or more subagents, or otherwise split into individual row slices. 
+.SH "Function Documentation"
+.PP 
+.SS "void* netsnmp_table_row_extract (\fBnetsnmp_request_info\fP * request)"
+.PP
+return the row data structure supplied to the table_row helper 
+.PP
+Definition at line 158 of file table_row.c.
+.SS "\fBnetsnmp_mib_handler\fP* netsnmp_table_row_handler_get (void * row)"
+.PP
+returns a netsnmp_mib_handler object for the table_container helper 
+.PP
+Definition at line 75 of file table_row.c.
+.SH "Author"
+.PP 
+Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_rows.3 b/man/netsnmp_table_rows.3
index cf37b2d..4abf388 100644
--- a/man/netsnmp_table_rows.3
+++ b/man/netsnmp_table_rows.3
@@ -1,4 +1,4 @@
-.TH "table_rows" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "table_rows" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_tdata.3 b/man/netsnmp_tdata.3
index 16bd6a2..e15478c 100644
--- a/man/netsnmp_tdata.3
+++ b/man/netsnmp_tdata.3
@@ -1,4 +1,4 @@
-.TH "tdata" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "tdata" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -64,6 +64,9 @@
 .br
 .RI "\fIregisters a tdata-based MIB table \fP"
 .ti -1c
+.RI "int \fBnetsnmp_tdata_unregister\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
+.br
+.ti -1c
 .RI "\fBnetsnmp_tdata\fP * \fBnetsnmp_tdata_extract_table\fP (\fBnetsnmp_request_info\fP *request)"
 .br
 .RI "\fIextracts the tdata table from the request structure \fP"
@@ -151,32 +154,32 @@
 .PP
 Creates a tdata handler and returns it. 
 .PP
-Definition at line 284 of file table_tdata.c.
+Definition at line 283 of file table_tdata.c.
 .SS "NETSNMP_INLINE void netsnmp_insert_tdata_row (\fBnetsnmp_request_info\fP * request, \fBnetsnmp_tdata_row\fP * row)"
 .PP
 inserts a newly created tdata row into a request 
 .PP
-Definition at line 399 of file table_tdata.c.
+Definition at line 405 of file table_tdata.c.
 .SS "int netsnmp_tdata_add_row (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * row)"
 .PP
 Adds a row to the given table (stored in proper lexographical order). returns SNMPERR_SUCCESS on successful addition. or SNMPERR_GENERR on failure (E.G., indexes already existed) 
 .PP
-Definition at line 186 of file table_tdata.c.
+Definition at line 185 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_clone_row (\fBnetsnmp_tdata_row\fP * row)"
 .PP
 clones a 'tdata' row. DOES NOT CLONE THE TABLE-SPECIFIC ENTRY DATA. 
 .PP
-Definition at line 92 of file table_tdata.c.
+Definition at line 93 of file table_tdata.c.
 .SS "int netsnmp_tdata_compare_idx (\fBnetsnmp_tdata_row\fP * row, \fBnetsnmp_variable_list\fP * indexes)"
 .PP
 compare a row with the given index values 
 .PP
-Definition at line 518 of file table_tdata.c.
+Definition at line 524 of file table_tdata.c.
 .SS "int netsnmp_tdata_compare_oid (\fBnetsnmp_tdata_row\fP * row, oid * compareto, size_t compareto_len)"
 .PP
 compare a row with the given index OID 
 .PP
-Definition at line 531 of file table_tdata.c.
+Definition at line 537 of file table_tdata.c.
 .SS "int netsnmp_tdata_copy_row (\fBnetsnmp_tdata_row\fP * dst_row, \fBnetsnmp_tdata_row\fP * src_row)"
 .PP
 copy the contents of a 'tdata' row. DOES NOT COPY THE TABLE-SPECIFIC ENTRY DATA. 
@@ -186,102 +189,102 @@
 .PP
 creates and returns a pointer to new row data structure 
 .PP
-Definition at line 84 of file table_tdata.c.
+Definition at line 85 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata\fP* netsnmp_tdata_create_table (const char * name, long flags)"
 .PP
 creates and returns a 'tdata' table data structure 
 .PP
-Definition at line 54 of file table_tdata.c.
+Definition at line 55 of file table_tdata.c.
 .SS "void* netsnmp_tdata_delete_row (\fBnetsnmp_tdata_row\fP * row)"
 .PP
 deletes the memory used by the specified row returns the table-specific entry data (that it doesn't know how to delete) 
 .PP
-Definition at line 157 of file table_tdata.c.
+Definition at line 156 of file table_tdata.c.
 .SS "void netsnmp_tdata_delete_table (\fBnetsnmp_tdata\fP * table)"
 .PP
 creates and returns a 'tdata' table data structure 
 .PP
-Definition at line 68 of file table_tdata.c.
+Definition at line 69 of file table_tdata.c.
 .SS "\fBnetsnmp_container\fP* netsnmp_tdata_extract_container (\fBnetsnmp_request_info\fP * request)"
 .PP
 extracts the tdata container from the request structure 
 .PP
-Definition at line 370 of file table_tdata.c.
+Definition at line 376 of file table_tdata.c.
 .SS "void* netsnmp_tdata_extract_entry (\fBnetsnmp_request_info\fP * request)"
 .PP
 extracts the (table-specific) entry being accessed from the request structure 
 .PP
-Definition at line 387 of file table_tdata.c.
+Definition at line 393 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_extract_row (\fBnetsnmp_request_info\fP * request)"
 .PP
 extracts the tdata row being accessed from the request structure 
 .PP
-Definition at line 379 of file table_tdata.c.
+Definition at line 385 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata\fP* netsnmp_tdata_extract_table (\fBnetsnmp_request_info\fP * request)"
 .PP
 extracts the tdata table from the request structure 
 .PP
-Definition at line 362 of file table_tdata.c.
+Definition at line 368 of file table_tdata.c.
 .SS "int netsnmp_tdata_register (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_tdata\fP * table, \fBnetsnmp_table_registration_info\fP * table_info)"
 .PP
 registers a tdata-based MIB table 
 .PP
-Definition at line 351 of file table_tdata.c.
+Definition at line 350 of file table_tdata.c.
 .SS "void* netsnmp_tdata_remove_and_delete_row (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * row)"
 .PP
 removes and frees a row of the given table and returns the table-specific entry data returns the void * pointer on successful deletion. or NULL on failure (bad arguments) 
 .PP
-Definition at line 260 of file table_tdata.c.
+Definition at line 259 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_remove_row (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * row)"
 .PP
 removes a row from the given table and returns it (no free's called) returns the row pointer itself on successful removing. or NULL on failure (bad arguments) 
 .PP
-Definition at line 242 of file table_tdata.c.
+Definition at line 241 of file table_tdata.c.
 .SS "void netsnmp_tdata_replace_row (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * origrow, \fBnetsnmp_tdata_row\fP * newrow)"
 .PP
 swaps out origrow with newrow. This does *not* delete/free anything! 
 .PP
-Definition at line 227 of file table_tdata.c.
+Definition at line 226 of file table_tdata.c.
 .SS "void* netsnmp_tdata_row_entry (\fBnetsnmp_tdata_row\fP * row)"
 .PP
 returns the (table-specific) entry data for a given row 
 .PP
-Definition at line 414 of file table_tdata.c.
+Definition at line 420 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_first (\fBnetsnmp_tdata\fP * table)"
 .PP
 returns the first row in the table 
 .PP
-Definition at line 424 of file table_tdata.c.
+Definition at line 430 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_get (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * row)"
 .PP
 finds a row in the 'tdata' table given another row 
 .PP
-Definition at line 431 of file table_tdata.c.
+Definition at line 437 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_get_byidx (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_variable_list\fP * indexes)"
 .PP
 finds a row in the 'tdata' table given the index values 
 .PP
-Definition at line 447 of file table_tdata.c.
+Definition at line 453 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_get_byoid (\fBnetsnmp_tdata\fP * table, oid * searchfor, size_t searchfor_len)"
 .PP
 finds a row in the 'tdata' table given the index OID 
 .PP
-Definition at line 460 of file table_tdata.c.
+Definition at line 466 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_next (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * row)"
 .PP
 returns the next row in the table 
 .PP
-Definition at line 439 of file table_tdata.c.
+Definition at line 445 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_next_byidx (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_variable_list\fP * indexes)"
 .PP
 finds the lexically next row in the 'tdata' table given the index values 
 .PP
-Definition at line 475 of file table_tdata.c.
+Definition at line 481 of file table_tdata.c.
 .SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_next_byoid (\fBnetsnmp_tdata\fP * table, oid * searchfor, size_t searchfor_len)"
 .PP
 finds the lexically next row in the 'tdata' table given the index OID 
 .PP
-Definition at line 489 of file table_tdata.c.
+Definition at line 495 of file table_tdata.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_tools.h.3 b/man/netsnmp_tools.h.3
new file mode 100644
index 0000000..cd0eec0
--- /dev/null
+++ b/man/netsnmp_tools.h.3
@@ -0,0 +1,239 @@
+.TH "tools.h" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+tools.h \- 
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <inttypes.h>\fP
+.br
+
+.SS "Defines"
+
+.in +1c
+.ti -1c
+.RI "#define \fBSNMP_MAXPATH\fP   PATH_MAX"
+.br
+.ti -1c
+.RI "#define \fBSNMP_MAXBUF\fP   (1024 * 4)"
+.br
+.ti -1c
+.RI "#define \fBSNMP_MAXBUF_MEDIUM\fP   1024"
+.br
+.ti -1c
+.RI "#define \fBSNMP_MAXBUF_SMALL\fP   512"
+.br
+.ti -1c
+.RI "#define \fBSNMP_MAXBUF_MESSAGE\fP   1500"
+.br
+.ti -1c
+.RI "#define \fBSNMP_MAXOID\fP   64"
+.br
+.ti -1c
+.RI "#define \fBSNMP_MAX_CMDLINE_OIDS\fP   128"
+.br
+.ti -1c
+.RI "#define \fBSNMP_FILEMODE_CLOSED\fP   0600"
+.br
+.ti -1c
+.RI "#define \fBSNMP_FILEMODE_OPEN\fP   0644"
+.br
+.ti -1c
+.RI "#define \fBBYTESIZE\fP(bitsize)   ((bitsize + 7) >> 3)"
+.br
+.ti -1c
+.RI "#define \fBROUNDUP8\fP(x)   ( ( (x+7) >> 3 ) * 8 )"
+.br
+.ti -1c
+.RI "#define \fBSNMP_STRORNULL\fP(x)   ( x ? x : '(null)')"
+.br
+.ti -1c
+.RI "#define \fBSNMP_FREE\fP(s)   do { if (s) { free((void *)s); s=NULL; } } while(0)"
+.br
+.RI "\fIFrees a pointer only if it is !NULL and sets its value to NULL. \fP"
+.ti -1c
+.RI "#define \fBSNMP_SWIPE_MEM\fP(n, s)   do { if (n) free((void *)n); n = s; s=NULL; } while(0)"
+.br
+.RI "\fIFrees pointer n only if it is !NULL, sets n to s and sets s to NULL. \fP"
+.ti -1c
+.RI "#define \fBSNMP_MALLOC_STRUCT\fP(s)   (struct s *) calloc(1, sizeof(struct s))"
+.br
+.RI "\fIMallocs memory of sizeof(struct s), zeros it and returns a pointer to it. \fP"
+.ti -1c
+.RI "#define \fBSNMP_MALLOC_TYPEDEF\fP(td)   (td *) calloc(1, sizeof(td))"
+.br
+.RI "\fIMallocs memory of sizeof(t), zeros it and returns a pointer to it. \fP"
+.ti -1c
+.RI "#define \fBSNMP_ZERO\fP(s, l)   do { if (s) memset(s, 0, l); } while(0)"
+.br
+.RI "\fIZeros l bytes of memory starting at s. \fP"
+.ti -1c
+.RI "#define \fBNETSNMP_REMOVE_CONST\fP(t, e)   ((t)(uintptr_t)(e))"
+.br
+.RI "\fICast away constness without that gcc -Wcast-qual prints a compiler warning, similar to const_cast<> in C++. \fP"
+.ti -1c
+.RI "#define \fBTOUPPER\fP(c)   (c >= 'a' && c <= 'z' ? c - ('a' - 'A') : c)"
+.br
+.ti -1c
+.RI "#define \fBTOLOWER\fP(c)   (c >= 'A' && c <= 'Z' ? c + ('a' - 'A') : c)"
+.br
+.ti -1c
+.RI "#define \fBHEX2VAL\fP(s)   ((isalpha(s) ? (TOLOWER(s)-'a'+10) : (TOLOWER(s)-'0')) & 0xf)"
+.br
+.ti -1c
+.RI "#define \fBVAL2HEX\fP(s)   ( (s) + (((s) >= 10) ? ('a'-10) : '0') )"
+.br
+.ti -1c
+.RI "#define \fBSNMP_MAX\fP(a, b)   ((a) > (b) ? (a) : (b))"
+.br
+.RI "\fIComputers the maximum of a and b. \fP"
+.ti -1c
+.RI "#define \fBSNMP_MIN\fP(a, b)   ((a) > (b) ? (b) : (a))"
+.br
+.RI "\fIComputers the minimum of a and b. \fP"
+.ti -1c
+.RI "#define \fBSNMP_MACRO_VAL_TO_STR\fP(s)   SNMP_MACRO_VAL_TO_STR_PRIV(s)"
+.br
+.RI "\fIExpands to string with value of the s. \fP"
+.ti -1c
+.RI "#define \fBSNMP_MACRO_VAL_TO_STR_PRIV\fP(s)   #s"
+.br
+.ti -1c
+.RI "#define \fBQUITFUN\fP(e, l)"
+.br
+.ti -1c
+.RI "#define \fBDIFFTIMEVAL\fP(now, then, diff)"
+.br
+.ti -1c
+.RI "#define \fBUSM_LENGTH_OID_TRANSFORM\fP   10"
+.br
+.ti -1c
+.RI "#define \fBISTRANSFORM\fP(ttype, toid)"
+.br
+.ti -1c
+.RI "#define \fBENGINETIME_MAX\fP   2147483647"
+.br
+.ti -1c
+.RI "#define \fBENGINEBOOT_MAX\fP   2147483647"
+.br
+.ti -1c
+.RI "#define \fBsnmp_cstrcat\fP(b, l, o, a, s)   snmp_strcat(b,l,o,a,(const u_char *)s)"
+.br
+.in -1c
+.SS "Typedefs"
+
+.in +1c
+.ti -1c
+.RI "typedef void * \fBmarker_t\fP"
+.br
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBsnmp_realloc\fP (u_char **buf, size_t *buf_len)"
+.br
+.RI "\fIThis function increase the size of the buffer pointed at by *buf, which is initially of size *buf_len. \fP"
+.ti -1c
+.RI "void \fBfree_zero\fP (void *buf, size_t size)"
+.br
+.RI "\fIzeros memory before freeing it. \fP"
+.ti -1c
+.RI "u_char * \fBmalloc_random\fP (size_t *size)"
+.br
+.RI "\fIReturns pointer to allocaed & set buffer on success, size contains number of random bytes filled. \fP"
+.ti -1c
+.RI "u_char * \fBmalloc_zero\fP (size_t size)"
+.br
+.ti -1c
+.RI "int \fBmemdup\fP (u_char **to, const void *from, size_t size)"
+.br
+.RI "\fIDuplicates a memory block. \fP"
+.ti -1c
+.RI "u_int \fBbinary_to_hex\fP (const u_char *input, size_t len, char **output)"
+.br
+.RI "\fIconverts binary to hexidecimal \fP"
+.ti -1c
+.RI "int \fBnetsnmp_hex_to_binary\fP (u_char **buf, size_t *buf_len, size_t *offset, int allow_realloc, const char *hex, const char *delim)"
+.br
+.RI "\fIconvert an ASCII hex string (with specified delimiters) to binary \fP"
+.ti -1c
+.RI "int \fBsnmp_hex_to_binary\fP (u_char **buf, size_t *buf_len, size_t *offset, int allow_realloc, const char *hex)"
+.br
+.RI "\fIconvert an ASCII hex string to binary \fP"
+.ti -1c
+.RI "int \fBhex_to_binary2\fP (const u_char *input, size_t len, char **output)"
+.br
+.RI "\fIhex_to_binary2 \fP"
+.ti -1c
+.RI "int \fBsnmp_decimal_to_binary\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const char *decimal)"
+.br
+.ti -1c
+.RI "int \fBsnmp_strcat\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const u_char *s)"
+.br
+.ti -1c
+.RI "char * \fBnetsnmp_strdup_and_null\fP (const u_char *from, size_t from_len)"
+.br
+.RI "\fIcopies a (possible) unterminated string of a given length into a new buffer and null terminates it as well (new buffer MAY be one byte longer to account for this \fP"
+.ti -1c
+.RI "void \fBdump_chunk\fP (const char *debugtoken, const char *title, const u_char *buf, int size)"
+.br
+.ti -1c
+.RI "char * \fBdump_snmpEngineID\fP (const u_char *buf, size_t *buflen)"
+.br
+.ti -1c
+.RI "marker_t \fBatime_newMarker\fP (void)"
+.br
+.RI "\fIcreate a new time marker. \fP"
+.ti -1c
+.RI "void \fBatime_setMarker\fP (marker_t pm)"
+.br
+.RI "\fIset a time marker. \fP"
+.ti -1c
+.RI "long \fBatime_diff\fP (marker_t first, marker_t second)"
+.br
+.RI "\fIReturns the difference (in msec) between the two markers. \fP"
+.ti -1c
+.RI "u_long \fBuatime_diff\fP (marker_t first, marker_t second)"
+.br
+.RI "\fIReturns the difference (in u_long msec) between the two markers. \fP"
+.ti -1c
+.RI "u_long \fBuatime_hdiff\fP (marker_t first, marker_t second)"
+.br
+.RI "\fIReturns the difference (in u_long 1/100th secs) between the two markers (functionally this is what sysUpTime needs). \fP"
+.ti -1c
+.RI "int \fBatime_ready\fP (marker_t pm, int deltaT)"
+.br
+.RI "\fITest: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). \fP"
+.ti -1c
+.RI "int \fBuatime_ready\fP (marker_t pm, unsigned int deltaT)"
+.br
+.RI "\fITest: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). \fP"
+.ti -1c
+.RI "int \fBmarker_tticks\fP (marker_t pm)"
+.br
+.RI "\fIReturn the number of timeTicks since the given marker. \fP"
+.ti -1c
+.RI "int \fBtimeval_tticks\fP (struct timeval *tv)"
+.br
+.ti -1c
+.RI "NETSNMP_IMPORT char * \fBnetsnmp_getenv\fP (const char *name)"
+.br
+.RI "\fINon Windows: Returns a pointer to the desired environment \fBvariable\fP or NULL if the environment \fBvariable\fP does not exist. \fP"
+.ti -1c
+.RI "NETSNMP_IMPORT int \fBnetsnmp_setenv\fP (const char *envname, const char *envval, int overwrite)"
+.br
+.RI "\fISet an environment \fBvariable\fP. \fP"
+.ti -1c
+.RI "int \fBnetsnmp_addrstr_hton\fP (char *ptr, size_t len)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP 
+
+.PP
+Definition in file \fBtools.h\fP.
+.SH "Author"
+.PP 
+Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_util.3 b/man/netsnmp_util.3
index c046d90..f67063c 100644
--- a/man/netsnmp_util.3
+++ b/man/netsnmp_util.3
@@ -1,4 +1,4 @@
-.TH "Memory Utility Routines" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "Memory Utility Routines" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -63,6 +63,10 @@
 .br
 .RI "\fIZeros l bytes of memory starting at s. \fP"
 .ti -1c
+.RI "#define \fBNETSNMP_REMOVE_CONST\fP(t, e)   ((t)(uintptr_t)(e))"
+.br
+.RI "\fICast away constness without that gcc -Wcast-qual prints a compiler warning, similar to const_cast<> in C++. \fP"
+.ti -1c
 .RI "#define \fBTOUPPER\fP(c)   (c >= 'a' && c <= 'z' ? c - ('a' - 'A') : c)"
 .br
 .ti -1c
@@ -137,7 +141,7 @@
 .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)"
+.RI "int \fBmemdup\fP (u_char **to, const void *from, size_t size)"
 .br
 .RI "\fIDuplicates a memory block. \fP"
 .ti -1c
@@ -208,10 +212,14 @@
 .RI "int \fBtimeval_tticks\fP (struct timeval *tv)"
 .br
 .ti -1c
-.RI "char * \fBnetsnmp_getenv\fP (const char *name)"
+.RI "NETSNMP_IMPORT char * \fBnetsnmp_getenv\fP (const char *name)"
 .br
 .RI "\fINon Windows: Returns a pointer to the desired environment \fBvariable\fP or NULL if the environment \fBvariable\fP does not exist. \fP"
 .ti -1c
+.RI "NETSNMP_IMPORT int \fBnetsnmp_setenv\fP (const char *envname, const char *envval, int overwrite)"
+.br
+.RI "\fISet an environment \fBvariable\fP. \fP"
+.ti -1c
 .RI "int \fBnetsnmp_addrstr_hton\fP (char *ptr, size_t len)"
 .br
 .in -1c
@@ -220,7 +228,7 @@
 .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;       \
@@ -232,7 +240,7 @@
 }
 .fi
 .PP
-Definition at line 131 of file tools.h.
+Definition at line 152 of file tools.h.
 .SS "#define ISTRANSFORM(ttype, toid)"\fBValue:\fP
 .PP
 .nf
@@ -240,79 +248,91 @@
                 usm ## toid ## Protocol, USM_LENGTH_OID_TRANSFORM)
 .fi
 .PP
-Definition at line 150 of file tools.h.
+Definition at line 171 of file tools.h.
+.SS "#define NETSNMP_REMOVE_CONST(t, e)   ((t)(uintptr_t)(e))"
+.PP
+Cast away constness without that gcc -Wcast-qual prints a compiler warning, similar to const_cast<> in C++. \fBParameters:\fP
+.RS 4
+\fIt\fP A pointer type. 
+.br
+\fIe\fP An expression of a type that can be assigned to the type (const t). 
+.RE
+.PP
+
+.PP
+Definition at line 92 of file tools.h.
 .SS "#define QUITFUN(e, l)"\fBValue:\fP
 .PP
 .nf
-if ( (e) != SNMPERR_SUCCESS) {   \
+if ( (e) != SNMPERR_SUCCESS) {     \
                 rval = SNMPERR_GENERR;  \
                 goto l ;                \
         }
 .fi
 .PP
-Definition at line 118 of file tools.h.
+Definition at line 139 of file tools.h.
 .SS "#define SNMP_FREE(s)   do { if (s) { free((void *)s); s=NULL; } } while(0)"
 .PP
 Frees a pointer only if it is !NULL and sets its value to NULL. 
 .PP
-Definition at line 53 of file tools.h.
+Definition at line 57 of file tools.h.
 .SS "#define SNMP_MACRO_VAL_TO_STR(s)   SNMP_MACRO_VAL_TO_STR_PRIV(s)"
 .PP
-Expands to string with value of the s. If s is macro, the resulting string is value of the macro. Example: define TEST 1234 \fBSNMP_MACRO_VAL_TO_STR(TEST)\fP expands to '1234' SNMP_MACRO_VAL_TO_STR(TEST+1) expands to '1234+1' 
+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.
+Definition at line 120 of file tools.h.
 .SS "#define SNMP_MALLOC_STRUCT(s)   (struct s *) calloc(1, sizeof(struct s))"
 .PP
 Mallocs memory of sizeof(struct s), zeros it and returns a pointer to it. 
 .PP
-Definition at line 64 of file tools.h.
+Definition at line 68 of file tools.h.
 .SS "#define SNMP_MALLOC_TYPEDEF(td)   (td *) calloc(1, sizeof(td))"
 .PP
 Mallocs memory of sizeof(t), zeros it and returns a pointer to it. 
 .PP
-Definition at line 68 of file tools.h.
+Definition at line 72 of file tools.h.
 .SS "#define SNMP_MAX(a, b)   ((a) > (b) ? (a) : (b))"
 .PP
 Computers the maximum of a and b. 
 .PP
-Definition at line 85 of file tools.h.
+Definition at line 106 of file tools.h.
 .SS "#define SNMP_MIN(a, b)   ((a) > (b) ? (b) : (a))"
 .PP
 Computers the minimum of a and b. 
 .PP
-Definition at line 89 of file tools.h.
+Definition at line 110 of file tools.h.
 .SS "#define SNMP_SWIPE_MEM(n, s)   do { if (n) free((void *)n); n = s; s=NULL; } while(0)"
 .PP
 Frees pointer n only if it is !NULL, sets n to s and sets s to NULL. 
 .PP
-Definition at line 57 of file tools.h.
+Definition at line 61 of file tools.h.
 .SS "#define SNMP_ZERO(s, l)   do { if (s) memset(s, 0, l); } while(0)"
 .PP
 Zeros l bytes of memory starting at s. 
 .PP
-Definition at line 72 of file tools.h.
+Definition at line 76 of file tools.h.
 .SH "Function Documentation"
 .PP 
 .SS "long atime_diff (marker_t first, marker_t second)"
 .PP
 Returns the difference (in msec) between the two markers. 
 .PP
-Definition at line 798 of file tools.c.
+Definition at line 803 of file tools.c.
 .SS "marker_t atime_newMarker (void)"
 .PP
 create a new time marker. NOTE: Caller must free time marker when no longer needed. 
 .PP
-Definition at line 774 of file tools.c.
+Definition at line 779 of file tools.c.
 .SS "int atime_ready (marker_t pm, int deltaT)"
 .PP
 Test: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). 
 .PP
-Definition at line 853 of file tools.c.
+Definition at line 858 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.
+Definition at line 790 of file tools.c.
 .SS "u_int binary_to_hex (const u_char * input, size_t len, char ** output)"
 .PP
 converts binary to hexidecimal \fBParameters:\fP
@@ -331,7 +351,7 @@
 .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.
+Definition at line 299 of file tools.c.
 .SS "void free_zero (void * buf, size_t size)"
 .PP
 zeros memory before freeing it. \fBParameters:\fP
@@ -343,7 +363,7 @@
 .PP
 
 .PP
-Definition at line 188 of file tools.c.
+Definition at line 197 of file tools.c.
 .SS "int hex_to_binary2 (const u_char * input, size_t len, char ** output)"
 .PP
 hex_to_binary2 \fBParameters:\fP
@@ -364,7 +384,7 @@
 .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.
+Definition at line 336 of file tools.c.
 .SS "u_char* malloc_random (size_t * size)"
 .PP
 Returns pointer to allocaed & set buffer on success, size contains number of random bytes filled. buf is NULL and *size set to KMT error value upon failure.
@@ -381,12 +401,12 @@
 .PP
 
 .PP
-Definition at line 208 of file tools.c.
+Definition at line 217 of file tools.c.
 .SS "int marker_tticks (marker_t pm)"
 .PP
 Return the number of timeTicks since the given marker. 
 .PP
-Definition at line 901 of file tools.c.
+Definition at line 906 of file tools.c.
 .SS "void * netsnmp_memdup (const void * from, size_t size)"
 .PP
 Duplicates a memory block. Copies a existing memory location from a pointer to another, newly malloced, pointer.
@@ -407,12 +427,12 @@
 .PP
 
 .PP
-Definition at line 239 of file tools.c.
-.SS "char* netsnmp_getenv (const char * name)"
+Definition at line 248 of file tools.c.
+.SS "NETSNMP_IMPORT char* netsnmp_getenv (const char * name)"
 .PP
 Non Windows: Returns a pointer to the desired environment \fBvariable\fP or NULL if the environment \fBvariable\fP does not exist. Windows: Returns a pointer to the desired environment \fBvariable\fP if it exists. If it does not, the \fBvariable\fP is looked up in the registry in HKCU\\Net-SNMP or HKLM\\Net-SNMP (whichever it finds first) and stores the result in the environment \fBvariable\fP. It then returns a pointer to environment \fBvariable\fP. 
 .PP
-Definition at line 929 of file tools.c.
+Definition at line 934 of file tools.c.
 .SS "int netsnmp_hex_to_binary (u_char ** buf, size_t * buf_len, size_t * offset, int allow_realloc, const char * hex, const char * delim)"
 .PP
 convert an ASCII hex string (with specified delimiters) to binary \fBParameters:\fP
@@ -439,12 +459,17 @@
 .PP
 
 .PP
-Definition at line 428 of file tools.c.
+Definition at line 437 of file tools.c.
+.SS "NETSNMP_IMPORT int netsnmp_setenv (const char * envname, const char * envval, int overwrite)"
+.PP
+Set an environment \fBvariable\fP. This function is only necessary on Windows for the MSVC and MinGW environments. If the process that uses the Net-SNMP DLL (e.g. a Perl interpreter) and the Net-SNMP have been built with a different compiler version then each will have a separate set of environment variables. This function allows to set an environment \fBvariable\fP such that it gets noticed by the Net-SNMP DLL. 
+.PP
+Definition at line 1067 of file tools.c.
 .SS "char* netsnmp_strdup_and_null (const u_char * from, size_t from_len)"
 .PP
 copies a (possible) unterminated string of a given length into a new buffer and null terminates it as well (new buffer MAY be one byte longer to account for this 
 .PP
-Definition at line 258 of file tools.c.
+Definition at line 267 of file tools.c.
 .SS "int snmp_hex_to_binary (u_char ** buf, size_t * buf_len, size_t * offset, int allow_realloc, const char * hex)"
 .PP
 convert an ASCII hex string to binary \fBNote:\fP
@@ -463,7 +488,7 @@
 .PP
 
 .PP
-Definition at line 488 of file tools.c.
+Definition at line 497 of file tools.c.
 .SS "int snmp_realloc (u_char ** buf, size_t * buf_len)"
 .PP
 This function increase the size of the buffer pointed at by *buf, which is initially of size *buf_len. Contents are preserved **AT THE BOTTOM END OF THE BUFFER**. If memory can be (re-)allocated then it returns 1, else it returns 0.
@@ -482,22 +507,22 @@
 .PP
 
 .PP
-Definition at line 124 of file tools.c.
+Definition at line 133 of file tools.c.
 .SS "u_long uatime_diff (marker_t first, marker_t second)"
 .PP
 Returns the difference (in u_long msec) between the two markers. 
 .PP
-Definition at line 815 of file tools.c.
+Definition at line 820 of file tools.c.
 .SS "u_long uatime_hdiff (marker_t first, marker_t second)"
 .PP
 Returns the difference (in u_long 1/100th secs) between the two markers (functionally this is what sysUpTime needs). 
 .PP
-Definition at line 833 of file tools.c.
+Definition at line 838 of file tools.c.
 .SS "int uatime_ready (marker_t pm, unsigned int deltaT)"
 .PP
 Test: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). 
 .PP
-Definition at line 875 of file tools.c.
+Definition at line 880 of file tools.c.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_utilities.3 b/man/netsnmp_utilities.3
index 96bf533..da10696 100644
--- a/man/netsnmp_utilities.3
+++ b/man/netsnmp_utilities.3
@@ -1,4 +1,4 @@
-.TH "utility_handlers" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "utility_handlers" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
diff --git a/man/netsnmp_variable_list.3 b/man/netsnmp_variable_list.3
index 1897c5e..1a5841b 100644
--- a/man/netsnmp_variable_list.3
+++ b/man/netsnmp_variable_list.3
@@ -1,4 +1,4 @@
-.TH "variable_list" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "variable_list" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -10,7 +10,7 @@
 .br
 .PP
 .PP
-\fC#include <snmp_api.h>\fP
+\fC#include <types.h>\fP
 .SS "Data Fields"
 
 .in +1c
@@ -67,19 +67,19 @@
 .PP
 \fBnotification.c\fP.
 .PP
-Definition at line 529 of file snmp_api.h.
+Definition at line 139 of file types.h.
 .SH "Field Documentation"
 .PP 
 .SS "u_char \fBvariable_list::buf\fP[40]"
 .PP
 90 percentile < 40. 
 .PP
-Definition at line 545 of file snmp_api.h.
+Definition at line 155 of file types.h.
 .SS "void* \fBvariable_list::data\fP"
 .PP
 (Opaque) hook for additional data 
 .PP
-Definition at line 547 of file snmp_api.h.
+Definition at line 157 of file types.h.
 .SS "void(* \fBvariable_list::dataFreeHook\fP)(void *)"
 .PP
 callback to free above 
@@ -87,22 +87,22 @@
 .PP
 Object identifier of \fBvariable\fP. 
 .PP
-Definition at line 533 of file snmp_api.h.
+Definition at line 143 of file types.h.
 .SS "size_t \fBvariable_list::name_length\fP"
 .PP
 number of subid's in name 
 .PP
-Definition at line 535 of file snmp_api.h.
+Definition at line 145 of file types.h.
 .SS "oid \fBvariable_list::name_loc\fP[MAX_OID_LEN]"
 .PP
 buffer to hold the OID 
 .PP
-Definition at line 543 of file snmp_api.h.
+Definition at line 153 of file types.h.
 .SS "struct \fBvariable_list\fP* \fBvariable_list::next_variable\fP\fC [read]\fP"
 .PP
 NULL for last \fBvariable\fP. 
 .PP
-Definition at line 531 of file snmp_api.h.
+Definition at line 141 of file types.h.
 .SS "u_char \fBvariable_list::type\fP"
 .PP
 ASN type of \fBvariable\fP. 
@@ -111,7 +111,7 @@
 .in +1c
 \fBdelayed_instance.c\fP.
 .PP
-Definition at line 537 of file snmp_api.h.
+Definition at line 147 of file types.h.
 .SS "\fBnetsnmp_vardata\fP \fBvariable_list::val\fP"
 .PP
 value of \fBvariable\fP 
@@ -120,12 +120,12 @@
 .in +1c
 \fBdelayed_instance.c\fP.
 .PP
-Definition at line 539 of file snmp_api.h.
+Definition at line 149 of file types.h.
 .SS "size_t \fBvariable_list::val_len\fP"
 .PP
 the length of the value to be copied into buf 
 .PP
-Definition at line 541 of file snmp_api.h.
+Definition at line 151 of file types.h.
 
 .SH "Author"
 .PP 
diff --git a/man/netsnmp_watcher.3 b/man/netsnmp_watcher.3
index 558f4f6..de5314e 100644
--- a/man/netsnmp_watcher.3
+++ b/man/netsnmp_watcher.3
@@ -1,4 +1,4 @@
-.TH "watcher" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
+.TH "watcher" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
@@ -13,6 +13,15 @@
 .RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_watcher_handler\fP (void)"
 .br
 .ti -1c
+.RI "\fBnetsnmp_watcher_info\fP * \fBnetsnmp_init_watcher_info6\fP (\fBnetsnmp_watcher_info\fP *winfo, void *data, size_t size, u_char type, int flags, size_t max_size, size_t *size_p)"
+.br
+.ti -1c
+.RI "\fBnetsnmp_watcher_info\fP * \fBnetsnmp_create_watcher_info6\fP (void *data, size_t size, u_char type, int flags, size_t max_size, size_t *size_p)"
+.br
+.ti -1c
+.RI "\fBnetsnmp_watcher_info\fP * \fBnetsnmp_init_watcher_info\fP (\fBnetsnmp_watcher_info\fP *winfo, void *data, size_t size, u_char type, int flags)"
+.br
+.ti -1c
 .RI "\fBnetsnmp_watcher_info\fP * \fBnetsnmp_create_watcher_info\fP (void *data, size_t size, u_char type, int flags)"
 .br
 .ti -1c
@@ -46,30 +55,108 @@
 .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)"
+.RI "int \fBnetsnmp_register_ulong_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_ulong_scalar\fP (const char *name, oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_read_only_ulong_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_long_scalar\fP (const char *name, oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_long_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_long_scalar\fP (const char *name, oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_read_only_long_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_int_scalar\fP (const char *name, oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_int_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_int_scalar\fP (const char *name, oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_read_only_int_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
 .br
 .ti -1c
-.RI "int \fBnetsnmp_register_read_only_counter32_scalar\fP (const char *name, oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
+.RI "int \fBnetsnmp_register_read_only_counter32_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
+.br
+.in -1c 
+.in +1c
+.ti -1c
+.RI "#define \fBNETSNMP_WATCHER_DIRECT\fP   MIB_HANDLER_CUSTOM1"
+.br
+.ti -1c
+.RI "#define \fBWATCHER_FIXED_SIZE\fP"
+.br
+.RI "\fIThe size of the watched object is constant. \fP"
+.ti -1c
+.RI "#define \fBWATCHER_MAX_SIZE\fP"
+.br
+.RI "\fIThe maximum size of the watched object is stored in max_size. \fP"
+.ti -1c
+.RI "#define \fBWATCHER_SIZE_IS_PTR\fP"
+.br
+.RI "\fIIf set then the \fBvariable\fP data_size_p points to is supposed to hold the current size of the watched object and will be updated on writes. \fP"
+.ti -1c
+.RI "#define \fBWATCHER_SIZE_STRLEN\fP"
+.br
+.RI "\fIIf set then data is suppposed to be a zero-terminated character array and both data_size and data_size_p are ignored. \fP"
+.ti -1c
+.RI "#define \fBWATCHER_SIZE_UNIT_OIDS\fP"
+.br
+.RI "\fIIf set then size is in units of object identifiers. \fP"
+.ti -1c
+.RI "typedef struct \fBnetsnmp_watcher_info_s\fP \fBnetsnmp_watcher_info\fP"
 .br
 .in -1c
 .SH "Detailed Description"
 .PP 
 Watch a specified \fBvariable\fP and process it as an instance or scalar object. 
+.SH "Define Documentation"
+.PP 
+.SS "#define WATCHER_FIXED_SIZE"
+.PP
+The size of the watched object is constant. 
+.PP
+Definition at line 26 of file watcher.h.
+.SS "#define WATCHER_MAX_SIZE"
+.PP
+The maximum size of the watched object is stored in max_size. If WATCHER_SIZE_STRLEN is set then it is supposed that max_size + 1 bytes could be stored in the buffer. 
+.PP
+\fBExamples: \fP
+.in +1c
+\fBwatched.c\fP.
+.PP
+Definition at line 32 of file watcher.h.
+.SS "#define WATCHER_SIZE_IS_PTR"
+.PP
+If set then the \fBvariable\fP data_size_p points to is supposed to hold the current size of the watched object and will be updated on writes. \fBSince:\fP
+.RS 4
+Net-SNMP 5.5 
+.RE
+.PP
+
+.PP
+Definition at line 38 of file watcher.h.
+.SS "#define WATCHER_SIZE_STRLEN"
+.PP
+If set then data is suppposed to be a zero-terminated character array and both data_size and data_size_p are ignored. Additionally \\0 is a forbidden character in the data set.
+.PP
+\fBSince:\fP
+.RS 4
+Net-SNMP 5.5 
+.RE
+.PP
+
+.PP
+Definition at line 45 of file watcher.h.
+.SS "#define WATCHER_SIZE_UNIT_OIDS"
+.PP
+If set then size is in units of object identifiers. This is useful if you have an OID and tracks the OID_LENGTH of it as opposed to it's size.
+.PP
+\fBSince:\fP
+.RS 4
+Net-SNMP 5.5.1 
+.RE
+.PP
+
+.PP
+Definition at line 52 of file watcher.h.
 .SH "Author"
 .PP 
 Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/pdu_api.3.def b/man/pdu_api.3.def
new file mode 100644
index 0000000..578b4a7
--- /dev/null
+++ b/man/pdu_api.3.def
@@ -0,0 +1,28 @@
+.TH PDU_API 3 "20 Apr 2009" VVERSIONINFO "Net-SNMP"
+.SH NAME
+snmp_pdu_create, snmp_clone_pdu, snmp_fix_pdu,
+snmp_free_pdu - 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"
+.BR varbind_api "(3)"
+.BR session_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/snmp_api.3.def b/man/session_api.3.def
similarity index 93%
rename from man/snmp_api.3.def
rename to man/session_api.3.def
index d1cb991..9ac2d5e 100644
--- a/man/snmp_api.3.def
+++ b/man/session_api.3.def
@@ -1,3 +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:
 .\" /***********************************************************
 .\" 	Copyright 1989 by Carnegie Mellon University
 .\" 
@@ -19,9 +23,9 @@
 .\" ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 .\" SOFTWARE.
 .\" ******************************************************************/
-.TH SNMP_API 3 "19 May 2011" VVERSIONINFO "Net-SNMP"
+.TH SESSION_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
+snmp_sess_init, snmp_open, snmp_send, snmp_async_send, snmp_select_info, snmp_read, snmp_timeout, snmp_synch_response, snmp_close, snmp_perror, snmp_sess_perror, snmp_error, snmp_api_errstring \- session_api functions
 .SH SYNOPSIS
 #include <net-snmp/session_api.h>
 .PP
@@ -61,9 +65,6 @@
 .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
@@ -98,9 +99,9 @@
 object, which the application must use to reference the
 active SNMP session.
 .PP
-.I Snmp_send, snmp_async_send
+.I Snmp_send
 and
-.I snmp_free_pdu
+.I snmp_async_send
 each take as input a pointer to a
 .I struct snmp_pdu
 object.
diff --git a/man/snmp.conf.5.def b/man/snmp.conf.5.def
index 432e04b..13c15a9 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 "01 Apr 2009" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmp.conf - configuration files for the Net-SNMP applications
 .SH DESCRIPTION
@@ -45,6 +45,13 @@
 defines the default community to use for SNMPv1 and SNMPv2c requests.
 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.
@@ -192,6 +199,17 @@
 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).
 .\"
 .\" XXX - are these lengths still correct ?
 .\"
@@ -215,7 +233,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.
@@ -252,14 +270,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.
 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.
diff --git a/man/snmp_api_errstring.3 b/man/snmp_api_errstring.3
index 4c16baf..fe0a48b 100644
--- a/man/snmp_api_errstring.3
+++ b/man/snmp_api_errstring.3
@@ -1 +1 @@
-.so man3/snmp_api.3
+.so man3/session_api.3
diff --git a/man/snmp_close.3 b/man/snmp_close.3
index 4c16baf..fe0a48b 100644
--- a/man/snmp_close.3
+++ b/man/snmp_close.3
@@ -1 +1 @@
-.so man3/snmp_api.3
+.so man3/session_api.3
diff --git a/man/snmp_config.5.def b/man/snmp_config.5.def
index e7ac4a6..8701d93 100644
--- a/man/snmp_config.5.def
+++ b/man/snmp_config.5.def
@@ -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
diff --git a/man/snmp_error.3 b/man/snmp_error.3
index 4c16baf..fe0a48b 100644
--- a/man/snmp_error.3
+++ b/man/snmp_error.3
@@ -1 +1 @@
-.so man3/snmp_api.3
+.so man3/session_api.3
diff --git a/man/snmp_free_pdu.3 b/man/snmp_free_pdu.3
index 4c16baf..456d66d 100644
--- a/man/snmp_free_pdu.3
+++ b/man/snmp_free_pdu.3
@@ -1 +1 @@
-.so man3/snmp_api.3
+.so man3/pdu_api.3
diff --git a/man/snmp_open.3 b/man/snmp_open.3
index 4c16baf..fe0a48b 100644
--- a/man/snmp_open.3
+++ b/man/snmp_open.3
@@ -1 +1 @@
-.so man3/snmp_api.3
+.so man3/session_api.3
diff --git a/man/snmp_perror.3 b/man/snmp_perror.3
index 4c16baf..fe0a48b 100644
--- a/man/snmp_perror.3
+++ b/man/snmp_perror.3
@@ -1 +1 @@
-.so man3/snmp_api.3
+.so man3/session_api.3
diff --git a/man/snmp_read.3 b/man/snmp_read.3
index 4c16baf..fe0a48b 100644
--- a/man/snmp_read.3
+++ b/man/snmp_read.3
@@ -1 +1 @@
-.so man3/snmp_api.3
+.so man3/session_api.3
diff --git a/man/snmp_select_info.3 b/man/snmp_select_info.3
index 4c16baf..fe0a48b 100644
--- a/man/snmp_select_info.3
+++ b/man/snmp_select_info.3
@@ -1 +1 @@
-.so man3/snmp_api.3
+.so man3/session_api.3
diff --git a/man/snmp_send.3 b/man/snmp_send.3
index 4c16baf..fe0a48b 100644
--- a/man/snmp_send.3
+++ b/man/snmp_send.3
@@ -1 +1 @@
-.so man3/snmp_api.3
+.so man3/session_api.3
diff --git a/man/snmp_sess_perror.3 b/man/snmp_sess_perror.3
index 4c16baf..fe0a48b 100644
--- a/man/snmp_sess_perror.3
+++ b/man/snmp_sess_perror.3
@@ -1 +1 @@
-.so man3/snmp_api.3
+.so man3/session_api.3
diff --git a/man/snmp_timeout.3 b/man/snmp_timeout.3
index 4c16baf..fe0a48b 100644
--- a/man/snmp_timeout.3
+++ b/man/snmp_timeout.3
@@ -1 +1 @@
-.so man3/snmp_api.3
+.so man3/session_api.3
diff --git a/man/snmpcmd.1.def b/man/snmpcmd.1.def
index 4853caf..f65b3fd 100644
--- a/man/snmpcmd.1.def
+++ b/man/snmpcmd.1.def
@@ -27,7 +27,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 Mar 2009" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpcmd - options and behaviour common to most of the Net-SNMP command-line tools
 .SH SYNOPSIS
@@ -95,13 +95,11 @@
 .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
+messages.  It is typically not necessary to specify this, as it will
 usually be discovered automatically.
 .TP
 .BI -E " engineID"
-Set the context engineID used for SNMPv3 REQUEST messages scopedPdu,
-given as a hexadecimal string.
+Set the context engineID used for SNMPv3 REQUEST messages scopedPdu.
 If not specified, this will default to the authoritative engineID.
 .TP
 .B -h, --help
@@ -204,6 +202,7 @@
 .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
 .BI -u " secName"
 Set the securityName used for authenticated SNMPv3 messages.
@@ -352,6 +351,16 @@
 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
@@ -377,6 +386,21 @@
 connect to port 1611 on the local host
 .IR "" ( ::1 
 in IPv6 parlance) using TCP/IPv6 and perform query over that connection.
+.TP 24
+.IR "dtlsudp:hostname:9161"
+Connects using SNMP over DTLS/UDP as documented by the ISMS working group
+(RFCs not yet published as of this date).  This will require that the
+TSM security model is in use (--defSecurityModel=tsm) and that the
+.IR defX509ServerCerts,
+.IR defX509ClientPriv,
+and
+.IR defX509ClientPub
+configuration tokens have been set.
+.TP 24
+.IR "ssh:hostname:22"
+Connects using SNMP over SSH as documented by the ISMS working group
+(RFCs not yet published as of this date).  This will require that the
+TSM security model is in use (--defSecurityModel=tsm).
 .PP
 Note that not all the transport domains listed above will always be
 available; for instance, hosts with no IPv6 support will not be able
@@ -384,7 +408,6 @@
 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
@@ -397,7 +420,7 @@
 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"
 Disables the loading of MIB object DESCRIPTIONs when parsing MIB files.
diff --git a/man/snmpd.8.def b/man/snmpd.8.def
index 2a2086f..b884700 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 "01 Apr 2009" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpd - daemon to respond to SNMP request packets.
 .SH SYNOPSIS
@@ -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,
@@ -225,6 +231,19 @@
 .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 defX509ServerPub,
+.IR defX509ServerPriv,
+and
+.IR defX509ClientCerts
+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 +251,77 @@
 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 defX509ServerCerts,
+.IR defX509ClientPriv,
+and
+.IR defX509ClientPub
+configuration tokens.  The server will need to configure the snmp.conf
+file with the
+.IR defX509ServerPub,
+.IR defX509ServerPriv,
+and
+.IR defX509ClientCerts
+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..c7e4b6a 100644
--- a/man/snmpd.conf.5.def
+++ b/man/snmpd.conf.5.def
@@ -97,7 +97,7 @@
 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
+time in seconds. This is the recommended approach. However the
 capacity exists to define the engineID in other ways:
 .IP "engineID STRING"
 specifies that the engineID should be built from the given text STRING.
@@ -114,13 +114,21 @@
 .\"
 .\" 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
+.SH SNMPv3 AUTHENTICATION
+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
@@ -177,12 +185,43 @@
 supported algorithms).  Master encryption keys, though, need to be the
 length required by the authentication algorithm not the length
 required by the encrypting algorithm (MD5: 16 bytes, SHA: 20 bytes).
+.SS SSH Support
+To use SSH, you'll need to configure sshd to invoke sshtosnmp as well
+as configure the access control settings to allow access through the
+tsm security model using the user name provided to snmpd by the ssh
+transport.
+.SS DTLS Support
+For DTLS,
+.B snmpd
+will need to be configured with it's own X.509 certificate as well as
+the certificates of the client users to be allowed to connect to the
+agent.  The access control will need to be set up as well to allow
+access through the
+.I tsm
+security model.  The CommonName of the Subject from the X.509
+certificate will be passed to snmpd as the SNMPv3 username to use.
+See the http://www.net-snmp.org/wiki/index.php/Using_DTLS web page for
+more detailed instructions for setting up DTLS.
+.IP "defX509ServerPub FILE"
+.IP "defX509ServerPriv FILE"
+These two directives specify the public and private key files for the
+certificate that
+.B snmpd
+should present to incoming connections.
+.IP "defX509ClientCerts FILE"
+This directive specifies a file containing all of the public keys (or
+CAs of public keys) for clients to connect the server with.
+.SH ACCESS CONTROL
+.B snmpd
+supports the View-Based Access Control Model (VACM) as defined in RFC
+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,6 +233,13 @@
 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
+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 SSH or DTLS
+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
@@ -248,7 +294,7 @@
 default context ("") will be used.
 .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 +339,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.
@@ -380,6 +426,18 @@
 interfaces where the agent fails to determine this information correctly.
 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 
@@ -668,6 +726,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
diff --git a/man/snmpnetstat.1.def b/man/snmpnetstat.1.def
index 8e1450a..92cfee4 100644
--- a/man/snmpnetstat.1.def
+++ b/man/snmpnetstat.1.def
@@ -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
@@ -163,6 +169,11 @@
 is also present, show per-protocol routing statistics instead of 
 the routing tables.
 .PP
+.BI \-CR " repeaters"
+For GETBULK requests,
+.I repeaters
+specifies the max-repeaters value to use.
+.PP
 When  snmpnetstat is invoked with an interval argument, it
 displays a running count of statistics related to  network
 interfaces.
diff --git a/man/snmptrapd.8.def b/man/snmptrapd.8.def
index 29d565a..b6247bf 100644
--- a/man/snmptrapd.8.def
+++ b/man/snmptrapd.8.def
@@ -51,7 +51,8 @@
 .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
 Do not read any configuration files except the one optionally specified by the 
@@ -68,11 +69,6 @@
 .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
 Do not fork() from the calling shell.
 .TP
diff --git a/man/snmptrapd.conf.5.def b/man/snmptrapd.conf.5.def
index 32e3af5..dcc017d 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 "19 Feb 2009" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmptrapd.conf - configuration file for the Net-SNMP notification receiver
 .SH DESCRIPTION
@@ -155,13 +155,18 @@
 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!
-.\"
+.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
diff --git a/man/snmpwalk.1.def b/man/snmpwalk.1.def
index 0c55d72..6e15201 100644
--- a/man/snmpwalk.1.def
+++ b/man/snmpwalk.1.def
@@ -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
@@ -67,6 +67,11 @@
 .B -Cc
 to turn off this check.
 .TP
+.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
@@ -100,12 +105,12 @@
 takes the common options described in the 
 .I snmpcmd(1)
 manual page.
+.SH EXAMPLES
 .br
 Note that
 .B snmpbulkget
 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
@@ -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/varbind_api.3.def b/man/varbind_api.3.def
new file mode 100644
index 0000000..fd61c75
--- /dev/null
+++ b/man/varbind_api.3.def
@@ -0,0 +1,196 @@
+.TH VARBIND_API 3 "20 Apr 2009" VVERSIONINFO "Net-SNMP"
+.SH NAME
+snmp_pdu_add_var, snmp_varlist_add_var, snmp_add_null_var,
+snmp_clone_varbind, snmp_free_varbind, snmp_free_var,
+print_variable, fprint_variable, snprint_variable,
+print_value, fprint_value, snprint_value - varbind_api functions
+.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
+"[Insert example code here]"
+.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.
+.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 pdu_api "(3)"
+.BR mib_api "(3)"
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..3d88a0f 100644
--- a/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt
+++ b/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt
@@ -17,7 +17,7 @@
                       USA
 
           Tel:    +1  310-823-9358
-          E-Mail: iana@iana.org"
+          E-Mail: iana&iana.org"
       DESCRIPTION
           "The MIB module defines the AddressFamilyNumbers
           textual convention."
@@ -86,10 +86,11 @@
           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
           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 +117,7 @@
                   fibreChannelWWPN(22),
                   fibreChannelWWNN(23),
                   gwid(24),
+                  afi(25),
                   reserved(65535)
               }
       END
diff --git a/mibs/IANA-LANGUAGE-MIB.txt b/mibs/IANA-LANGUAGE-MIB.txt
index b0ad3ed..773c101 100644
--- a/mibs/IANA-LANGUAGE-MIB.txt
+++ b/mibs/IANA-LANGUAGE-MIB.txt
@@ -15,7 +15,7 @@
                  Marina del Rey, CA 90292
 
          Tel:    +1 310 823 9358 x20
-         E-Mail: iana@iana.org"
+         E-Mail: iana&iana.org"
     DESCRIPTION
         "The MIB module registers object identifier values for
          well-known programming and scripting languages. Every
diff --git a/mibs/IANA-RTPROTO-MIB.txt b/mibs/IANA-RTPROTO-MIB.txt
index 57e73a2..6f04143 100644
--- a/mibs/IANA-RTPROTO-MIB.txt
+++ b/mibs/IANA-RTPROTO-MIB.txt
@@ -1,4 +1,3 @@
-
 IANA-RTPROTO-MIB DEFINITIONS ::= BEGIN
 
 IMPORTS
@@ -15,7 +14,7 @@
               Marina del Rey, CA 90292-6601
 
               Phone: +1 310 823 9358
-              EMail: iana@iana.org"
+              EMail: iana&iana.org"
     DESCRIPTION
             "This MIB module defines the IANAipRouteProtocol and
             IANAipMRouteProtocol textual conventions for use in MIBs
@@ -32,12 +31,10 @@
     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
@@ -88,5 +85,3 @@
                }
 
 END
-
-
diff --git a/mibs/IANAifType-MIB.txt b/mibs/IANAifType-MIB.txt
index 542e247..9594650 100644
--- a/mibs/IANAifType-MIB.txt
+++ b/mibs/IANAifType-MIB.txt
@@ -5,7 +5,7 @@
        TEXTUAL-CONVENTION          FROM SNMPv2-TC;
 
    ianaifType MODULE-IDENTITY
-       LAST-UPDATED "200510100000Z"  -- October 10, 2005
+       LAST-UPDATED "200905060000Z"  -- May 06, 2009
        ORGANIZATION "IANA"
        CONTACT-INFO "        Internet Assigned Numbers Authority
 
@@ -14,12 +14,75 @@
                              Marina del Rey, CA 90292
 
                      Tel:    +1 310 823 9358
-                     E-Mail: iana@iana.org"
-
+                     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     "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 +94,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 +112,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 +253,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 +273,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 +288,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),
@@ -268,17 +334,19 @@
                    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 +381,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 +460,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
@@ -434,10 +506,34 @@
                    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)
+                   }
 
 IANAtunnelType ::= TEXTUAL-CONVENTION
     STATUS     current
@@ -481,7 +577,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.mib b/mibs/Makefile.mib
index 136199c..e5871f1 100644
--- a/mibs/Makefile.mib
+++ b/mibs/Makefile.mib
@@ -14,18 +14,24 @@
 	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 \
 	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 \
+	TUNNEL-MIB.txt \
+	TRANSPORT-ADDRESS-MIB.txt \
+	RFC1155-SMI.txt RFC1213-MIB.txt\
 	SCTP-MIB.txt
 
 MIBDEPS = Makefile.mib mibfetch smistrip
@@ -65,6 +71,12 @@
 SNMP-COMMUNITY-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 2576
 
+SNMP-USM-AES-MIB.txt:	$(MIBDEPS)
+	./mibfetch $(RFCHOST) $(RFCDIR) 3826
+
+SNMP-USM-DH-OBJECTS-MIB.txt:	$(MIBDEPS)
+	./mibfetch $(RFCHOST) $(RFCDIR) 2786
+
 SNMPv2-SMI.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 2578 SNMPv2-SMI
 
@@ -92,6 +104,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 +134,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 +144,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 +173,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,7 +194,7 @@
 RFC1213-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 1213
 
-SCTP.txt:	$(MIBDEPS)
+SCTP-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 3873
 
 ianamibs:	ianalist
diff --git a/mibs/NET-SNMP-TC.txt b/mibs/NET-SNMP-TC.txt
index f3ff5df..b3d76a9 100644
--- a/mibs/NET-SNMP-TC.txt
+++ b/mibs/NET-SNMP-TC.txt
@@ -120,5 +120,8 @@
 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 }
 
 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-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..0697124 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 "200901190000Z"
     ORGANIZATION "University of California, Davis"
     CONTACT-INFO    
 	"This mib is no longer being maintained by the University of
@@ -55,6 +55,10 @@
     DESCRIPTION
 	"This file defines the private UCD SNMP MIB extensions."
 
+    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 +676,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 +775,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
diff --git a/mibs/ianalist b/mibs/ianalist
index c3f0575..f2345f1 100644
--- a/mibs/ianalist
+++ b/mibs/ianalist
@@ -1,4 +1,4 @@
-# updated 2005-01-06
+# updated 2007-05-03
 ianaiftype-mib			IANAifType-MIB
 ianalanguage-mib		IANA-LANGUAGE-MIB
 ianaaddressfamilynumbers-mib	IANA-ADDRESS-FAMILY-NUMBERS-MIB
@@ -9,3 +9,5 @@
 ianaprinter-mib			IANA-PRINTER-MIB
 ianafinisher-mib		IANA-FINISHER-MIB
 ianaitualarmtc-mib		IANA-ITU-ALARM-TC-MIB
+ianamau-mib			IANA-MAU-MIB
+ianagmplstc-mib			IANA-GMPLS-TC-MIB
diff --git a/mibs/rfclist b/mibs/rfclist
index 4d03434..a4659c2 100644
--- a/mibs/rfclist
+++ b/mibs/rfclist
@@ -1,4 +1,4 @@
-# updated 2005-03-14
+# updated 2009-07-27
 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,9 @@
 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 +94,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 +138,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
@@ -184,5 +174,72 @@
 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
+4369	IFCP-MGMT-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
+4544	ISCSI-MIB
+4545	IPS-AUTH-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
+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
+5601	PW-STD-MIB:IANA-PWE3-MIB
+5602	PW-MPLS-STD-MIB
+5603	PW-ENET-STD-MIB
+5605	PW-ATM-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..652832d 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@"
@@ -170,7 +185,7 @@
       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
@@ -207,126 +222,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 +277,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 +324,7 @@
 
       cat >> $tmpfile <<EOF
 const char *app_name = "$outname";
+static int reconfig = 0;
 
 extern int netsnmp_running;
 
@@ -439,6 +339,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 +524,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 +546,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 +596,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 +630,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:"
diff --git a/net-snmp-create-v3-user.in b/net-snmp-create-v3-user.in
new file mode 100644
index 0000000..e435009
--- /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 -lnetsnmphelpers -lnetsnmp"
+NSC_BASE_AGENT_LIBS="-lnetsnmpagent -lnetsnmphelpers -lnetsnmpmibs -lnetsnmp"
+NSC_SRC_LIBDIRS="agent/.libs snmplib/.libs agent/helpers/.libs"
+NSC_SRC_LIBDEPS="agent/.libs/libnetsnmpmibs.a agent/.libs/libnetsnmpagent.a agent/helpers/.libs/libnetsnmphelpers.a snmplib/.libs/libnetsnmp.a"
+
+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..07858ae 100644
--- a/perl/ASN/ASN.pm
+++ b/perl/ASN/ASN.pm
@@ -66,7 +66,7 @@
 	ASN_UNSIGNED
 	ASN_UNSIGNED64
 );
-$VERSION = '5.0404';
+$VERSION = '5.0502';
 
 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/AnyData_SNMP/Storage.pm b/perl/AnyData_SNMP/Storage.pm
index 6247963..df3c4af 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.0502';
 use strict;
 use warnings;
 
diff --git a/perl/Makefile.PL b/perl/Makefile.PL
index f70f991..92f5ad2 100644
--- a/perl/Makefile.PL
+++ b/perl/Makefile.PL
@@ -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..b943872 100644
--- a/perl/OID/OID.pm
+++ b/perl/OID/OID.pm
@@ -92,7 +92,7 @@
 	snmp_oid_compare
         compare
 );
-$VERSION = '5.0404';
+$VERSION = '5.0502';
 
 sub new {
     my $type = shift;
diff --git a/perl/OID/OID.xs b/perl/OID/OID.xs
index 5d41c3a..e9c838f 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, ".%lu", *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/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..a79cb91 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.0502';   # 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 {
@@ -517,7 +531,7 @@
        $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->{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()) ||
@@ -529,7 +543,7 @@
        $this->{AuthLocalizedKey} ||= '';
        $this->{PrivLocalizedKey} ||= '';
 
-       $this->{PrivProto} ||= 'DEFAULT';  # defaults to hte library's default
+       $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()) ||
@@ -714,7 +728,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 +1381,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)
@@ -1882,7 +1897,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 +2330,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..361ca58 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
@@ -295,26 +293,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 +563,7 @@
    int i;
    buf[0] = '\0';
    for (i=0; i < len; i++) {
-	sprintf(buf,".%lu",*objid++);
+	sprintf(buf, ".%lu", *objid++);
 	buf += strlen(buf);
    }
    return SUCCESS;
@@ -779,11 +757,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,7 +941,7 @@
 
    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);
@@ -970,7 +950,7 @@
      /* doid_arr[(*doid_arr_len)++] =  atoi(cp); */
      cp = strtok_r(NULL,".",&st);
    }
-   free(soid_buf);
+   netsnmp_free(soid_buf);
    return(SUCCESS);
 }
 
@@ -991,27 +971,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 +1013,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 +1034,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 +1067,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 +1099,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 +1141,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 +1152,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 +1230,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 +1253,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 +1820,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 +2448,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 +2464,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 +2536,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 +2588,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 +2645,7 @@
                 goto end;
 	   }
 
-	   session.peername = strdup(peer);
+	   session.peername = peer;
            session.retries = retries; /* 5 */
            session.timeout = timeout; /* 1000000L */
            session.authenticator = NULL;
@@ -2714,14 +2762,24 @@
                }
             }
 
-           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
@@ -2768,8 +2826,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 */
@@ -3011,15 +3069,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;
@@ -3194,15 +3256,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 +3497,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 +3739,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 +4102,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 +4282,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 +4293,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 +4306,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:
@@ -4365,9 +4444,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 +4595,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;
@@ -4775,11 +4863,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 +4886,6 @@
         int block;
 	SV *cb;
 
-
  	mainloop_finish = 0;
 
 	itvp = &interval;
@@ -4809,7 +4903,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 +4917,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 +4931,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 +5154,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 +5164,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 +5358,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/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..4bcf2a4 100644
--- a/perl/TrapReceiver/Makefile.PL
+++ b/perl/TrapReceiver/Makefile.PL
@@ -57,9 +57,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';
@@ -108,7 +108,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`;
@@ -142,7 +142,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 +225,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..f012da5 100644
--- a/perl/TrapReceiver/TrapReceiver.pm
+++ b/perl/TrapReceiver/TrapReceiver.pm
@@ -47,7 +47,7 @@
 	NETSNMPTRAPD_PRE_HANDLER
 );
 
-$VERSION = '5.0404';
+$VERSION = '5.0502';
 
 # 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/agent/Makefile.PL b/perl/agent/Makefile.PL
index b4b358a..b2e3bd8 100644
--- a/perl/agent/Makefile.PL
+++ b/perl/agent/Makefile.PL
@@ -30,9 +30,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';
@@ -109,7 +109,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 +192,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..88beeed 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.0502';
 
 use strict;
 use warnings;
diff --git a/perl/agent/agent.pm b/perl/agent/agent.pm
index 618a2c6..530772e 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.0502';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
@@ -490,6 +490,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..ab77c75 100644
--- a/perl/agent/agent.xs
+++ b/perl/agent/agent.xs
@@ -19,6 +19,12 @@
 
 typedef netsnmp_handler_registration *NetSNMP__agent__netsnmp_handler_registration;
 
+/* Copied from snmpUDPDomain.c */
+typedef struct netsnmp_udp_addr_pair_s {
+	struct sockaddr_in remote_addr;
+	struct in_addr local_addr;
+} netsnmp_udp_addr_pair;
+
 typedef struct handler_cb_data_s {
    SV *perl_cb;
 } handler_cb_data;
@@ -238,6 +244,11 @@
 int
 init_agent(name)
         const char *name;
+    CODE:
+        SOCK_STARTUP;
+        RETVAL = init_agent(name);
+    OUTPUT:
+        RETVAL
 
 void
 init_snmp(name)
@@ -273,7 +284,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 +324,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 +382,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 +421,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 +451,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 +481,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 +638,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 +674,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 +685,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 +744,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 +758,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 +771,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 +862,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;
+	struct netsnmp_udp_addr_pair_s *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 = (struct netsnmp_udp_addr_pair_s *) (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;
+	struct netsnmp_udp_addr_pair_s *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 = (struct netsnmp_udp_addr_pair_s *) (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..9b568ec 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.0502';
 
 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/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..1af7f0c 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.0502';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
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/netsnmp/client_intf.c b/python/netsnmp/client_intf.c
index 3a904a6..7fc74dc 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;
 
@@ -886,7 +887,9 @@
 
 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 +1107,8 @@
 
   __libraries_init("python");
 
+  snmp_sess_init(&session);
+
   session.version = -1;
 #ifndef DISABLE_SNMPV1
   if (version == 1) {
@@ -1132,7 +1137,7 @@
   session.timeout = timeout; /* 1000000L */
   session.authenticator = NULL;
 
-  ss = snmp_open(&session);
+  ss = snmp_sess_open(&session);
 
   if (ss == NULL) {
     if (verbose) 
@@ -1302,7 +1307,7 @@
 
   ss = (SnmpSession *)py_netsnmp_attr_void_ptr(session, "sess_ptr");
 
-  snmp_close(ss);
+  snmp_sess_close(ss);
   return (Py_BuildValue(""));
 }
 
@@ -1492,10 +1497,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 +1717,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);
@@ -1969,11 +1986,8 @@
     	  /* 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("")));
-            
-
+	  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);
@@ -2345,6 +2359,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) {
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..6c088f1 100644
--- a/snmplib/Makefile.depend
+++ b/snmplib/Makefile.depend
@@ -7,13 +7,30 @@
 ./asn1.lo: ../include/net-snmp/machine/generic.h
 ./asn1.lo: ../include/net-snmp/output_api.h
 ./asn1.lo: ../include/net-snmp/types.h
+./asn1.lo: ../include/net-snmp/library/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/snmpUDPDomain.h
+./asn1.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./asn1.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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/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 +39,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,21 +48,40 @@
 ./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/types.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/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/snmpUDPDomain.h
+./callback.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./callback.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
@@ -56,9 +90,7 @@
 ./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
@@ -76,32 +108,14 @@
 ./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/types.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_api.h
-./check_varbind.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./check_varbind.lo: ../include/net-snmp/library/asn1.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
@@ -112,11 +126,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/config_api.h
 ./check_varbind.lo: ../include/net-snmp/library/read_config.h
 ./check_varbind.lo: ../include/net-snmp/library/default_store.h
@@ -139,6 +173,74 @@
 ./cmu_compat.lo: ../include/net-snmp/system/sysv.h
 ./cmu_compat.lo: ../include/net-snmp/system/generic.h
 ./cmu_compat.lo: ../include/net-snmp/machine/generic.h
+./container_binary_array.lo: ../include/net-snmp/net-snmp-config.h
+./container_binary_array.lo: ../include/net-snmp/system/linux.h
+./container_binary_array.lo: ../include/net-snmp/system/sysv.h
+./container_binary_array.lo: ../include/net-snmp/system/generic.h
+./container_binary_array.lo: ../include/net-snmp/machine/generic.h
+./container_binary_array.lo: ../include/net-snmp/net-snmp-includes.h
+./container_binary_array.lo: ../include/net-snmp/definitions.h
+./container_binary_array.lo: ../include/net-snmp/types.h
+./container_binary_array.lo: ../include/net-snmp/library/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/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/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/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/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/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/data_list.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/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
+./container_binary_array.lo: ../include/net-snmp/library/keytools.h
+./container_binary_array.lo: ../include/net-snmp/library/scapi.h
+./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/snmpusm.h
 ./container.lo: ../include/net-snmp/net-snmp-config.h
 ./container.lo: ../include/net-snmp/system/linux.h
 ./container.lo: ../include/net-snmp/system/sysv.h
@@ -146,32 +248,14 @@
 ./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/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/varbind_api.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/pdu_api.h
+./container.lo: ../include/net-snmp/library/asn1.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
@@ -182,10 +266,31 @@
 ./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/mib_api.h
 ./container.lo: ../include/net-snmp/library/parse.h
-./container.lo: ../include/net-snmp/varbind_api.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/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/config_api.h
 ./container.lo: ../include/net-snmp/library/read_config.h
 ./container.lo: ../include/net-snmp/library/default_store.h
@@ -204,72 +309,6 @@
 ./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
-./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/snmp_api.h
-./container_binary_array.lo: ../include/net-snmp/library/asn1.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/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
-./container_binary_array.lo: ../include/net-snmp/library/keytools.h
-./container_binary_array.lo: ../include/net-snmp/library/scapi.h
-./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/snmpusm.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
@@ -278,32 +317,14 @@
 ./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/types.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp_api.h
-./container_iterator.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./container_iterator.lo: ../include/net-snmp/library/asn1.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
@@ -314,11 +335,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./container_iterator.lo: ../include/net-snmp/library/read_config.h
 ./container_iterator.lo: ../include/net-snmp/library/default_store.h
@@ -344,32 +385,14 @@
 ./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/types.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_api.h
-./container_list_ssll.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./container_list_ssll.lo: ../include/net-snmp/library/asn1.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
@@ -380,11 +403,31 @@
 ./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/mib_api.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/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/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/data_list.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/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
@@ -410,32 +453,14 @@
 ./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/types.h
 ./container_null.lo: ../include/net-snmp/library/snmp_api.h
-./container_null.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./container_null.lo: ../include/net-snmp/library/asn1.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
@@ -446,11 +471,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./container_null.lo: ../include/net-snmp/library/read_config.h
 ./container_null.lo: ../include/net-snmp/library/default_store.h
@@ -476,32 +521,14 @@
 ./data_list.lo: ../include/net-snmp/machine/generic.h
 ./data_list.lo: ../include/net-snmp/net-snmp-includes.h
 ./data_list.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./data_list.lo: ../include/net-snmp/library/types.h
 ./data_list.lo: ../include/net-snmp/library/snmp_api.h
-./data_list.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./data_list.lo: ../include/net-snmp/library/asn1.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
@@ -512,10 +539,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./data_list.lo: ../include/net-snmp/library/read_config.h
 ./data_list.lo: ../include/net-snmp/library/default_store.h
@@ -539,14 +587,33 @@
 ./default_store.lo: ../include/net-snmp/system/generic.h
 ./default_store.lo: ../include/net-snmp/machine/generic.h
 ./default_store.lo: ../include/net-snmp/types.h
+./default_store.lo: ../include/net-snmp/library/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/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/snmpUDPDomain.h
+./default_store.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./default_store.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./default_store.lo: ../include/net-snmp/library/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
@@ -561,9 +628,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,6 +638,74 @@
 ./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/system/linux.h
+./dir_utils.lo: ../include/net-snmp/system/sysv.h
+./dir_utils.lo: ../include/net-snmp/system/generic.h
+./dir_utils.lo: ../include/net-snmp/machine/generic.h
+./dir_utils.lo: ../include/net-snmp/net-snmp-includes.h
+./dir_utils.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./dir_utils.lo: ../include/net-snmp/library/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/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/snmpUDPDomain.h
+./dir_utils.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./dir_utils.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./dir_utils.lo: ../include/net-snmp/library/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/snmp_logging.h
+./dir_utils.lo: ../include/net-snmp/library/container_binary_array.h
+./dir_utils.lo: ../include/net-snmp/library/container_list_ssll.h
+./dir_utils.lo: ../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./dir_utils.lo: ../include/net-snmp/library/snmp_debug.h
+./dir_utils.lo: ../include/net-snmp/snmpv3_api.h
+./dir_utils.lo: ../include/net-snmp/library/snmpv3.h
+./dir_utils.lo: ../include/net-snmp/library/transform_oids.h
+./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/snmpusm.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
@@ -581,32 +714,14 @@
 ./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/types.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_api.h
-./fd_event_manager.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./fd_event_manager.lo: ../include/net-snmp/library/asn1.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
@@ -617,11 +732,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/data_list.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/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
@@ -640,40 +775,20 @@
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpv3-security-includes.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
+./fd_event_manager.lo: ../include/net-snmp/net-snmp-config.h
 ./file_utils.lo: ../include/net-snmp/net-snmp-config.h
-./file_utils.lo: ../include/net-snmp/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-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/types.h
 ./file_utils.lo: ../include/net-snmp/library/snmp_api.h
-./file_utils.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./file_utils.lo: ../include/net-snmp/library/asn1.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
@@ -684,10 +799,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./file_utils.lo: ../include/net-snmp/library/read_config.h
 ./file_utils.lo: ../include/net-snmp/library/default_store.h
@@ -707,38 +843,84 @@
 ./file_utils.lo: ../include/net-snmp/library/snmpusm.h
 ./file_utils.lo: ../include/net-snmp/library/file_utils.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/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/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/snmpUDPDomain.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./inet_ntop.lo: ../include/net-snmp/library/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/library/snmp_impl.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmp.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmp-tc.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/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/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/snmpUDPDomain.h
+./inet_pton.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./inet_pton.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./inet_pton.lo: ../include/net-snmp/library/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/library/snmp_impl.h
 ./inet_pton.lo: ../include/net-snmp/library/snmp.h
 ./inet_pton.lo: ../include/net-snmp/library/snmp-tc.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/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/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/snmpUDPDomain.h
+./int64.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./int64.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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/library/snmp_impl.h
 ./int64.lo: ../include/net-snmp/library/snmp.h
 ./int64.lo: ../include/net-snmp/library/snmp-tc.h
@@ -747,19 +929,34 @@
 ./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/types.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/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/snmpUDPDomain.h
+./keytools.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./keytools.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
@@ -768,9 +965,7 @@
 ./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,20 +978,66 @@
 ./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/library/snmp_assert.h
+./large_fd_set.lo: ../include/net-snmp/library/snmp_logging.h
+./large_fd_set.lo: ../include/net-snmp/library/large_fd_set.h
+./large_fd_set.lo: ../include/net-snmp/types.h
+./large_fd_set.lo: ../include/net-snmp/library/types.h
+./large_fd_set.lo: ../include/net-snmp/definitions.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/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/snmpUDPDomain.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./large_fd_set.lo: ../include/net-snmp/library/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/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
 ./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/types.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/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/snmpUDPDomain.h
+./lcd_time.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./lcd_time.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./lcd_time.lo: ../include/net-snmp/library/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
@@ -805,9 +1046,7 @@
 ./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,33 +1057,43 @@
 ./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/library/types.h
 ./md5.lo: ../include/net-snmp/definitions.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/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/snmpUDPDomain.h
+./md5.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./md5.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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/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/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
@@ -856,19 +1105,32 @@
 ./md5.lo: ../include/net-snmp/library/snmp_assert.h
 ./md5.lo: ../include/net-snmp/version.h ../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/types.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/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/snmpUDPDomain.h
+./mib.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./mib.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
@@ -882,9 +1144,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,47 +1153,20 @@
 ./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-includes.h
 ./oid_stash.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.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/library/asn1.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/utilities.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/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/pdu_api.h
+./oid_stash.lo: ../include/net-snmp/library/asn1.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
@@ -944,10 +1177,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./oid_stash.lo: ../include/net-snmp/library/read_config.h
 ./oid_stash.lo: ../include/net-snmp/library/default_store.h
@@ -966,19 +1220,32 @@
 ./oid_stash.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpusm.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/types.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/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/snmpUDPDomain.h
+./parse.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./parse.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
@@ -993,9 +1260,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,27 +1269,37 @@
 ./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/types.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/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/snmpUDPDomain.h
+./read_config.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./read_config.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./read_config.lo: ../include/net-snmp/library/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
@@ -1039,9 +1314,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,22 +1324,33 @@
 ./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
 ./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/types.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/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/snmpUDPDomain.h
+./scapi.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./scapi.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
@@ -1075,9 +1359,7 @@
 ./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,55 +1370,39 @@
 ./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/library/types.h
 ./snmpAAL5PVCDomain.lo: ../include/net-snmp/definitions.h
 ./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_api.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/varbind_api.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_client.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/pdu_api.h
 ./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/asn1.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/session_api.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/callback.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_service.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/mib.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/mib_api.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/parse.h
+./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/oid_stash.h
 ./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp.h
 ./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp-tc.h
 ./snmpAAL5PVCDomain.lo: ../include/net-snmp/output_api.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_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
@@ -1145,229 +1411,36 @@
 ./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/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/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/snmpUDPDomain.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_alarm.lo: ../include/net-snmp/library/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/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
@@ -1382,9 +1455,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
@@ -1394,20 +1465,88 @@
 ./snmp_alarm.lo: ../include/net-snmp/library/container.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_alarm.lo: ../include/net-snmp/version.h
+./snmpAliasDomain.lo: ../include/net-snmp/net-snmp-config.h
+./snmpAliasDomain.lo: ../include/net-snmp/types.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/types.h
+./snmpAliasDomain.lo: ../include/net-snmp/definitions.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_api.h
+./snmpAliasDomain.lo: ../include/net-snmp/varbind_api.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_client.h
+./snmpAliasDomain.lo: ../include/net-snmp/pdu_api.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/asn1.h
+./snmpAliasDomain.lo: ../include/net-snmp/session_api.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/callback.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_service.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/mib.h
+./snmpAliasDomain.lo: ../include/net-snmp/mib_api.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/parse.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/oid_stash.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpAliasDomain.lo: ../include/net-snmp/output_api.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpAliasDomain.lo: ../include/net-snmp/utilities.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/system.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/tools.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/int64.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/mt_support.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/data_list.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/check_varbind.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/container.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/factory.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/container_binary_array.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/container_iterator.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/container.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_assert.h
+./snmpAliasDomain.lo: ../include/net-snmp/version.h
+./snmpAliasDomain.lo: ../include/net-snmp/config_api.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/read_config.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/default_store.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpAliasDomain.lo: ../include/net-snmp/library/vacm.h
 ./snmp_api.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_api.lo: ../include/net-snmp/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/types.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/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/snmpUDPDomain.h
+./snmp_api.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_api.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_api.lo: ../include/net-snmp/library/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
@@ -1422,9 +1561,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,31 +1571,42 @@
 ./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/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/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/snmpUDPDomain.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_auth.lo: ../include/net-snmp/library/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/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
@@ -1467,9 +1615,7 @@
 ./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,43 +1625,154 @@
 ./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/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/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/snmpUDPDomain.h
+./snmp.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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/library/snmp_impl.h
+./snmp.lo: ../include/net-snmp/library/snmp.h
+./snmp.lo: ../include/net-snmp/library/snmp-tc.h
+./snmp.lo: ../include/net-snmp/output_api.h
+./snmp.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpCallbackDomain.lo: ../include/net-snmp/net-snmp-config.h
+./snmpCallbackDomain.lo: ../include/net-snmp/types.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/types.h
+./snmpCallbackDomain.lo: ../include/net-snmp/definitions.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_api.h
+./snmpCallbackDomain.lo: ../include/net-snmp/varbind_api.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_client.h
+./snmpCallbackDomain.lo: ../include/net-snmp/pdu_api.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/asn1.h
+./snmpCallbackDomain.lo: ../include/net-snmp/session_api.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/callback.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_service.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/mib.h
+./snmpCallbackDomain.lo: ../include/net-snmp/mib_api.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/parse.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/oid_stash.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpCallbackDomain.lo: ../include/net-snmp/output_api.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpCallbackDomain.lo: ../include/net-snmp/config_api.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/read_config.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/default_store.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/vacm.h
+./snmpCallbackDomain.lo: ../include/net-snmp/utilities.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/system.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/tools.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/int64.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/mt_support.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/data_list.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/check_varbind.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/container.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/factory.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/container_binary_array.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/container_iterator.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/container.h
+./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_assert.h
+./snmpCallbackDomain.lo: ../include/net-snmp/version.h
 ./snmp_client.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_client.lo: ../include/net-snmp/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/types.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/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/snmpUDPDomain.h
+./snmp_client.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_client.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_client.lo: ../include/net-snmp/library/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_client.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmp_debug.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_debug.lo: ../include/net-snmp/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/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/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/snmpUDPDomain.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_debug.lo: ../include/net-snmp/library/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/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
@@ -1530,9 +1787,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 +1797,72 @@
 ./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
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/net-snmp-config.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/types.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/types.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/definitions.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_api.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/varbind_api.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_client.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/pdu_api.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/asn1.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/session_api.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/callback.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_service.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/mib.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/mib_api.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/parse.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/oid_stash.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/output_api.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/config_api.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/read_config.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/default_store.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/vacm.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpDTLSUDPDomain.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/system.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/tools.h
+./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_openssl.h
 ./snmp_enum.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_enum.lo: ../include/net-snmp/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/types.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/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/snmpUDPDomain.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_enum.lo: ../include/net-snmp/library/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,20 +1873,129 @@
 ./snmp_enum.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmp_enum.lo: ../include/net-snmp/library/vacm.h
 ./snmp_enum.lo: ../include/net-snmp/library/tools.h
+./snmpIPXDomain.lo: ../include/net-snmp/net-snmp-config.h
+./snmpIPXDomain.lo: ../include/net-snmp/types.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/types.h
+./snmpIPXDomain.lo: ../include/net-snmp/definitions.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_api.h
+./snmpIPXDomain.lo: ../include/net-snmp/varbind_api.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_client.h
+./snmpIPXDomain.lo: ../include/net-snmp/pdu_api.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/asn1.h
+./snmpIPXDomain.lo: ../include/net-snmp/session_api.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/callback.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_service.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/mib.h
+./snmpIPXDomain.lo: ../include/net-snmp/mib_api.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/parse.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/oid_stash.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmp.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpIPXDomain.lo: ../include/net-snmp/output_api.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpIPXDomain.lo: ../include/net-snmp/config_api.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/read_config.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/default_store.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpIPXDomain.lo: ../include/net-snmp/library/vacm.h
+./snmpksm.lo: ../include/net-snmp/net-snmp-config.h
+./snmpksm.lo: ../include/net-snmp/output_api.h ../include/net-snmp/types.h
+./snmpksm.lo: ../include/net-snmp/library/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/snmpUDPDomain.h
+./snmpksm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpksm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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/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_debug.h
+./snmpksm.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpksm.lo: ../include/net-snmp/config_api.h
+./snmpksm.lo: ../include/net-snmp/library/read_config.h
+./snmpksm.lo: ../include/net-snmp/library/default_store.h
+./snmpksm.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpksm.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpksm.lo: ../include/net-snmp/library/vacm.h
+./snmpksm.lo: ../include/net-snmp/utilities.h
+./snmpksm.lo: ../include/net-snmp/library/system.h
+./snmpksm.lo: ../include/net-snmp/library/tools.h
+./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/data_list.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
+./snmpksm.lo: ../include/net-snmp/library/container_binary_array.h
+./snmpksm.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmpksm.lo: ../include/net-snmp/library/container_iterator.h
+./snmpksm.lo: ../include/net-snmp/library/container.h
+./snmpksm.lo: ../include/net-snmp/library/snmp_assert.h
+./snmpksm.lo: ../include/net-snmp/version.h
+./snmpksm.lo: ../include/net-snmp/library/keytools.h
+./snmpksm.lo: ../include/net-snmp/library/snmpv3.h
+./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/snmpksm.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/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/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/snmpUDPDomain.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_logging.lo: ../include/net-snmp/library/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/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
@@ -1590,9 +2010,7 @@
 ./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
@@ -1602,20 +2020,100 @@
 ./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/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/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/snmpUDPDomain.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_openssl.lo: ../include/net-snmp/library/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/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/snmp_logging.h
+./snmp_openssl.lo: ../include/net-snmp/library/container_binary_array.h
+./snmp_openssl.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmp_openssl.lo: ../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_openssl.lo: ../include/net-snmp/snmpv3_api.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpv3.h
+./snmp_openssl.lo: ../include/net-snmp/library/transform_oids.h
+./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/snmpusm.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmp_openssl.h
 ./snmp_parse_args.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_parse_args.lo: ../include/net-snmp/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/library/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/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/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/snmpUDPDomain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/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/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
@@ -1630,9 +2128,7 @@
 ./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
@@ -1642,26 +2138,39 @@
 ./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/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/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/snmpUDPDomain.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_secmod.lo: ../include/net-snmp/library/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/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
@@ -1676,9 +2185,7 @@
 ./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
@@ -1689,42 +2196,19 @@
 ./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/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/varbind_api.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/pdu_api.h
+./snmp_service.lo: ../include/net-snmp/library/asn1.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
@@ -1735,11 +2219,31 @@
 ./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/mib_api.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/library/oid_stash.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/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/config_api.h
 ./snmp_service.lo: ../include/net-snmp/library/read_config.h
 ./snmp_service.lo: ../include/net-snmp/library/default_store.h
@@ -1757,20 +2261,167 @@
 ./snmp_service.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpusm.h
+./snmpSSHDomain.lo: ../include/net-snmp/net-snmp-config.h
+./snmpSSHDomain.lo: ../include/net-snmp/types.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/types.h
+./snmpSSHDomain.lo: ../include/net-snmp/definitions.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_api.h
+./snmpSSHDomain.lo: ../include/net-snmp/varbind_api.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_client.h
+./snmpSSHDomain.lo: ../include/net-snmp/pdu_api.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/asn1.h
+./snmpSSHDomain.lo: ../include/net-snmp/session_api.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/callback.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_service.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/mib.h
+./snmpSSHDomain.lo: ../include/net-snmp/mib_api.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/parse.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/oid_stash.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmp.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpSSHDomain.lo: ../include/net-snmp/output_api.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/tools.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/system.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/default_store.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmpSSHDomain.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/read_config.h
+./snmpSSHDomain.lo: ../include/net-snmp/config_api.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpSSHDomain.lo: ../include/net-snmp/library/vacm.h
+./snmpSTDDomain.lo: ../include/net-snmp/net-snmp-config.h
+./snmpSTDDomain.lo: ../include/net-snmp/types.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/types.h
+./snmpSTDDomain.lo: ../include/net-snmp/definitions.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_api.h
+./snmpSTDDomain.lo: ../include/net-snmp/varbind_api.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_client.h
+./snmpSTDDomain.lo: ../include/net-snmp/pdu_api.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/asn1.h
+./snmpSTDDomain.lo: ../include/net-snmp/session_api.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/callback.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_service.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/mib.h
+./snmpSTDDomain.lo: ../include/net-snmp/mib_api.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/parse.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/oid_stash.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmp.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpSTDDomain.lo: ../include/net-snmp/output_api.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/snmpSTDDomain.h
+./snmpSTDDomain.lo: ../include/net-snmp/library/tools.h
+./snmp-tc.lo: ../include/net-snmp/net-snmp-config.h
+./snmp-tc.lo: ../include/net-snmp/types.h
+./snmp-tc.lo: ../include/net-snmp/library/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/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/snmpUDPDomain.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp-tc.lo: ../include/net-snmp/library/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
+./snmpTCPDomain.lo: ../include/net-snmp/net-snmp-config.h
+./snmpTCPDomain.lo: ../include/net-snmp/types.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/types.h
+./snmpTCPDomain.lo: ../include/net-snmp/definitions.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_api.h
+./snmpTCPDomain.lo: ../include/net-snmp/varbind_api.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_client.h
+./snmpTCPDomain.lo: ../include/net-snmp/pdu_api.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/asn1.h
+./snmpTCPDomain.lo: ../include/net-snmp/session_api.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/callback.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_service.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/mib.h
+./snmpTCPDomain.lo: ../include/net-snmp/mib_api.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/parse.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/oid_stash.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmp.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpTCPDomain.lo: ../include/net-snmp/output_api.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpTCPIPv6Domain.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp_transport.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_transport.lo: ../include/net-snmp/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/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/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/snmpUDPDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_transport.lo: ../include/net-snmp/library/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/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
@@ -1779,9 +2430,7 @@
 ./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
@@ -1791,80 +2440,174 @@
 ./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
-./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/definitions.h
-./snmpksm.lo: ../include/net-snmp/library/snmp_api.h
-./snmpksm.lo: ../include/net-snmp/library/asn1.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
-./snmpksm.lo: ../include/net-snmp/library/read_config.h
-./snmpksm.lo: ../include/net-snmp/library/default_store.h
-./snmpksm.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmpksm.lo: ../include/net-snmp/library/snmp_enum.h
-./snmpksm.lo: ../include/net-snmp/library/vacm.h
-./snmpksm.lo: ../include/net-snmp/utilities.h
-./snmpksm.lo: ../include/net-snmp/library/system.h
-./snmpksm.lo: ../include/net-snmp/library/tools.h
-./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
-./snmpksm.lo: ../include/net-snmp/library/container_binary_array.h
-./snmpksm.lo: ../include/net-snmp/library/container_list_ssll.h
-./snmpksm.lo: ../include/net-snmp/library/container_iterator.h
-./snmpksm.lo: ../include/net-snmp/library/container.h
-./snmpksm.lo: ../include/net-snmp/library/snmp_assert.h
-./snmpksm.lo: ../include/net-snmp/version.h
-./snmpksm.lo: ../include/net-snmp/library/keytools.h
-./snmpksm.lo: ../include/net-snmp/library/snmpv3.h
-./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
+./snmptsm.lo: ../include/net-snmp/net-snmp-config.h
+./snmptsm.lo: ../include/net-snmp/net-snmp-includes.h
+./snmptsm.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmptsm.lo: ../include/net-snmp/library/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/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/snmpUDPDomain.h
+./snmptsm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptsm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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/snmp_logging.h
+./snmptsm.lo: ../include/net-snmp/library/container_binary_array.h
+./snmptsm.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmptsm.lo: ../include/net-snmp/library/container_iterator.h
+./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/output_api.h
+./snmptsm.lo: ../include/net-snmp/library/snmp_debug.h
+./snmptsm.lo: ../include/net-snmp/snmpv3_api.h
+./snmptsm.lo: ../include/net-snmp/library/snmpv3.h
+./snmptsm.lo: ../include/net-snmp/library/transform_oids.h
+./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/snmpusm.h
+./snmptsm.lo: ../include/net-snmp/library/snmptsm.h
+./snmpUDPDomain.lo: ../include/net-snmp/net-snmp-config.h
+./snmpUDPDomain.lo: ../include/net-snmp/types.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/types.h
+./snmpUDPDomain.lo: ../include/net-snmp/definitions.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_api.h
+./snmpUDPDomain.lo: ../include/net-snmp/varbind_api.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_client.h
+./snmpUDPDomain.lo: ../include/net-snmp/pdu_api.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/asn1.h
+./snmpUDPDomain.lo: ../include/net-snmp/session_api.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/callback.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_service.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/mib.h
+./snmpUDPDomain.lo: ../include/net-snmp/mib_api.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/parse.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/oid_stash.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmp.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpUDPDomain.lo: ../include/net-snmp/output_api.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpUDPDomain.lo: ../include/net-snmp/config_api.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/read_config.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/default_store.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/vacm.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/system.h
+./snmpUDPDomain.lo: ../include/net-snmp/library/tools.h
+./snmpUDPIPv6Domain.lo: ../include/net-snmp/net-snmp-config.h
+./snmpUnixDomain.lo: ../include/net-snmp/net-snmp-config.h
+./snmpUnixDomain.lo: ../include/net-snmp/types.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/types.h
+./snmpUnixDomain.lo: ../include/net-snmp/definitions.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_api.h
+./snmpUnixDomain.lo: ../include/net-snmp/varbind_api.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_client.h
+./snmpUnixDomain.lo: ../include/net-snmp/pdu_api.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/asn1.h
+./snmpUnixDomain.lo: ../include/net-snmp/session_api.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/callback.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_service.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/mib.h
+./snmpUnixDomain.lo: ../include/net-snmp/mib_api.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/parse.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/oid_stash.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmp.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpUnixDomain.lo: ../include/net-snmp/output_api.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpUnixDomain.lo: ../include/net-snmp/config_api.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/read_config.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/default_store.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/vacm.h
+./snmpUnixDomain.lo: ../include/net-snmp/library/system.h
 ./snmpusm.lo: ../include/net-snmp/net-snmp-config.h
-./snmpusm.lo: ../include/net-snmp/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/types.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/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/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/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
@@ -1879,9 +2622,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,22 +2637,34 @@
 ./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/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/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/snmpUDPDomain.h
+./snmpv3.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpv3.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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/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
@@ -1926,9 +2679,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,74 +2694,71 @@
 ./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/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/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/snmpUDPDomain.h
+./strlcat.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./strlcat.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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/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
 ./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
 ./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/definitions.h
-./strtoull.lo: ../include/net-snmp/library/snmp_api.h
-./strtoull.lo: ../include/net-snmp/library/asn1.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/types.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/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/snmpUDPDomain.h
+./system.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./system.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
@@ -2019,9 +2767,7 @@
 ./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,40 +2778,23 @@
 ./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
+./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
 ./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/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/varbind_api.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/pdu_api.h
+./test_binary_array.lo: ../include/net-snmp/library/asn1.h
 ./test_binary_array.lo: ../include/net-snmp/session_api.h
+./test_binary_array.lo: ../include/net-snmp/library/callback.h
 ./test_binary_array.lo: ../include/net-snmp/library/snmp_transport.h
 ./test_binary_array.lo: ../include/net-snmp/library/snmp_service.h
 ./test_binary_array.lo: ../include/net-snmp/library/snmpCallbackDomain.h
@@ -2076,11 +2805,31 @@
 ./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/mib_api.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/library/oid_stash.h
+./test_binary_array.lo: ../include/net-snmp/library/snmp_impl.h
+./test_binary_array.lo: ../include/net-snmp/library/snmp.h
+./test_binary_array.lo: ../include/net-snmp/library/snmp-tc.h
+./test_binary_array.lo: ../include/net-snmp/library/getopt.h
+./test_binary_array.lo: ../include/net-snmp/utilities.h
+./test_binary_array.lo: ../include/net-snmp/library/system.h
+./test_binary_array.lo: ../include/net-snmp/library/tools.h
+./test_binary_array.lo: ../include/net-snmp/library/int64.h
+./test_binary_array.lo: ../include/net-snmp/library/mt_support.h
+./test_binary_array.lo: ../include/net-snmp/library/snmp_alarm.h
+./test_binary_array.lo: ../include/net-snmp/library/data_list.h
+./test_binary_array.lo: ../include/net-snmp/library/check_varbind.h
+./test_binary_array.lo: ../include/net-snmp/library/container.h
+./test_binary_array.lo: ../include/net-snmp/library/factory.h
+./test_binary_array.lo: ../include/net-snmp/library/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/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
@@ -2099,39 +2848,17 @@
 ./test_binary_array.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./test_binary_array.lo: ../include/net-snmp/library/snmpusm.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-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/types.h
 ./text_utils.lo: ../include/net-snmp/library/snmp_api.h
-./text_utils.lo: ../include/net-snmp/library/asn1.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/utilities.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/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/pdu_api.h
+./text_utils.lo: ../include/net-snmp/library/asn1.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
@@ -2142,10 +2869,31 @@
 ./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/mib_api.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/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/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/data_list.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/config_api.h
 ./text_utils.lo: ../include/net-snmp/library/read_config.h
 ./text_utils.lo: ../include/net-snmp/library/default_store.h
@@ -2166,19 +2914,32 @@
 ./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/types.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/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/snmpUDPDomain.h
+./tools.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./tools.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
@@ -2187,9 +2948,7 @@
 ./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,22 +2957,17 @@
 ./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/types.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/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
@@ -2225,27 +2979,46 @@
 ./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/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/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/snmpUDPDomain.h
+./vacm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./vacm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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/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
diff --git a/snmplib/Makefile.in b/snmplib/Makefile.in
index 34e30e6..afd5624 100644
--- a/snmplib/Makefile.in
+++ b/snmplib/Makefile.in
@@ -55,6 +55,7 @@
 	factory.h \
 	data_list.h \
 	default_store.h \
+	dir_utils.h \
 	fd_event_manager.h \
 	file_utils.h \
 	int64.h \
@@ -67,6 +68,7 @@
 	snmp.h \
 	snmp_alarm.h \
 	snmp_api.h \
+	large_fd_set.h \
 	snmp_assert.h \
 	snmp_client.h \
 	snmp_debug.h \
@@ -80,6 +82,7 @@
 	text_utils.h \
 	tools.h \
 	transform_oids.h \
+	types.h \
         cmu_compat.h \
         getopt.h \
         lcd_time.h \
@@ -111,6 +114,7 @@
 	scapi.h		\
 	snmp_alarm.h	\
 	snmp_api.h	\
+	large_fd_set.h	\
 	snmp_client.h	\
 	snmp_debug.h	\
 	snmp.h		\
@@ -134,10 +138,11 @@
 # Things to build
 #
 CSRCS=	snmp_client.c mib.c parse.c snmp_api.c snmp.c 		\
+	large_fd_set.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		\
+	snmpv3.c lcd_time.c keytools.c file_utils.c dir_utils.c \
 	scapi.c callback.c default_store.c snmp_alarm.c		\
 	data_list.c oid_stash.c fd_event_manager.c 		\
 	mt_support.c snmp_enum.c snmp-tc.c snmp_service.c	\
@@ -146,13 +151,14 @@
 	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@
+	cmu_compat.c ucd_compat.c snmp_openssl.c @other_src_list@
 
 OBJS=	snmp_client.o mib.o parse.o snmp_api.o snmp.o 		\
+	large_fd_set.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		\
+	snmpv3.o lcd_time.o keytools.o file_utils.o dir_utils.o \
 	scapi.o callback.o default_store.o snmp_alarm.o		\
 	data_list.o oid_stash.o fd_event_manager.o		\
 	mt_support.o snmp_enum.o snmp-tc.o snmp_service.o	\
@@ -161,13 +167,14 @@
 	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@
+	cmu_compat.o ucd_compat.o snmp_openssl.o @other_objs_list@
 
 LOBJS=	snmp_client.lo mib.lo parse.lo snmp_api.lo snmp.lo 	\
+	large_fd_set.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		\
+	snmpv3.lo lcd_time.lo keytools.lo file_utils.lo dir_utils.lo \
 	scapi.lo callback.lo default_store.lo snmp_alarm.lo		\
 	data_list.lo oid_stash.lo fd_event_manager.lo		\
 	mt_support.lo snmp_enum.lo snmp-tc.lo snmp_service.lo	\
@@ -176,7 +183,7 @@
 	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@
+	cmu_compat.lo ucd_compat.lo snmp_openssl.lo @other_lobjs_list@
 
 # just in case someone wants to remove libtool, change this to OBJS.
 TOBJS=$(LOBJS)
@@ -188,11 +195,11 @@
 
 # how to build the libraries.
 libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION):    $(TOBJS)
-	$(LIB_LD_CMD) $@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
+	$(LIB_LD_CMD) $@ @LD_NO_UNDEFINED@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
 	$(RANLIB) $@
 
 libsnmp.$(LIB_EXTENSION)$(LIB_VERSION):    $(TOBJS)
-	$(LIB_LD_CMD) $@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
+	$(LIB_LD_CMD) $@ @LD_NO_UNDEFINED@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
 	$(RANLIB) $@
 
 #
diff --git a/snmplib/asn1.c b/snmplib/asn1.c
index 2346e6c..f9632ef 100644
--- a/snmplib/asn1.c
+++ b/snmplib/asn1.c
@@ -251,6 +251,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 +500,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 +526,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,12 +572,17 @@
         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)) ||
+    if (((int) asn_length > (intsize + 1)) || ((int) asn_length == 0) ||
         (((int) asn_length == intsize + 1) && *bufp != 0x00)) {
         _asn_length_err(errpre, (size_t) asn_length, intsize);
         return NULL;
@@ -570,7 +598,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 +677,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 +773,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,6 +816,12 @@
     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)) {
@@ -1286,6 +1320,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 +1335,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 +1708,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 +1832,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 +2039,7 @@
     DEBUGIF("dumpv_send") {
         char            i64buf[I64CHARSZ + 1];
         printU64(i64buf, cp);
-        DEBUGMSG(("dumpv_send", i64buf));
+        DEBUGMSG(("dumpv_send", "%s", i64buf));
     }
     return data;
 }
@@ -2224,6 +2275,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 +2316,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 +2446,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 +2489,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 +2620,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 +2820,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 +2973,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/container.c b/snmplib/container.c
index 08a4c63..b56441e 100644
--- a/snmplib/container.c
+++ b/snmplib/container.c
@@ -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.
+ */
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/library/container.h>
@@ -71,10 +81,14 @@
                                netsnmp_container_get_factory("sorted_singly_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);
 
 }
@@ -323,7 +337,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;
@@ -345,12 +360,15 @@
         x = x->next;
     while(x) {
         netsnmp_container *tmp;
+        const char *name;
         tmp = x->prev;
+        name = x->container_name;
         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);
+            snmp_log(LOG_ERR,"error on subcontainer '%s' cfree (%d)\n",
+                     name ? name : "", rc2);
             rc = rc2;
         }
         x = tmp;
@@ -495,6 +513,12 @@
                    strlen(((const container_type*)rhs)->name));
 }
 
+int
+netsnmp_compare_direct_cstring(const void * lhs, const void * rhs)
+{
+    return strcmp((const char*)lhs, (const char*)rhs);
+}
+
 /*
  * compare two memory buffers
  *
diff --git a/snmplib/container_binary_array.c b/snmplib/container_binary_array.c
index 43efc4b..7d11c37 100644
--- a/snmplib/container_binary_array.c
+++ b/snmplib/container_binary_array.c
@@ -232,7 +232,7 @@
      * if there is no data, return NULL;
      */
     if (!t->count)
-        return 0;
+        return NULL;
 
     /*
      * if the table is dirty, sort it.
@@ -245,7 +245,7 @@
      */
     if (key) {
         if ((index = binary_search(key, c, exact)) == -1)
-            return 0;
+            return NULL;
     }
 
     return t->data[index];
@@ -336,8 +336,8 @@
 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
+    int             new_max;
+    void           *new_data;   /* Used for * a) extending the data table
                                  * * b) the next entry to use */
     /*
      * check for duplicates
@@ -361,14 +361,13 @@
         if (new_max == 0)
             new_max = 10;       /* Start with 10 entries */
 
-        new_size = new_max * t->data_size;
-        new_data = (char *) realloc(t->data, new_size);
+        new_data = (void *) calloc(new_max, t->data_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);
+
+        if (t->data) {
+            memcpy(new_data, t->data, t->max_size * t->data_size);
+            SNMP_FREE(t->data);
         }
         t->data = (void**)new_data;
         t->max_size = new_max;
@@ -434,7 +433,7 @@
      * if there is no data, return NULL;
      */
     if (!t->count || !key)
-        return 0;
+        return NULL;
 
     /*
      * if the table is dirty, sort it.
@@ -447,7 +446,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))
diff --git a/snmplib/container_list_ssll.c b/snmplib/container_list_ssll.c
index 8782fd0..14a6a72 100644
--- a/snmplib/container_list_ssll.c
+++ b/snmplib/container_list_ssll.c
@@ -44,6 +44,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 +94,13 @@
  *
  *
  **********************************************************************/
-static void
+static int
 _ssll_free(netsnmp_container *c)
 {
     if(c) {
         free(c);
     }
+    return 0;
 }
 
 static void *
@@ -125,6 +135,7 @@
         return -1;
     new_node->data = NETSNMP_REMOVE_CONST(void *, data);
     ++sl->count;
+    ++c->sync;
 
     /*
      * first node?
@@ -223,6 +234,7 @@
      */
     free(curr);
     --sl->count;
+    ++c->sync;
     
     return 0;
 }
@@ -278,6 +290,7 @@
     }
     sl->head = NULL;
     sl->count = 0;
+    ++c->sync;
 }
 
 /**********************************************************************
@@ -297,7 +310,7 @@
         return NULL;
     }
 
-    sl->c.cfree = (netsnmp_container_rc*)_ssll_free;
+    sl->c.cfree = _ssll_free;
         
     sl->c.get_size = _ssll_size;
     sl->c.init = NULL;
@@ -306,7 +319,7 @@
     sl->c.find = _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 +404,154 @@
                                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;
+}
diff --git a/snmplib/container_null.c b/snmplib/container_null.c
index 10082af..04cca21 100644
--- a/snmplib/container_null.c
+++ b/snmplib/container_null.c
@@ -156,7 +156,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;
        
diff --git a/snmplib/data_list.c b/snmplib/data_list.c
index 01a7d2c..8188598 100644
--- a/snmplib/data_list.c
+++ b/snmplib/data_list.c
@@ -6,13 +6,6 @@
 #include <net-snmp/net-snmp-config.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);
-
-
 /** @defgroup data_list generic linked-list data handling with a string as a key.
  * @ingroup library
  * @{
@@ -69,8 +62,8 @@
         return NULL;
     node->name = strdup(name);
     if (!node->name) {
-      free(node);
-      return NULL;
+        free(node);
+        return NULL;
     }
     node->data = data;
     node->free_func = beer;
@@ -78,18 +71,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
  */
@@ -131,6 +112,18 @@
 }
 
 /** 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
diff --git a/snmplib/default_store.c b/snmplib/default_store.c
index 8e94057..9bfd228 100644
--- a/snmplib/default_store.c
+++ b/snmplib/default_store.c
@@ -324,7 +324,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;
@@ -442,10 +442,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 +492,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 +530,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..d203c92
--- /dev/null
+++ b/snmplib/dir_utils.c
@@ -0,0 +1,145 @@
+/* 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 <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/container_binary_array.h>
+#include <net-snmp/library/dir_utils.h>
+
+netsnmp_container *
+netsnmp_directory_container_read(netsnmp_container *user_container,
+                                 const char *dirname, u_int flags)
+{
+    DIR               *dir;
+    netsnmp_container *container = user_container;
+    struct dirent     *file;
+    char               path[PATH_MAX];
+    u_char             dirname_len;
+    int                rc;
+#if !(defined(HAVE_STRUCT_DIRENT_D_TYPE) && defined(DT_DIR)) && defined(S_ISDIR)
+    struct stat        statbuf;
+#endif
+
+    DEBUGMSGTL(("directory:container", "reading %s\n", dirname));
+
+    /*
+     * create the container, if needed
+     */
+    if (NULL == container) {
+        container = netsnmp_container_find("directory_container:cstring");
+        if (NULL == container)
+            return NULL;
+        container->container_name = strdup("directory container");
+        netsnmp_binary_array_options_set(container, 1, CONTAINER_KEY_UNSORTED);
+    }
+
+    dir = opendir(dirname);
+    if (NULL == dir) {
+        DEBUGMSGTL(("directory:container", "  not a dir\n"));
+        return NULL;
+    }
+
+    /** copy dirname into path */
+    dirname_len = strlen(dirname);
+    strlcpy(path, dirname, sizeof(path));
+    if ((dirname_len + 2) > sizeof(path)) {
+        /** not enough room for files */
+        closedir(dir);
+        return NULL;
+    }
+    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);
+        DEBUGMSGTL(("9:directory:container", "  found %s\n", path));
+#if defined(HAVE_STRUCT_DIRENT_D_TYPE) && defined(DT_DIR)
+        if ((file->d_type == DT_DIR) && (flags & NETSNMP_DIR_RECURSE)) {
+#elif defined(S_ISDIR)
+        if ((flags & NETSNMP_DIR_RECURSE) && (stat(file->d_name, &statbuf) != 0) && (S_ISDIR(statbuf.st_mode))) {
+#else
+        if (flags & NETSNMP_DIR_RECURSE) {
+#endif
+            /** xxx add the dir as well? not for now.. maybe another flag? */
+            netsnmp_directory_container_read(container, path, flags);
+        }
+        else {
+            char *dup = strdup(path);
+            if (NULL == dup) {
+               snmp_log(LOG_ERR, "strdup failed\n");
+               break;
+            }
+            rc = CONTAINER_INSERT(container, dup);
+            if (-1 == rc ) {
+                DEBUGMSGTL(("directory:container", "  err adding %s\n", path));
+                free(dup);
+            }
+        }
+    }
+
+    closedir(dir);
+
+    DEBUGMSGTL(("directory:container", "  container now has %d items\n",
+                (int)CONTAINER_SIZE(container)));
+    
+    return container;
+}
+
+void
+netsnmp_directory_container_free(netsnmp_container *container)
+{
+    CONTAINER_CLEAR(container, netsnmp_container_simple_free, NULL);
+    CONTAINER_FREE(container);
+}
diff --git a/snmplib/fd_event_manager.c b/snmplib/fd_event_manager.c
index c81cfde..ae99c04 100644
--- a/snmplib/fd_event_manager.c
+++ b/snmplib/fd_event_manager.c
@@ -7,6 +7,9 @@
 #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>
+
+
 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 +162,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");
+  }
+
+  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,37 +221,70 @@
  */
 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");
+  }
+
+  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)--;
       }
   }
diff --git a/snmplib/file_utils.c b/snmplib/file_utils.c
index 8f7fb6a..9f19b36 100644
--- a/snmplib/file_utils.c
+++ b/snmplib/file_utils.c
@@ -161,7 +161,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));
     }
 
     /*
@@ -200,7 +200,7 @@
      */
     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;
diff --git a/snmplib/inet_pton.c b/snmplib/inet_pton.c
index 0a03a8f..8b5c71e 100644
--- a/snmplib/inet_pton.c
+++ b/snmplib/inet_pton.c
@@ -52,9 +52,6 @@
 #ifndef INT16SZ
 #define	INT16SZ		2
 #endif
-  /*
-   * End of Net-SNMP Win32 additions
-   */
 
 #ifndef INADDRSZ
 #define	INADDRSZ	4
diff --git a/snmplib/int64.c b/snmplib/int64.c
index ea56673..a8178f1 100644
--- a/snmplib/int64.c
+++ b/snmplib/int64.c
@@ -266,7 +266,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 +345,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 +375,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)
diff --git a/snmplib/keytools.c b/snmplib/keytools.c
index aa6a712..77030bd 100644
--- a/snmplib/keytools.c
+++ b/snmplib/keytools.c
@@ -137,16 +137,19 @@
     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);
 #else
     MDbegin(&MD);
diff --git a/snmplib/large_fd_set.c b/snmplib/large_fd_set.c
new file mode 100644
index 0000000..490e397
--- /dev/null
+++ b/snmplib/large_fd_set.c
@@ -0,0 +1,246 @@
+/**
+ * @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>
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#ifdef HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+
+#include <net-snmp/library/snmp_assert.h>
+#include <net-snmp/library/large_fd_set.h>
+
+
+#if !defined(cygwin) && defined(HAVE_WINSOCK_H)
+
+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
+
+void
+netsnmp_large_fd_setfd(int fd, netsnmp_large_fd_set * fdset)
+{
+    netsnmp_assert(fd >= 0);
+
+    while (fd >= fdset->lfs_setsize)
+        netsnmp_large_fd_set_resize(fdset, 2 * (fdset->lfs_setsize + 1));
+
+    FD_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)
+        FD_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 && FD_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)
+    {
+        int             i;
+
+        /*
+         * Unix: when enlarging, clear the file descriptors defined in the
+         * resized *fdset but that were not defined in the original *fdset.
+         */
+        for (i = fdset->lfs_setsize; i < setsize; i++)
+            FD_CLR(i, fdset->lfs_setptr);
+    }
+#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  = 0;
+}
+
+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..3fd8551 100644
--- a/snmplib/lcd_time.c
+++ b/snmplib/lcd_time.c
@@ -298,14 +298,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 +313,7 @@
                  e = nextE;
            }
 
-           etimelist[index] = 0;
+           etimelist[index] = NULL;
      }
      return;
 }
@@ -506,6 +506,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),
diff --git a/snmplib/md5.c b/snmplib/md5.c
index b128cca..1062550 100644
--- a/snmplib/md5.c
+++ b/snmplib/md5.c
@@ -434,7 +434,7 @@
     u_char          extendedAuthKey[HASHKEYLEN];
     u_char          buf[HASHKEYLEN];
     size_t          i;
-    u_char         *cp, *newdata = 0;
+    u_char         *cp, *newdata = NULL;
     int             rc = 0;
 
     /*
diff --git a/snmplib/mib.c b/snmplib/mib.c
index 7dcf3d0..f298e2f 100644
--- a/snmplib/mib.c
+++ b/snmplib/mib.c
@@ -42,6 +42,24 @@
 #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
@@ -2341,7 +2359,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 +2576,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 +2642,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 +2683,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 +2738,7 @@
     }
 }
 
-#ifndef NETSNMP_CLEAN_NAMESPACE
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
 void
 init_mib(void)
 {
@@ -2726,6 +2747,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(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.
  */
@@ -2741,6 +2895,15 @@
     }
     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)
@@ -3285,7 +3448,7 @@
          * 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);
     }
 }
 
@@ -3541,8 +3704,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;
     }
 
@@ -3666,7 +3829,7 @@
                 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 +3840,7 @@
             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: %ld\n", oidIndex[0]));
                         return SNMPERR_GENERR;  /* sub-identifier too large */
                     }
                     uitmp = uitmp + (oidIndex[i] << (8*(3-i)));
@@ -5786,7 +5949,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;
diff --git a/snmplib/parse.c b/snmplib/parse.c
index 67819bf..ba4e84c 100644
--- a/snmplib/parse.c
+++ b/snmplib/parse.c
@@ -115,6 +115,33 @@
 #include <net-snmp/library/snmp_api.h>
 
 /*
+ * 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
  * subidentifier, or a textual string label, or both.
  * The subid is -1 if not present, and label is NULL if not present.
@@ -523,8 +550,8 @@
 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;
+struct tree        *tree_head = NULL;
 
 #define	NUMBER_OF_ROOT_NODES	3
 static struct module_import root_imports[NUMBER_OF_ROOT_NODES];
@@ -532,7 +559,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 **);
@@ -727,7 +754,7 @@
      */
 }
 
-#ifndef NETSNMP_CLEAN_NAMESPACE
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
 void
 init_mib_internals(void)
 {
@@ -951,7 +978,6 @@
 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;
@@ -1056,7 +1082,7 @@
 static int      translation_table[256];
 
 static void
-build_translation_table()
+build_translation_table(void)
 {
     int             count;
 
@@ -1142,7 +1168,7 @@
 }
 
 static void
-init_tree_roots()
+init_tree_roots(void)
 {
     struct tree    *tp, *lasttp;
     int             base_modid;
@@ -2965,7 +2991,6 @@
     strcpy(np->parent, np->next->parent);
     strcat(np->parent, "#");
     np->next->label = strdup(np->parent);
-    np->type = TRAPTYPE;
     return np;
 }
 
@@ -3938,7 +3963,7 @@
         }
 }
 
-#ifndef NETSNMP_CLEAN_NAMESPACE
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
 struct tree    *
 read_module(const char *name)
 {
@@ -4039,7 +4064,7 @@
     }
 }
 
-#ifndef NETSNMP_CLEAN_NAMESPACE
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
 int
 unload_module(const char *name)
 {
@@ -4073,7 +4098,7 @@
  * Clear module map, tree nodes, textual convention table.
  */
 void
-unload_all_mibs()
+unload_all_mibs(void)
 {
     struct module  *mp;
     struct module_compatability *mcp;
@@ -4192,7 +4217,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 +4232,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 +4256,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 +4275,7 @@
 
     if (last_err_module)
         free(last_err_module);
-    last_err_module = 0;
+    last_err_module = NULL;
 
     np = root;
     if (np != NULL) {
@@ -4267,15 +4303,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 +4319,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;
@@ -4520,6 +4556,7 @@
     register int    hash = 0;
     register struct tok *tp;
     int             too_long = 0;
+    enum { bdigits, xdigits, other } seenSymbols;
 
     /*
      * skip all white space 
@@ -4538,39 +4575,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 = 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 = 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);
@@ -4755,26 +4813,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 +4850,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 +4860,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 +4932,7 @@
 
 
 struct tree    *
-read_all_mibs()
+read_all_mibs(void)
 {
     struct module  *mp;
 
@@ -4895,7 +4946,7 @@
 
 
 #ifdef TEST
-main(int argc, char *argv[])
+int main(int argc, char *argv[])
 {
     int             i;
     struct tree    *tp;
@@ -5210,9 +5261,7 @@
         if (mp->modid == mid)
             break;
     }
-    if (mp != 0)
-        return mp;
-    return NULL;
+    return mp;
 }
 
 
diff --git a/snmplib/read_config.c b/snmplib/read_config.c
index 795033b..607a6a5 100644
--- a/snmplib/read_config.c
+++ b/snmplib/read_config.c
@@ -400,7 +400,7 @@
 }
 
 void
-unregister_all_config_handlers()
+unregister_all_config_handlers(void)
 {
     struct config_files *ctmp, *save;
     struct config_line *ltmp;
@@ -492,11 +492,11 @@
 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) {
+            char tmpbuf[1];
             DEBUGMSGTL(("read_config",
                         "Found a parser.  Calling it: %s / %s\n", token,
                         cptr));
@@ -520,9 +520,7 @@
     } 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 +541,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 +554,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 +580,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 +619,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
@@ -718,7 +707,7 @@
 {
 
     FILE           *ifile;
-    char            line[STRINGMAX], token[STRINGMAX], tmpbuf[STRINGMAX];
+    char            line[STRINGMAX], token[STRINGMAX];
     char           *cptr;
     int             i;
     struct config_line *lptr;
@@ -766,21 +755,15 @@
             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",
@@ -803,10 +786,7 @@
                 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",
                             filename, linecount, line));
@@ -871,6 +851,9 @@
     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 == '-')) {
@@ -900,6 +883,9 @@
     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 == '-')) {
@@ -948,7 +934,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 +982,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 +1022,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)) {
@@ -1465,19 +1451,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 >= 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);
 }
 
 /*
@@ -1706,8 +1725,8 @@
              * bail if not enough space.
              */
             if (ilen > *len) {
-                snmp_log(LOG_WARNING,"buffer too small to read octet string (%d < %d)\n",
-                         *len, ilen);
+                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);
@@ -1972,7 +1991,6 @@
         return readfrom;
 
     case ASN_COUNTER64:
-    {
         if (*len < sizeof(U64))
             return NULL;
         *len = sizeof(U64);
@@ -1981,11 +1999,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;
 }
 
diff --git a/snmplib/scapi.c b/snmplib/scapi.c
index d837c51..cb2d2f3 100644
--- a/snmplib/scapi.c
+++ b/snmplib/scapi.c
@@ -79,7 +79,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 
@@ -275,7 +275,7 @@
 
     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;
@@ -321,7 +321,7 @@
     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)
@@ -399,6 +399,7 @@
  * 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,
@@ -451,7 +452,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);
@@ -555,10 +559,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
diff --git a/snmplib/snmp-tc.c b/snmplib/snmp-tc.c
index efa5402..d8ae783 100644
--- a/snmplib/snmp-tc.c
+++ b/snmplib/snmp-tc.c
@@ -6,9 +6,6 @@
 
 #include <net-snmp/net-snmp-config.h>
 #include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -16,8 +13,8 @@
 #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
@@ -121,7 +118,7 @@
 }
 
 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];
@@ -164,10 +161,10 @@
      * 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 +176,7 @@
     }
 #endif
 
-#ifdef SYSV
+#if defined(SYSV) && !HAVE_STRUCT_TM_TM_GMTOFF
     /*
      * Daylight saving time
      */
@@ -202,7 +199,7 @@
 
 
 time_t
-ctime_to_timet(char *str)
+ctime_to_timet(const char *str)
 {
     struct tm       tm;
 
diff --git a/snmplib/snmpAAL5PVCDomain.c b/snmplib/snmpAAL5PVCDomain.c
index 4f2f0b0..b79fbbe 100644
--- a/snmplib/snmpAAL5PVCDomain.c
+++ b/snmplib/snmpAAL5PVCDomain.c
@@ -79,7 +79,7 @@
 
     if (t != NULL && t->sock >= 0) {
 	while (rc < 0) {
-	    rc = recvfrom(t->sock, buf, size, 0, NULL, 0);
+	    rc = recvfrom(t->sock, buf, size, 0, NULL, NULL);
 	    if (rc < 0 && errno != EINTR) {
 		break;
 	    }
diff --git a/snmplib/snmpAliasDomain.c b/snmplib/snmpAliasDomain.c
new file mode 100644
index 0000000..38c1620
--- /dev/null
+++ b/snmplib/snmpAliasDomain.c
@@ -0,0 +1,105 @@
+#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_DMALLOC_H
+#include <dmalloc.h>
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
+#include <net-snmp/utilities.h>
+#include <net-snmp/config_api.h>
+
+#include <net-snmp/library/snmp_transport.h>
+
+oid netsnmp_snmpALIASDomain[] = { 1,3,6,1,4,1,8072,3,3,7 };
+static netsnmp_tdomain aliasDomain;
+
+/* simple storage mechanism */
+static netsnmp_data_list *alias_memory = NULL;
+
+/* 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));
+}
+
+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/snmpCallbackDomain.c b/snmplib/snmpCallbackDomain.c
index 085a214..efc2cbc 100644
--- a/snmplib/snmpCallbackDomain.c
+++ b/snmplib/snmpCallbackDomain.c
@@ -87,7 +87,7 @@
     netsnmp_variable_list *vb;
     int             i = 1;
     DEBUGMSGTL((ourstring,
-                "PDU: command = %d, errstat = %d, errindex = %d\n",
+                "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++));
@@ -102,6 +102,8 @@
     callback_queue *newitem = SNMP_MALLOC_TYPEDEF(callback_queue);
     callback_queue *ptr;
 
+    if (newitem == NULL)
+        return;
     newitem->callback_num = num;
     newitem->item = item;
     if (thequeue) {
@@ -389,6 +391,10 @@
      * 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;
@@ -448,6 +454,8 @@
      * 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;
diff --git a/snmplib/snmpDTLSUDPDomain.c b/snmplib/snmpDTLSUDPDomain.c
new file mode 100644
index 0000000..33e91a6
--- /dev/null
+++ b/snmplib/snmpDTLSUDPDomain.c
@@ -0,0 +1,1198 @@
+/* Portions of this file are subject to the following copyright(s).  See
+ * the Net-SNMP's COPYING file for more details and other copyrights
+ * that may apply:
+ */
+/*
+ * Portions of this file are copyrighted by:
+ * Copyright Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms specified in the COPYING file
+ * distributed with the Net-SNMP package.
+ */
+
+/*
+ * NOTE: THIS IS AN EXPERIMENTAL IMPLEMENTATION AND NOT YET SUITABLE
+ * FOR PRODUCTION USE
+ *
+ * THERE are KNOWN security ISSUES with THIS code!
+ * (if nothing else, you can't tie certificates to certain hosts/users)
+ */
+
+/*
+ * ---------- Creating Certificates ----------
+ *
+ * Example pub/priv key creation steps using openssl (replace for-user
+ * with the appropriate name, etc (e.g. for a user you might use their
+ * first.last name and for a server, use it's hostname or something)
+ *
+ *   1) create the CSR file first:
+ *
+ *         openssl req -days 365 -new -out for-user.csr -keyout for-user.priv
+ *
+ *   2) Optionally remove the passphrase if you hate that sort of thing
+ *      (obviously not recommended; useful on servers without password prompts)
+ *
+ *         openssl rsa -in for-user.priv -out for-user.insecure.priv
+ *
+ *   3) Create a self-signed key from the CSR:
+ *
+ *      openssl x509 -set_serial `date +%Y%m%d` -in for-user.csr -out for-user.cert -req -signkey for-user.insecure.priv -days 365
+ *
+ *
+ * These can then be used by the config tokens for both the client and
+ * the server:
+ *
+ * ---------- Creating a CA for issuing certs ----------
+ *
+ * TBD
+ *
+ * ---------- Configuration ----------
+ *
+ * In the snmp.conf file, you should specify the following
+ * types of configuration lines:
+ *
+ * To tell the client which keys *it* should use to authenticate with:
+ *
+ *   defX509ClientPriv /path/to/for-user.insecure.priv
+ *   defX509ClientPub  /path/to/for-user.insecure.cert
+ *
+ * To tell the client to only a list of servers:
+ *
+ *   defX509ServerCerts /path/to/server-certs.certs
+ *
+ *   (server-certs.certs can be created by simply cat'ing multiple
+ *    server cert files into ones big file)
+ *
+ * To tell the server it's certs to offer:
+ *
+ *   defX509ServerPub  /path/to/server1.insecure.cert
+ *   defX509ServerPriv /path/to/server1.insecure.priv
+ *
+ * To tell the server which keys it should accept from clients:
+ *
+ *   defX509ClientCerts /path/to/client-certs.certs
+ *
+ * To authorize for R/W a particular CommonName from those certs:
+ *
+ *   rwuser "John Doe"
+ *
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <ctype.h>
+#include <errno.h>
+
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_SYS_UIO_H
+#include <sys/uio.h>
+#endif
+
+#if HAVE_WINSOCK_H
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#endif
+
+#if HAVE_DMALLOC_H
+#include <dmalloc.h>
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
+#include <net-snmp/config_api.h>
+
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/snmpDTLSUDPDomain.h>
+#include <net-snmp/library/snmpUDPDomain.h>
+#include <net-snmp/library/system.h>
+#include <net-snmp/library/tools.h>
+#include <net-snmp/library/snmp_openssl.h>
+#include <net-snmp/library/callback.h>
+
+#include "openssl/bio.h"
+#include "openssl/ssl.h"
+#include "openssl/err.h"
+
+#ifndef INADDR_NONE
+#define INADDR_NONE	-1
+#endif
+
+#ifdef  MSG_DONTWAIT
+#define NETSNMP_DONTWAIT MSG_DONTWAIT
+#else
+#define NETSNMP_DONTWAIT 0
+#endif
+
+#define WE_ARE_SERVER 0
+#define WE_ARE_CLIENT 1
+
+oid             netsnmpDTLSUDPDomain[] = { TRANSPORT_DOMAIN_DTLS_UDP_IP };
+size_t          netsnmpDTLSUDPDomain_len = OID_LENGTH(netsnmpDTLSUDPDomain);
+
+static netsnmp_tdomain dtlsudpDomain;
+
+/* this stores openssl credentials for each connection since openssl
+   can't do it for us at the moment; hopefully future versions will
+   change */
+typedef struct bio_cache_s {
+   BIO *bio;
+   BIO *write_bio;
+   struct sockaddr_in sockaddr;
+   uint32_t ipv4addr;
+   u_short portnum;
+   SSL *con;
+   SSL_CTX *ctx;
+   struct bio_cache_s *next;
+   int msgnum;
+   int sock;
+   char *securityName;
+} bio_cache;
+
+bio_cache *biocache = NULL;
+
+/*
+ * cached SSL context information
+ * (in theory we may want more than one per client/server but it's
+ * unlikely and a CPU and memory waste unless we do need more than one)
+ */
+SSL_CTX *client_ctx, *server_ctx;
+
+/* this stores remote connections in a list to search through */
+/* XXX: optimize for searching */
+/* XXX: handle state issues for new connections to reduce DOS issues */
+/*      (TLS should do this, but openssl can't do more than one ctx per sock */
+/* XXX: put a timer on the cache for expirary purposes */
+static bio_cache *find_bio_cache(struct sockaddr_in *from_addr) {
+    bio_cache *cachep = NULL;
+    cachep = biocache;
+    while(cachep) {
+
+        if (cachep->ipv4addr == from_addr->sin_addr.s_addr &&
+            cachep->portnum == from_addr->sin_port) {
+            /* found an existing connection */
+            break;
+        }
+            
+        cachep = cachep->next;
+    }
+    return cachep;
+}
+
+static const char * _x509_get_error(int x509failvalue, const char *location) {
+    static const char *reason = NULL;
+    
+    /* XXX: use this instead: X509_verify_cert_error_string(err) */
+
+    switch (x509failvalue) {
+    case X509_V_OK:
+        reason = "X509_V_OK";
+        break;
+    case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
+        reason = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT";
+        break;
+    case X509_V_ERR_UNABLE_TO_GET_CRL:
+        reason = "X509_V_ERR_UNABLE_TO_GET_CRL";
+        break;
+    case X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE:
+        reason = "X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE";
+        break;
+    case X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE:
+        reason = "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE";
+        break;
+    case X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY:
+        reason = "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY";
+        break;
+    case X509_V_ERR_CERT_SIGNATURE_FAILURE:
+        reason = "X509_V_ERR_CERT_SIGNATURE_FAILURE";
+        break;
+    case X509_V_ERR_CRL_SIGNATURE_FAILURE:
+        reason = "X509_V_ERR_CRL_SIGNATURE_FAILURE";
+        break;
+    case X509_V_ERR_CERT_NOT_YET_VALID:
+        reason = "X509_V_ERR_CERT_NOT_YET_VALID";
+        break;
+    case X509_V_ERR_CERT_HAS_EXPIRED:
+        reason = "X509_V_ERR_CERT_HAS_EXPIRED";
+        break;
+    case X509_V_ERR_CRL_NOT_YET_VALID:
+        reason = "X509_V_ERR_CRL_NOT_YET_VALID";
+        break;
+    case X509_V_ERR_CRL_HAS_EXPIRED:
+        reason = "X509_V_ERR_CRL_HAS_EXPIRED";
+        break;
+    case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
+        reason = "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD";
+        break;
+    case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
+        reason = "X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD";
+        break;
+    case X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD:
+        reason = "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD";
+        break;
+    case X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD:
+        reason = "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD";
+        break;
+    case X509_V_ERR_OUT_OF_MEM:
+        reason = "X509_V_ERR_OUT_OF_MEM";
+        break;
+    case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
+        reason = "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT";
+        break;
+    case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN:
+        reason = "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN";
+        break;
+    case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY:
+        reason = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY";
+        break;
+    case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
+        reason = "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE";
+        break;
+    case X509_V_ERR_CERT_CHAIN_TOO_LONG:
+        reason = "X509_V_ERR_CERT_CHAIN_TOO_LONG";
+        break;
+    case X509_V_ERR_CERT_REVOKED:
+        reason = "X509_V_ERR_CERT_REVOKED";
+        break;
+    case X509_V_ERR_INVALID_CA:
+        reason = "X509_V_ERR_INVALID_CA";
+        break;
+    case X509_V_ERR_PATH_LENGTH_EXCEEDED:
+        reason = "X509_V_ERR_PATH_LENGTH_EXCEEDED";
+        break;
+    case X509_V_ERR_INVALID_PURPOSE:
+        reason = "X509_V_ERR_INVALID_PURPOSE";
+        break;
+    case X509_V_ERR_CERT_UNTRUSTED:
+        reason = "X509_V_ERR_CERT_UNTRUSTED";
+        break;
+    case X509_V_ERR_CERT_REJECTED:
+        reason = "X509_V_ERR_CERT_REJECTED";
+        break;
+    case X509_V_ERR_SUBJECT_ISSUER_MISMATCH:
+        reason = "X509_V_ERR_SUBJECT_ISSUER_MISMATCH";
+        break;
+    case X509_V_ERR_AKID_SKID_MISMATCH:
+        reason = "X509_V_ERR_AKID_SKID_MISMATCH";
+        break;
+    case X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH:
+        reason = "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH";
+        break;
+    case X509_V_ERR_KEYUSAGE_NO_CERTSIGN:
+        reason = "X509_V_ERR_KEYUSAGE_NO_CERTSIGN";
+        break;
+    case X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER:
+        reason = "X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER";
+        break;
+    case X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION:
+        reason = "X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION";
+        break;
+    case X509_V_ERR_KEYUSAGE_NO_CRL_SIGN:
+        reason = "X509_V_ERR_KEYUSAGE_NO_CRL_SIGN";
+        break;
+    case X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION:
+        reason = "X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION";
+        break;
+    case X509_V_ERR_INVALID_NON_CA:
+        reason = "X509_V_ERR_INVALID_NON_CA";
+        break;
+    case X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED:
+        reason = "X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED";
+        break;
+    case X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE:
+        reason = "X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE";
+        break;
+    case X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED:
+        reason = "X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED";
+        break;
+    case X509_V_ERR_INVALID_EXTENSION:
+        reason = "X509_V_ERR_INVALID_EXTENSION";
+        break;
+    case X509_V_ERR_INVALID_POLICY_EXTENSION:
+        reason = "X509_V_ERR_INVALID_POLICY_EXTENSION";
+        break;
+    case X509_V_ERR_NO_EXPLICIT_POLICY:
+        reason = "X509_V_ERR_NO_EXPLICIT_POLICY";
+        break;
+    case X509_V_ERR_UNNESTED_RESOURCE:
+        reason = "X509_V_ERR_UNNESTED_RESOURCE";
+        break;
+    case X509_V_ERR_APPLICATION_VERIFICATION:
+        reason = "X509_V_ERR_APPLICATION_VERIFICATION";
+    default:
+        reason = "unknown failure code";
+    }
+
+    return reason;
+}
+
+int verify_callback(int ok, X509_STORE_CTX *ctx) {
+    int err, depth;
+    char buf[1024];
+    X509 *thecert;
+
+    thecert = X509_STORE_CTX_get_current_cert(ctx);
+    err = X509_STORE_CTX_get_error(ctx);
+    depth = X509_STORE_CTX_get_error_depth(ctx);
+    
+    /* things to do: */
+
+    X509_NAME_oneline(X509_get_subject_name(thecert), buf, sizeof(buf));
+    DEBUGMSGTL(("dtlsudp_x509",
+                "Cert: %s\n", buf));
+
+
+    DEBUGMSGTL(("dtlsudp_x509",
+                " verify value: %d, depth=%d, error code=%d, error string=%s\n",
+                ok, depth, err, _x509_get_error(err, "verify callback")));
+
+    /* check if we allow self-signed certs */
+    if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_ALLOW_SELF_SIGNED) &&
+        (X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT == err ||
+         X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN == err)) {
+        DEBUGMSGTL(("dtlsudp_x509", "  accepting a self-signed certificate\n"));
+        return 1;
+    }
+    
+    
+    DEBUGMSGTL(("dtlsudp_x509", "  returing the passed in value of %d\n", ok));
+    return(ok);
+}
+
+static void _openssl_log_error(int rc, SSL *con, const char *location) {
+    const char *reason;
+
+    if (rc == -1) {
+        int sslnum = SSL_get_error(con, rc);
+
+        switch(sslnum) {
+        case SSL_ERROR_NONE:
+            reason = "SSL_ERROR_NONE";
+            break;
+
+        case SSL_ERROR_SSL:
+            reason = "SSL_ERROR_SSL";
+            break;
+
+        case SSL_ERROR_WANT_READ:
+            reason = "SSL_ERROR_WANT_READ";
+            break;
+
+        case SSL_ERROR_WANT_WRITE:
+            reason = "SSL_ERROR_WANT_WRITE";
+            break;
+
+        case SSL_ERROR_WANT_X509_LOOKUP:
+            reason = "SSL_ERROR_WANT_X509_LOOKUP";
+            break;
+
+        case SSL_ERROR_SYSCALL:
+            reason = "SSL_ERROR_SYSCALL";
+            snmp_log(LOG_ERR, "DTLS error: %s: rc=%d, sslerror = %d (%s): system_error=%d (%s)\n",
+                     location, rc, sslnum, reason, errno, strerror(errno));
+            return;
+
+        case SSL_ERROR_ZERO_RETURN:
+            reason = "SSL_ERROR_ZERO_RETURN";
+            break;
+
+        case SSL_ERROR_WANT_CONNECT:
+            reason = "SSL_ERROR_WANT_CONNECT";
+            break;
+
+        case SSL_ERROR_WANT_ACCEPT:
+            reason = "SSL_ERROR_WANT_ACCEPT";
+            break;
+            
+        default:
+            reason = "unknown";
+        }
+
+        snmp_log(LOG_ERR, "DTLS error: %s: rc=%d, sslerror = %d (%s)\n",
+                 location, rc, sslnum, reason);
+    }
+}
+
+/* XXX: lots of malloc/state cleanup needed */
+#define DIEHERE(msg) { snmp_log(LOG_ERR, "%s\n", msg); return NULL; }
+
+static bio_cache *
+start_new_cached_connection(int sock, struct sockaddr_in *remote_addr,
+                            int we_are_client) {
+    bio_cache *cachep = NULL;
+
+    if (!sock)
+        DIEHERE("no socket passed in to start_new_cached_connection\n");
+    if (!remote_addr)
+        DIEHERE("no remote_addr passed in to start_new_cached_connection\n");
+        
+    cachep = SNMP_MALLOC_TYPEDEF(bio_cache);
+    if (!cachep)
+        return NULL;
+    
+    DEBUGMSGTL(("dtlsudp", "starting a new connection\n"));
+    cachep->next = biocache;
+    biocache = cachep;
+
+    cachep->ipv4addr = remote_addr->sin_addr.s_addr;
+    cachep->portnum = remote_addr->sin_port;
+    cachep->sock = sock;
+    memcpy(&cachep->sockaddr, remote_addr, sizeof(*remote_addr));
+
+    if (we_are_client) {
+        DEBUGMSGTL(("dtlsudp", "starting a new connection as a client to sock: %d\n", sock));
+        cachep->con = SSL_new(client_ctx);
+
+        /* XXX: session setting 735 */
+
+        /* create a bio */
+
+        cachep->bio = BIO_new(BIO_s_mem()); /* The one openssl reads from */
+        cachep->write_bio = BIO_new(BIO_s_mem()); /* openssl writes to */
+
+        BIO_set_mem_eof_return(cachep->bio, -1);
+        BIO_set_mem_eof_return(cachep->write_bio, -1);
+
+        SSL_set_bio(cachep->con, cachep->bio, cachep->write_bio);
+        SSL_set_connect_state(cachep->con);
+        
+    } else {
+        /* we're the server */
+
+        cachep->bio = BIO_new(BIO_s_mem()); /* The one openssl reads from */
+
+        if (!cachep->bio)
+            DIEHERE("failed to create the read bio");
+
+        cachep->write_bio = BIO_new(BIO_s_mem()); /* openssl writes to */
+
+        if (!cachep->write_bio) {
+            DIEHERE("failed to create the write bio");
+            BIO_free(cachep->bio);
+        }
+
+        BIO_set_mem_eof_return(cachep->bio, -1);
+        BIO_set_mem_eof_return(cachep->write_bio, -1);
+
+        cachep->con = SSL_new(server_ctx);
+
+        if (!cachep->con) {
+            BIO_free(cachep->bio);
+            BIO_free(cachep->write_bio);
+            DIEHERE("failed to create the write bio");
+        }
+        
+        /* turn on cookie exchange */
+        /* XXX: we need to only create cache entries when cookies succeed */
+        SSL_set_options(cachep->con, SSL_OP_COOKIE_EXCHANGE);
+
+        /* set the bios that openssl should read from and write to */
+        /* (and we'll do the opposite) */
+        SSL_set_bio(cachep->con, cachep->bio, cachep->write_bio);
+        SSL_set_accept_state(cachep->con);
+
+    }
+
+    return cachep;
+}
+
+static bio_cache *
+find_or_create_bio_cache(int sock, struct sockaddr_in *from_addr,
+                         int we_are_client) {
+    bio_cache *cachep = find_bio_cache(from_addr);
+    if (NULL == cachep) {
+        /* none found; need to start a new context */
+        cachep = start_new_cached_connection(sock, from_addr, we_are_client);
+        if (NULL == cachep) {
+            snmp_log(LOG_ERR, "failed to open a new dtls connection\n");
+        }
+    }
+    return cachep;
+}       
+
+/*
+ * You can write something into opaque that will subsequently get passed back 
+ * to your send function if you like.  For instance, you might want to
+ * remember where a PDU came from, so that you can send a reply there...  
+ */
+
+static int
+netsnmp_dtlsudp_recv(netsnmp_transport *t, void *buf, int size,
+		 void **opaque, int *olength)
+{
+    int             rc = -1;
+    socklen_t       fromlen = sizeof(struct sockaddr);
+    netsnmp_addr_pair *addr_pair = NULL;
+    struct sockaddr *from;
+    netsnmp_tmStateReference *tmStateRef = NULL;
+    X509            *peer;
+
+    if (t != NULL && t->sock >= 0) {
+        /* create a tmStateRef cache for slow fill-in */
+        tmStateRef = SNMP_MALLOC_TYPEDEF(netsnmp_tmStateReference);
+
+        if (tmStateRef == NULL) {
+            *opaque = NULL;
+            *olength = 0;
+            return -1;
+        }
+
+        addr_pair = &tmStateRef->addresses;
+        tmStateRef->have_addresses = 1;
+        from = (struct sockaddr *) &(addr_pair->remote_addr);
+
+	while (rc < 0) {
+#if defined(linux) && defined(IP_PKTINFO)
+            rc = netsnmp_udp_recvfrom(t->sock, buf, size, from, &fromlen, &(addr_pair->local_addr));
+#else
+            rc = recvfrom(t->sock, buf, size, NETSNMP_DONTWAIT, from, &fromlen);
+#endif /* linux && IP_PKTINFO */
+	    if (rc < 0 && errno != EINTR) {
+		break;
+	    }
+	}
+
+        DEBUGMSGTL(("dtlsudp", "received %d raw bytes on way to dtls\n", rc));
+        if (rc < 0) {
+            DEBUGMSGTL(("dtlsudp", "recvfrom fd %d err %d (\"%s\")\n",
+                        t->sock, errno, strerror(errno)));
+            SNMP_FREE(tmStateRef);
+            return -1;
+        }
+
+        if (rc >= 0) {
+            /* now that we have the from address filled in, we can look up
+               the openssl context and have openssl read and process
+               appropriately */
+
+            /* if we don't have a cachep for this connection then
+               we're receiving something new and are the server
+               side */
+            /* XXX: allow for a SNMP client to never accept new conns? */
+            bio_cache *cachep =
+                find_or_create_bio_cache(t->sock, &addr_pair->remote_addr,
+                                         WE_ARE_SERVER);
+            if (NULL == cachep) {
+                SNMP_FREE(tmStateRef);
+                return -1;
+            }
+
+            /* write the received buffer to the memory-based input bio */
+            BIO_write(cachep->bio, buf, rc);
+
+            /* XXX: in Wes' other example we do a SSL_pending() call
+               too to ensure we're ready to read...  it's possible
+               that buffered stuff in openssl won't be caught by the
+               net-snmp select loop because it's already been pulled
+               out; need to deal with this) */
+            rc = SSL_read(cachep->con, buf, size);
+            
+            DEBUGMSGTL(("dtlsudp", "received %d decoded bytes from dtls\n", rc));
+
+            if (BIO_ctrl_pending(cachep->write_bio) > 0) {
+                /* we have outgoing data to send; probably DTLS negotation */
+
+                u_char outbuf[65535];
+                int outsize;
+                int rc2;
+                
+                /* for memory bios, we now read from openssl's write
+                   buffer (ie, the packet to go out) and send it out
+                   the udp port manually */
+                outsize = BIO_read(cachep->write_bio, outbuf, sizeof(outbuf));
+                if (outsize > 0) {
+                    /* should always be true. */
+#if defined(XXXFIXME) && defined(linux) && defined(IP_PKTINFO)
+                /* XXX: before this can work, we need to remember address we
+                   received it from (addr_pair) */
+                    rc2 = netsnmp_udp_sendto(cachep->sock, addr_pair->local_addr, addr_pair->remote_addr, outbuf, outsize);
+#else
+                    rc2 = sendto(t->sock, outbuf, outsize, 0, &cachep->sockaddr, sizeof(struct sockaddr));
+#endif /* linux && IP_PKTINFO */
+
+                    if (rc2 == -1) {
+                        snmp_log(LOG_ERR, "failed to send a DTLS specific packet\n");
+                    }
+                }
+            }
+
+            if (SSL_pending(cachep->con)) {
+                fprintf(stderr, "ack: got here...  pending\n");
+                exit(1);
+            }
+
+            if (rc == -1) {
+                _openssl_log_error(rc, cachep->con, "SSL_read");
+                SNMP_FREE(tmStateRef);
+
+                if (SSL_get_error(cachep->con, rc) == SSL_ERROR_WANT_READ)
+                    return -1; /* XXX: it's ok, but what's the right return? */
+                return rc;
+            }
+
+            {
+                char *str = netsnmp_udp_fmtaddr(NULL, addr_pair, sizeof(netsnmp_addr_pair));
+                DEBUGMSGTL(("dtlsudp",
+                            "recvfrom fd %d got %d bytes (from %s)\n",
+                            t->sock, rc, str));
+                free(str);
+            }
+
+            /* XXX: disallow NULL auth/encr algs in our implementations */
+            tmStateRef->transportSecurityLevel = SNMP_SEC_LEVEL_AUTHPRIV;
+
+            /* use x509 cert to do lookup to secname if DNE in cachep yet */
+            if (!cachep->securityName) {
+                if (NULL != (peer = SSL_get_peer_certificate(cachep->con))) {
+                    X509_NAME *subname;
+                    char namebuf[1024];
+                
+                    /* we have one */
+                    subname = X509_get_subject_name(peer);
+                    X509_NAME_get_text_by_NID(subname, NID_commonName,
+                                              namebuf, sizeof(namebuf));
+                    DEBUGMSGTL(("dtlsudp", "got commonname: %s\n",
+                                namebuf));
+                    cachep->securityName = strdup(namebuf);
+                    DEBUGMSGTL(("dtlsudp", "set SecName to: %s\n",
+                                cachep->securityName));
+                } else {
+                    SNMP_FREE(tmStateRef);
+                    return -1;
+                }
+            }
+
+            /* XXX: detect and throw out overflow secname sizes rather
+               than truncating. */
+            strlcpy(tmStateRef->securityName, cachep->securityName,
+                    sizeof(tmStateRef->securityName));
+            tmStateRef->securityName[sizeof(tmStateRef->securityName)-1] = '\0';
+            tmStateRef->securityNameLen = strlen(tmStateRef->securityName);
+
+            *opaque = tmStateRef;
+            *olength = sizeof(netsnmp_tmStateReference);
+
+        } else {
+            DEBUGMSGTL(("dtlsudp", "recvfrom fd %d err %d (\"%s\")\n",
+                        t->sock, errno, strerror(errno)));
+        }
+    }
+    return rc;
+}
+
+
+
+static int
+netsnmp_dtlsudp_send(netsnmp_transport *t, void *buf, int size,
+		 void **opaque, int *olength)
+{
+    int rc = -1;
+    netsnmp_addr_pair *addr_pair = NULL;
+    struct sockaddr *to = NULL;
+    bio_cache *cachep = NULL;
+    netsnmp_tmStateReference *tmStateRef = NULL;
+    u_char outbuf[65535];
+    
+    if (opaque != NULL && *opaque != NULL &&
+        *olength == sizeof(netsnmp_tmStateReference)) {
+        tmStateRef = (netsnmp_tmStateReference *) *opaque;
+
+        if (tmStateRef->have_addresses)
+            addr_pair = &(tmStateRef->addresses);
+        else if (t != NULL && t->data != NULL &&
+                 t->data_length == sizeof(netsnmp_addr_pair))
+            addr_pair = (netsnmp_addr_pair *) (t->data);
+    } else if (t != NULL && t->data != NULL &&
+               t->data_length == sizeof(netsnmp_addr_pair)) {
+        addr_pair = (netsnmp_addr_pair *) (t->data);
+    }
+
+    if (NULL == addr_pair) {
+        snmp_log(LOG_ERR, "dtlsudp_send: can't get address to send to\n");
+        return -1;
+    }
+
+    to = (struct sockaddr *) &(addr_pair->remote_addr);
+
+    if (NULL == to || NULL == t || t->sock <= 0) {
+        snmp_log(LOG_ERR, "invalid netsnmp_dtlsudp_send usage\n");
+        return -1;
+    }
+
+    /* we're always a client if we're sending to something unknown yet */
+    if (NULL ==
+        (cachep = find_or_create_bio_cache(t->sock, &addr_pair->remote_addr,
+                                           WE_ARE_CLIENT)))
+        return -1;
+
+    if (!cachep->securityName && tmStateRef && tmStateRef->securityNameLen > 0)
+        cachep->securityName = strdup(tmStateRef->securityName);
+        
+        
+    {
+        char *str = netsnmp_udp_fmtaddr(NULL, (void *) addr_pair,
+                                        sizeof(netsnmp_addr_pair));
+        DEBUGMSGTL(("dtlsudp", "send %d bytes from %p to %s on fd %d\n",
+                    size, buf, str, t->sock));
+        free(str);
+    }
+    rc = SSL_write(cachep->con, buf, size);
+    if (rc < 0) {
+        _openssl_log_error(rc, cachep->con, "SSL_write");
+    }
+
+    /* for memory bios, we now read from openssl's write buffer (ie,
+       the packet to go out) and send it out the udp port manually */
+    rc = BIO_read(cachep->write_bio, outbuf, sizeof(outbuf));
+    if (rc <= 0) {
+        /* in theory an ok thing */
+        return 0;
+    }
+#if defined(FIXME) && defined(linux) && defined(IP_PKTINFO)
+    /* XXX: before this can work, we need to remember address we
+       received it from (addr_pair) */
+    rc = netsnmp_udp_sendto(cachep->sock, &cachep->sockaddr  remote  addr_pair ? &(addr_pair->local_addr) : NULL, to, outbuf, rc);
+#else
+    rc = sendto(t->sock, outbuf, rc, 0, &cachep->sockaddr, sizeof(struct sockaddr));
+#endif /* linux && IP_PKTINFO */
+
+    return rc;
+}
+
+
+
+static int
+netsnmp_dtlsudp_close(netsnmp_transport *t)
+{
+    int rc = -1;
+    /* XXX: issue a proper dtls closure notification(s) */
+    if (t->sock >= 0) {
+#ifndef HAVE_CLOSESOCKET
+        rc = close(t->sock);
+#else
+        rc = closesocket(t->sock);
+#endif
+        t->sock = -1;
+    }
+    return rc;
+}
+
+/*
+ * Open a DTLS-based transport for SNMP.  Local is TRUE if addr is the local
+ * address to bind to (i.e. this is a server-type session); otherwise addr is 
+ * the remote address to send things to.  
+ */
+
+netsnmp_transport *
+netsnmp_dtlsudp_transport(struct sockaddr_in *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+    int             rc = 0;
+    char           *str = NULL;
+    char           *client_socket = NULL;
+    netsnmp_addr_pair addr_pair;
+
+    if (addr == NULL || addr->sin_family != AF_INET) {
+        return NULL;
+    }
+
+    memset(&addr_pair, 0, sizeof(netsnmp_addr_pair));
+    memcpy(&(addr_pair.remote_addr), addr, sizeof(struct sockaddr_in));
+
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    if (t == NULL) {
+        return NULL;
+    }
+
+    str = netsnmp_udp_fmtaddr(NULL, (void *)&addr_pair,
+                                 sizeof(netsnmp_addr_pair));
+    DEBUGMSGTL(("dtlsudp", "open %s %s\n", local ? "local" : "remote",
+                str));
+    free(str);
+
+    t->domain = netsnmpDTLSUDPDomain;
+    t->domain_length = netsnmpDTLSUDPDomain_len;
+
+    t->sock = socket(PF_INET, SOCK_DGRAM, 0);
+    DEBUGMSGTL(("dtlsudp", "openned socket %d as local=%d\n", t->sock,
+                local));
+    if (t->sock < 0) {
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+
+    /* XXX: Potentially set sock opts here (SO_SNDBUF/SO_RCV_BUF) */
+    /* XXX: and buf size */
+    _netsnmp_udp_sockopt_set(t->sock, local);
+
+    if (local) {
+        /*
+         * This session is inteneded as a server, so we must bind on to the
+         * given IP address, which may include an interface address, or could
+         * be INADDR_ANY, but certainly includes a port number.
+         */
+
+      t->local = (u_char *) malloc(6);
+        if (t->local == NULL) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(t->local, (u_char *) & (addr->sin_addr.s_addr), 4);
+        t->local[4] = (htons(addr->sin_port) & 0xff00) >> 8;
+        t->local[5] = (htons(addr->sin_port) & 0x00ff) >> 0;
+        t->local_length = 6;
+
+#if defined(linux) && defined(IP_PKTINFO)
+        { 
+            int sockopt = 1;
+            if (setsockopt(t->sock, SOL_IP, IP_PKTINFO, &sockopt, sizeof sockopt) == -1) {
+                DEBUGMSGTL(("dtlsudp", "couldn't set IP_PKTINFO: %s\n",
+                    strerror(errno)));
+                netsnmp_transport_free(t);
+                return NULL;
+            }
+            DEBUGMSGTL(("dtlsudp", "set IP_PKTINFO\n"));
+        }
+#endif
+        rc = bind(t->sock, (struct sockaddr *) addr,
+                  sizeof(struct sockaddr));
+        if (rc != 0) {
+            netsnmp_dtlsudp_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        t->data = NULL;
+        t->data_length = 0;
+    } else {
+        /*
+         * This is a client session.  If we've been given a
+         * client address to send from, then bind to that.
+         * Otherwise the send will use "something sensible".
+         */
+        client_socket = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                              NETSNMP_DS_LIB_CLIENT_ADDR);
+        if (client_socket) {
+            struct sockaddr_in client_addr;
+            netsnmp_sockaddr_in2(&client_addr, client_socket, NULL);
+            addr_pair.local_addr = client_addr.sin_addr;
+            client_addr.sin_port = 0;
+            DEBUGMSGTL(("dtlsudp", "binding socket: %d\n", t->sock));
+            rc = bind(t->sock, (struct sockaddr *)&client_addr,
+                  sizeof(struct sockaddr));
+            if ( rc != 0 ) {
+                DEBUGMSGTL(("dtlsudp", "failed to bind for clientaddr: %d %s\n",
+                            errno, strerror(errno)));
+                netsnmp_dtlsudp_close(t);
+                netsnmp_transport_free(t);
+                return NULL;
+            }
+        }
+
+        str = netsnmp_udp_fmtaddr(NULL, (void *)&addr_pair,
+                 sizeof(netsnmp_addr_pair));
+        DEBUGMSGTL(("dtlsudp", "client open %s\n", str));
+        free(str);
+
+        /*
+         * Save the (remote) address in the
+         * transport-specific data pointer for later use by netsnmp_dtlsudp_send.
+         */
+
+        t->data = SNMP_MALLOC_TYPEDEF(netsnmp_addr_pair);
+        t->remote = (u_char *)malloc(6);
+        if (t->data == NULL || t->remote == NULL) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(t->remote, (u_char *) & (addr->sin_addr.s_addr), 4);
+        t->remote[4] = (htons(addr->sin_port) & 0xff00) >> 8;
+        t->remote[5] = (htons(addr->sin_port) & 0x00ff) >> 0;
+        t->remote_length = 6;
+        memcpy(t->data, &addr_pair, sizeof(netsnmp_addr_pair));
+        t->data_length = sizeof(netsnmp_addr_pair);
+
+        /* dtls needs to bind the socket for SSL_write to work */
+        if (connect(t->sock, (struct sockaddr *) addr, sizeof(*addr)) == -1)
+            snmp_log(LOG_ERR, "dtls: failed to connect\n");
+
+    }
+
+    /*
+     * 16-bit length field, 8 byte DTLS header, 20 byte IPv4 header  
+     */
+
+    t->msgMaxSize = 0xffff - 8 - 20;
+    t->f_recv     = netsnmp_dtlsudp_recv;
+    t->f_send     = netsnmp_dtlsudp_send;
+    t->f_close    = netsnmp_dtlsudp_close;
+    t->f_accept   = NULL;
+    t->f_fmtaddr  = netsnmp_udp_fmtaddr;
+    t->flags = NETSNMP_TRANSPORT_FLAG_TUNNELED;
+
+    return t;
+}
+
+
+void
+netsnmp_dtlsudp_agent_config_tokens_register(void)
+{
+}
+
+
+
+
+netsnmp_transport *
+netsnmp_dtlsudp_create_tstring(const char *str, int local,
+			   const char *default_target)
+{
+    struct sockaddr_in addr;
+
+    if (netsnmp_sockaddr_in2(&addr, str, default_target)) {
+        return netsnmp_dtlsudp_transport(&addr, local);
+    } else {
+        return NULL;
+    }
+}
+
+
+netsnmp_transport *
+netsnmp_dtlsudp_create_ostring(const u_char * o, size_t o_len, int local)
+{
+    struct sockaddr_in addr;
+
+    if (o_len == 6) {
+        unsigned short porttmp = (o[4] << 8) + o[5];
+        addr.sin_family = AF_INET;
+        memcpy((u_char *) & (addr.sin_addr.s_addr), o, 4);
+        addr.sin_port = htons(porttmp);
+        return netsnmp_dtlsudp_transport(&addr, local);
+    }
+    return NULL;
+}
+
+#define LOGANDDIE(msg) { snmp_log(LOG_ERR, "%s\n", msg); return 0; }
+
+static int have_done_init = 0;
+
+static int
+dtlsudp_bootstrap(int majorid, int minorid, void *serverarg, void *clientarg) {
+    const char *certfile;
+    EVP_PKEY *key = NULL;
+    X509 *cert = NULL;
+    BIO *keybio = NULL;
+
+    /* don't do this more than once */
+    if (have_done_init)
+        return 0;
+    have_done_init = 1;
+
+    /***********************************************************************
+     * Set up the client context
+     */
+    client_ctx = SSL_CTX_new(DTLSv1_client_method());
+    if (!client_ctx) {
+        LOGANDDIE("can't create a new context");
+    }
+    SSL_CTX_set_read_ahead (client_ctx, 1); /* Required for DTLS */
+        
+    SSL_CTX_set_verify(client_ctx,
+                       SSL_VERIFY_PEER|
+                       SSL_VERIFY_FAIL_IF_NO_PEER_CERT|
+                       SSL_VERIFY_CLIENT_ONCE,
+                       &verify_callback);
+
+    keybio = BIO_new(BIO_s_file());
+    if (!keybio)
+        LOGANDDIE ("error creating bio for reading public key");
+
+    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                     NETSNMP_DS_LIB_X509_CLIENT_PUB);
+
+    DEBUGMSGTL(("dtlsudp", "using public key: %s\n", certfile));
+    if (BIO_read_filename(keybio, certfile) <=0)
+        LOGANDDIE ("error reading public key");
+
+    cert = PEM_read_bio_X509_AUX(keybio, NULL, NULL, NULL);
+    if (!cert)
+        LOGANDDIE("failed to load public key");
+
+    /* XXX: mem leak on previous keybio? */
+
+    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                     NETSNMP_DS_LIB_X509_CLIENT_PRIV);
+
+    keybio = BIO_new(BIO_s_file());
+    if (!keybio)
+        LOGANDDIE ("error creating bio for reading private key");
+
+    DEBUGMSGTL(("dtlsudp", "using private key: %s\n", certfile));
+    if (!keybio ||
+        BIO_read_filename(keybio, certfile) <= 0)
+        LOGANDDIE ("error reading private key");
+
+    key = PEM_read_bio_PrivateKey(keybio, NULL, NULL, NULL);
+    
+    if (!key)
+        LOGANDDIE("failed to load private key");
+
+
+    if (SSL_CTX_use_certificate(client_ctx, cert) <= 0)
+        LOGANDDIE("failed to set the certificate to use");
+
+    if (SSL_CTX_use_PrivateKey(client_ctx, key) <= 0)
+        LOGANDDIE("failed to set the private key to use");
+
+    if (!SSL_CTX_check_private_key(client_ctx))
+        LOGANDDIE("public and private keys incompatible");
+    
+
+    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                     NETSNMP_DS_LIB_X509_SERVER_CERTS);
+
+    /* XXX: also need to match individual cert to indiv. host */
+
+    if(! SSL_CTX_load_verify_locations(client_ctx, certfile, NULL)) {
+        LOGANDDIE("failed to load truststore");
+        /* Handle failed load here */
+    }
+
+    if (!SSL_CTX_set_default_verify_paths(client_ctx)) {
+        LOGANDDIE ("failed to set default verify path");
+    }
+
+    /***********************************************************************
+     * Set up the server context
+     */
+    /* setting up for ssl */
+    server_ctx = SSL_CTX_new(DTLSv1_server_method());
+    if (!server_ctx) {
+        LOGANDDIE("can't create a new context");
+    }
+
+    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                     NETSNMP_DS_LIB_X509_SERVER_PUB);
+
+    if (SSL_CTX_use_certificate_file(server_ctx, certfile,
+                                     SSL_FILETYPE_PEM) < 1) {
+        LOGANDDIE("faild to load cert");
+    }
+    
+    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                     NETSNMP_DS_LIB_X509_SERVER_PRIV);
+
+    if (SSL_CTX_use_PrivateKey_file(server_ctx, certfile, SSL_FILETYPE_PEM) < 1) {
+        LOGANDDIE("faild to load key");
+    }
+
+    SSL_CTX_set_read_ahead(server_ctx, 1);
+
+
+    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                     NETSNMP_DS_LIB_X509_CLIENT_CERTS);
+    if(! SSL_CTX_load_verify_locations(server_ctx, certfile, NULL)) {
+        LOGANDDIE("failed to load truststore");
+        /* Handle failed load here */
+    }
+
+    SSL_CTX_set_verify(server_ctx,
+                       SSL_VERIFY_PEER|
+                       SSL_VERIFY_FAIL_IF_NO_PEER_CERT|
+                       SSL_VERIFY_CLIENT_ONCE,
+                       &verify_callback);
+
+    return 0;
+}
+
+
+void
+netsnmp_dtlsudp_ctor(void)
+{
+    DEBUGMSGTL(("dtlsudp", "registering DTLS constructor\n"));
+
+    /* config settings */
+
+    /* bootstrap ssl since we'll need it */
+    netsnmp_init_openssl();
+
+    /*
+     * for the client
+     */
+
+    /* pem file of valid server CERT CAs */
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ServerCerts",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_X509_SERVER_CERTS);
+
+    /* the public client cert to authenticate with */
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ClientPub",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_X509_CLIENT_PUB);
+
+    /* the private client cert to authenticate with */
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ClientPriv",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_X509_CLIENT_PRIV);
+
+    /*
+     * for the server
+     */
+
+    /* The list of valid client keys to accept (or CAs I think) */
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ClientCerts",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_X509_CLIENT_CERTS);
+
+    /* The X509 server key to use */
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ServerPub",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_X509_SERVER_PUB);
+
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ServerPriv",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_X509_SERVER_PRIV);
+
+    netsnmp_ds_register_config(ASN_BOOLEAN, "snmp", "AllowSelfSignedX509",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_ALLOW_SELF_SIGNED);
+
+    /*
+     * register our boot-strapping needs
+     */
+    snmp_register_callback(SNMP_CALLBACK_LIBRARY,
+			   SNMP_CALLBACK_POST_READ_CONFIG,
+			   dtlsudp_bootstrap, NULL);
+
+    dtlsudpDomain.name = netsnmpDTLSUDPDomain;
+    dtlsudpDomain.name_length = netsnmpDTLSUDPDomain_len;
+    dtlsudpDomain.prefix = (const char**)calloc(2, sizeof(char *));
+    dtlsudpDomain.prefix[0] = "dtlsudp";
+
+    dtlsudpDomain.f_create_from_tstring     = NULL;
+    dtlsudpDomain.f_create_from_tstring_new = netsnmp_dtlsudp_create_tstring;
+    dtlsudpDomain.f_create_from_ostring     = netsnmp_dtlsudp_create_ostring;
+
+    netsnmp_tdomain_register(&dtlsudpDomain);
+}
diff --git a/snmplib/snmpSSHDomain.c b/snmplib/snmpSSHDomain.c
new file mode 100644
index 0000000..f58c2a3
--- /dev/null
+++ b/snmplib/snmpSSHDomain.c
@@ -0,0 +1,967 @@
+#include <net-snmp/net-snmp-config.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_WINSOCK_H
+#include <winsock2.h>
+#include <ws2tcpip.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/snmpUDPDomain.h>
+#include <net-snmp/library/snmpTCPDomain.h>
+#include <net-snmp/library/snmpSSHDomain.h>
+#include <net-snmp/library/read_config.h>
+
+#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;
+
+oid netsnmp_snmpSSHDomain[] = { TRANSPORT_DOMAIN_SSH_IP };
+static netsnmp_tdomain sshDomain;
+
+const char *keyfile1="/home/hardaker/.ssh/id_rsa.pub";
+const char *keyfile2="/home/hardaker/.ssh/id_rsa";
+const char *username="hardaker";
+
+#define SNMPSSHDOMAIN_USE_EXTERNAL_PIPE 1
+
+/*
+ * 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];
+
+    if (addr == NULL || addr->sin_family != AF_INET) {
+        return NULL;
+    }
+
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    if (t == NULL) {
+        return NULL;
+    }
+    memset(t, 0, sizeof(netsnmp_transport));
+
+    t->domain = netsnmp_snmpSSHDomain;
+    t->domain_length =
+        sizeof(netsnmp_snmpSSHDomain) / sizeof(netsnmp_snmpSSHDomain[0]);
+
+    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) {
+#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 {
+        /* 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,
+                                                    keyfile1, keyfile2,
+                                                    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 = sizeof(netsnmp_snmpSSHDomain) / sizeof(oid);
+    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);
+
+    DEBUGMSGTL(("ssh", "registering the ssh domain\n"));
+    netsnmp_tdomain_register(&sshDomain);
+}
+
+
diff --git a/snmplib/snmpSTDDomain.c b/snmplib/snmpSTDDomain.c
index f83eaa5..600a683 100644
--- a/snmplib/snmpSTDDomain.c
+++ b/snmplib/snmpSTDDomain.c
@@ -40,7 +40,7 @@
 netsnmp_std_fmtaddr(netsnmp_transport *t, void *data, int len)
 {
     char *buf;
-    DEBUGMSGTL(("domain:std","formatting addr.  data=%x\n",t->data));
+    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);
@@ -67,7 +67,7 @@
 {
     int rc = -1;
 
-    DEBUGMSGTL(("domain:std","recv on sock %d.  data=%x\n",t->sock, t->data));
+    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));
@@ -94,7 +94,7 @@
 {
     int rc = -1;
 
-    DEBUGMSGTL(("domain:std","send on sock.  data=%x\n", t->data));
+    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;
@@ -113,7 +113,7 @@
 static int
 netsnmp_std_close(netsnmp_transport *t)
 {
-    DEBUGMSGTL(("domain:std","close.  data=%x\n", t->data));
+    DEBUGMSGTL(("domain:std","close.  data=%p\n", t->data));
     if (t->data) {
         netsnmp_std_data *data = (netsnmp_std_data*)t->data;
         close(data->outfd);
@@ -138,7 +138,7 @@
 static int
 netsnmp_std_accept(netsnmp_transport *t)
 {
-    DEBUGMSGTL(("domain:std"," accept data=%x\n", t->data));
+    DEBUGMSGTL(("domain:std"," accept data=%p\n", t->data));
     /* nothing to do here */
     return 0;
 }
@@ -222,7 +222,7 @@
             data->prog = strdup(instring);
             data->outfd = infd[1];
             data->childpid = childpid;
-            DEBUGMSGTL(("domain:std","parent.  data=%x\n", t->data));
+            DEBUGMSGTL(("domain:std","parent.  data=%p\n", t->data));
         } else {
             /* we're in the child */
 
diff --git a/snmplib/snmpTCPDomain.c b/snmplib/snmpTCPDomain.c
index 8cb6f94..d221fd3 100644
--- a/snmplib/snmpTCPDomain.c
+++ b/snmplib/snmpTCPDomain.c
@@ -109,7 +109,7 @@
 
     if (t != NULL && t->sock >= 0) {
 	while (rc < 0) {
-	    rc = recvfrom(t->sock, buf, size, 0, NULL, 0);
+	    rc = recvfrom(t->sock, buf, size, 0, NULL, NULL);
 	    if (rc < 0 && errno != EINTR) {
 		DEBUGMSGTL(("netsnmp_tcp", "recv fd %d err %d (\"%s\")\n",
 			    t->sock, errno, strerror(errno)));
diff --git a/snmplib/snmpTCPIPv6Domain.c b/snmplib/snmpTCPIPv6Domain.c
index de7e83f..83243c7 100644
--- a/snmplib/snmpTCPIPv6Domain.c
+++ b/snmplib/snmpTCPIPv6Domain.c
@@ -28,7 +28,9 @@
 #include <winsock2.h>
 #include <ws2tcpip.h>
 
+#ifndef HAVE_INET_NTOP
 extern const char *inet_ntop(int, const void*, char*, size_t);
+#endif
 
 #endif
 
@@ -105,7 +107,7 @@
 
     if (t != NULL && t->sock >= 0) {
 	while (rc < 0) {
-	    rc = recvfrom(t->sock, buf, size, 0, NULL, 0);
+	    rc = recvfrom(t->sock, buf, size, 0, NULL, NULL);
 	    if (rc < 0 && errno != EINTR) {
 		DEBUGMSGTL(("netsnmp_tcp6", "recv fd %d err %d (\"%s\")\n",
 			    t->sock, errno, strerror(errno)));
diff --git a/snmplib/snmpUDPDomain.c b/snmplib/snmpUDPDomain.c
index 5e062cc..18caee5 100644
--- a/snmplib/snmpUDPDomain.c
+++ b/snmplib/snmpUDPDomain.c
@@ -92,10 +92,11 @@
  * address if data is NULL.  
  */
 
-static char *
+char *
 netsnmp_udp_fmtaddr(netsnmp_transport *t, void *data, int len)
 {
     netsnmp_udp_addr_pair *addr_pair = NULL;
+    struct hostent *host;
 
     if (data != NULL && len == sizeof(netsnmp_udp_addr_pair)) {
 	addr_pair = (netsnmp_udp_addr_pair *) data;
@@ -112,6 +113,9 @@
         if (to == NULL) {
             sprintf(tmp, "UDP: unknown->[%s]",
                     inet_ntoa(addr_pair->local_addr));
+        } else if ( t && t->flags & NETSNMP_TRANSPORT_FLAG_HOSTNAME ) {
+            host = gethostbyaddr((char *)&to->sin_addr, 4, AF_INET);
+            return (host ? strdup(host->h_name) : NULL); 
         } else {
             sprintf(tmp, "UDP: [%s]:%hu->",
                     inet_ntoa(to->sin_addr), ntohs(to->sin_port));
@@ -123,15 +127,24 @@
 
 
 
-#if defined(linux) && defined(IP_PKTINFO)
-
+#if (defined(linux) && defined(IP_PKTINFO)) \
+    || defined(IP_RECVDSTADDR) && HAVE_STRUCT_MSGHDR_MSG_CONTROL \
+                               && HAVE_STRUCT_MSGHDR_MSG_FLAGS
+#if  defined(linux) && defined(IP_PKTINFO)
 # define netsnmp_dstaddr(x) (&(((struct in_pktinfo *)(CMSG_DATA(x)))->ipi_addr))
+#elif defined(IP_RECVDSTADDR)
+# define netsnmp_dstaddr(x) (&(struct cmsghr *)(CMSG_DATA(x)))
+#endif
 
-static int netsnmp_udp_recvfrom(int s, void *buf, int len, struct sockaddr *from, socklen_t *fromlen, struct in_addr *dstip)
+int netsnmp_udp_recvfrom(int s, void *buf, int len, struct sockaddr *from, socklen_t *fromlen, struct in_addr *dstip)
 {
     int r;
     struct iovec iov[1];
+#if   defined(linux) && defined(IP_PKTINFO)
     char cmsg[CMSG_SPACE(sizeof(struct in_pktinfo))];
+#elif defined(IP_RECVDSTADDR)
+    char cmsg[CMSG_SPACE(sizeof(struct in_addr))];
+#endif
     struct cmsghdr *cmsgptr;
     struct msghdr msg;
 
@@ -153,6 +166,7 @@
     }
     
     DEBUGMSGTL(("netsnmp_udp", "got source addr: %s\n", inet_ntoa(((struct sockaddr_in *)from)->sin_addr)));
+#if   defined(linux) && defined(IP_PKTINFO)
     for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL; cmsgptr = CMSG_NXTHDR(&msg, cmsgptr)) {
         if (cmsgptr->cmsg_level == SOL_IP && cmsgptr->cmsg_type == IP_PKTINFO) {
             memcpy((void *) dstip, netsnmp_dstaddr(cmsgptr), sizeof(struct in_addr));
@@ -160,10 +174,20 @@
                     inet_ntoa(*dstip)));
         }
     }
+#elif defined(IP_RECVDSTADDR)
+    for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL; cmsgptr = CMSG_NXTHDR(&msg, cmsgptr)) {
+        if (cmsgptr->cmsg_level == IPPROTO_IP && cmsgptr->cmsg_type == IP_RECVDSTADDR) {
+            memcpy((void *) dstip, CMSG_DATA(cmsgptr), sizeof(struct in_addr));
+            DEBUGMSGTL(("netsnmp_udp", "got destination (local) addr %s\n",
+                    inet_ntoa(*dstip)));
+        }
+    }
+#endif
     return r;
 }
 
-static int netsnmp_udp_sendto(int fd, struct in_addr *srcip, struct sockaddr *remote,
+#if   defined(linux) && defined(IP_PKTINFO)
+int netsnmp_udp_sendto(int fd, struct in_addr *srcip, struct sockaddr *remote,
 			void *data, int len)
 {
     struct iovec iov = { data, len };
@@ -190,7 +214,36 @@
 
     return sendmsg(fd, &m, MSG_NOSIGNAL|MSG_DONTWAIT);
 }
-#endif /* linux && IP_PKTINFO */
+#elif defined(IP_RECVDSTADDR)
+int netsnmp_udp_sendto(int fd, struct in_addr *srcip, struct sockaddr *remote,
+			void *data, int len)
+{
+    struct iovec iov = { data, len };
+    struct cmsghdr *cm;
+    struct in_addr ip;
+    struct msghdr m;
+    char   cmbuf[CMSG_SPACE(sizeof(struct in_addr))];
+
+    memset(&m, 0, sizeof(struct msghdr));
+    m.msg_name		= remote;
+    m.msg_namelen	= sizeof(struct sockaddr_in);
+    m.msg_iov		= &iov;
+    m.msg_iovlen	= 1;
+    m.msg_control	= cmbuf;
+    m.msg_controllen	= sizeof(cmbuf);
+    m.msg_flags		= 0;
+
+    cm = CMSG_FIRSTHDR(&m);
+    cm->cmsg_len = CMSG_LEN(sizeof(struct in_addr));
+    cm->cmsg_level = IPPROTO_IP;
+    cm->cmsg_type = IP_SENDSRCADDR;
+
+    memcpy((struct in_addr *)CMSG_DATA(cm), srcip, sizeof(struct in_addr));
+
+    return sendmsg(fd, &m, MSG_NOSIGNAL|MSG_DONTWAIT);
+}
+#endif
+#endif /* (linux && IP_PKTINFO) || IP_RECVDSTADDR && HAVE_STRUCT_MSGHDR_... */
 
 /*
  * You can write something into opaque that will subsequently get passed back 
@@ -219,11 +272,13 @@
         }
 
 	while (rc < 0) {
-#if defined(linux) && defined(IP_PKTINFO)
+#if (defined(linux) && defined(IP_PKTINFO)) \
+    || defined(IP_RECVDSTADDR) && HAVE_STRUCT_MSGHDR_MSG_CONTROL \
+                               && HAVE_STRUCT_MSGHDR_MSG_FLAGS
             rc = netsnmp_udp_recvfrom(t->sock, buf, size, from, &fromlen, &(addr_pair->local_addr));
 #else
             rc = recvfrom(t->sock, buf, size, NETSNMP_DONTWAIT, from, &fromlen);
-#endif /* linux && IP_PKTINFO */
+#endif /* (linux && IP_PKTINFO) || IP_RECVDSTADDR && HAVE_STRUCT_MSGHDR_... */
 	    if (rc < 0 && errno != EINTR) {
 		break;
 	    }
@@ -272,11 +327,13 @@
                     size, buf, str, t->sock));
         free(str);
 	while (rc < 0) {
-#if defined(linux) && defined(IP_PKTINFO)
+#if (defined(linux) && defined(IP_PKTINFO)) \
+    || defined(IP_RECVDSTADDR) && HAVE_STRUCT_MSGHDR_MSG_CONTROL \
+                               && HAVE_STRUCT_MSGHDR_MSG_FLAGS
             rc = netsnmp_udp_sendto(t->sock, addr_pair ? &(addr_pair->local_addr) : NULL, to, buf, size);
 #else
             rc = sendto(t->sock, buf, size, 0, to, sizeof(struct sockaddr));
-#endif /* linux && IP_PKTINFO */
+#endif /* (linux && IP_PKTINFO) || IP_RECVDSTADDR && HAVE_STRUCT_MSGHDR_... */
 	    if (rc < 0 && errno != EINTR) {
                 DEBUGMSGTL(("netsnmp_udp", "sendto error, rc %d (errno %d)\n",
                             rc, errno));
@@ -315,7 +372,7 @@
 _sock_buffer_maximize(int s, int optname, const char *buftype, int size)
 {
     int            curbuf = 0;
-    size_t         curbuflen = sizeof(int);
+    socklen_t      curbuflen = sizeof(int);
     int            lo, mid, hi;
 
     /*
@@ -475,7 +532,7 @@
 #else
     const char     *buftype;
     int            curbuf = 0;
-    size_t         curbuflen = sizeof(int);
+    socklen_t      curbuflen = sizeof(int);
 
 #   ifndef  SO_SNDBUF
     if (SO_SNDBUF == optname) {
@@ -656,6 +713,17 @@
             }
             DEBUGMSGTL(("netsnmp_udp", "set IP_PKTINFO\n"));
         }
+#elif defined(IP_RECVDSTADDR)
+        { 
+            int sockopt = 1;
+            if (setsockopt(t->sock, IPPROTO_IP, IP_RECVDSTADDR, &sockopt, sizeof sockopt) == -1) {
+                DEBUGMSGTL(("netsnmp_udp", "couldn't set IP_RECVDSTADDR: %s\n",
+                    strerror(errno)));
+                netsnmp_transport_free(t);
+                return NULL;
+            }
+            DEBUGMSGTL(("netsnmp_udp", "set IP_RECVDSTADDR\n"));
+        }
 #endif
         rc = bind(t->sock, (struct sockaddr *) addr,
                   sizeof(struct sockaddr));
@@ -780,16 +848,7 @@
 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
+    int ret;
 
     if (addr == NULL) {
         return 0;
@@ -862,12 +921,12 @@
                 if (host == NULL) {
                     DEBUGMSGTL(("netsnmp_sockaddr_in",
                                 "servname not numeric, "
-				"check if it really is a destination)"));
+				"check if it really is a destination)\n"));
                     host = port;
                     port = NULL;
                 } else {
                     DEBUGMSGTL(("netsnmp_sockaddr_in",
-                                "servname not numeric"));
+                                "servname not numeric\n"));
                     free(peername);
                     return 0;
                 }
@@ -884,74 +943,25 @@
             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;
+            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"));
-                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);
     }
@@ -1084,25 +1094,11 @@
             /*
              * 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");
+            int ret = netsnmp_gethostbyname_v4(source, &network);
+            if (ret < 0) {
+                config_perror("cannot resolve source hostname");
                 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 */
         }
     }
 
@@ -1246,6 +1242,8 @@
      * 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",
@@ -1266,7 +1264,7 @@
     }
 
     for (c = com2SecList; c != NULL; c = c->next) {
-        DEBUGMSGTL(("netsnmp_udp_getSecName","compare <\"%s\", 0x%08x/0x%08x>",
+        DEBUGMSGTL(("netsnmp_udp_getSecName","compare <\"%s\", 0x%08lx/0x%08lx>",
 		    c->community, c->network, c->mask));
         if ((community_len == strlen(c->community)) &&
 	    (memcmp(community, c->community, community_len) == 0) &&
diff --git a/snmplib/snmpUDPIPv6Domain.c b/snmplib/snmpUDPIPv6Domain.c
index f0d7635..a9277d1 100644
--- a/snmplib/snmpUDPIPv6Domain.c
+++ b/snmplib/snmpUDPIPv6Domain.c
@@ -28,11 +28,14 @@
      */
 #include <winsock2.h>
 #include <ws2tcpip.h>
-#undef  HAVE_IF_NAMETOINDEX
 
+#ifndef HAVE_INET_PTON
 extern int         inet_pton(int, const char*, void*);
+#endif
+#ifndef HAVE_INET_NTOP
 extern const char *inet_ntop(int, const void*, char*, size_t);
-const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
+#endif
+static const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
 #endif
 
 #if HAVE_NETINET_IN_H
@@ -52,9 +55,9 @@
 #include <dmalloc.h>
 #endif
 
-#if STRUCT_SOCKADDR_STORAGE_HAS_SS_FAMILY
+#if HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
 #define SS_FAMILY ss_family
-#elif STRUCT_SOCKADDR_STORAGE_HAS___SS_FAMILY
+#elif HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
 #define SS_FAMILY __ss_family
 #endif
 
@@ -384,13 +387,14 @@
         }
 
         for (cp = peername; *cp && isdigit((unsigned char) *cp); cp++);
-        if (!*cp && atoi(peername) != 0) {
+        portno = atoi(peername);
+        if (!*cp &&  portno != 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));
+                        portno));
+            addr->sin6_port = htons(portno);
             goto resolved;
         }
 
@@ -421,13 +425,20 @@
 #endif
 		}
                 if (*(cp + 1) == ':') {
-                    if (atoi(cp + 2) != 0 &&
+                    portno = atoi(cp+2);
+                    if (portno != 0 &&
                         inet_pton(AF_INET6, peername + 1,
                                   (void *) &(addr->sin6_addr))) {
                         DEBUGMSGTL(("netsnmp_sockaddr_in6",
                                     "IPv6 address with port suffix :%d\n",
-                                    atoi(cp + 2)));
-                        addr->sin6_port = htons(atoi(cp + 2));
+                                    portno));
+                        if (portno > 0 && portno < 0xffff) {
+                            addr->sin6_port = htons(portno);
+                        } else {
+                            DEBUGMSGTL(("netsnmp_sockaddr_in6", "invalid port number: %d", portno));
+                            return 0;
+                        }
+
 #if defined(HAVE_IF_NAMETOINDEX) && defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
                         addr->sin6_scope_id = if_index;
 #endif
@@ -471,13 +482,20 @@
 	        if_index = if_nametoindex(scope_id + 1);
 #endif
 	    }
-            if (atoi(cp + 1) != 0 &&
+            portno = atoi(cp + 1);
+            if (portno != 0 &&
                 inet_pton(AF_INET6, peername,
                           (void *) &(addr->sin6_addr))) {
                 DEBUGMSGTL(("netsnmp_sockaddr_in6",
                             "IPv6 address with port suffix :%d\n",
                             atoi(cp + 1)));
-                addr->sin6_port = htons(atoi(cp + 1));
+                if (portno > 0 && portno < 0xffff) {
+                    addr->sin6_port = htons(portno);
+                } else {
+                    DEBUGMSGTL(("netsnmp_sockaddr_in6", "invalid port number: %d", portno));
+                    return 0;
+                }
+
 #if defined(HAVE_IF_NAMETOINDEX) && defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
                 addr->sin6_scope_id = if_index;
 #endif
@@ -505,11 +523,18 @@
         cp = strrchr(peername, ':');
         if (cp != NULL) {
             *cp = '\0';
-            if (atoi(cp + 1) != 0) {
+            portno = atoi(cp + 1);
+            if (portno != 0) {
                 DEBUGMSGTL(("netsnmp_sockaddr_in6",
                             "hostname(?) with port suffix :%d\n",
-                            atoi(cp + 1)));
-                addr->sin6_port = htons(atoi(cp + 1));
+                            portno));
+                if (portno > 0 && portno < 0xffff) {
+                    addr->sin6_port = htons(portno);
+                } else {
+                    DEBUGMSGTL(("netsnmp_sockaddr_in6", "invalid port number: %d", portno));
+                    return 0;
+                }
+
             } else {
                 /*
                  * No idea, looks bogus but we might as well pass the full thing to
@@ -1295,17 +1320,19 @@
                 ztcommunity ? ztcommunity : "<malloc error>", str6));
 
     for (c = com2Sec6List; c != NULL; c = c->next) {
+	char str_net[INET6_ADDRSTRLEN], str_mask[INET6_ADDRSTRLEN];
         DEBUGMSGTL(("netsnmp_udp6_getSecName",
-                    "compare <\"%s\", 0x%032x/0x%032x>", c->community,
-                    c->network, c->mask));
+                    "compare <\"%s\", %s/%s>", c->community,
+                    inet_ntop(AF_INET6, &c->network.sin6_addr, str_net, sizeof str_net),
+		    inet_ntop(AF_INET6, &c->mask.sin6_addr, str_mask, sizeof str_mask)));
 
         if ((community_len == (int)strlen(c->community)) &&
             (memcmp(community, c->community, community_len) == 0) &&
             (masked_address_are_equal(from->sin6_family,
                                       (struct sockaddr_storage *) from,
                                       (struct sockaddr_storage *) &c->mask,
-                                      (struct sockaddr_storage *) &c->
-                                      network) == 0)) {
+                                      (struct sockaddr_storage *) &c->network)
+					== 0)) {
             DEBUGMSG(("netsnmp_udp6_getSecName", "... SUCCESS\n"));
             if (secName != NULL) {
                 *secName = c->secName;
diff --git a/snmplib/snmpUnixDomain.c b/snmplib/snmpUnixDomain.c
index 036e95a..428647c 100644
--- a/snmplib/snmpUnixDomain.c
+++ b/snmplib/snmpUnixDomain.c
@@ -34,7 +34,7 @@
 #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>
+#include <net-snmp/library/system.h> /* mkdirhier */
 
 
 #ifndef NETSNMP_STREAM_QUEUE_LEN
@@ -257,7 +257,25 @@
     }
 }
 
+static int create_path = 0;
+static mode_t create_mode;
 
+/** 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;
+}
 
 /*
  * Open a Unix-domain transport for SNMP.  Local is TRUE if addr is the local
@@ -313,7 +331,7 @@
     t->flags = NETSNMP_TRANSPORT_FLAG_STREAM;
 
     if (local) {
-      t->local = (u_char *)malloc(strlen(addr->sun_path));
+        t->local = (u_char *)malloc(strlen(addr->sun_path));
         if (t->local == NULL) {
             netsnmp_transport_free(t);
             return NULL;
@@ -330,6 +348,16 @@
 
         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",
@@ -363,7 +391,7 @@
         }
 
     } else {
-      t->remote = (u_char *)malloc(strlen(addr->sun_path));
+        t->remote = (u_char *)malloc(strlen(addr->sun_path));
         if (t->remote == NULL) {
             netsnmp_transport_free(t);
             return NULL;
@@ -390,8 +418,8 @@
         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);
+        netsnmp_sock_buffer_set(t->sock, SO_SNDBUF, local, 0);
+        netsnmp_sock_buffer_set(t->sock, SO_RCVBUF, local, 0);
     }
 
     /*
diff --git a/snmplib/snmp_alarm.c b/snmplib/snmp_alarm.c
index c88fa75..5d37d6f 100644
--- a/snmplib/snmp_alarm.c
+++ b/snmplib/snmp_alarm.c
@@ -151,7 +151,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 {
@@ -193,7 +193,8 @@
         /* 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));
+            DEBUGMSGTL(("time_skew", "Time delta too big (%ld seconds), should be %ld seconds - fixing\n",
+		(long)(a->t_next.tv_sec - t_now.tv_sec), (long)a->t.tv_sec));
             a->t_next.tv_sec = t_now.tv_sec + a->t.tv_sec;
             a->t_next.tv_usec = t_now.tv_usec + a->t.tv_usec;
         }
@@ -284,7 +285,7 @@
     sa_ptr = sa_find_next();
 
     if (sa_ptr) {
-        gettimeofday(&t_now, 0);
+        gettimeofday(&t_now, NULL);
 
         if (timercmp(&t_now, &sa_ptr->t_next, >)) {
             /*
@@ -336,14 +337,14 @@
 
         signal(SIGALRM, alarm_handler);
         setitimer(ITIMER_REAL, &it, NULL);
-        DEBUGMSGTL(("snmp_alarm", "schedule alarm %d in %d.%03d seconds\n",
+        DEBUGMSGTL(("snmp_alarm", "schedule alarm %d in %ld.%03ld seconds\n",
                     nextalarm, delta.tv_sec, (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 */
@@ -417,7 +418,7 @@
     sa_update_entry(*sa_pptr);
 
     DEBUGMSGTL(("snmp_alarm",
-		"registered alarm %d, t = %d.%03d, flags=0x%02x\n",
+		"registered alarm %d, t = %ld.%03ld, flags=0x%02x\n",
                 (*sa_pptr)->clientreg, (*sa_pptr)->t.tv_sec,
                 ((*sa_pptr)->t.tv_usec / 1000), (*sa_pptr)->flags));
 
@@ -487,7 +488,7 @@
     sa_update_entry(*s);
 
     DEBUGMSGTL(("snmp_alarm",
-                "registered alarm %d, t = %d.%03d, flags=0x%02x\n",
+                "registered alarm %d, t = %ld.%03ld, flags=0x%02x\n",
                 (*s)->clientreg, (*s)->t.tv_sec, ((*s)->t.tv_usec / 1000),
                 (*s)->flags));
 
diff --git a/snmplib/snmp_api.c b/snmplib/snmp_api.c
index 45267fd..5d7a3c7 100644
--- a/snmplib/snmp_api.c
+++ b/snmplib/snmp_api.c
@@ -127,6 +127,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
@@ -772,6 +773,11 @@
 		      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_register_service_handlers();
 }
 
@@ -1262,6 +1268,99 @@
 }
 
 /**
+ * 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()) {
+            int 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;
+}
+
+
+/**
  * probe for peer engineID
  *
  * @param slp         session list pointer.
@@ -1301,7 +1400,16 @@
         return 1;
 
     if (session->version == SNMP_VERSION_3) {
-        if (session->securityEngineIDLen == 0) {
+        struct snmp_secmod_def *sptr = find_sec_mod(session->securityModel);
+
+        if (NULL != sptr && NULL != sptr->probe_engineid) {
+            DEBUGMSGTL(("snmp_api", "probing for engineID using security model callback...\n"));
+            /* security model specific mechanism of determining engineID */
+            status = (*sptr->probe_engineid) (slp, session);
+            if (status)
+                return 0;
+            return 1; /* success! */
+        } else if (session->securityEngineIDLen == 0) {
             if (snmpv3_build_probe_pdu(&pdu) != 0) {
                 DEBUGMSGTL(("snmp_api", "unable to create probe PDU\n"));
                 return 0;
@@ -1318,7 +1426,7 @@
             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",
+                            "error: expected Report as response to probe: %s (%ld)\n",
                             snmp_errstring(response->errstat),
                             response->errstat));
                 break;
@@ -1392,72 +1500,70 @@
 static void    *
 _sess_open(netsnmp_session * in_session)
 {
-    struct session_list *slp;
-    netsnmp_session *session;
-    char            *clientaddr_save = NULL;
+    netsnmp_transport *transport = NULL;
 
     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",
+                                               NULL);
+        } else {
+            transport =
+                netsnmp_tdomain_transport_full("snmp", in_session->peername,
+                                               in_session->local_port, "udp",
+                                               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 defined(SO_BROADCAST) && defined(SOL_SOCKET)
+    if ( transport != 0 && (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;
+        }
     }
+#endif
 
-    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);
-        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;
-    }
-    
-    session->flags &= ~SNMP_FLAGS_DONT_PROBE;
-
-
-    return (void *) slp;
-}                               /* end snmp_sess_open() */
-
-
+    return snmp_sess_add(in_session, transport, NULL, NULL);
+}
 
 /*
  * EXTENDED SESSION API ------------------------------------------ 
@@ -1584,7 +1690,7 @@
 
     if (slp->session->version == SNMP_VERSION_3) {
         DEBUGMSGTL(("snmp_sess_add",
-                    "adding v3 session -- engineID probe now\n"));
+                    "adding v3 session -- maybe engineID probe now\n"));
         if (!snmpv3_engineID_probe(slp, in_session)) {
             DEBUGMSGTL(("snmp_sess_add", "engine ID probe failed\n"));
             snmp_sess_close(slp);
@@ -1906,7 +2012,7 @@
     }
 
     isp = slp->internal;
-    slp->internal = 0;
+    slp->internal = NULL;
 
     if (isp) {
         netsnmp_request_list *rp, *orp;
@@ -1933,7 +2039,7 @@
     }
 
     transport = slp->transport;
-    slp->transport = 0;
+    slp->transport = NULL;
 
     if (transport) {
         transport->f_close(transport);
@@ -1941,7 +2047,7 @@
     }
 
     sesp = slp->session;
-    slp->session = 0;
+    slp->session = NULL;
 
     /*
      * The following is necessary to avoid memory leakage when closing AgentX 
@@ -2097,10 +2203,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))
@@ -2206,20 +2318,27 @@
     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 != NETSNMP_TSM_SECURITY_MODEL &&
+            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;
         }
-        pdu->securityNameLen = session->securityNameLen;
     }
     if (pdu->securityLevel == 0) {
         if (session->securityLevel == 0) {
@@ -2790,7 +2909,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;
@@ -2969,7 +3088,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)) {
@@ -4026,7 +4145,7 @@
      * 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 +4240,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 +4272,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 +4371,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 +4542,7 @@
     size_t          four;
     netsnmp_variable_list *vp = NULL;
     oid             objid[MAX_OID_LEN];
+    u_char         *p;
 
     /*
      * Get the PDU type 
@@ -4442,10 +4684,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 +4697,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 +4715,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 +4727,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 +4740,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 +4789,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 +4816,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);
@@ -4874,7 +5137,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,7 +5151,7 @@
     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;
@@ -4915,6 +5178,8 @@
      * Send the message.  
      */
 
+    DEBUGMSGTL(("sess_process_packet", "sending message id#%ld reqid#%ld\n",
+                pdu->msgid, pdu->reqid));
     result = transport->f_send(transport, packet, length,
                                &(pdu->transport_data),
                                &(pdu->transport_data_length));
@@ -5020,7 +5285,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 +5302,12 @@
             SNMP_FREE(var->data);
         }
     }
+}
 
+void
+snmp_free_var(netsnmp_variable_list * var)
+{
+    snmp_free_var_internals(var);
     free((char *) var);
 }
 
@@ -5181,6 +5451,7 @@
   } 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) {
@@ -5189,12 +5460,21 @@
     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\n",
+              pdu->msgid, pdu->reqid));
+
   if (ret != SNMP_ERR_NOERROR) {
     DEBUGMSGTL(("sess_process_packet", "parse fail\n"));
   }
@@ -5262,7 +5542,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;
 	}
 
 	/*
@@ -5437,10 +5719,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 +5745,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 +5767,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 +5858,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 +5879,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,8 +5895,8 @@
         }
     } 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;
         }
     }
@@ -5619,6 +5914,17 @@
         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.  
      */
@@ -5662,9 +5968,10 @@
                 pdulen = asn_check_packet(pptr, isp->packet_len);
             }
 
-            DEBUGMSGTL(("sess_read", "  loop packet_len %d, PDU length %d\n",
-                        isp->packet_len, pdulen));
-             
+            DEBUGMSGTL(("sess_read",
+                        "  loop packet_len %" NETSNMP_PRIz "u, PDU length %"
+                        NETSNMP_PRIz "u\n", isp->packet_len, pdulen));
+
             if ((pdulen > MAX_PACKET_LENGTH) || (pdulen < 0)) {
                 /*
                  * Illegal length, drop the connection.  
@@ -5694,8 +6001,9 @@
                  * 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. */
@@ -5760,8 +6068,9 @@
              * 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;
@@ -5787,9 +6096,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 +6130,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;
@@ -5870,6 +6194,21 @@
                                  block);
 }
 
+int
+snmp_select_info2(int *numfds,
+                  netsnmp_large_fd_set * fdset,
+		  struct timeval *timeout, int *block)
+    /*
+     * input:  set to 1 if input timeout value is undefined  
+     * set to 0 if input timeout value is defined    
+     * output: set to 1 if output timeout value is undefined 
+     * set to 0 if output rimeout vlaue id defined   
+     */
+{
+    return snmp_sess_select_info2((void *) 0, numfds, fdset, timeout,
+                                  block);
+}
+
 /*
  * Same as snmp_select_info, but works just one session. 
  */
@@ -5878,6 +6217,27 @@
                       int *numfds,
                       fd_set * fdset, struct timeval *timeout, int *block)
 {
+  int rc;
+  netsnmp_large_fd_set lfdset;
+
+  netsnmp_large_fd_set_init(&lfdset, FD_SETSIZE);
+  netsnmp_copy_fd_set_to_large_fd_set(&lfdset, fdset);
+  rc = snmp_sess_select_info2(sessp, numfds, &lfdset, timeout, block);
+  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");
+  }
+  netsnmp_large_fd_set_cleanup(&lfdset);
+  return rc;
+}
+
+int
+snmp_sess_select_info2(void *sessp,
+                       int *numfds,
+                       netsnmp_large_fd_set * fdset,
+		       struct timeval *timeout, int *block)
+{
     struct session_list *slptest = (struct session_list *) sessp;
     struct session_list *slp, *next = NULL;
     netsnmp_request_list *rp;
@@ -5933,7 +6293,7 @@
             *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.  
@@ -5943,8 +6303,8 @@
                 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));
+                    DEBUGMSG(("verbose:sess_select","(to in %d.%06d sec) ",
+                               (int)earliest.tv_sec, (int)earliest.tv_usec));
                 }
             }
         }
@@ -5961,8 +6321,8 @@
 
     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));
+        DEBUGMSGT(("sess_select","next alarm %d.%06d sec\n",
+                   (int)delta.tv_sec, (int)delta.tv_usec));
     }
     if (next_alarm == 0 && requests == 0) {
         /*
@@ -6010,7 +6370,7 @@
             earliest.tv_usec = 100;
         }
         DEBUGMSGT(("verbose:sess_select","timer due *real* soon. %d usec\n",
-                   earliest.tv_usec));
+                   (int)earliest.tv_usec));
     } else {
         earliest.tv_sec = (earliest.tv_sec - now.tv_sec);
         earliest.tv_usec = (earliest.tv_usec - now.tv_usec);
@@ -6018,8 +6378,8 @@
             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 +6387,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;
     }
@@ -6147,6 +6507,8 @@
         xdump(packet, length, "");
     }
 
+    DEBUGMSGTL(("sess_process_packet", "resending message id#%ld reqid#%ld rp_reqid#%ld rp_msgid#%ld\n",
+                rp->pdu->msgid, rp->pdu->reqid, rp->request_id, rp->message_id));
     result = transport->f_send(transport, packet, length,
                                &(rp->pdu->transport_data),
                                &(rp->pdu->transport_data_length));
@@ -6609,7 +6971,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 +6985,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 +7003,7 @@
     if (( 0 != rc ) ||
         (name != NULL && snmp_set_var_objid(vars, name, name_length))) {
         snmp_free_var(vars);
-        return (0);
+        return NULL;
     }
 
     /*
@@ -6789,7 +7151,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 +7165,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 +7181,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 +7197,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 +7212,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 +7228,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 +7244,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 +7262,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 +7281,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 +7319,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 +7394,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 +7402,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 +7410,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,13 +7619,14 @@
 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;
 }
 
diff --git a/snmplib/snmp_client.c b/snmplib/snmp_client.c
index 7eee3a1..b34c920 100644
--- a/snmplib/snmp_client.c
+++ b/snmplib/snmp_client.c
@@ -95,6 +95,8 @@
 
 #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>
@@ -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;
@@ -613,18 +625,18 @@
 
     if ((pdu->command != SNMP_MSG_RESPONSE)
         || (pdu->errstat == SNMP_ERR_NOERROR)
-        || (0 == pdu->variables)
+        || (NULL == pdu->variables)
         || (pdu->errindex > 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 +727,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
@@ -783,7 +793,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 +804,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 +843,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 +855,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 +886,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 +923,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) {
@@ -1037,7 +1049,7 @@
         snmp_select_info(&numfds, &fdset, tvp, &block);
         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 +1082,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.  */
         }
@@ -1128,7 +1140,7 @@
         snmp_sess_select_info(sessp, &numfds, &fdset, tvp, &block);
         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 +1217,44 @@
  *  over the specified SNMP session.
  *
  */
+#include <net-snmp/library/snmp_debug.h>
 static netsnmp_session *_def_query_session = NULL;
 void
 netsnmp_query_set_default_session( netsnmp_session *sess) {
+    DEBUGMSGTL(("iquery", "set default session %p\n", sess));
     _def_query_session = sess;
 }
 
+/**
+ * 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();
 }
 
 
@@ -1229,6 +1270,7 @@
     netsnmp_variable_list *vb1, *vb2, *vtmp;
     int ret;
 
+    DEBUGMSGTL(("iquery", "query on session %p\n", session));
     /*
      * Clone the varbind list into the request PDU...
      */
@@ -1243,6 +1285,7 @@
         snmp_free_pdu(pdu);
         return SNMP_ERR_GENERR;
     }
+    DEBUGMSGTL(("iquery", "query returned %d\n", ret));
 
     /*
      * ....then copy the results back into the
@@ -1263,6 +1306,7 @@
             ret = response->errstat;
             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;
@@ -1278,13 +1322,7 @@
                     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;
             }
diff --git a/snmplib/snmp_debug.c b/snmplib/snmp_debug.c
index d1b4538..cb3bc8c 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,11 +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
@@ -44,41 +41,40 @@
 
 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;
 }
 
 void
@@ -96,35 +92,12 @@
 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
@@ -134,7 +107,7 @@
     char           *st = NULL;
     int             status;
 
-    if (tokens == 0 || *tokens == 0)
+    if (tokens == NULL || *tokens == 0)
         return;
 
     newp = strdup(tokens);      /* strtok_r messes it up */
@@ -256,13 +229,8 @@
     if (debug_num_tokens == 0 || debug_print_everything) {
         /*
          * no tokens specified, print everything 
-         * (unless something might be excluded)
          */
-        if (debug_num_excluded) {
-            rc = SNMPERR_SUCCESS; /* ! found = success */
-        } else {
-            return SNMPERR_SUCCESS;
-        }
+        return SNMPERR_SUCCESS;
     }
     else
         rc = SNMPERR_GENERR; /* ! found = err */
@@ -279,53 +247,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
@@ -480,7 +414,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 +434,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);
 }
 
@@ -564,63 +468,3 @@
 {
     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;
-
- /* 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;
-}
-#endif
-
diff --git a/snmplib/snmp_logging.c b/snmplib/snmp_logging.c
index 7a0ddb2..7f19eb5 100644
--- a/snmplib/snmp_logging.c
+++ b/snmplib/snmp_logging.c
@@ -59,11 +59,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>
@@ -177,6 +173,26 @@
 #define LOG_USER	0
 #endif
 
+/* 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.
  * @param optarg - IN - priority to decode, "0" or "0-7"
@@ -350,6 +366,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,6 +384,7 @@
     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 */
@@ -424,9 +442,9 @@
             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;
 
@@ -663,7 +681,7 @@
 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
@@ -727,16 +745,7 @@
         if (!logfile)
             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;
 }
@@ -1274,25 +1283,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);
diff --git a/snmplib/snmp_openssl.c b/snmplib/snmp_openssl.c
new file mode 100644
index 0000000..59831dd
--- /dev/null
+++ b/snmplib/snmp_openssl.c
@@ -0,0 +1,38 @@
+/*
+ * snmptsmsm.c
+ *
+ * This code merely does openssl initialization so that multilpe
+ * modules are safe to call netsnmp_init_openssl() for bootstrapping
+ * without worrying about other callers that may have already done so.
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/library/snmp_openssl.h>
+
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+
+#include <openssl/evp.h>
+#include <openssl/ssl.h>
+
+static u_char have_started_already = 0;
+
+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();
+}
+
+#endif /* NETSNMP_USE_OPENSSL && HAVE_LIBSSL */
diff --git a/snmplib/snmp_parse_args.c b/snmplib/snmp_parse_args.c
index a003995..c1e316b 100644
--- a/snmplib/snmp_parse_args.c
+++ b/snmplib/snmp_parse_args.c
@@ -361,8 +361,8 @@
             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);
             }
diff --git a/snmplib/snmp_service.c b/snmplib/snmp_service.c
index 2f53b76..8865cda 100644
--- a/snmplib/snmp_service.c
+++ b/snmplib/snmp_service.c
@@ -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..dfea3c6 100644
--- a/snmplib/snmp_transport.c
+++ b/snmplib/snmp_transport.c
@@ -33,6 +33,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
@@ -208,6 +217,9 @@
 #ifdef NETSNMP_TRANSPORT_TCP_DOMAIN
     netsnmp_tcp_ctor();
 #endif
+#ifdef NETSNMP_TRANSPORT_ALIAS_DOMAIN
+    netsnmp_alias_ctor();
+#endif
 #ifdef NETSNMP_TRANSPORT_IPX_DOMAIN
     netsnmp_ipx_ctor();
 #endif
@@ -223,6 +235,12 @@
 #ifdef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
     netsnmp_tcp6_ctor();
 #endif
+#ifdef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+    netsnmp_dtlsudp_ctor();
+#endif
+#ifdef NETSNMP_TRANSPORT_SSH_DOMAIN
+    netsnmp_ssh_ctor();
+#endif
     netsnmp_tdomain_dump();
 }
 
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..b376e83 100644
--- a/snmplib/snmpksm.c
+++ b/snmplib/snmpksm.c
@@ -107,6 +107,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
 
 /*
@@ -588,15 +606,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 +843,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 +1522,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 +1579,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..47d338f
--- /dev/null
+++ b/snmplib/snmptsm.c
@@ -0,0 +1,468 @@
+/*
+ * snmptsmsm.c
+ *
+ * This code implements a security model that assumes the local user
+ * that executed the agent is the user who's attributes called
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/library/snmptsm.h>
+
+#include <unistd.h>
+
+static int      tsm_session_init(netsnmp_session *);
+static void     tsm_free_state_ref(void *);
+static int      tsm_clone_pdu(netsnmp_pdu *, netsnmp_pdu *);
+static void     tsm_free_pdu(netsnmp_pdu *pdu);
+
+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(NETSNMP_TSM_SECURITY_MODEL, "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);
+}
+
+/*
+ * 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 void
+tsm_free_pdu(netsnmp_pdu *pdu)
+{
+    /* free the security reference */
+    if (pdu->securityStateRef) {
+        tsm_free_state_ref(pdu->securityStateRef);
+        pdu->securityStateRef = NULL;
+    }
+}
+
+/** 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);
+    fprintf(stderr, "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, this message is in response to something that
+       came in earlier */
+    tsmSecRef = parms->secStateRef;
+    
+    if (tsmSecRef) {
+        /* section 4.2, step 1 */
+        if (tsmSecRef->tmStateRef)
+            tmStateRef = tsmSecRef->tmStateRef;
+        else
+            tmStateRef = SNMP_MALLOC_TYPEDEF(netsnmp_tmStateReference);
+        if (NULL == tmStateRef) {
+            snmp_log(LOG_ERR, "failed to allocate a tmStateReference\n");
+            return SNMPERR_GENERR;
+        }
+        tmStateRef->sameSecurity = NETSNMP_TM_USE_SAME_SECURITY;
+        tmStateRef->requestedSecurityLevel = tsmSecRef->securityLevel;
+
+        /* XXX: this may be freed automatically later by the library? */
+        SNMP_FREE(parms->secStateRef);
+    } else {
+        /* section 4.2, step 2 */
+        tmStateRef = SNMP_MALLOC_TYPEDEF(netsnmp_tmStateReference);
+        if (tmStateRef == NULL) {
+            return SNMPERR_GENERR;
+        }
+        tmStateRefLocal = 1;
+        
+        tmStateRef->requestedSecurityLevel = parms->secLevel;
+        tmStateRef->sameSecurity = NETSNMP_TM_SAME_SECURITY_NOT_REQUIRED;
+
+        if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                                   NETSNMP_DS_LIB_TSM_USE_PREFIX)) {
+            /* XXX: probably shouldn't be a hard-coded list of
+               supported transports */
+            const char *prefix;
+            if (strncmp("ssh:",parms->session->peername,4) == 0)
+                prefix = "ssh:";
+            else if (strncmp("dtls:",parms->session->peername,4) == 0)
+                prefix = "dtls:";
+            else {
+                SNMP_FREE(tmStateRef);
+                return SNMPERR_GENERR;
+            }
+
+            /* a: - lookup the prefix */
+            /*    - if DNE, snmpTsmUnknownPrefixes++ and bail */
+            if (!prefix) {
+                /* snmpTsmUnknownPrefixes++ */
+                SNMP_FREE(tmStateRef);
+                return SNMPERR_GENERR;
+            }
+
+            /*    - If secName doesn't have the prefix (or any):
+                  snmpTsmInvalidPrefixes++ and bail */
+            if (strchr(parms->secName, ':') == 0 ||
+                strlen(prefix)+1 >= parms->secNameLen ||
+                strncmp(parms->secName, prefix, strlen(prefix)) != 0 ||
+                parms->secName[strlen(prefix)] != ':') {
+
+                SNMP_FREE(tmStateRef);
+                /* snmpTsmInvalidPrefixes++ */
+                return SNMPERR_GENERR;
+            }
+
+            /*    - Strip the prefix and trailing : */
+            /* set tmSecurityName to securityName minus stripped part */
+            memcpy(tmStateRef->securityName,
+                   parms->secName + strlen(prefix) + 1,
+                   parms->secNameLen - strlen(prefix) - 1);
+            tmStateRef->securityNameLen = parms->secNameLen - strlen(prefix) -1;
+        } else {
+            /* set tmSecurityName to securityName */
+            memcpy(tmStateRef->securityName, parms->secName,
+                   parms->secNameLen);
+            tmStateRef->securityNameLen = parms->secNameLen;
+        }
+    }
+    tmStateRef->securityName[tmStateRef->securityNameLen] = '\0';
+
+    /* Section 4.2, Step 3:
+     * - Set securityParameters to a zero-length OCTET STRING ('0400')
+     * 
+     * We define here what the security message section will look like:
+     * 04 00 -- null string
+     */
+    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;
+    }
+    
+    /* Section 4.2, Step 4:
+     * Combine the message parts into a wholeMsg and calculate wholeMsgLen
+     */
+
+    /*
+     * Copy in the msgGlobalData and msgVersion.  
+     */
+    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);
+
+    /*
+     * 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;
+    }
+
+    /* Section 4.2 Step 5:  return everything */
+
+    if (parms->pdu->transport_data &&
+        parms->pdu->transport_data != tmStateRef) {
+        snmp_log(LOG_ERR, "tsm: needed to free transport data\n");
+        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 */
+    ourEngineID_len =
+        snmpv3_get_engineID((u_char*)ourEngineID, ourEngineID_len);
+    if (ourEngineID_len == 0 || ourEngineID_len > *parms->secEngineIDLen)
+        return SNMPERR_GENERR;
+    memcpy(parms->secEngineID, ourEngineID, *parms->secEngineIDLen);
+
+    /* Section 5.2, step 2 */
+    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'
+        /* || seclevel is not valid */
+        ) {
+        /* XXX: snmpTsmInvalidCaches++ */
+        return SNMPERR_GENERR;
+    }
+
+    /* Section 5.2, step 3 */
+    if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                               NETSNMP_DS_LIB_TSM_USE_PREFIX)) {
+        /* Section 5.2, step 3a */
+        const char *prefix;
+        prefix = "ssh:"; /* XXX */
+
+        if (prefix == NULL) {
+            /* XXX: snmpTsmUnknownPrefixes++ */
+            return SNMPERR_GENERR;
+        }
+
+        if (strlen(prefix) < 1 || strlen(prefix) > 4) {
+            /* XXX: snmpTsmInvalidPrefixes++ */
+            return SNMPERR_GENERR;
+        }
+        
+        snprintf(parms->secName, *parms->secNameLen,
+                 "%s:%s", prefix, tmStateRef->securityName);
+    } else {
+        strncpy(parms->secName, tmStateRef->securityName, *parms->secNameLen);
+    }
+    *parms->secNameLen = strlen(parms->secName);
+    DEBUGMSGTL(("tsm", "user: %s/%d\n", parms->secName, *parms->secNameLen));
+
+    /* Section 5.2 Step 4 */
+    if (parms->secLevel > tmStateRef->transportSecurityLevel) {
+        /* XXX: snmpTsmInadequateSecurityLevels++ */
+        return SNMPERR_UNSUPPORTED_SEC_LEVEL;
+    }
+
+    /* Section 5.2 Step 5 */
+
+    if (NULL == *parms->secStateRef) {
+        tsmSecRef = SNMP_MALLOC_TYPEDEF(netsnmp_tsmSecurityReference);
+    } else {
+        tsmSecRef = *parms->secStateRef;
+    }
+
+    if (!tsmSecRef)
+        return 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 */
+    /*
+     * 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),
+                                        "usm first octet")) == NULL) {
+        /*
+         * RETURN parse error 
+         */
+        return SNMPERR_GENERR;
+    }
+    
+    *parms->scopedPdu = data_ptr;
+    *parms->scopedPduLen = parms->wholeMsgLen - (data_ptr - parms->wholeMsg);
+
+    /* Section 5.2, Step 7 */
+    *parms->maxSizeResponse = parms->maxMsgSize; /* XXX */
+
+    tsmSecRef->securityLevel = parms->secLevel;
+
+    return SNMPERR_SUCCESS;
+}
diff --git a/snmplib/snmpusm.c b/snmplib/snmpusm.c
index 389b677..00699fb 100644
--- a/snmplib/snmpusm.c
+++ b/snmplib/snmpusm.c
@@ -518,7 +518,7 @@
      * Calculate lengths.
      */
     if ((engIDlen = asn_predict_length(ASN_OCTET_STR,
-                                       0, secEngineIDLen)) == -1) {
+                                       NULL, secEngineIDLen)) == -1) {
         return -1;
     }
 
@@ -534,29 +534,31 @@
         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 ((*otstlen = asn_predict_length(ASN_SEQUENCE,
+                                       NULL, *seq_len)) == -1) {
         return -1;
     }
 
     if ((*msgSecParmLen = asn_predict_length(ASN_OCTET_STR,
-                                             0, *otstlen)) == -1) {
+                                             NULL, *otstlen)) == -1) {
         return -1;
     }
 
@@ -584,7 +586,7 @@
         scopedPduLen = ROUNDUP8(scopedPduLen);
 
         if ((*datalen =
-             asn_predict_length(ASN_OCTET_STR, 0, scopedPduLen)) == -1) {
+             asn_predict_length(ASN_OCTET_STR, NULL, scopedPduLen)) == -1) {
             return -1;
         }
     } else {
@@ -1387,7 +1389,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 +1517,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 +1592,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,
@@ -2617,8 +2620,8 @@
 
             if (remaining % 8 != 0) {
                 DEBUGMSGTL(("usm",
-                            "Ciphertext is %lu bytes, not an integer multiple of 8 (rem %d)\n",
-                            remaining, remaining % 8));
+                            "Ciphertext is %lu bytes, not an integer multiple of 8 (rem %lu)\n",
+                            (unsigned long)remaining, (unsigned long)remaining % 8));
                 if (snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS) ==
                     0) {
                     DEBUGMSGTL(("usm", "%s\n", "Failed increment statistic."));
@@ -2768,7 +2771,7 @@
 {
     struct snmp_secmod_def *def;
 
-    DEBUGMSGTL(("init_usm", "unit_usm: %d %d\n", usmNoPrivProtocol[0],
+    DEBUGMSGTL(("init_usm", "unit_usm: %lu %lu\n", usmNoPrivProtocol[0],
                 usmNoPrivProtocol[1]));
 
     sc_init();                  /* initalize scapi code */
@@ -2777,6 +2780,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 
      */
@@ -2927,7 +2932,7 @@
     if (user->userStatus != RS_ACTIVE)
         return -1;
 
-    DEBUGMSGTL(("comparex", "Comparing: %d %d ", usmNoPrivProtocol[0],
+    DEBUGMSGTL(("comparex", "Comparing: %lu %lu ", usmNoPrivProtocol[0],
                 usmNoPrivProtocol[1]));
     DEBUGMSGOID(("comparex", usmNoPrivProtocol,
                  sizeof(usmNoPrivProtocol) / sizeof(oid)));
@@ -3566,11 +3571,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);
 }
 
@@ -3646,7 +3648,7 @@
     }
 
     line = read_config_read_octet_string(line, &user->userPublicString,
-                                         &len);
+                                         &user->userPublicStringLen);
     return user;
 }
 
diff --git a/snmplib/snmpv3.c b/snmplib/snmpv3.c
index e3bdc50..e451f31 100644
--- a/snmplib/snmpv3.c
+++ b/snmplib/snmpv3.c
@@ -216,16 +216,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, 
@@ -1056,7 +1053,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-******
@@ -1198,7 +1195,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,6 +1207,28 @@
 }
 
 /*
+ * 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 
  */
 void
@@ -1293,6 +1312,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,
diff --git a/snmplib/snprintf.c b/snmplib/snprintf.c
index aaaf7d1..e235e19 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);
diff --git a/snmplib/strtoull.c b/snmplib/strtoull.c
index be94f29..ea538ba 100644
--- a/snmplib/strtoull.c
+++ b/snmplib/strtoull.c
@@ -20,6 +20,8 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#if !HAVE_STRTOULL || defined(STRTOULL_UNIT_TEST)
+
 #include <errno.h>
 #include <ctype.h>
 #include <limits.h>
@@ -27,9 +29,6 @@
 #include <inttypes.h>
 #endif
 
-#include <net-snmp/types.h>
-#include <net-snmp/library/system.h>
-
 /*
  * UINT64_C: C99 macro for the suffix for uint64_t constants. 
  */
@@ -274,6 +273,8 @@
 
 #endif /* defined(STRTOULL_UNIT_TEST) */
 
+#endif /* !HAVE_STRTOULL || defined(STRTOULL_UNIT_TEST) */
+
 /*
  * Local variables:
  * c-basic-offset: 4
diff --git a/snmplib/system.c b/snmplib/system.c
index 38ecfeb..bb47b7c 100644
--- a/snmplib/system.c
+++ b/snmplib/system.c
@@ -33,6 +33,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.
+ */
+/*
  * System dependent routines go here
  */
 #include <net-snmp/net-snmp-config.h>
@@ -83,6 +89,10 @@
 #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,6 +154,17 @@
 #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
@@ -166,6 +187,33 @@
 # define LOOPBACK    0x7f000001
 #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 +242,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 +299,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 */
     }
@@ -646,7 +706,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)
@@ -835,6 +895,84 @@
 #endif                          /* ! WIN32 */
 /*******************************************************************/
 
+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 = getaddrinfo(name, NULL, &hint, &addrs);
+    if (err != 0) {
+#if HAVE_GAI_STRERROR
+        snmp_log(LOG_ERR, "getaddrinfo: %s %s\n", name,
+                 gai_strerror(err));
+#else
+        snmp_log(LOG_ERR, "getaddrinfo: %s (error %d)\n", name,
+                 err);
+#endif
+        return -1;
+    }
+    if (addrs != NULL) {
+        memcpy(addr_out,
+               &((struct sockaddr_in *) addrs->ai_addr)->sin_addr,
+               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 = 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
+}
+
+/*******************************************************************/
+
 #ifndef HAVE_STRNCASECMP
 
 /*
@@ -1070,13 +1208,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? 
@@ -1214,3 +1353,45 @@
 #endif
 }
 
+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 );
+        if (pwd)
+            uid = pwd->pw_uid;
+        else
+#endif
+            snmp_log(LOG_WARNING, "Can't identify user (%s).\n", useroruid);
+    }
+    return uid;
+    
+}
+
+int netsnmp_str_to_gid(const char *grouporgid) {
+    int gid;
+#if HAVE_GETGRNAM && HAVE_GRP_H
+    struct group  *grp;
+#endif
+
+    gid = atoi(grouporgid);
+
+    if ( gid == 0 ) {
+#if HAVE_GETGRNAM && HAVE_GRP_H
+        grp = getgrnam( grouporgid );
+        if (grp)
+            gid = grp->gr_gid;
+        else
+#endif
+            snmp_log(LOG_WARNING, "Can't identify group (%s).\n",
+                     grouporgid);
+    }
+
+    return gid;
+}
diff --git a/snmplib/tools.c b/snmplib/tools.c
index 2206ff3..61a3644 100644
--- a/snmplib/tools.c
+++ b/snmplib/tools.c
@@ -43,6 +43,14 @@
 #ifdef HAVE_ARPA_INET_H
 #include <arpa/inet.h>
 #endif
+#ifdef HAVE_CRTDBG_H
+/*
+ * Define _CRTDBG_MAP_ALLOC such that in debug builds (when _DEBUG has been
+ * defined) e.g. malloc() is rerouted to _malloc_dbg().
+ */
+#define _CRTDBG_MAP_ALLOC 1
+#include <crtdbg.h>
+#endif
 #ifdef cygwin
 #include <windows.h>
 #endif
@@ -63,9 +71,11 @@
 #include <net-snmp/library/mib.h>
 #include <net-snmp/library/scapi.h>
 
-#ifdef WIN32
 /**
  * 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)
 {
@@ -104,7 +114,6 @@
     if (ptr)
         free(ptr);
 }
-#endif /* WIN32 */
 
 /**
  * This function increase the size of the buffer pointed at by *buf, which is
@@ -765,7 +774,7 @@
 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;
 }
 
@@ -778,7 +787,7 @@
     if (!pm)
         return;
 
-    gettimeofday((struct timeval *) pm, 0);
+    gettimeofday((struct timeval *) pm, NULL);
 }
 
 
diff --git a/snmplib/winservice.c b/snmplib/winservice.c
index c323cf0..050f4e5 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,15 @@
 #define CountOf(arr) ( sizeof(arr) / sizeof(arr[0]) )
 
 
+#if defined(WIN32) && defined(HAVE_WIN32_PLATFORM_SDK) && !defined(mingw32)
+#pragma comment(lib, "iphlpapi.lib")
+#ifdef USING_WINEXTDLL_MODULE
+#pragma comment(lib, "snmpapi.lib")
+#pragma comment(lib, "mgmtapi.lib")
+#endif
+#endif
+
+ 
     /*
      * External global variables used here
      */
diff --git a/testing/TESTCONF.sh b/testing/TESTCONF.sh
index d58effd..c8e8c99 100644
--- a/testing/TESTCONF.sh
+++ b/testing/TESTCONF.sh
@@ -94,6 +94,7 @@
 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"
diff --git a/testing/eval_tools.sh b/testing/eval_tools.sh
index a9d3ad1..9c09cc7 100644
--- a/testing/eval_tools.sh
+++ b/testing/eval_tools.sh
@@ -372,6 +372,14 @@
     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
diff --git a/testing/tests/Stransport b/testing/tests/Stransport
new file mode 100755
index 0000000..afdb131
--- /dev/null
+++ b/testing/tests/Stransport
@@ -0,0 +1,16 @@
+export SNMP_TRANSPORT_SPEC
+export SNMP_SNMPD_PORT
+export SNMP_TEST_DEST
+
+# 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/Svacmconfig b/testing/tests/Svacmconfig
index cdcc35b..d9d862d 100644
--- a/testing/tests/Svacmconfig
+++ b/testing/tests/Svacmconfig
@@ -18,6 +18,8 @@
 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
diff --git a/testing/tests/T120proxyget b/testing/tests/T120proxyget
index d10177b..3c86e17 100644
--- a/testing/tests/T120proxyget
+++ b/testing/tests/T120proxyget
@@ -9,7 +9,7 @@
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 
 # XXX: ucd-snmp/proxy doesn't properly support TCP -- remove this once it does
-[ "x$SNMP_TRANSPORT_SPEC" = "xtcp" ] && SKIP
+[ "x$SNMP_TRANSPORT_SPEC" = "xtcp" -o "x$SNMP_TRANSPORT_SPEC" = "xtcp6" ] && SKIP
 
 #
 # Begin test
@@ -39,6 +39,9 @@
   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}"
diff --git a/testing/tests/T121proxyset b/testing/tests/T121proxyset
index 8c1c7a6..3af0b4e 100644
--- a/testing/tests/T121proxyset
+++ b/testing/tests/T121proxyset
@@ -10,7 +10,7 @@
 SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
 
 # XXX: ucd-snmp/proxy doesn't properly support TCP -- remove this once it does
-[ "x$SNMP_TRANSPORT_SPEC" = "xtcp" ] && SKIP
+[ "x$SNMP_TRANSPORT_SPEC" = "xtcp" -o "x$SNMP_TRANSPORT_SPEC" = "xtcp6" ] && SKIP
 
 #
 # Begin test
@@ -40,6 +40,9 @@
   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
diff --git a/testing/tests/T122proxysetfail b/testing/tests/T122proxysetfail
index 8ecf9bf..19e20e4 100644
--- a/testing/tests/T122proxysetfail
+++ b/testing/tests/T122proxysetfail
@@ -40,6 +40,9 @@
   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
diff --git a/testing/tests/T160snmpnetstat b/testing/tests/T160snmpnetstat
index 15de54c..04b7443 100644
--- a/testing/tests/T160snmpnetstat
+++ b/testing/tests/T160snmpnetstat
@@ -5,17 +5,17 @@
 # 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
 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
diff --git a/testing/tests/T300udp b/testing/tests/T300udp
new file mode 100644
index 0000000..1a75747
--- /dev/null
+++ b/testing/tests/T300udp
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../eval_tools.sh
+
+HEADER UDP Transport
+
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=udp
+
+. ./Stransport
diff --git a/testing/tests/T310tcp b/testing/tests/T310tcp
new file mode 100644
index 0000000..6349bf3
--- /dev/null
+++ b/testing/tests/T310tcp
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+. ../eval_tools.sh
+
+HEADER TCP Transport
+
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+SKIPIFNOT NETSNMP_TRANSPORT_TCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tcp
+
+. ./Stransport
diff --git a/testing/tests/T320udpv6 b/testing/tests/T320udpv6
new file mode 100644
index 0000000..54260b2
--- /dev/null
+++ b/testing/tests/T320udpv6
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+. ../eval_tools.sh
+
+HEADER UDP6 Transport
+
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+SKIPIFNOT NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=udp6
+SNMP_TEST_DEST="[::1]:"
+
+. ./Stransport
diff --git a/testing/tests/T330tcpv6 b/testing/tests/T330tcpv6
new file mode 100644
index 0000000..bf39951
--- /dev/null
+++ b/testing/tests/T330tcpv6
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+. ../eval_tools.sh
+
+HEADER TCP6 Transport
+
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+SKIPIFNOT NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tcp6
+SNMP_TEST_DEST="[::1]:"
+
+. ./Stransport
diff --git a/testing/tests/T350unix b/testing/tests/T350unix
new file mode 100644
index 0000000..cfd96a0
--- /dev/null
+++ b/testing/tests/T350unix
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+. ../eval_tools.sh
+
+HEADER Unix Transport
+
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+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/tests/T360dtlsudp b/testing/tests/T360dtlsudp
new file mode 100644
index 0000000..74a7af1
--- /dev/null
+++ b/testing/tests/T360dtlsudp
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+. ../eval_tools.sh
+
+HEADER DTLS-UDP Transport
+
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+export SNMP_TRANSPORT_SPEC
+
+CONFIGAGENT '[snmp]' defX509ServerPub  	`pwd`/test-localhost.cert
+CONFIGAGENT '[snmp]' defX509ServerPriv 	`pwd`/test-localhost.priv
+CONFIGAGENT '[snmp]' defX509ClientCerts `pwd`/test-user.cert
+
+CONFIGAGENT '[snmp]' defX509ClientPub  	`pwd`/test-user.cert
+CONFIGAGENT '[snmp]' defX509ClientPriv 	`pwd`/test-user.priv
+CONFIGAGENT '[snmp]' defX509ServerCerts `pwd`/test-localhost.cert
+
+CONFIGAGENT '[snmp]' AllowSelfSignedX509 1
+
+CONFIGAPP   defX509ClientPub  	`pwd`/test-user.cert
+CONFIGAPP   defX509ClientPriv 	`pwd`/test-user.priv
+CONFIGAPP   defX509ServerCerts  `pwd`/test-localhost.cert
+
+CONFIGAPP   '[snmp]' defX509ServerPub  	`pwd`/test-localhost.cert
+CONFIGAPP   '[snmp]' defX509ServerPriv 	`pwd`/test-localhost.priv
+CONFIGAPP   '[snmp]' defX509ClientCerts `pwd`/test-user.cert
+
+CONFIGAPP   AllowSelfSignedX509 1
+
+export SNMP_TRANSPORT_SPEC
+export SNMP_SNMPD_PORT
+export SNMP_TEST_DEST
+
+CONFIGAGENT  rwuser -s tsm dtlstestuser authpriv
+
+STARTAGENT
+
+CAPTURE "snmpget -l ap -u bogus --defSecurityModel=tsm -On $SNMP_FLAGS $NOAUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
+
diff --git a/testing/tests/T399alias b/testing/tests/T399alias
new file mode 100644
index 0000000..d874e35
--- /dev/null
+++ b/testing/tests/T399alias
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+. ../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
+. ./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/tests/test-localhost.cert b/testing/tests/test-localhost.cert
new file mode 100644
index 0000000..2b49b26
--- /dev/null
+++ b/testing/tests/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/tests/test-localhost.priv b/testing/tests/test-localhost.priv
new file mode 100644
index 0000000..2e2a8eb
--- /dev/null
+++ b/testing/tests/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/tests/test-user.cert b/testing/tests/test-user.cert
new file mode 100644
index 0000000..4d56b35
--- /dev/null
+++ b/testing/tests/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/tests/test-user.priv b/testing/tests/test-user.priv
new file mode 100644
index 0000000..62507e3
--- /dev/null
+++ b/testing/tests/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/win32/Configure b/win32/Configure
index 98fa3fd..be3ee84 100644
--- 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,6 +86,26 @@
 
 ###############################################
 #
+# 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;
+  }
+}
+
+###############################################
+#
 # Create main Makefile
 #
 ###############################################
@@ -220,15 +241,9 @@
 /libagent
 libhelpers
 libnetsnmptrapd
+netsnmpmibs
 /;
 
-if ($sdk == 1) {
-  push (@programs, "netsnmpmibssdk");
-}
-else {
-  push (@programs, "netsnmpmibs");
-}
-
 if ($linktype eq "dynamic") {
   push (@programs, "libsnmp_dll");
 }
@@ -253,6 +268,13 @@
   {
     chomp;
 
+    if ($sdk == 1) {
+      s/^SDK=/SDK=true/;
+    }
+    else {
+      s/^SDK=/SDK=false/;
+    }
+
     s/^PROGNAME=/PROGNAME=$progName/;
     s/^CFG=/CFG=$config/;
     s/^OUTDIR=/OUTDIR=.\\$outdir/;
@@ -273,16 +295,10 @@
 #
 ###############################################
 my @programs = qw
-/snmptrapd
+/snmpd
+snmptrapd
 /;
 
-if ($sdk == 1) {
-  push (@programs, "snmpdsdk");
-}
-else {
-  push (@programs, "snmpd");
-}
-
 foreach my $progName (@programs) {
 
   my $makefile_out = "$progName\\Makefile";
@@ -300,6 +316,13 @@
   {
     chomp;
 
+    if ($sdk == 1) {
+      s/^SDK=/SDK=true/;
+    }
+    else {
+      s/^SDK=/SDK=false/;
+    }
+
     s/^LINKTYPE=/LINKTYPE=$linktype/;
     s/^PROGNAME=/PROGNAME=$progName/;
     s/^CFG=/CFG=$config/;
@@ -357,7 +380,7 @@
   while (<FILE_IN>)
   {
     chomp;
-
+    s/^#define PACKAGE_VERSION.*/#define PACKAGE_VERSION \"$version\"/;
     if ($prefix ne "") {
       s/^#define INSTALL_BASE.*/#define INSTALL_BASE \"$prefix\"/;
     }
@@ -381,33 +404,6 @@
   }
 }
 
-###############################################
-#
-# 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";
-  }
-}
-
 
 print qq/
 ---------------------------------------------------------
@@ -416,6 +412,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..2113ade 100644
--- a/win32/Makefile-apps.in
+++ b/win32/Makefile-apps.in
@@ -24,6 +24,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 +33,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 +75,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 +84,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 +106,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 +115,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 +163,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 +172,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..864a85f 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_
@@ -138,11 +131,6 @@
 	$(NMAKE) all
 	cd ..
 
-netsnmpmibssdk_ ::
-	cd netsnmpmibssdk
-	$(NMAKE) all
-	cd ..
-
 snmpdf ::
 	cd snmpdf
 	$(NMAKE) all
@@ -238,11 +226,6 @@
 	$(NMAKE) all
 	cd ..
 
-snmpdsdk_ ::
-	cd snmpdsdk
-	$(NMAKE) all
-	cd ..
-
 snmpconf ::
 	cd local
 	$(NMAKE) snmpconf
@@ -292,11 +275,6 @@
 	$(NMAKE) clean
 	cd ..
 
-netsnmpmibssdk_clean_ ::
-	cd netsnmpmibssdk
-	$(NMAKE) clean
-	cd ..
-
 snmpdf_clean ::
 	cd snmpdf
 	$(NMAKE) clean
@@ -392,11 +370,6 @@
 	$(NMAKE) clean
 	cd ..
 
-snmpdsdk_clean_ ::
-	cd snmpdsdk
-	$(NMAKE) clean
-	cd ..
-
 snmpconf_clean ::
 	cd local
 	$(NMAKE) snmpconf_clean
diff --git a/win32/config.h.borland b/win32/config.h.borland
index 3aef6bb..629085c 100644
--- a/win32/config.h.borland
+++ b/win32/config.h.borland
@@ -491,9 +491,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 +540,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. */
diff --git a/win32/dist/README.build.win32.txt b/win32/dist/README.build.win32.txt
index 0bd0ee5..ab5439c 100644
--- a/win32/dist/README.build.win32.txt
+++ b/win32/dist/README.build.win32.txt
@@ -1,520 +1,523 @@
-***************************************************************************
-*
-* 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

+*

+* 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 referenced 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. winExtDLL agent (requires SDK): disabled

+

+    11. Link type:                      dynamic		***

+

+    12. Install development files   	enabled         ***

+    

+    F.  Finished - start build

+    Q.  Quit - abort build

+    

+    Select option to set / toggle:

+

+8.  F to start the build and verify everything was built ok

+

+9.  Delete any generated config files from c:\usr\snmp\persist

+

+Part 2 - Compiling winExtDLL

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

+

+10. Run build.bat and set to the following:

+

+    Net-SNMP build and install options

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

+    

+    1. OpenSSL support:      		disabled

+    2. Platform SDK support: 		enabled         ***

+    

+    3. Install path:         		c:/usr

+    4. Install after build:  		disabled        ***

+    

+    5. Perl modules:         		disabled

+    6. Install perl modules: 		disabled

+    

+    7. Quiet build (logged): 		enabled

+    8. Debug mode:           		disabled

+

+    9. IPv6 transports:      		disabled

+    10. winExtDLL agent (requires SDK): enabled         ***

+

+    11. Link type:                      dynamic		***

+

+    12. Install development files   	disabled

+    

+    F.  Finished - start build

+    Q.  Quit - abort build

+    

+    Select option to set / toggle:

+

+11. F to start the build and verify everything was built ok

+

+12. Copy the new binary:

+

+    copy bin\release\snmpd.exe c:\usr\bin\snmpd-winExtDLL.exe

+

+13. Test each binary by running each one with -DwinExtDLL.  Make sure only the

+    winExtDLL version has debug output.

+

+14. Delete any generated config files from c:\usr\snmp\persist

+

+

+Part 3 - Creating the Perl package

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

+

+1.  cd (source dir)

+    cd perl

+

+2.  nmake ppd

+

+3.  Open an MSYS shell (unless you have tar.exe and gzip.exe)

+

+4.  cd (source dir)

+    cd perl

+

+5.  tar cvf NetSNMP.tar blib; gzip --best NetSNMP.tar

+

+6.  Open a Windows command prompt (CMD) and cd (source dir)\perl

+

+7.  ren Bundle-NetSNMP.ppd NetSNMP.ppd

+

+8.  Modify NetSNMP.ppd to look like the following.  Change the 

+    VERSION="x,x,x,x" line to the correct values.  Do NOT change 

+    * lines in the original file.

+

+<SOFTPKG NAME="NetSNMP" VERSION="5,4,1,0">

+    <TITLE>Net-SNMP</TITLE>

+    <ABSTRACT>Object Oriented Interface to Net-SNMP</ABSTRACT>

+    <AUTHOR></AUTHOR>

+    <IMPLEMENTATION>

+*        <OS NAME="MSWin32" />

+*        <ARCHITECTURE NAME="MSWin32-x86-multi-thread-5.8" />

+        <CODEBASE HREF="x86/NetSNMP.tar.gz" />

+    </IMPLEMENTATION>

+</SOFTPKG>

+

+9.  Copy the win32\dist folder from trunk to the win32 folder of the extracted source.

+

+10. Create base directories:

+

+    md "c:\usr\docs"

+    md "c:\usr\perl"

+    md "c:\usr\perl\x86"

+    md "c:\usr\temp"

+

+12. Copy files:

+

+    cd (source dir)

+    copy COPYING "c:\usr\docs"

+    copy win32\dist\README.txt "c:\usr"

+    copy win32\dist\scripts\net-snmp-perl-test.pl "c:\usr\bin"

+

+    copy perl\NetSNMP.ppd "c:\usr\Perl"

+    copy perl\NetSNMP.tar.gz "c:\usr\Perl\x86"

+

+12. Update the BUILD INFORMATION section of c:\usr\README.txt

+

+

+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 (both regular and WinExtDLL).  Also 

+    follow the Perl steps to create a new tar file etc.

+

+4.  Copy contents of c:\usr to c:\usr.temp

+

+5.  Delete c:\usr

+

+6.  Move c:\usr.temp c:\usr

+

+7.  Update the BUILD INFORMATION section of c:\usr\README.txt to include the SSL 

+    info and the filename.

+

+8.  Update the version stamp in c:\usr\net-snmp.nsi to include -ssl.  Example:

+

+    For example, for 5.3.0:

+

+    PRODUCT_MAJ_VERSION "5"

+    PRODUCT_MIN_VERSION "3"

+    PRODUCT_REVISION "0-ssl"

+    PRODUCT_EXE_VERSION "1"

+

+    The generated filename would be: net-snmp-5.3.0-ssl-1.win32.exe

+

+9.  Also in c:\usr\net-snmp.nsi, change:

+

+    !define OPENSSL_REQUIRED "0"

+

+    to

+

+    !define OPENSSL_REQUIRED "1"

+

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

+

+11. Select 'MakeNSISW (compiler interface)'

+

+12. Click File - Load Script

+

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

+

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

+    package

+

+15. Test the package

+

+16. Compare the directory contents of the compiled folder with the installed

+    folder to ensure there are no missing MIB files etc.  Modify net-snmp.nsi

+    and rebuild if required.

+

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

+

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..ba234ba
--- /dev/null
+++ b/win32/dist/build-binary.bat
@@ -0,0 +1,5 @@
+@echo off
+
+cd win32 > NUL: 2>&1
+perl build-binary.pl
+
diff --git a/win32/dist/build-binary.pl b/win32/dist/build-binary.pl
new file mode 100755
index 0000000..9632a92
--- /dev/null
+++ b/win32/dist/build-binary.pl
@@ -0,0 +1,622 @@
+#!/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::Copy;
+use Cwd 'abs_path';
+
+print "------------------------------------------------------\n";
+
+my $tar_command = 'C:\msys\1.0\bin\tar.exe';
+my $gzip_command = 'C:\msys\1.0\bin\gzip.exe';
+
+if (! (-f $tar_command)) {
+  die ("Could not find tar command ($tar_command)");
+}
+else {
+  print "tar command:  $tar_command\n";
+}
+if (! (-f $gzip_command)) {
+  die ("Could not find gzip command ($gzip_command)");
+}
+else {
+  print "gzip command: $gzip_command\n";
+}
+
+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;
+
+# Prepend win32\ if running from main directory
+my $current_pwd = `%COMSPEC% /c cd`;
+chomp $current_pwd;
+my $top_dir;
+my $win32_dir;
+my $perl_dir;
+
+if ($current_pwd =~ /\\win32\\dist$/) {
+  $win32_dir = "$current_pwd/../";
+  $top_dir = "$current_pwd/../../";
+  $perl_dir = "$current_pwd/../../perl/";
+}
+elsif ($current_pwd =~ /\\win32$/) {
+  $win32_dir = $current_pwd;
+  $top_dir = "$current_pwd/../";
+  $perl_dir = "$current_pwd/../perl/";
+}
+else {  # Assume top level folder
+  $win32_dir = "$current_pwd/win32/";
+  $top_dir = $current_pwd;
+  $perl_dir = "$current_pwd/perl/";
+}
+
+$top_dir = abs_path($top_dir);
+$win32_dir = abs_path($win32_dir);
+$perl_dir = abs_path($perl_dir);
+
+
+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}) {
+}
+else {
+  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";
+
+print "\n\nBuilding with options:\n";
+print "======================\n\n";
+print "1.  OpenSSL support:                " . $openssl. "\n";
+print "2.  Platform SDK support:           " . $sdk . "\n";
+print "\n";
+print "3.  Install path:                   " . $install_base . "\n";
+print "4.  Install after build:            " . $install . "\n";
+print "\n";
+print "5.  Perl modules:                   " . $perl . "\n";
+print "6.  Install perl modules:           " . $perl_install . "\n";
+print "\n";
+print "7.  Quiet build (logged):           " . $logging . "\n";
+print "8.  Debug mode:                     " . $debug . "\n";
+print "\n";
+print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
+print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
+print "\n";
+print "11. Link type:                      " . $linktype . "\n";
+print "\n";
+print "12. Install development files       " . $install_devel . "\n";
+
+chdir $win32_dir;
+&build();
+&create_perl_package();
+
+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";
+
+print "\n\nBuilding with options:\n";
+print "======================\n\n";
+print "1.  OpenSSL support:                " . $openssl. "\n";
+print "2.  Platform SDK support:           " . $sdk . "\n";
+print "\n";
+print "3.  Install path:                   " . $install_base . "\n";
+print "4.  Install after build:            " . $install . "\n";
+print "\n";
+print "5.  Perl modules:                   " . $perl . "\n";
+print "6.  Install perl modules:           " . $perl_install . "\n";
+print "\n";
+print "7.  Quiet build (logged):           " . $logging . "\n";
+print "8.  Debug mode:                     " . $debug . "\n";
+print "\n";
+print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
+print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
+print "\n";
+print "11. Link type:                      " . $linktype . "\n";
+print "\n";
+print "12. Install development files       " . $install_devel . "\n";
+
+chdir $win32_dir;
+&build();
+
+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";
+
+print "\n\nBuilding with options:\n";
+print "======================\n\n";
+print "1.  OpenSSL support:                " . $openssl. "\n";
+print "2.  Platform SDK support:           " . $sdk . "\n";
+print "\n";
+print "3.  Install path:                   " . $install_base . "\n";
+print "4.  Install after build:            " . $install . "\n";
+print "\n";
+print "5.  Perl modules:                   " . $perl . "\n";
+print "6.  Install perl modules:           " . $perl_install . "\n";
+print "\n";
+print "7.  Quiet build (logged):           " . $logging . "\n";
+print "8.  Debug mode:                     " . $debug . "\n";
+print "\n";
+print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
+print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
+print "\n";
+print "11. Link type:                      " . $linktype . "\n";
+print "\n";
+print "12. Install development files       " . $install_devel . "\n";
+
+chdir $win32_dir;
+&build();
+&create_perl_package();
+
+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";
+
+print "\n\nBuilding with options:\n";
+print "======================\n\n";
+print "1.  OpenSSL support:                " . $openssl. "\n";
+print "2.  Platform SDK support:           " . $sdk . "\n";
+print "\n";
+print "3.  Install path:                   " . $install_base . "\n";
+print "4.  Install after build:            " . $install . "\n";
+print "\n";
+print "5.  Perl modules:                   " . $perl . "\n";
+print "6.  Install perl modules:           " . $perl_install . "\n";
+print "\n";
+print "7.  Quiet build (logged):           " . $logging . "\n";
+print "8.  Debug mode:                     " . $debug . "\n";
+print "\n";
+print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
+print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
+print "\n";
+print "11. Link type:                      " . $linktype . "\n";
+print "\n";
+print "12. Install development files       " . $install_devel . "\n";
+
+chdir $win32_dir;
+&build();
+
+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.in") || 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;
+
+#
+# Build net-snmp.nsi file
+#
+  {
+    my $file_out = "$install_base/net-snmp.nsi";
+    my $file_in = "$install_base/net-snmp.nsi.in";
+  
+    open (FILE_OUT, ">$file_out") || die "Can't Open $file_out\n";
+    open (FILE_IN, "<$file_in") || die "Can't Open $file_in\n";
+    
+    print "creating $file_out\n";
+	  
+    while (<FILE_IN>)
+    {
+      chomp;
+      s/!define PRODUCT_MAJ_VERSION.*/!define PRODUCT_MAJ_VERSION \"$version_maj\"/;
+      s/!define PRODUCT_MIN_VERSION.*/!define PRODUCT_MIN_VERSION \"$version_min\"/;
+      s/!define PRODUCT_REVISION.*/!define PRODUCT_REVISION \"$version_rev\"/;
+      s/!define PRODUCT_EXE_VERSION.*/!define PRODUCT_EXE_VERSION \"$installer_exe_version\"/;
+	  if ($ENV{LIB} =~ /\\x64/) {
+	    s/!define PRODUCT_EXE_SUFFIX.*/!define PRODUCT_EXE_SUFFIX \".x64.exe\"/;
+	    s/!define WIN32_PLATFORM.*/!define PRODUCT_EXE_SUFFIX \"x64\"/;
+	  }
+	  else {
+	    s/!define PRODUCT_EXE_SUFFIX.*/!define PRODUCT_EXE_SUFFIX \".x86.exe"/;
+	    s/!define WIN32_PLATFORM.*/!define PRODUCT_EXE_SUFFIX \"x86\"/;
+	  }
+  
+      print FILE_OUT $_ . "\n";
+    }
+    close FILE_IN;
+    close FILE_OUT;
+  }
+
+print "\n=======\n";
+print "Done!!!\n";
+print "=======\n\n";
+
+exit;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#***************************************************************
+sub build {
+
+  $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";
+  
+  # Set PATH environment variable so Perl make tests can locate the DLL
+  $ENV{PATH} = "$current_pwd\\bin\\" . ($debug eq "enabled" ? "debug" : "release" ) . ";$ENV{PATH}";
+  
+  # Set MIBDIRS environment variable so Perl make tests can locate the mibs
+  my $temp_mibdir = "$current_pwd/../mibs";
+  $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..5e6fc75 100644
--- a/win32/dist/installer/net-snmp.nsi
+++ b/win32/dist/installer/net-snmp.nsi
@@ -1,13 +1,19 @@
 ; Script generated by the HM NIS Edit Script Wizard.
+SetCompressor /SOLID lzma
 
+!include x64.nsh
 !include "Sections.nsh"
 
+; Building a x86 or x64 binary
+!define INSTALLER_PLATFORM "x64"		
+
 ; 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_MIN_VERSION "5"
+!define PRODUCT_REVISION "pre2"
 !define PRODUCT_EXE_VERSION "1"
+!define PRODUCT_EXE_SUFFIX ".x64.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 +44,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
@@ -73,7 +79,7 @@
                   ${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 +87,25 @@
 
 ; 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\msvcm90.dll"
+  File "bin\msvcp90.dll"
+  File "bin\msvcr90.dll"
+  File "bin\Microsoft.VC90.CRT.manifest"
+
   File "bin\netsnmp.dll"
   File "bin\encode_keychange.exe"
   File "bin\snmpvacm.exe"
@@ -106,6 +124,40 @@
   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\msvcm90.dll"
+  File "bin\msvcp90.dll"
+  File "bin\msvcr90.dll"
+  File "bin\Microsoft.VC90.CRT.manifest"
+
+  File "bin.ssl\netsnmp.dll"
+  File "bin.ssl\encode_keychange.exe"
+  File "bin.ssl\snmpvacm.exe"
+  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 +203,105 @@
 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"  
+
+    File "bin\msvcm90.dll"
+    File "bin\msvcp90.dll"
+    File "bin\msvcr90.dll"
+    File "bin\Microsoft.VC90.CRT.manifest"
+
+    StrCmp $openSSL "false" SEC02_noOpenSSL SEC02_OpenSSL
+    SEC02_noOpenSSL:
+      File "bin\snmpd.exe"
+
+    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
+
+    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"  
+
+    File "bin\msvcm90.dll"
+    File "bin\msvcp90.dll"
+    File "bin\msvcr90.dll"
+    File "bin\Microsoft.VC90.CRT.manifest"
+
+    StrCmp $openSSL "false" SEC03_noOpenSSL SEC03_OpenSSL
+    SEC03_noOpenSSL:
+      File /oname=snmpd.exe "bin\snmpd-winExtDLL.exe"
+
+    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
+
+    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
+
+  File "bin\msvcm90.dll"
+  File "bin\msvcp90.dll"
+  File "bin\msvcr90.dll"
+  File "bin\Microsoft.VC90.CRT.manifest"
+
+  SEC04_noOpenSSL:
   File "bin\snmptrapd.exe"
+  goto SEC04_continue
+
+  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"
@@ -186,7 +325,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,6 +374,9 @@
   File "lib\*.*"
 SectionEnd
 
+Section "Encryption support (OpenSSL)" SEC07
+SectionEnd
+
 Section -AdditionalIcons
   CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
@@ -262,6 +415,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 +680,135 @@
 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
+
+; 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
+
+Pop $R0
 Pop $0
 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 +839,12 @@
   Delete "$INSTDIR\docs\COPYING"
   Delete "$INSTDIR\docs\Net-SNMP.chm"
   Delete "$INSTDIR\bin\net-snmp-perl-test.pl"
+
+  Delete "$INSTDIR\bin\msvcm90.dll"
+  Delete "$INSTDIR\bin\msvcp90.dll"
+  Delete "$INSTDIR\bin\msvcr90.dll"
+  Delete "$INSTDIR\bin\Microsoft.VC90.CRT.manifest"
+
   Delete "$INSTDIR\bin\snmptrapd.exe"
   Delete "$INSTDIR\bin\snmpd.exe"
   Delete "$INSTDIR\bin\snmpwalk.exe"
@@ -600,6 +866,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"
@@ -719,6 +986,7 @@
   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"
@@ -831,6 +1099,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 +1179,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 +1190,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 +1241,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 +1256,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"
@@ -1038,51 +1321,14 @@
 
 Function IsSSLInstalled
   Push $R0
-  StrCmp ${OPENSSL_REQUIRED} "0" continueInstall
-  ReadEnvStr $R0 "windir"
-  IfFileExists "$R0\system32\libeay32.dll" 0 noSSL
+  ReadEnvStr $R0 "OPENSSL_CONF"
+  IfFileExists "$R0" 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
+    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 $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/libagent/Makefile.in b/win32/libagent/Makefile.in
index 0b4dbc4..69b2771 100644
--- a/win32/libagent/Makefile.in
+++ b/win32/libagent/Makefile.in
@@ -9,31 +9,36 @@
 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)\snmp_agent.obj" \
+	"$(INTDIR)\snmp_vars.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 +55,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 +75,6 @@
 !ENDIF 
 
 
-!IF "$(CFG)" == "release" || "$(CFG)" == "debug"
 SOURCE=..\..\agent\agent_handler.c
 
 "$(INTDIR)\agent_handler.obj" : $(SOURCE) "$(INTDIR)"
@@ -200,6 +98,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 +121,3 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-
-!ENDIF 
-
-
diff --git a/win32/libagent/libagent.dsp b/win32/libagent/libagent.dsp
index f70d494..de92f0e 100644
--- a/win32/libagent/libagent.dsp
+++ b/win32/libagent/libagent.dsp
@@ -101,6 +101,10 @@
 # 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

@@ -133,6 +137,10 @@
 # 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

diff --git a/win32/libhelpers/Makefile.in b/win32/libhelpers/Makefile.in
index 263bcd2..bbc80e8 100644
--- a/win32/libhelpers/Makefile.in
+++ b/win32/libhelpers/Makefile.in
@@ -51,7 +51,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 "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\libhelpers.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) @<<
@@ -165,7 +165,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 "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\libhelpers.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) @<<
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/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..a55f510 100644
--- a/win32/libsnmp/Makefile.in
+++ b/win32/libsnmp/Makefile.in
@@ -65,11 +65,13 @@
 	-@erase "$(INTDIR)\system.obj"
 	-@erase "$(INTDIR)\tools.obj"
 	-@erase "$(INTDIR)\strtok_r.obj"
+	-@erase "$(INTDIR)\strtoull.obj"
 	-@erase "$(INTDIR)\ucd_compat.obj"
 	-@erase "$(INTDIR)\vacm.obj"
 	-@erase "$(INTDIR)\vc??.idb"
 	-@erase "$(INTDIR)\winpipe.obj"
 	-@erase "$(INTDIR)\fd_event_manager.obj"
+	-@erase "$(INTDIR)\large_fd_set.obj"
 	-@erase "$(INTDIR)\$(PROGNAME).pch"
 	-@erase "..\lib\$(OUTDIR)\netsnmp.lib"
 
@@ -80,7 +82,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 
 
 .c{$(INTDIR)}.obj::
    $(CPP) @<<
@@ -170,10 +172,12 @@
 	"$(INTDIR)\system.obj" \
 	"$(INTDIR)\tools.obj" \
 	"$(INTDIR)\strtok_r.obj" \
+	"$(INTDIR)\strtoull.obj" \
 	"$(INTDIR)\ucd_compat.obj" \
 	"$(INTDIR)\vacm.obj" \
 	"$(INTDIR)\winpipe.obj" \
-	"$(INTDIR)\fd_event_manager.obj"
+	"$(INTDIR)\fd_event_manager.obj" \
+	"$(INTDIR)\large_fd_set.obj"
 
 "..\lib\$(OUTDIR)\netsnmp.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
     $(LIB32) @<<
@@ -236,12 +240,15 @@
 	-@erase "$(INTDIR)\system.obj"
 	-@erase "$(INTDIR)\tools.obj"
 	-@erase "$(INTDIR)\strtok_r.obj"
+	-@erase "$(INTDIR)\strtoull.obj"
+	-@erase "$(INTDIR)\strtoull.obj"
 	-@erase "$(INTDIR)\ucd_compat.obj"
 	-@erase "$(INTDIR)\vacm.obj"
 	-@erase "$(INTDIR)\vc??.idb"
 	-@erase "$(INTDIR)\vc??.pdb"
 	-@erase "$(INTDIR)\winpipe.obj"
 	-@erase "$(INTDIR)\fd_event_manager.obj"
+	-@erase "$(INTDIR)\large_fd_set.obj"
 	-@erase "$(INTDIR)\$(PROGNAME).pch"
 	-@erase "..\lib\$(OUTDIR)\netsnmp.lib"
 
@@ -252,7 +259,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" /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" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
 
 .c{$(INTDIR)}.obj::
    $(CPP) @<<
@@ -342,10 +349,13 @@
 	"$(INTDIR)\system.obj" \
 	"$(INTDIR)\tools.obj" \
 	"$(INTDIR)\strtok_r.obj" \
+	"$(INTDIR)\strtoull.obj" \
+	"$(INTDIR)\strtoull.obj" \
 	"$(INTDIR)\ucd_compat.obj" \
 	"$(INTDIR)\vacm.obj" \
 	"$(INTDIR)\winpipe.obj" \
-	"$(INTDIR)\fd_event_manager.obj"
+	"$(INTDIR)\fd_event_manager.obj" \
+	"$(INTDIR)\large_fd_set.obj"
 
 "..\lib\$(OUTDIR)\netsnmp.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
     $(LIB32) @<<
@@ -665,6 +675,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\strtoull.c
+
+"$(INTDIR)\strtoull.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\ucd_compat.c
 
 "$(INTDIR)\ucd_compat.obj" : $(SOURCE) "$(INTDIR)"
@@ -689,5 +705,11 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\large_fd_set.c
+
+"$(INTDIR)\large_fd_set.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 !ENDIF 
 
diff --git a/win32/libsnmp/libsnmp.dsp b/win32/libsnmp/libsnmp.dsp
index 16eea2d..cbcda12 100644
--- a/win32/libsnmp/libsnmp.dsp
+++ b/win32/libsnmp/libsnmp.dsp
@@ -285,6 +285,10 @@
 # End Source File

 # Begin Source File

 

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

+# End Source File

+# Begin Source File

+

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

 # End Source File

 # Begin Source File

@@ -299,6 +303,10 @@
 

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

 # End Source File

+# Begin Source File

+

+SOURCE=..\..\snmplib\large_fd_set.c

+# End Source File

 # End Group

 # Begin Group "Header Files"

 

@@ -455,6 +463,14 @@
 

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

 # End Source File

+# Begin Source File

+

+SOURCE="..\..\include\net-snmp\library\fd_event_manager.h"

+# End Source File

+# Begin Source File

+

+SOURCE="..\..\include\net-snmp\library\large_fd_set.h"

+# End Source File

 # End Group

 # End Target

 # End Project

diff --git a/win32/libsnmp_dll/Makefile.in b/win32/libsnmp_dll/Makefile.in
index bef70ae..e81e1eb 100644
--- a/win32/libsnmp_dll/Makefile.in
+++ b/win32/libsnmp_dll/Makefile.in
@@ -10,71 +10,72 @@
 NULL=nul
 !ENDIF 
 
-!IF  "$(CFG)" == "release"
-
 ALL : "..\bin\$(OUTDIR)\netsnmp.dll"
 
+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)\strtoull.obj" \
+	"$(INTDIR)\ucd_compat.obj" \
+	"$(INTDIR)\vacm.obj" \
+	"$(INTDIR)\winpipe.obj" \
+	"$(INTDIR)\fd_event_manager.obj" \
+	"$(INTDIR)\large_fd_set.obj"
 
 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 +87,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 +108,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 +136,6 @@
 !ENDIF 
 
 
-!IF "$(CFG)" == "release" || "$(CFG)" == "debug"
 SOURCE=..\..\snmplib\asn1.c
 
 "$(INTDIR)\asn1.obj" : $(SOURCE) "$(INTDIR)"
@@ -681,6 +436,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\strtoull.c
+
+"$(INTDIR)\strtoull.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\ucd_compat.c
 
 "$(INTDIR)\ucd_compat.obj" : $(SOURCE) "$(INTDIR)"
@@ -698,12 +459,16 @@
 "$(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 
+SOURCE=..\..\snmplib\large_fd_set.c
+
+"$(INTDIR)\large_fd_set.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
diff --git a/win32/libsnmp_dll/libsnmp.def b/win32/libsnmp_dll/libsnmp.def
index 4670fb6..c619904 100644
--- a/win32/libsnmp_dll/libsnmp.def
+++ b/win32/libsnmp_dll/libsnmp.def
@@ -168,6 +168,9 @@
 	snmp_get_do_debugging
 	debug_indent
 	debug_indent_add
+        debug_indent_get
+        debug_config_register_tokens
+        debug_config_turn_on_debugging
 	debug_is_token_registered
 	debugmsg
 	debugmsg_hex
@@ -305,6 +308,7 @@
 	snmp_realloc
       netsnmp_config
       netsnmp_config_remember
+      netsnmp_config_error
       snmp_hex_to_binary
       snmpv3_options
       netsnmp_get_version
@@ -393,6 +397,7 @@
 	netsnmp_daemonize
 	snmp_log_options_usage
 	netsnmp_container_free_list
+	netsnmp_container_simple_free
 	netsnmp_oid_stash_getnext_node
 	netsnmp_oid_stash_free
 	netsnmp_get_list_node
@@ -412,6 +417,7 @@
 	netsnmp_udp6_agent_config_tokens_register
 	init_usm_conf
 	strtok_r
+        strtoull
         snmp_reset_var_buffers
         netsnmp_container_add_index
         netsnmp_container_find
@@ -426,6 +432,7 @@
         skip_token
         parse_secLevel_conf
         netsnmp_query_get_default_session
+        netsnmp_query_get_default_session_unchecked
         netsnmp_query_set_default_session
         netsnmp_ds_parse_boolean
         netsnmp_register_default_target
@@ -450,10 +457,21 @@
         netsnmp_query_walk
         netsnmp_query_getnext
         netsnmp_query_get
-	netsnmp_mktemp
+        netsnmp_gethostbyname_v4
+        netsnmp_str_to_gid
+        netsnmp_mktemp
+        netsnmp_str_to_uid
+        netsnmp_check_vb_truthvalue
+        snmp_set_var_typed_integer
+        netsnmp_large_fd_set_cleanup
+        netsnmp_large_fd_set_init
+        netsnmp_large_fd_is_set
+        netsnmp_large_fd_setfd
+        netsnmp_large_fd_clr
+        snmp_read2
+        netsnmp_dispatch_external_events2
+        netsnmp_external_event_info2
+        snmp_select_info2
+        sprint_realloc_hexstring
+        netsnmp_set_line_buffering
         debugmsg_suboid
-;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..cb0403a 100644
--- a/win32/libsnmp_dll/libsnmp_dll.dsp
+++ b/win32/libsnmp_dll/libsnmp_dll.dsp
@@ -292,6 +292,10 @@
 # End Source File

 # Begin Source File

 

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

+# End Source File

+# Begin Source File

+

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

 # End Source File

 # Begin Source File

@@ -306,6 +310,10 @@
 

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

 # End Source File

+# Begin Source File

+

+SOURCE=..\..\snmplib\large_fd_set.c

+# End Source File

 # End Group

 # Begin Group "Header Files"

 

@@ -462,6 +470,18 @@
 

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

 # End Source File

+# Begin Source File

+

+SOURCE="..\..\include\net-snmp\library\fd_event_manager.h"

+# End Source File

+# Begin Source File

+

+SOURCE="..\..\include\net-snmp\library\large_fd_set.h"

+# End Source File

 # End Group

+# Begin Source File

+

+SOURCE=.\libsnmp.def

+# End Source File

 # End Target

 # End Project

diff --git a/win32/net-snmp/agent/mib_module_config.h b/win32/net-snmp/agent/mib_module_config.h
index 95662ad..d981c80 100644
--- a/win32/net-snmp/agent/mib_module_config.h
+++ b/win32/net-snmp/agent/mib_module_config.h
@@ -18,8 +18,6 @@
 /* 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.  */
diff --git a/win32/net-snmp/net-snmp-config.h b/win32/net-snmp/net-snmp-config.h
index a6826b3..7523402 100644
--- a/win32/net-snmp/net-snmp-config.h
+++ b/win32/net-snmp/net-snmp-config.h
@@ -13,6 +13,19 @@
    1200 =  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
@@ -20,9 +33,13 @@
  * Cygwin
  * MinGW 
  */
-/* #undef HAVE_WIN32_PLATFORM_SDK */
+#define HAVE_WIN32_PLATFORM_SDK
 
-/* Only use Windows API functions available on Windows 2000 SP4 or later.
+/* Define NETSNMP_ENABLE_IPV6 to enable IPv6.  IPv6 is only available on
+ * Windows XP and higher.  */
+/* #undef NETSNMP_ENABLE_IPV6 */
+
+/* Only use Windows API functions available on Windows 2000 SP4 or later.  
  * We need at least SP1 for some IPv6 defines in ws2ipdef.h.
  * Only define _WIN32_WINNT when not being compiled with MSVC 6 without PSDK
  * because there is a bug in the MSVC 6 header <winsock.h> that causes
@@ -233,13 +250,14 @@
 /* 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. */
@@ -365,9 +383,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 +392,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 +416,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 +428,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 */
 
@@ -512,6 +518,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 +692,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
@@ -946,13 +952,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 +976,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
 
@@ -1030,96 +1043,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 */
+
+/* mshhdr.msg_control */
+/* #undef HAVE_STRUCT_MSGHDR_MSG_CONTROL */
+
+/* mshhdr.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 +1152,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. */
 
@@ -1503,6 +1519,7 @@
 
 /* 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_exclude(x)
 #define config_arch_require(x,y)
@@ -1577,15 +1594,42 @@
 typedef unsigned short mode_t;
 #endif
 #ifndef HAVE_STDINT_H
+typedef unsigned char uint8_t;
+typedef char int8_t;
+typedef unsigned short uint16_t;
+typedef short int16_t;
 typedef unsigned __int32 uint32_t;
 typedef long int32_t;
 typedef unsigned __int64 uint64_t;
 typedef __int64 int64_t;
+typedef unsigned __int64 uintmax_t;
+typedef __int64 intmax_t;
 typedef unsigned short   uint16_t;
 #else /* HAVE_STDINT_H */
 #include <stdint.h>
 #endif /* HAVE_STDINT_H */
 
+
+/* (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
 enum {
     netsnmp_compile_time_uintptr_t_size_check
@@ -1617,17 +1661,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,20 +1676,55 @@
  *  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(_MSC_VER)
+#  if defined(NETSNMP_USE_OPENSSL)
+#    ifdef NETSNMP_USE_DLL
+#      ifdef _DEBUG
+#        pragma comment(lib, "libeay32MDd.lib")
+#      else
+#        pragma comment(lib, "libeay32MD.lib")
+#      endif
+#    else
+#      ifdef _DEBUG
+#        pragma comment(lib, "libeay32MTd.lib")
+#      else
+#        pragma comment(lib, "libeay32MT.lib")
+#      endif
+#    endif
+#    pragma comment(lib, "gdi32.lib")
+#  endif
+#endif
+
+#if defined(NETSNMP_USE_DLL) && !defined(NETSNMP_TOOLS_C) && !defined(MSVC_PERL)
+
+#include <malloc.h>
+#include <stdlib.h> /* malloc(), calloc(), realloc() and free() */
+#include <string.h> /* strdup() */
+#include <ws2tcpip.h> /* socklen_t */
+#include <wspiapi.h> /* has inline function definitions referencing calloc(). */
+
+/* wrap alloc functions to use DLL's memory heap */
+
+#define strdup    netsnmp_strdup
+#define calloc    netsnmp_calloc
+#define malloc    netsnmp_malloc
+#define realloc   netsnmp_realloc
+#define free      netsnmp_free
+
+#endif /* defined(NETSNMP_USE_DLL) && !defined(NETSNMP_TOOLS_C) && !defined(MSVC_PERL) */
 
 /* MSVC OpenSSL linker settings. */
 #if defined(WIN32) && !defined(mingw32)
@@ -1681,7 +1752,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 +1760,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,7 +1780,8 @@
 #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
 #else
@@ -1719,10 +1790,20 @@
 #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. */
+/* #undef HAVE_STRTOULL */
+
 /*
  * Module configuration and control starts here.
  *
@@ -1766,9 +1847,16 @@
 #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
 
+#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..2e93dcd 100644
--- a/win32/net-snmp/net-snmp-config.h.in
+++ b/win32/net-snmp/net-snmp-config.h.in
@@ -13,6 +13,19 @@
    1200 =  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
@@ -22,7 +35,11 @@
  */
 /* #undef HAVE_WIN32_PLATFORM_SDK */
 
-/* Only use Windows API functions available on Windows 2000 SP4 or later.
+/* Define NETSNMP_ENABLE_IPV6 to enable IPv6.  IPv6 is only available on
+ * Windows XP and higher.  */
+/* #undef NETSNMP_ENABLE_IPV6 */
+
+/* Only use Windows API functions available on Windows 2000 SP4 or later.  
  * We need at least SP1 for some IPv6 defines in ws2ipdef.h.
  * Only define _WIN32_WINNT when not being compiled with MSVC 6 without PSDK
  * because there is a bug in the MSVC 6 header <winsock.h> that causes
@@ -233,13 +250,14 @@
 /* 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. */
@@ -365,9 +383,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 +392,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 +416,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 +428,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 */
 
@@ -512,6 +518,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 +692,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
@@ -946,13 +952,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 +976,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
 
@@ -1030,96 +1043,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 */
+
+/* mshhdr.msg_control */
+/* #undef HAVE_STRUCT_MSGHDR_MSG_CONTROL */
+
+/* mshhdr.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 +1152,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. */
 
@@ -1503,6 +1519,7 @@
 
 /* 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_exclude(x)
 #define config_arch_require(x,y)
@@ -1577,15 +1594,42 @@
 typedef unsigned short mode_t;
 #endif
 #ifndef HAVE_STDINT_H
+typedef unsigned char uint8_t;
+typedef char int8_t;
+typedef unsigned short uint16_t;
+typedef short int16_t;
 typedef unsigned __int32 uint32_t;
 typedef long int32_t;
 typedef unsigned __int64 uint64_t;
 typedef __int64 int64_t;
+typedef unsigned __int64 uintmax_t;
+typedef __int64 intmax_t;
 typedef unsigned short   uint16_t;
 #else /* HAVE_STDINT_H */
 #include <stdint.h>
 #endif /* HAVE_STDINT_H */
 
+
+/* (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
 enum {
     netsnmp_compile_time_uintptr_t_size_check
@@ -1617,17 +1661,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,20 +1676,55 @@
  *  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(_MSC_VER)
+#  if defined(NETSNMP_USE_OPENSSL)
+#    ifdef NETSNMP_USE_DLL
+#      ifdef _DEBUG
+#        pragma comment(lib, "libeay32MDd.lib")
+#      else
+#        pragma comment(lib, "libeay32MD.lib")
+#      endif
+#    else
+#      ifdef _DEBUG
+#        pragma comment(lib, "libeay32MTd.lib")
+#      else
+#        pragma comment(lib, "libeay32MT.lib")
+#      endif
+#    endif
+#    pragma comment(lib, "gdi32.lib")
+#  endif
+#endif
+
+#if defined(NETSNMP_USE_DLL) && !defined(NETSNMP_TOOLS_C) && !defined(MSVC_PERL)
+
+#include <malloc.h>
+#include <stdlib.h> /* malloc(), calloc(), realloc() and free() */
+#include <string.h> /* strdup() */
+#include <ws2tcpip.h> /* socklen_t */
+#include <wspiapi.h> /* has inline function definitions referencing calloc(). */
+
+/* wrap alloc functions to use DLL's memory heap */
+
+#define strdup    netsnmp_strdup
+#define calloc    netsnmp_calloc
+#define malloc    netsnmp_malloc
+#define realloc   netsnmp_realloc
+#define free      netsnmp_free
+
+#endif /* defined(NETSNMP_USE_DLL) && !defined(NETSNMP_TOOLS_C) && !defined(MSVC_PERL) */
 
 /* MSVC OpenSSL linker settings. */
 #if defined(WIN32) && !defined(mingw32)
@@ -1681,7 +1752,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 +1760,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,7 +1780,8 @@
 #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
 #else
@@ -1719,10 +1790,20 @@
 #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. */
+/* #undef HAVE_STRTOULL */
+
 /*
  * Module configuration and control starts here.
  *
@@ -1766,9 +1847,16 @@
 #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
 
+#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
index 4e24d75..f28700b 100644
--- 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,10 +56,6 @@
 <<
 
 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= \
@@ -129,6 +63,7 @@
 	"$(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" \
@@ -180,201 +115,39 @@
 	"$(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)\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_OBJS= $(LIB32_OBJS) \
+	"$(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
 
 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_OBJS)) 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 +183,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)"
@@ -584,6 +363,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 +500,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)"
@@ -745,6 +549,115 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\agent\mibgroup\ucd-snmp\dlmod.c
+"$(INTDIR)\dlmod.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\ucd-snmp\errormib.c
+"$(INTDIR)\errormib.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\ucd-snmp\extensible.c
+"$(INTDIR)\extensible.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\ucd-snmp\file.c
+"$(INTDIR)\file.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\ucd-snmp\loadave.c
+"$(INTDIR)\loadave.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\ucd-snmp\pass.c
+"$(INTDIR)\pass.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\ucd-snmp\pass_persist.c
+"$(INTDIR)\pass_persist.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\ucd-snmp\proc.c
+"$(INTDIR)\proc.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\ucd-snmp\proxy.c
+"$(INTDIR)\proxy.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\ucd-snmp\versioninfo.c
+"$(INTDIR)\versioninfo.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\winExtDLL.c
+"$(INTDIR)\winExtDLL.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+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..45d5744 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,8 +149,16 @@
 # 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"

 

@@ -241,6 +289,10 @@
 # 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

@@ -345,6 +397,14 @@
 # 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\header_complex.c

 # End Source File

 # Begin Source File

@@ -360,9 +420,25 @@
 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/snmpd/Makefile.in b/win32/snmpd/Makefile.in
index 41ac55e..9e34674 100644
--- a/win32/snmpd/Makefile.in
+++ b/win32/snmpd/Makefile.in
@@ -2,6 +2,7 @@
 CFG=
 OUTDIR=
 INTDIR=
+SDK=
 SSL=
 LINKTYPE=
 
@@ -14,21 +15,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 +25,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 +52,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 netsnmphelpers.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 +67,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 +94,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/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/snmpnetstat/Makefile.in b/win32/snmpnetstat/Makefile.in
index ba4d5e2..e27d97d 100644
--- a/win32/snmpnetstat/Makefile.in
+++ b/win32/snmpnetstat/Makefile.in
@@ -30,6 +30,7 @@
 	-@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 +39,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,7 +81,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)\if.obj" \
 	"$(INTDIR)\inet.obj" \
@@ -95,6 +96,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
@@ -127,6 +130,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 +139,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"
@@ -189,7 +193,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)\if.obj" \
 	"$(INTDIR)\inet.obj" \
@@ -204,6 +208,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/snmptrapd/Makefile.in b/win32/snmptrapd/Makefile.in
index eb72fa7..8ed668f 100644
--- a/win32/snmptrapd/Makefile.in
+++ b/win32/snmptrapd/Makefile.in
@@ -26,6 +26,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 +35,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 +78,7 @@
 BSC32_SBRS= \
 
 LINK32=link.exe
-LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmphelpers.lib netsnmptrapd.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /machine:I386 /out:"../bin/$(OUTDIR)/$(PROGNAME).exe" /libpath:"../lib/release" 
+LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmphelpers.lib netsnmptrapd.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /out:"../bin/$(OUTDIR)/$(PROGNAME).exe" /libpath:"../lib/release" 
 LINK32_OBJS= \
 	"$(INTDIR)\$(PROGNAME).obj" \
 	"$(INTDIR)\winservice.obj" \
@@ -88,6 +89,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 +114,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 +123,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 +173,7 @@
 <<
 
 LINK32=link.exe
-LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmphelpers.lib netsnmptrapd.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /machine:I386 /out:"../bin/$(OUTDIR)/$(PROGNAME).exe" /pdbtype:sept /libpath:"../lib/debug" 
+LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmphelpers.lib netsnmptrapd.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /out:"../bin/$(OUTDIR)/$(PROGNAME).exe" /pdbtype:sept /libpath:"../lib/debug" 
 LINK32_OBJS= \
 	"$(INTDIR)\$(PROGNAME).obj" \
 	"$(INTDIR)\winservice.obj" \
@@ -180,6 +184,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 +204,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 +293,3 @@
 
 
 !ENDIF 
-
-
-!ENDIF 
-
diff --git a/win32/win32.dsw b/win32/win32.dsw
index 4763c37..b18b9a6 100644
--- a/win32/win32.dsw
+++ b/win32/win32.dsw
@@ -35,6 +35,18 @@
 

 Package=<4>

 {{{

+  Begin Project Dependency

+  Project_Dep_Name libsnmp

+  End Project Dependency

+  Begin Project Dependency

+  Project_Dep_Name libsnmp

+  End Project Dependency

+  Begin Project Dependency

+  Project_Dep_Name libsnmp

+  End Project Dependency

+  Begin Project Dependency

+  Project_Dep_Name libsnmp

+  End Project Dependency

 }}}

 

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

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

 }}}

 

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

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

 }}}

 

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

@@ -101,9 +113,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 +128,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 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

 }}}

 

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

@@ -140,9 +152,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 +167,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 +182,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 +197,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 +212,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 +227,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 +242,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 +257,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 +272,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 +287,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 +302,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 +317,21 @@
 

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

 }}}

 

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

@@ -332,9 +344,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 +359,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 +374,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/win32sdk.dsw b/win32/win32dll.dsw
similarity index 62%
rename from win32/win32sdk.dsw
rename to win32/win32dll.dsw
index b3c6cba..1010914 100644
--- a/win32/win32sdk.dsw
+++ b/win32/win32dll.dsw
@@ -3,6 +3,21 @@
 

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

 

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

@@ -11,6 +26,9 @@
 

 Package=<4>

 {{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -23,30 +41,9 @@
 

 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>

-{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -59,11 +56,14 @@
 

 Package=<4>

 {{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

 

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

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

 

 Package=<5>

 {{{

@@ -71,9 +71,21 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+}}}

+

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

+

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

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -86,9 +98,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -101,14 +113,14 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

 

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

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

 

 Package=<5>

 {{{

@@ -116,18 +128,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 netsnmpmibssdk

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

+    End Project Dependency

 }}}

 

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

@@ -140,9 +152,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -155,9 +167,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -170,9 +182,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -185,9 +197,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -200,9 +212,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -215,9 +227,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -230,9 +242,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -245,9 +257,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -260,9 +272,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -275,9 +287,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -290,9 +302,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -305,21 +317,21 @@
 

 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

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

 }}}

 

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

@@ -332,9 +344,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -347,9 +359,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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

@@ -362,9 +374,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

 }}}

 

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