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.6.2*

    snmplib:
      - [PATCH 2835577]: Replace SNMP_ZERO of arrays with a memset.
      - [PATCH 3510454]: Allow the use of 0.0.0.0/0 as alias for default
      - [PATCH 3526599]: Don't hang on retried failing SNMPv3 responses
      - [BUG 3134323]: Fix crash when comparing invalid OIDs
      - Avoid unnecessary casts when using netsnmp_set_row_column()
      - Eliminate assorted dead variables

    snmpd:
      - [PATCH 2941811]: Handle successful requests with reqID 0
      - [PATCH 3096725]: sysORTable registation for notification log mib
      - [PATCH 3479740]: Fix hrSWRunPerf statistics
      - [PATCH 3487867]: Don't skip missing ifXTable entries (ifConnectorPresent FALSE)
      - [PATCH 3487919]: Fix compilation when caching is disabled
      - [PATCH 3495697]: Store persistent snmpTarget table changes
      - [BUG 3526549]: CVE-2012-2141 Array index error leading to crash
      - [BUG 3532090]: Fix high ifIndex values crashing hrDeviceDescr
      - Added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
      - Eliminate assorted dead variables
      - UDP-MIB: Report proper udpLocalAddress (instead of 0.0.0.0)

    snmpdx:
      - [PATCH 3445437]: Log AgentX disconnections (in line with connections)

    snmptrapd:
      - [BUG 3151254]: Fix crash with invalid traphandle directive
      - Avoid crash during shutdown due to invoking perl_destruct(NULL)
      - Don't invoke shutdown_perl() from SIGTERM handler
      - Handle changes to libmysqlclient API (affects Fedora 15/16)
      - Remove superfluous casts

    apps:
      - [PATCH 2835577]: Replace SNMP_ZERO of arrays with a memset.

    build/install:
      - [BUG 3152841]: Install util_funcs subheaders
      - OpenBSD: Fix order of headers when checking <netinet/in_pcb.h>
      - Add target to build agentxtrap from the toplevel
      - Build fix for systems lacking field msg_control in struct msghdr
      - Fix static builds using net-snmp-config and -*libs flags

    man:
      - [BUG 3190725]: Document snmp{,_sess}synch_response and snmp_async_send

    mib2c:
      - Make the mib2c foreach ranges work as advertised in the comments.

    perl:
      - Fix spelling in the documentation of the SNMP module
      - Fixed segmentation fault when handler registration fails.
      - Don't open stderr unnecessarily (affects embedded agent)

    python:
      - [PATCH 3185085]: Fix segfault on 64-bit systems

    testing:
      - [BUG 3474590]: Don't match underscores within the source root filename
      - Add a test for se_store_list()
      - Fix Perl regression test failures
      - Don't fail skipped Perl tests.
      - Remove unused variables

    AIX:
      - Eliminate configure warning regarding libperfstat.h (AIX 6.1ff)

    Cygwin:
      - Make date_n_time() produce time zone information
      - Fix get_uptime() / hrSystemUptime implementation

    FreeBSD:
      - [PATCH 3489387]: Install FreeBSD 10 header file (plus other missing versions)
      - Restore IP_RECVDSTADDR functionality.

    Linux:
      - [PATCH 3205811]: Option to skip fd/loop/ram devices in diskIOTable
      - [PATCH 3525998]: Don't use an uninitialised value in error message

    MinGW:
      - Avoid "pragma comment" warnings in <net-snmp/net-snmp-config.h>
      - Made regression test output independent of Windows registry settings

    NetBSD:
      - Update memory and CPU statistics handling

    OpenBSD:
      - Support updating the routing table

    Windows:
      - Avoid problems if Net-SNMP Perl modules are built with a different
	version of Microsoft Visual Studio than that used for ActivePerl
      - Avoid problems with PACKAGE_* macros when using GNU autotools.
      - Now builds correctly with a 64-bit compiler.
      - build.bat: Generate PDB files in release mode.
      - build.bat: Install netsnmp.dll before running Perl regression tests
      - Deprecated libsnmp.def - use NETSNMP_IMPORT instead
      - Fix winExtDLL compiler warnings (following u_long oid typedef)
      - Make linking with recent OpenSSL binaries succeed.
      - Make netsnmp_large_fd_set_resize() robust against memalloc failures.
      - Perl modules build now with IPv6 enabled.
      - Snmpd: Remove dlmod
      - Snmptrapd: Make the IP address to hostname conversion work


*5.6.1*

    general:
      - Upgraded DTLS support from alpha to full; mention that tsm is
	needed for TLS too

    snmplib:
      - Added function netsnmp_delete_table_data_set().
      - Added function netsnmp_delete_table_data_set(). Added declaration
	for the function netsnmp_table_data_delete_table() in a public
	agent header file.
      - Added function netsnmp_delete_table_data_set(). Added declaration
	for the function netsnmp_table_data_delete_table() in a public
	agent header file. Fixed memory leak in
	netsnmp_table_data_delete_table(). (Backported r19450 and r19454
	from trunk.)
      - Added macro netsnmp_static_assert().
      - Added snmp_sess_session_lookup().
      - Avoid that Valgrind complains about uninitialized data for the
	buffers returned by netsnmp_callback_recv() and
	netsnmp_callback_hook_build().
      - Be const correct over calls to str* functions.
      - Changed the argument type of debug_register_tokens() from char *
	into const char *. (Backported r19665 and r19666 from the trunk.)
      - Check the return value of strdup in netsnmp_create_data_list and
	fail if strdup fails.
      - Correct the extern "C" declarations to be consistent. Remove
	commented out code.
      - Fixed bugs in asn_parse_unsigned_int64(),
	asn_build_unsigned_int64(), asn_parse_signed_int64() and
	asn_build_signed_int64(). Most but not all of these bugs were
	specific to 64-bit systems. Fixes bug #3093199.
      - Fixed memory leak triggered by calling se_add_pair_to_list() with a
	value that already existed in the list.
      - Invoking se_clear_slist() does no longer create a dangling pointer.
      - Invoking se_clear_slist() does no longer create a dangling pointer.
	Fixed leaks-at-exit triggered by using the snmp_enum code.
      - Invoking se_clear_slist() does no longer create a dangling pointer.
	Fixed leaks-at-exit triggered by using the snmp_enum code.
	Documented behavior of se_add_pair(), se_add_pair_to_slist() and
	clear_snmp_enum(). Made snmp_enum example consistent with the rest
	of the code by adding strdup() calls and added a call to
	se_clear_all_lists().
      - Invoking se_clear_slist() does no longer create a dangling pointer.
	Fixed leaks-at-exit triggered by using the snmp_enum code.
	Documented behavior of se_add_pair(), se_add_pair_to_slist() and
	clear_snmp_enum(). Made snmp_enum example consistent with the rest
	of the code by adding strdup() calls and added a call to
	se_clear_all_lists(). Fixed a memory corruption problem triggered
	by the (undocumented) snmpd.conf "enum" keyword handler - storing
	pointers to strings allocated on the stack in a global list does
	not work.
      - Invoking se_clear_slist() does no longer create a dangling pointer.
	Fixed leaks-at-exit triggered by using the snmp_enum code.
	Documented behavior of se_add_pair(), se_add_pair_to_slist() and
	clear_snmp_enum(). Made snmp_enum example consistent with the rest
	of the code by adding strdup() calls and added a call to
	se_clear_all_lists(). Fixed a memory corruption problem triggered
	by the (undocumented) snmpd.conf "enum" keyword handler - storing
	pointers to strings allocated on the stack in a global list does
	not work. 
      - force a ; at the end of the static_assert macro.
      - netsnmp_handler_dup(): freeing the duplicated handler no longer
	causes a crash (double free) when handler->myvoid of the original
	handler was non-NULL.

    snmpd:
      - Patch 3141462: from fenner: fix agentx subagent issues with
	multiple-object requests
      - Patch from Niels to fix VACM persistant storage.
      - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
	shutdown_agent() during shutdown.
      - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
	shutdown_agent() during shutdown. The function clean_subtree() does
	no longer trigger double frees and invalid memory reads. Note: this
	function was already wrong at the time it was introduced (patch
	#724925 / r8531, July 2003).
      - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
	shutdown_agent() during shutdown. The function clean_subtree() does
	no longer trigger double frees and invalid memory reads. Note: this
	function was already wrong at the time it was introduced (patch
	#724925 / r8531, July 2003). Removed a comment in
	netsnmp_handler_free() that is now obsolete because of the
	clean_subtree() changes.
      - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
	shutdown_agent() during shutdown. The function clean_subtree() does
	no longer trigger double frees and invalid memory reads. Note: this
	function was already wrong at the time it was introduced (patch
	#724925 / r8531, July 2003). Removed a comment in
	netsnmp_handler_free() that is now obsolete because of the
	clean_subtree() changes. Modified netsnmp_deregister_agent_nsap()
	such that it never examines sessions that already have been closed.
	It is for this change that it was necessary to introduce the new
	function snmp_sess_session_lookup().
      - Fixed a double free at exit that was triggered by cleaning up the
	data structures used for embedded Perl support.
      - Fixed order of rpmlib detection and agent module configuration
	(backported r19621 from trunk).
      - Removing the last cache via netsnmp_cache_remove() does no longer
	trigger a crash.
      - Update the length of sysObjectID as well as the data when it is set
	from a configuration file.
      - Use the same autoconf symbol to decide both if strcasecmp should be
	declared and if it should be defined.
      - [BUG 1840230]: Don't include the index object as
	(pseudo-)accessible column.
      - [BUG 3058101]: Writeable 'long' instances work on 64-bit systems,
	but not writable 'int's
      - [BUG 3062538]: Fix com2sec* handling of non-default contexts
      - [BUG ]: enforce max length on TLS secName maps
      - [PATCH 2119725]: Fix skipNFSInHostResources handling of
	hrStorageTable
      - [PATCH 3053436]: from: takevos: fix: tcpConnectionTable_data_access
	invalid memory access
      - [PATCH 3057090]: make ethtool support on linux use the high speed
	struct info for 100G+.
      - [PATCH 3096725]: Don't register v1Trap callback, if SNMPv1 is not
	supported
      - [PATCH 3096725]: Include SNMPv1 trap OIDs in nlmLogNotificationID
	column
      - add debug for cert find hint as string/int
      - add debug for ssl ciphers, clarify fingerprint match debug
      - com2sec6 directive: If configure has not found getaddrinfo(),
	non-numeric IPv6 addresses do now trigger an error message.
	(Backported r19650.)
      - don't second-guess cache handler   (waves hand) this is not the
	function you are looking for. netsnmp_cache_is_valid() is not meant
	for mib modules
      - fix double free in TLS error handling
      - host/data_access/swinst_rpm: Fixed a memory leak in
	netsnm_swinst_arch_init().
      - host/data_access/swinst_rpm: Pass correct path to rpmdbOpen() such
	that opening the database succeeds.
      - host/data_access/swinst_rpm: Pass correct path to rpmdbOpen() such
	that opening the database succeeds. host/data_access/swinst_rpm:
	Log an error message if rpmdbOpen() fails.
      - instead of relying on NETSNMP_DS_LIB_APPTYPE, break out cert table
	inits to new agent cert init function, called from init_agent.
      - netsnmp_cache_free(): A more detailed message is now logged when
	attempting to free a cache that is still in the cache list.
	(Backported r19524.)
      - snmpd is again single-threaded. [PATCH 2959811]: Safranek:
	Reimplement Linux Netlink IPv6 prefix listener.
      - use cache-unique id instead of handler name for shared cache reload
	protection
      - Patch from Claus Klein to fix engineid generation on outgoing v3
	traps from the agent
      - add newly created/destroyed interfaces to ipv6IfTable	The list of
	interfaces was never refreshed, now it is reloaded every time the
	table is accessed. I've also fixed a memory leak and optimized the
	loading of the list a bit.

    snmptrapd:
      - Fixed a double free at exit that was triggered by cleaning up the
	data structures used for embedded Perl support. Fixed a double free
	at exit that was triggered by cleaning up the data structures used
	for embedded Perl support. Valgrind reported that double free as
	follows: Invalid read of size 4 at 0x59D0501: perl_destruct (in
	/usr/lib/perl5/5.12.1/x86_64-linux-thread-multi/CORE/libperl.so) by
	0x544DF8E: shutdown_perl (snmp_perl.c:166) by 0x403966:
	term_handler (snmptrapd.c:318) by 0x6D43A5F: ??? (in
	/lib64/libc-2.11.2.so) Address 0x7660f88 is 56 bytes inside a block
	of size 2,912 free'd at 0x4C26496: free (vg_replace_malloc.c:366)
	by 0x544DF9A: shutdown_perl (snmp_perl.c:167) by 0x6DDADF2:
	__select_nocancel (in /lib64/libc-2.11.2.so) by 0x404E20: main
	(snmptrapd.c:1258)

    snmpinform:
      - fix contextEngineIDs for outgoing informs from snmpinform to
        be the local engineID

    build:
      - [BUG 3088360]: Ensure python modules are built against the correct
	libraries

    building:
      - Some systems do not support the -E flag to grep, use autoconf to
	find the right egrep at all times.

    perl:
      - 0 patch 3049029: from fennec: fix a memory leak with snmp bulkwalks

    testing:
      - Generate a normal #line directive as per C99 instead of the
	compiler-specific #<n>-directive.
      - Introduced new test type next to capp and clib: cagentlib.
      - It is again possible to run an individual test via the script
	testing/RUNTESTS.
      - It is now possible to analyze the unit tests with Valgrind by
	setting the environment variables SNMP_SAVE_TMPDIR and
	DYNAMIC_ANALYZER. An example: (export SNMP_SAVE_TMPDIR=yes
	DYNAMIC_ANALYZER="valgrind --trace-children=yes --leak-check=full";
	cd testing && ./RUNFULLTESTS -g unit-tests)
      - Test 71 (com2sec6_simple) does now succeed even if IPv6 DNS
	resolution is not available. (Backported r19648.)
      - Test T030 does now pass on MinGW.
      - Unit tests can now invoke functions from libagent.
      - Unit tests can now invoke functions from libagent. Added unit test
	for table_dataset. (Backported from r19450 from the trunk.)

    unspecified:
      - [BUG 3102904]: All Net-SNMP C source files are now compiled with
	-fno-st rict-aliasing, at least if the configured compiler supports
	this flag.
      - [PATCH 3074918]: from weizheng: check for CONTAINER_INSERT failures
	and react appropriately to avoid memory leaks

    Cygwin:

    Linux:
      - [PATCH 3083027]: Fix RPM spec file to support CentOS
      - agent: ipNetToPhysicalTable: Do not log an error message if one or
	more interfaces are present that do not have such information
	(NUD_NOARP), e.g. tunnels. Reported by Stephen Hemminger. See also
	patch #3107003.
      - snmpd is again single-threaded.

    MinGW:
      - configure: Detection of the functions gai_strerror(),
	getaddrinfo(), gethostname() and gethostname() does now succeed.
	(Backported r19646 from the trunk.)
      - testing: If the agent has been asked to stop, wait until the snmpd
	process disappeared before proceeding.

    Win32:
      - Avoid that MSVC reports a warning message about redefinition of the
	malloc() macro during building the Net-SNMP source code.
      - When snmpd.exe is started in a command prompt window, the snmpd
	process now stops upon the first key press. This makes it easier to
	debug snmpd.exe for memory leaks.
      - [PATCH 3085187]: Building via the Microsoft Visual Studio project
	file (.dsw/.dsp) works again.
      - building: Avoid that MSVC 2010 prints a warning message about
	redefining EADDRINUSE.
      - building: Builds now correctly with a 64-bit compiler.
      - building: batch build with OpenSSL enabled and with recent OpenSSL
	development files works again.
      - shutdown_snmpNotifyFilterTable() and shutdown_winExtDLL() are now
	invoked when the Net-SNMP service is stopped. (Partially backported
	r19515 from the trunk.)
      - testing: Avoid that T200 fails on known Microsoft SNMP extension
	DLL bugs.

*5.6*

    snmplib:
      - Add const declarations to the disabled versions of the debugging
	code as well.
      - Add missing dependencies between transports.
      - Add missing symbol netsnmp_snmpSSHDomain_len, make
	netsnmp_snmpSSHDomain const.
      - Change oid to be a 32-bit type on ILP64 and LP64 platforms.
      - Change the parsing of ranges to accept all valid values.
      - Correct dependencies between transports. Remove unnecessary
	includes.
      - Correct the spelling of __cplusplus when checking if the file
	should be wrapped in extern "C".
      - Do not require that the UDP transport is included.
      - Fix agent crash when sending encrypted SNMPv3 traps. Reported by
	Srikapilan Gandhi
      - Fix responding to broadcast requests. UDP responses are sent with
	source IP address which was destination of appropriate requests
	(implemented in SVN rev. 15215). But if the destination of a
	request is broadcast IP address, the request was sent with the
	broadcast address as source. sendmsg() on Linux does not support
	this and returns error -> response is not sent. In order to send
	responses from the same interface, interface index of the
	appropriate interface must be used.
      - Install library/oid.h. Thanks to "Tomasz Lis" who spotted the bug.
      - Make the context argument of send_v3trap,
	send_trap_vars_with_context and netsnmp_send_traps refer to a const
	char*.
      - Make the name argument to find_varbind_in_list const
      - Prevent gcc ped-warning for NETSNMP_REMOVE_CONST
      - Remove declarations of functions that don't exist or are declared
	elsewhere.
      - Remove the oid typedef from <net-snmp/library/asn1.h>. It is still
	present in <net-snmp/types.h>, use that file.
      - Replace the debugging functions with dummies when debugging is
	disabled.
      - Revert 17808, instead factor out the declaration of oid to it's own
	file and include that file from both types.h and asn1.h
      - Use a void argument for the data argument of xdump.
      - [BUG 2919320]: Avoid accessing freed memory Reported by Tomasz Lis
      - [BUG 2922390]: Fix test for missing contextName parameter
      - [PATCH 2871747]: plug memory leak in OID processing. The memory
	leaked when small OID, which could fit pre-allocated vp->name_loc,
	was placed in different (allocated) one.
      - [PATCH 2942940]: Add a new function, netsnmp_parse_args, that is
	like snmp_parse_args but takes an additional bitmask, flags, to
	affect the behaviour. Also remove the magic handling of some
	application names.
      - [PATCH 2971270]: refuse to parse ASN.1 tokens with wrong type
	field. This may yield to problems with third-party applications
	which may depend on parsing ugly ASN.1 data - we'll see...
      - add function to validate RowStatus and StorageType varbinds - also
	remove some duplicate code and fix comments indent mangled
      - add functions to remove list/row data from request list
      - add interface for duplicating a container
      - add interface for duplicating a container container changes: add
	flags field to container meta-data; chg binary_array container to
	use container meta-data flags
      - add remove function to container iterator; implement it for
	binary_array
      - added the functions netsnmp_malloc(), netsnmp_calloc(),
	netsnmp_realloc(), netsnmp_strdup() and netsnmp_free().
      - builds again when HAVE_GETADDRINFO is not defined.
      - conf files can now include other conf files - also tweaked debug
	tokens here and there
      - create indexes for certificates in config path
      - directory container enhancements - fix potential memory leak - add
	filter callback to filter files returned - add option to return
	relative and not full paths - add option to sort returned list -
	add option to return empty container instead of NULL if no files
	found - change default container name to directory that was scanned
	- tweak debug/log messages
      - enhance file utils and dir utils - add optional stats struct to
	netsnmp_file - generalize dir container filter, add context to
	callback - add option to store netsnmp_files (w/stats) in container
	instead of just name
      - fix potential double free in CONTAINER_FREE - also added several
	compare routines
      - netsnmp_container enhancements: - add free_item function; defaults
	to netsnmp_container_simple_free - add CONTAINER_FREE_ALL
	macro/function (like CONTAINER_CLEAR but calls container free_item
	for each item in primary container) - add ability to set options on
	binary_array containers
      - new certificate api to support tls/dtls
      - new snmp token logOption allows specifying log destinations vi conf
	files - if stderr log enabled because of no log destination, turn
	it off when a log destination is enabled - don't call
	netsnmp_enable_stderrlog() from apps anymore
      - obsoleted NETSNMP_DS_LIB_ALARM_DONT_USE_SIG. From now on using
	SIGALRM to trigger Net-SNMP alarm handlers is no longer supported.
	Motivation: as known libnetsnmp supports time-based alarms via the
	functions snmp_alarm_register(), run_alarms() and other functions.
	Two different ways to trigger the function run_alarms() are
	supported inside libnetsnmp: 1. By making sure that the timeout
	argument of select() is small enough such that select() returns
	before the next alarm must be handled (when the variable
	NETSNMP_DS_LIB_ALARM_DONT_USE_SIG is set to one, which is the
	default). 2. By making sure that the kernel fires SIGALRM at the
	time when run_alarms() should be called (when the variable
	NETSNMP_DS_LIB_ALARM_DONT_USE_SIG is set to zero, which has to be
	configured explicitly). The following issues are associated with
	the second approach: 1. Alarm functions are used inside Net-SNMP to
	e.g. refresh cached table contents. As far as I can see there is
	nothing in the Net-SNMP source code that prevents the following
	from happening: a table refresh triggered via SIGALRM while a row
	is being removed from a cached table. This can result in dangling
	pointer dereferences and even a crash. 2. POSIX restricts signal
	handlers to calling functions that are either reentrant or
	non-interruptible
	(http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02
	_04.html#tag_02_04). Standard I/O functions like printf() and
	fprintf() are neither reentrant nor non-interruptible. run_alarms()
	is called from inside a signal handler, which means that this
	restriction applies to the function run_alarms() itself and all
	functions called by it (which includes the alarm callback
	functions). Or: e.g. snmp_log() and its callers must not be called
	from inside run_alarms() when this function is invoked from inside
	a signal handler. This is a severe restriction, and one that is
	hard to work with. 3. Not all software developers know how to make
	sure that signal delivery works correctly in a multithreaded
	context. POSIX does not guarantee to which thread a signal like
	SIGALRM will be delivered, unless that signal has been blocked
	before thread creation and is unblocked after thread creation (see
	also
	http://www.opengroup.org/onlinepubs/009695399/functions/pthread_sig
	mask.html). This is relevant for the Net-SNMP project not only
	because a worker thread is created inside
	agent/mibgroup/if-mib/data_access/interface_linux.c but also
	because libnetsnmp is often used inside multithreaded software.
	Currently no attempt is made to make sure that SIGALRM is processed
	by the Net-SNMP event processing loop thread. If SIGALRM is
	processed by another thread, this will result in one or more data
	races. Because all the difficulties associated with processing
	alarms from inside a signal handler function, and because fixing
	these would require more effort than it is worth,
	NETSNMP_DS_LIB_ALARM_DONT_USE_SIG has been deprecated and from now
	on approach (1) is the only supported approach to trigger alarm
	handlers.
      - plit snmpIPBaseDomain and move the IPv4 parts to IPv4Base and the
	socket generic parts to SocketBase.
      - when freeing a cache, stop timer and call cache free func - also
	add netsnmp_cache_remove
      - new experimental simple state machine
      - new experimental simple state machine new experimental row creation
	API which uses a state machine to try really hard to create a row
	from a given varbind list
      - fix issue with USM using inactive users
      - fixed potential buffer overflow when generating temp. file names
      - implemented a fix for the issue reported in patch #3042770. Created
	a snmp_select_info_flags function, and similar, that allow for
	alarms to not be run. This is then used in the synch_response
	functions to avoid 100% CPU loops
      - patch: 3042770: from mehaf: Made run_alarms() reentrant
      - when displaying a byte as single digit hex value, default to
	prefixing with 0 unless there is a seperator or addition hint data
      - 0 patch 3058645: from jorisesaturnus: modified version of the patch
	to use MSG_DONTWAIT for the unix domain socket
      - [PATCH 3067540]: Fix IPv4 OID indexes on 64-bit big-endian systems.

    snmplib, snmpd:
      - Do not check if values of type size_t are less than 0.
      - Make sure that a mask is given to open when O_CREAT is specified

    snmplib, snmpd, snmpnetstat:
      - Add correct size prefixes when printing variables of type oid.

    snmpd:
      - Add support of network interfaces with HW address bigger than 6
	bytes to ipNetToMediaTable and ipNetToPhysicalTable. Some HW, like
	InfiniBand, uses HW addresses with 9 and more bytes. Snmpd on Linux
	was not able to parse /proc/net/arp then and produced ugly 'ioctl
	35123 returned -1' to log.
      - Check the range of oid values towards the maximum oid value,
	notULONG_MAX
      - Extract the Exit and restart* subroutines from util_func in order
	to make it possible to build less code for the minimal case.
      - Fixed creation of views using snmpusm, OIDs with indexes > 255 are
	allowed now. This reverts SVN commit #7492.
      - Fixed invalid access to memory in TCP-MIB This partly reverts patch
	17719 - the entries *are* used after raw_data container is freed.
	These entries should be freed when associated rowreq_ctx is freed.
      - Fixed logging of 'truncating integer value > 32 bits' in IP-MIB and
	TCP-MIB The counters, which grow fast are now cut to 32bits.
      - Fixed udpTable indexes on big-endian 64bit Linux. The index was
	always '0.0.0.0' instead of real local IP address.
      - Made subtree_context_cache::context_name a const char*.
      - Make all the oids and oid lengths in agent_trap.c const and use
	them from everywhere.
      - Make the enterprise argument of netsnmp_send_traps and
	send_enterprise_trap_vars const
      - Only enable hostSwInst rpm support on linux hosts with librpm. This
	makes it possible to build on non-rpm linux distributions.
      - Removed the unused function xx_tokenize_exec_command from
	utilities/execute.
      - [BUG 2822360]: Fix memory leak when building table OIDs
      - [BUG 2841008]: Protect against crash following failed AgentX
	response
      - [BUG 2873858]: Fix handling of schedOwner index. Patch provided by
	Max Schubert.
      - [BUG 2894059]: Handle errors when counting interfaces
      - [BUG 2897000]: Suppress 32-bit counter truncation warnings.
      - [BUG 2900078]: Add support for OID variables with size in elements
	instead of bytes, correct sysObjectID to use this.
      - [PATCH 2835576]: Fix endianness issues in pass/pass_persist
      - [PATCH 2877518]: Fix handling of scoped AgentX variables
      - [PATCH 2883092]: Support monitoring processes that should not be
	running. Patch provided by Christian (cg75). Qn: Should this
	functionality be back-ported to earlier lines?
      - [PATCH 2883220]: Fix compilation problems when ifXTable is not
	included.
      - [PATCH 2887816]: Protect against division-by-zero crash
      - [PATCH 2901029]: Fix compiler warning on CloseHandle() Endian
	problems already addressed by patch #2835576
      - [PATCH 2903092]: Fix broken handling of broadcast entries.
      - [PATCH 2911323]: Fix agent lockup when monitoring AgentX-delegated
	information
      - [PATCH 2911970]: Properly terminate linked list of registrations.
	Patch provided by Mirko Deckert.
      - [PATCH 2956657]: Handle over-length AgentX OIDs. Patch provided by
	Rob West
      - [PATCH 2967400]: Retrieve error counters for the EtherLike-MIB
	Patch supplied by Josef Moellers.
      - [PATCH 2968642]: Catch overflow of pass-through command buffer.
	Patch from Andreas Jaeger/Leonardo Chiquitto
      - agent will no longer call table handlers if a set request for the
	handler has invalid indexes
      - agent will no longer call table handlers if a set request for the
	handler has invalid indexes don't call cleanup on first request on
	bad indexes. instead, set actual error later, and free request data
	sets on first request for sets
      - define and use new NETSNMP_LOGONCE macro
      - fix crash in IF-MIB and IP-MIB when there are some interfaces with
	broadcast IP address and some without. Reset the bcastentry in the
	loop, so it cannot be inserted to the twice. Without this patch,
	when an interface without broadcast address is processed, the
	bcastaddress from previous loop is inserted into the container.
	This obviously fails and the bcastentry is freed, but the container
	still contains reference to it -> SIGSEGV.
      - fix memory leak in ipAddressPrefixTable -
	net_snmp_search_update_prefix_info returns different code, when the
	entry was not inserted to list and can be freed.
      - fix rare race condition when reading RPM database. Old rpm versions
	return NULL instead of Header when another RPM instance holds
	database locks. I.e. snmpd sometimes crashes when reading hr_swInst
	and rpm is installing/updating/removing another package. As a
	solution, whole RPM cache is thrown away and re-read when we got an
	error from librpm. The whole process is restarted only three times,
	to prevent endless loop.
      - fixed a memory leak in TCP-MIB.
      - fixed filedescriptor leak in Etherlike-MIB and RMON-MIB
      - fixed memory leak when reading sensors for LM-SENSORS-MIB.
      - fixed one leak-at-exit.
      - include local port number in packet dumps. An example: Received 36
	byte packet from UDP: [127.0.0.1]:53909->[127.0.0.1]:1161 0000: 30
	22 02 01 01 04 06 70 75 62 6C 69 63 A1 15 02 0".....public... 0016:
	04 37 F2 D4 9B 02 01 00 02 01 00 30 07 30 05 06 .7.........0.0..
	0032: 01 01 05 00 .... Received SNMP packet(s) from UDP: GETNEXT
	message -- ccitt.1 Sending 118 bytes to UDP:
	[127.0.0.1]:53909->[127.0.0.1]:1161 0000: 30 74 02 01 01 04 06 70
	75 62 6C 69 63 A2 67 02 0t.....public.g. 0016: 04 37 F2 D4 9B 02 01
	00 02 01 00 30 59 30 57 06 .7.........0Y0W. 0032: 08 2B 06 01 02 01
	01 01 00 04 4B 4C 69 6E 75 78 .+........KLinux 0048: 20 61 73 75 73
	20 32 2E 36 2E 33 33 2E 32 2D 73 asus 2.6.33.2-s 0064: 63 73 74 20
	23 31 20 53 4D 50 20 50 52 45 45 4D cst #1 SMP PREEM 0080: 50 54 20
	53 61 74 20 41 70 72 20 33 20 32 31 3A PT Sat Apr 3 21: 0096: 31 30
	3A 35 38 20 43 45 53 54 20 32 30 31 30 20 10:58 CEST 2010 0112: 78
	38 36 5F 36 34 x86_64
      - made sure that handler registration failure does not create
	dangling pointers in the MIB subtree registry.
      - report real ifSpeed of network interface even it is down. Some
	interfaces can report their real speed, even they are down. And if
	they can't, the fallback to 10Mbps is still there.
      - table_data/tdata next handler will not be called during get
	processing if no valid rows are found for the handler
      - tdata helper now saves flags passed during creation; add tdata flag
	to NOT create the table container
      - translate NOSUCH*/ENDOFMIB errors during RESERVE1 to NOCREATION
      - utilities/execute do not need anything from util_funcs, so stop
	depending on it.
      - fixed value of IP-MIB::ipv6InterfaceForwarding on Linux   The value
	was 0 (not forwarding) or 1 (forwarding), should be 2 and 1 instead
	- netsnmp_interface_entry.forwarding_v6 is boolean, not TruthValue.
      - new API for indicating that persistent store needs to be saved
	after the current request finishes processing
      - [BUG 3003981]: Protect against buffer overflow
      - [BUG 3019243]: Register execFix compatability directive correctly.
      - patch 2912520: from listom: Free kmem references on shutdown
      - patch: 3028923: from jenso: new copy of the bridge-mib perl
	implementation
      - report gfs filesystems in hrStorageTable and hrFSTable.
      - [PATCH 2904900]: Documentation plus assorted handler code fixes
      - [PATCH 2911361]: Documentation (Provided by Tomasz Lis)
      - [PATCH 2911361]: Re-order code to group related functions together
      - [PATCH 2911361]: Remove redundant variables
      - [PATCH 2931446]: make the load averages writable.
      - [PATCH 3044512]: fix sysobjectid directive.
      - patch 2790249: from willpwillp: reduce cache time for the iftable
	to 3seconds to increase accuracy
      - patch 2825653: from bru5ce: fix sendmail.cf parsing in certain
	conditions
      - Log before returning.
      - [PATCH 3053428]: fix get_pid_from_inode when the inode is not
	found.
      - [PATCH 3058140]: check that inode is non-zero
      - patch 3062526: from mariog85: fix security engineID setting in the
	trapsess directive

    snmpdlib:
      - new functions to make stash ptr and newrow available to
	table_dataset handlers nonews: fix typo; tabs to spaces; use sizeof
	instead of constant

    snmpdx:
      - changed default TCP target from 0.0.0.0:705 to localhost:705. This
	is not only a more secure choice but it also makes it possible on
	Windows systems to let an AgentX subagent connect to an AgentX
	master agent running on the same system without having to set the
	variable NETSNMP_DS_AGENT_X_SOCKET.

    snmptable:
      - [BUG 2837998]: Handle missing instance subidentifiers in results
      - [PATCH 2850067]: Suppress extraneous "index" header token Patch
	supplied by Dan Nelson

    snmpusm:
      - Prefer to use a variable of the right type over an ugly cast.
	Lessen the scope of the variable as well.
      - patch from Martin Bjorklund to add a -Cw option to use
	createAndWait for agents that are strict about not allowing a row
	to be set to active until the authentication password has been
	changed; plus white-space clean up, manual additions and help
	output modifications by hardaker
      - Correct ifdefs, remove dead variables.

    man:
      - clean up manual pages (from Debian patch 56_manpage)

    snmpwalk:
      - Handle the case when the end oid is longer than the current oid
	correctly

    apps:
      - Add command to send AgentX notify requests to a master agent.
      - Generic host-specific configuration snmp.conf files are now read.
	See the HOST-SPECIFIC FILES section of the snmp.conf manual page.
      - Only build agentxtrap if the agentx libraries are built. Add a test
	case for agentxtrap. The enablement/disablement is inspired by
	automake conditionals
      - T command line flag can be used to configure transports
      - A new 'snmptls' command for manipulating the agent's TLS configuration

    apps, snmplib:
      - [PATCH 2835577]: identified by "Bart Van Assche": Replace SNMP_ZERO
	of arrays with a memset.

    snmptranslate:
      - fixed printing of ranges with UNSIGNED type.

    build:
      - [PATCH 2952020]: Explicitly set permission on temporary testing
	output directories. Patch provided by Leonardo Chiquitto.
      - run rpm configure checks for hr_swinst rewrite (rpm version only)
      - Do not call vacm_standard_views() or init_vacm_config_tokens() if
	the corresponding module was not compiled (from Debian patch
	61_vacm_missing_dependency_check)
      - Fix ipv6 generic case so test matches verification

    building:
      - 'make test TESTOPTS="-P tcp"' works fine now
      - 0 In case exec_prefix is unset then set it to '${prefix}' in order
	to pick up overrides of $prefix in make install.
      - Building Net-SNMP with dmalloc support enabled is again possible.
      - Do not link with libnetsnmphelpers any more as it is empty.
      - Fixed compilation with rpm-4.6. Turn on the legacy API when rpm-4.6
	is detected.
      - Introduced the variable 'with_socklib' in the configure script.
	This variable is set to "winsock2" for MinGW and to "default" for
	all other systems. Winsock2 tests are only run if this variable is
	set to "winsock2" (MinGW).
      - OS header detection check is now run before IPv6 stack detection.
      - Use AC_REPLACE_FUNCS to handle code that is missing on some
	platforms.
      - Use autoconf to decide if inet_ntop.c and inet_pton.c are to be
	compiled.
      - Use the same compiler command and flags for building of tests as
	for building of the code, thus enabling test of e.g. 32-bit code
	compiled on a 64-bit platform.
      - abort if the file program could not be found, since this is
	essential for proper operation of libtool.
      - added detection of lm_sensors version. I am not Autoconf guru, so I
	hope I got it right. The goal is to define NETSNMP_USE_SENSORS_V3
	*before* config_modules_agent processes
	agent/mibgroup/hardware/sensors.h.
      - made sure that the configure script does no longer invoke "tail
	-1", which is not POSIX-compliant.
      - save configure cache every once in while
      - update Version-Munge for renamed configure.ac
      - when generating a default value for the system location and no
	domain name is found in /etc/resolv.conf, use "@no.where" instead
	of "".
      - Add new test* entries from the testing Makefile.in to the top-level
	Makefile.in

    building, Win32:
      - Remove a few unused configure symbols

    hpux:
      - fix build error on HP-UX 10.20

    libnetsnmp:
      - Support for a stream-line stripped down version of internal OpenSSL
	support using --with-openssl=internal

    libnetsnmpagent, libnetsnmphelpers:
      - moved the functions netsnmp_bulk_to_next_fix_requests(),
	netsnmp_get_bulk_to_next_handler(), netsnmp_register_null(),
	netsnmp_register_null_context() and netsnmp_register_old_api() from
	libnetsnmphelpers to libnetsnmpagent. Notes: - This does not affect
	backwards compatibility for applications that link with
	$(net-snmp-config --agent-libs) since this involves linking with
	both libnetsnmphelpers and libnetsnmpagent. - Functions have been
	moved between libraries by moving entire source files.

    library:
      - [PATCH 2952140]: Overflow counter32 and gauge32 on 64bit systems
	correctly Patch provided by Leonardo Chiquitto

    libsnmp:
      - changed the type of the fourth argument of netsnmp_set_row_column()
	from const char* to const void* such that no cast is necessary when
	passing another datatype then char* or const char*.

    man:
      - [BUG 2972860]: Update broken references

    mib2c:
      - Remove unnecessary casts to u_char*
      - [BUG 2888569]: Fix generation of table columns array
      - mib2c can now optionally run sed on generated code
      - table_data template enhancements - add error checks during table
	init - create cache earlier so we can bail on failure - add option
	to create/delete row w/out adding/removing from container
      - update inline documentation; add storagetype test for columns

    mibs:
      - [BUG 2973890]: Fix imports, DiskIOEntry list and revision histories
      - patch 2974716: from bvassche: fix issues in the SMUX-MIB

    misc:
      - [PATCH 2836112]: Use the right modifier when printing size_t and
	ssize_t variables.
      - [PATCH 2952708]: Osterkamp: Added Perl implementation of BRIDGE-MIB

    perl:
      - NetSNMP::agent::netsnmp_request_infoPtr::getValue(): don't return a
	pointer to a buffer on the stack. How can this have worked reliably
	?? NetSNMP::agent::netsnmp_request_infoPtr::setValue(),
	ASN_COUNTER64: fixed bug that could cause this method to fail even
	when a valid number was provided.
      - [PATCH 2890931]: Better handling of Counter64 values. Patch
	provided by Max Romanov.
      - fixed a memory leak triggered by destroying a
	NetSNMP::agent::netsnmp_handler_registration object.
      - fixed a memory leak triggered by destroying a
	NetSNMP::agent::netsnmp_handler_registration object. fixed a memory
	leak triggered by failure of creating a NetSNMP::OID object.
      - fixed a memory leak triggered by destroying a
	NetSNMP::agent::netsnmp_handler_registration object. fixed a memory
	leak triggered by failure of creating a NetSNMP::OID object. fixed
	a memory leak triggered by the NetSNMP::OID::gettable() subroutine.
      - fixed a memory leak triggered by destroying a
	NetSNMP::agent::netsnmp_handler_registration object. fixed a memory
	leak triggered by failure of creating a NetSNMP::OID object. fixed
	a memory leak triggered by the NetSNMP::OID::gettable() subroutine.
	fixed an out-of-bounds array access triggered by the implementation
	of NetSNMP::SNMP. fixed a memory leak triggered by a PDU processing
	error in NetSNMP::SNMP. fixed memory leaks triggered by creating an
	SNMPv3 session via NetSNMP::SNMP. Also fixed the uninitialized
	variable accesses triggered by adding a varbind to a PDU via
	NetSNMP::SNMP introduced a few days ago. The bugs mentioned above
	have been found by inspecting the output of the following shell
	command: cd perl && valgrind --trace-children=yes --leak-check=full
	make test

    python:
      - [BUG 2919379]: Initialise SNMP sessions properly Provided by Diego
	Billi
      - [PATCH 2001656]: Handle null-termination of string values properly.
	Based on the principles of the patch from Tommy Beadle.
      - Support null-bytes in octet strings Patch supplied by Tommy Beadle
      - [PATCH 3035328]: from: sws: check the results of session creation
	for a failure case.
      - patch 3035578: from sws: keep error codes up to date

    testing:
      - Brand new test suite desigened to eventually test more
	functionality, provide for support of unit-tests and support of API
	tests
      - Change the test suite to work even if mib lookup is disabled.
      - Check the size of sun_path and use that to generate the maximal
	size strings for stressing com2secunix.
      - Make it possible to run the test suite from anywhere. Change the -D
	option to expect the path of the top source directory. Add an
	-srcdir option that is an alias for -D. Add an -builddir option to
	designate the directory where the test object is. Put srcdir and
	builddir in the environment for the test scripts Factor out the
	grep part of SKIPIF and SKIPIFNOT to ISDEFINED Use more readable
	keys in the opts hash in RUNFULLTESTS Adjust everything to use
	srcdir and builddir
      - Move the setting of MIBDIRS from the support script to the drivers
	since it is needed for the C tests as well.
      - Use olducd_run, not run_olducd. Change srcdir to refer to the top
	directory and not the testing subdirectory as that is what is
	expected in the test scripts.
      - add the test name to the start of the file "invoked".
      - made it possible to analyze all code covered by the regression
	tests with a dynamic analyzer, at least if that analyzer supports
	following child processes. An example:	 rm -rf /tmp/snmp-test-*
	make -s SNMP_SAVE_TMPDIR=yes DYNAMIC_ANALYZER="valgrind
	--trace-children=yes --track-origins=yes" make -s test grep -i
	uninitialised /tmp/snmp-test-* | xargs less

    unspecified:
      - Change the types of the return values of netsnmp_*_getSecName from
	char* to const char* since they point into internal structures.
      - Hide most functions and variables in the logmatch module. Cleaned
	up the header accordingly. Remove the need for forward declarations
	by reordering the functions.
      - Make the lists of com2Sec*Entries static
      - [BUG 2838243]: Correct the output of unsigned values. Thanks to
	Jack Huang of Qualcomm who pointed out this bug.
      - [BUG 2969872]: made sure that SOCK_STARTUP is invoked before
	init_agent() on Windows.
      - [BUG 2971257]: Fixed winExtDLL handling of multi-varbind getNext
	requests with OIDs in reverse lexicographical order.
      - [PATCH 2926374]: from Ed Swierk: fixed reading of ipAddressTable
	from /proc/net/if_inet6 on Linux The kernel might provide longer
	fields, especially on 64-bit systems.
      - [PATCH 2952034]: Return of the Great SuSE 'sprintf' Hunt... Patch
	supplied by Leonardo Chiquitto
      - add functions to get fingerprint from cert and log openssl errs
      - added a new DEBUGTRACETOK() macro
      - correctly calculate ifXTable.ifHCInUcastPkts on 32-bit Linux Linux
	does not provide standalone counter for incoming unicast packets
	(iucast) - it provides counter of all packets (iall) + separate
	counter for the multicast ones (imcast). Previous implementation of
	ifTable read these counters and calculated iucast = iall - imcast
	*before* these values were expanded into 64bits. This produced
	errors on 32bit systems when iall overflowed to zero and imcast was
	nozero -> iucast got negative and 'c64 32 bit check failed' error
	in snmpd log. Now the agent expands these values to 64bits first
	and *	  *then* performs    the calculation, using a new flag. 
	2010-05-27 08:18  magfr
      - fixed memory leak in RMON-MIB and ETHERLIKE-MIB when there are
	multiple aliases of an network interface Rationale: the aliased
	interfaces have the same ifIndex -> CONTAINER_INSERT fails, but the
	rejected entry was not freed.
      - generate the transport initialization function list dynamically and
	use it
      - moved all functions defined in libnetsnmphelpers to
	libnetsnmpagent. libnetsnmphelpers is now an empty library.
      - moved transport code into a separate subdirectory in snmplib
      - [BUG 3027900]: when cross-compiling it is now assumed that memcmp()
	is available instead of assuming that it is not available.
      - Do no double declare the index values.
      - Handle embedded %'s in the result message.
      - ilence some compilation warnings from test cases.

    Cygwin:
      - IPv6 is only supported under Cygwin 1.7 or later. The old
	implementation of IPv6 support in Net-SNMP under Cygwin involved a
	strange mixture of Cygwin and Winsock2 socket calls, which was too
	hard to maintain.
      - IPv6 is only supported under Cygwin 1.7 or later. The old
	implementation of IPv6 support in Net-SNMP under Cygwin involved a
	strange mixture of Cygwin and Winsock2 socket calls, which was too
	hard to maintain. builds again with IPv6 support enabled
	(--enable-ipv6). At least Net-SNMP 5.5 doesn't build under Cygwin
	with IPv6 support enabled. The configure script reported "checking
	ipv6 stack type ... result: "unknown, no" ... error: IPv6
	transports not available if IPv6 support is not enabled".
      - [BUG 2939168]: byte order of udpLocalPort is now correct.
      - [BUG 2939168]: fixed test infrastructure ("make test"). This has
	been fixed by using the proper environment separator character and
	by adding the path of the netstat executable for Cygwin in
	testing/TESTCONF.sh.
      - abort if the file program could not be found, since this is
	essential for proper operation of libtool. neither compile nor link
	winpipe.c.
      - building with another OpenSSL package than the Cygwin-provided
	packages openssl and openssl-devel is again possible.
      - builds now also when the source files are located on a Samba
	filesystem instead of a local filesystem.
      - enabled Unix transport. (Forward-ported r18687 from the V5.5
	branch).
      - libnetsnmp does now build as a DLL when configured with
	--enable-shared.
      - libnetsnmp does now build as a DLL when configured with
	--enable-shared. perl modules do now build (--with-perl-modules).
	Note: the T060trapdperl_olducd, T061agentperl_olducd and
	T115agentxperl_olducd tests still fail.
      - libnetsnmpmibs, libnetsnmphelpers and libnetsnmpagent do now build
	as a DLL when configured with --enable-shared.
      - perl: building the Perl modules with the Cygwin Perl package is now
	possible. (Forward-ported r18688 from the V5.5 branch.)
      - the message "configure: WARNING: winsock.h: present but cannot be
	compiled" does no longer appear when running the configure script.
	Follow-up for r18050: re-enabled libiphlpapi and iphlpapi.h tests
	for non-MinGW platforms since the Cygwin build needs these.
      - corrected error handling in mibII/at.

    Linux:
      - Improved EtherLike-MIB support Patch supplied by Josef Moellers
      - builds again with embedded Perl disabled (bug 2985915).

    MinGW:
      - building with another OpenSSL package than the Cygwin-provided
	packages openssl and openssl-devel is again possible. building with
	OpenSSL works again.
      - running the regression test suite is again possible ('make test').
      - struct sockaddr_in6.sin6_scope_id configure test does now work.
      - winExtDLL compiles now under MinGW. building Net-SNMP works again.
	Detailed overview: * Changes in the configure script:
      - refuse to run the regression tests if kill.exe cannot be found.
      - run_shell_command() with either input or output (but not both) does
	now work. This did not work until now because on MinGW mkstemp()
	generates a MinGW-style path (/tmp/...) while system() invokes
	cmd.exe and hence expects a Windows-style path (C:\...).
      - testing: skip the tests that require SIGHUP since MinGW does not
	support SIGHUP.
      - tests T059 and T065 do now pass.
      - tests T110, T111, T112, T120, T121 and T122 do now pass when snmpd
	is built with winExtDLL support enabled.

    Solaris:
      - OS header detection check is now run before IPv6 stack detection.
	sockaddr_in6.sin6_addr configure test does now work.
      - Protect against missing package version information crashing the
	agent. Problem reported by Inyaven Sakarai.

    Win32:
      - Fix batch build using recent versions of Visual Studio. Partial
	back port of SVN revisions 17573 and 17696.
      - The header file <sys/timeb.h> is no longer included from
	<net-snmp/types.h>. Or: the header file <sys/timeb.h> will have to
	be included explicitly in source files that need the declaration of
	the function ftime(). Note: compared to r18024 and before, this
	change does not affect BSD systems -- <sys/timeb.h> was only
	included from <net-snmp/types.h> on BSD systems in revisions
	r18025..r18152.
      - added #include <malloc.h> in win32/net-snmp/net-snmp-config.h such
	that the MSVC compiler doesn't get confused by the malloc
	redefinition when building libsnmp as a DLL.
      - added the functions netsnmp_malloc(), netsnmp_calloc(),
	netsnmp_realloc(), netsnmp_strdup() and netsnmp_free(). snmplib:
	removed the troublesome #define malloc netsnmp_malloc etc. This
	means that when calling functions from the Net-SNMP DLL from C or
	C++ code that is being linked against another version of the MSVC
	runtime DLL than the Net-SNMP DLL, and when allocating memory that
	will be freed by the Net-SNMP DLL, you will either have to call the
	Net-SNMP memory allocation functions explicitly or redefine
	malloc() etc. yourself.
      - batch build: replaced the obsolete /GX by the equivalent /EHsc.
      - batch build: replaced the obsolete /GX by the equivalent /EHsc.
	batch build: added /D "_CRT_SECURE_NO_WARNINGS" /D
	"_CRT_NONSTDC_NO_WARNINGS" to make building with MSVC 2008 more
	silent.
      - batch build: replaced the obsolete /GX by the equivalent /EHsc.
	batch build: added /D "_CRT_SECURE_NO_WARNINGS" /D
	"_CRT_NONSTDC_NO_WARNINGS" to make building with MSVC 2008 more
	silent. batch build: removed /Fp... and /YX. These options
	influence how precompiled header files are generated, which are not
	used inside the Net-SNMP project. /YX is not supported by MSVC
	2008.
      - batch build: replaced the obsolete /GX by the equivalent /EHsc.
	batch build: added /D "_CRT_SECURE_NO_WARNINGS" /D
	"_CRT_NONSTDC_NO_WARNINGS" to make building with MSVC 2008 more
	silent. batch build: removed /Fp... and /YX. These options
	influence how precompiled header files are generated, which are not
	used inside the Net-SNMP project. /YX is not supported by MSVC
	2008. batch build: removed a duplicate occurrence of strtoull.obj.
      - building: Added libsnmp.def to the list of libsnmp_dll.dsp source
	files such that the DLL is rebuilt when the .def file has been
	modified.
      - building: building NetSNMP.pm does no longer trigger compiler
	warnings about redefining _WIN32_WINNT nor NTDDI_VERSION.
      - building: converted .dsp/.dsw files to .vcproj/.sln files. This
	implies that support for MSVC 6.0 has been dropped and the minimum
	Microsoft Visual Studio version required to build the Net-SNMP
	source code is Microsoft Visual Studio .NET (2002).
      - building: made building NetSNMP.pm more silent by adding the MSVC
	compiler flags -D_CRT_SECURE_NO_WARNINGS
	-D_CRT_NONSTDC_NO_WARNINGS.
      - building: made building more silent by not redefining malloc() or
	free() during compilation of Perl extensions (resulted in warnings
	about malloc() / free() redefinition in the Perl header
	CORE/XSUB.h).
      - building: renamed libsdll.dsw into win32dll.dsw.
      - building: renamed libsdll.dsw into win32dll.dsw. building:
	simplified linking the Net-SNMP applications with netsnmp.dll by
	adding all application projects to the same workspace that is used
	for building the DLL.
      - building: renamed libsdll.dsw into win32dll.dsw. building:
	simplified linking the Net-SNMP applications with netsnmp.dll by
	adding all application projects to the same workspace that is used
	for building the DLL. building: made building netsnmp.dll less
	error prone by letting the compiler print an error message if the
	preprocessor symbol NETSNMP_USE_DLL has not been defined.
      - building: simplified the build process by removing the file
	win32/libsnmp_dll/libsnmp.def.in. Which IPv6 functions are exported
	from netsnmp.dll is now determined by which of the functions in
	this DLL have been declared as NETSNMP_IMPORT.
      - building: simplified the procedure for building with SNMPv3 support
	enabled (OpenSSL).
      - changed the type of the fourth argument of netsnmp_set_row_column()
	from const char* to const void* such that no cast is necessary when
	passing another datatype then char* or const char*. changed
	in_addr_t from u_int to u_long such that it matches the datatype of
	sockaddr_in::sin_addr. Also, fixed several compiler warnings
	(mostly char * <> u_char * mismatches) and removed some casts.
      - declared all functions that are exported from the Net-SNMP DLL as
	NETSNMP_IMPORT. The result is a minor optimization: code that uses
	the Net-SNMP DLL will now call the DLL-exported functions directly
	instead of indirectly via the stub in the import library.
      - exported netsnmp_read_module() from netsnmp.dll such that
	NetSNMP.pm builds again.
      - exported netsnmp_set_line_buffering() from netsnmp.dll.
      - libsnmp builds again as a DLL when IPv6 is enabled.
      - perl: fixed several "Free to wrong pool" errors. Note: since
	calloc() is not redefined in <CORE/XSUB.h> using calloc() directly
	or indirectly leads to "Free to wrong pool" errors, at least on
	Windows.
      - winExtDLL: don't trigger a netsnmp_assert() when no extension DLLs
	have been loaded.
      - winExtDLL: fixed a bug in getNext handling that could cause the MIB
	output to be truncated.
      - winExtDLL: multiple varbind set requests are now processed
	correctly.
      - winExtDLL: multiple varbind set requests are now processed
	correctly. winExtDLL: made error codes in SNMP response PDUs as
	RFC-compliant as possible.
      - winExtDLL: multiple varbind set requests are now processed
	correctly. winExtDLL: made error codes in SNMP response PDUs as
	RFC-compliant as possible. winExtDLL: if loading an extension DLL
	fails, the reason why loading failed is now logged.
      - winExtDLL: multiple varbind set requests are now processed
	correctly. winExtDLL: made error codes in SNMP response PDUs as
	RFC-compliant as possible. winExtDLL: if loading an extension DLL
	fails, the reason why loading failed is now logged. winExtDLL:
	fixed a memory leak that occurred when SnmpExtensionQuery(Ex)
	failed. This memory leak has been found via source reading. Note:
	it is not clear whether it was possible to trigger this memory
	leak. This leak is certainly not triggered by every request for
	which a response with non-zero error status is sent back.
      - Suppressed "implicit cast from int to u_char" warnings generated by
	MSVC.
      - made sure that accessing the mibII interfaces table does not
	trigger out-of-range array accesses (was detected by
	BoundsChecker).
      - Fix build under MinGW back/forward port of revision 18631



*5.5*

    snmplib:
      - [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 1866655]: Handle parsing invalid OID subidentifiers
      - [BUG 1898198]: Avoid a segfault when parsing broken mibs.
      - [BUG 1958041]: Ensure IDs are not truncated.
      - [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]: 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.
      - [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 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  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]: 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 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 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 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 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 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 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 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
      - 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 message
      - [BUG 2014526]: Win32: snmpv3-security-includes.h not installed
      - [BUG 2023803]: Compilation problems on HP-UX 11.31
      - [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.
      - [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:
      - [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 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 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 with correct permissions

    python:
      - [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:
      - 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.

    Ports:
      - [BUG 1710910]: initial support for DragonFly BSD
      - [PATCH 1623874]: add GNU/kFreeBSD support

    AIX:
      - [PATCH 1665079]: AIX patches for cpu stats and process monitoring
      - Add support for AIX 6.x
      - Build fixes for embedded Perl
      - Fix default shared library building instead of forcing static
      - Use "-Wl,-brtl" when compiling with gcc
      - [PATCH 2886598]: Header fixes for compiling on AIX6

    FreeBSD:
      - [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 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 based on PCP
      - [PATCH 1709748]: Optimized IRIX cpu stats

    Linux:
      - [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 compile-time endian determination
      - [PATCH 1600522]: CPU HAL implementation for mach/darwin
      - Improve memory reporting (patch from Apple)

    Solaris:
      - [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
      - [BUG 2779541]: Fixed handle leak in pass_persist.
      - [PATCH 1622080]: A: pass Win32 handles remain open.
      - [PATCH 1706344]: Fix compilation with cygwin
      - [PATCH 2686248]: Fix several winExtDLL bugs.
      - [PATCH 2688342]: Fix VS2005 various compiler warning
      - [PATCH 2691876]: Allow compiling the services using unicode.
      - [PATCH 2693746]: improved socket startup support
      - Add support for winExtDLL to build.bat
      - Build fixes for MSVC 2008.
      - fix AES support
      - fix win32/Configure --with-ipv6

*5.4*

    build:
      - [BUG 1416481]: Support specifying an explicit linker.
      - enable-as-needed will try to link built libraries against needed
	libraries at library link time, rather than application link time.

    snmplib:
      - [PATCH 1282566]: to rework transport creation to allow for
	alternative interpretations of the address and a more flexible
	transport registration system
      - [BUGS: 1537459, BUGS: 1540745] Fix missing MIB parsing tokens
      - [PATCH 1562168]: check for a sock fd less than 0.
      - [PATCH 1570650]: create a logging shutdown function to propelry
	clean up log registrations if needed.
      - [PATCH 1565293]: UDPIPv6 transport reports wrong port number
      - rename init_mib to netsnmp_init_mib to avoid symbol clash with
	HP-UX's libnm
      - [PATCH 1509943]: responses will get sent from the original dest IP
	address when possible.

    snmpd:
      - [PATCH 1550725]: A new uint instance helper to match the existing
	int, long and ulong helpers
      - [BUG 1527930]: fix smux authentication
      - [PATCH 1561277]: use net.ipv6.neigh.lo.base_reachable_time_ms
	instead of deprecated base_reachable_time
      - [BUG 1474468]: ifConnectorPresent always returns 0
      - [PATCH 1524755]: to better support the UDPTable for unknown address
	types
      - [PATCH 1534877]: to add support for skipping NFS entries in the
	host resources hrStorageTable.	See the skipNFSInHostResources
	token in the snmpd.conf file for details.
      - [PATCH 1557514 ]: Do not attempt to collect data during SET
	processing.
      - [BUG 1535903]: Support spaces within security names
      - Agent builds default module list from a default_mibs.h rather than
	a hard coded configure list
      - [BUG 1559358]: check scanf results for diskio scanning
      - [BUG 1564233]: Have configure test for rpm headers not just the
	libraries
      - [PATCH 1579364]: Updated darwin patch to fix compilation on Tiger
	and Leapord
      - [PATCH 1565703]: patch to fix rapid registrations/deregistration
	issues
      - [PATCH 1562688]: fix ping/reattach agentx code
      - [PATCH 1551948]: Make pass_persist usable on uClinux
      - [PATCH 1568150]: Extend pass_persist error messages that can be
	passed back from the script
      - [PATCH 1570650]: make delete table function public
      - [PATCH 1575984]: block SIGHUP during reconfig
      - [PATCH 1570982 ]: Solaris IF-MIB: Support for IPv6-only interfaces
      - memTotalFree should report total virtual instead of physical memory
      - build fix for --without-kmem-usage
      - [BUG 1585815]: fix mfd bits length calculation
      - [BUG 1427410]: Set auth engineID for SNMPv3 traps.
      - [BUG 1502267]: Build access list in the correct order.
      - [PATCH 1554827]: from rtyle: fix handling of failed proxy SET
	requests
      - [PATCH 1598966]: Fix bug #1598927: #elif build fix

    snmptrapd:
      - the traphandle directive now supports a -t switch to indicate
	matching any OID in the tree below the specified OID
      - [PATCH 1536773]: support partial oid matching
      - [PATCH 1598968]: Fix bug #1587759: snmptrapd doesn't recognize -A
	option

    snmpdf:
      - [BUG 1515507]: Handle failed requests better

    perl:
      - Fixed the perl bulkwalk function
      - [PATCH 1575937]: fix usenumeric output in async varbinds so they
	return OIDs instead of empty strings.
      - update default_store module to latest default_store c-binding
	tokens
      - make perltest fixes for Solaris 2.6 and earlier
      - fixes for 64-bit platforms
      - make perltest fixes for HP-UX
      - make perltest fixes for IRIX
      - [PATCH 2995098]: Fix creation of SNMPv3 sessions with API_SINGLE
      - patch 3046371: from christophb4: Fix memory leak in SNMPv1 trap
	handling.

    mib2c:
      - [BUG 1479916]: Restore consistency in row creation code.
      - [BUG 2827269]: Suppress non-ordered TODO comments.

    misc:
      - Most net-snmp specific defines are now (also) available under a
	proper NETSNMP_ prefix. The older, potentially conflicting names as
	well as the autoconf variables can now be turned off by a special
	define.
      - [BUG 1585250]: don't use deprecated options in start script
      - "make test" fixes for non-UDP transports
      - [BUG 1577913]: add missing manual pages for executables, supplied
	by Debian
      - [PATCH 1596028]: from "Stephen J. Friedl": const fixes for the
	mib_api(3) manual page
      - RPM spec file fixes for 64-bit platforms

    MacOSX:
      - [PATCH 1566777]: build fixes for memory_darwin.c
      - build fix for mibII/udpTable

    Tru64:
      - fix "auto_nlist failed on arptab_size at location 0" errors

    IRIX:
      - proper implementation for UCD-SNMP-MIB::laTable (avoiding nlist)

    Solaris:
      - [PATCH 1569537,1569539]: new UDP-MIB and TCP-MIB implementation
	(enable through --with-mib-modules=udp-mib,tcp-mib)

    AIX:
      - use correct ARPTAB_SYMBOL and ARPTAB_SIZE_SYMBOL
      - [BUG 1205300]: nlist err: neither nproc nor _nproc found (same for
	rt_table, rthashsize, rthost, rtnet)

    qnx6:
      - [PATCH 2836895]: support for QNX6
