Version 3.0.0
-------------
 * MAJOR API CHANGE -- the various lfm_* functions have been replaced with a
   FlowManager class where each former lfm_* function is implemented as a
   public method. This means you can have multiple flow maps within a single
   application, e.g. one per thread in a parallel libtrace application. The
   old API has been removed so there is no backwards compatibility for
   programs written using libflowmanager 2; however, most existing
   libflowmanager code should be relatively easy to convert to the new API.
 * Merged the functionality of the former lfm_check_tcp_flags() and
   lfm_update_flow_expiry_timeout() functions into a single method
   ( FlowManager::updateFlowExpiry() )
 * Added a no-op function called lfm_version_three() -- this function should
   be used when using AC_CHECK_LIB in autoconf to detect the presence of
   libflowmanager 3 on a system.
 * Updated examples to use new API.

Version 2.0.5
-------------
 * Switched from GPLv2 to LGPL license.
 * Expiry list management has been moved into separate plugins, allowing for
   the implementation and use of different flow expiry algorithms. 
 * Added new config options to support the new expiry plugins:
 	LFM_CONFIG_EXPIRY_PLUGIN
	LFM_CONFIG_FIXED_EXPIRY_THRESHOLD
 * Added a new config option for setting the amount of time to retain TCP flows
   that are in closed state (i.e. in TIMEWAIT): LFM_CONFIG_TIMEWAIT_THRESHOLD
 * Added a "fixed period of inactivity" expiry plugin, where all flows are
   expired after being inactive for N seconds regardless of flow state or
   transport protocol.
 * Separated the experimental "short-lived UDP flow" expiry rule into its own
   expiry plugin. It can still be invoked by setting the LFM_CONFIG_SHORT_UDP
   config option, but this should be considered deprecated.

Version 2.0.4
-------------
 * Added get_local_ip_str and get_external_ip_str functions to the flowId class

Version 2.0.3
-------------
 * Redefined the meanings of "server" and "client" for a given libflowmanager
   flow. The "server" is now always the recipient of the first packet and the
   "client" is always the sender of the first packet. This is much more 
   intuitive than the direction based method of determining who is the server.
 * Updated get_client and get_server functions in the flowId class to reflect
   the change in definitions.
 * Added get_local and get_external functions to the flowId class that will
   return the "local" or "remote" IP addresses / ports. These functions behave
   exactly the same as the old get_client and get_server functions did, so if
   you preferred the old way, you can still use it (just replace get_client
   with get_local and get_server with get_external).
 * Fixed bug that was preventing both halves of a bidirectional IPv6 flow from
   being matched to the same libflowmanager flow.
 * Added lfm_foreach_flow to the API - this allows users to run a specific 
   function against every flow currently in the active flow list.
 * Added lfm_release_flow to the API - this can be used instead of manually 
   deleting the flow once the user has finished with an expired flow.
 * Updated examples to cover new API functions.

Version 2.0.2
-------------
 * Added a new config option (LFM_OPTION_TCP_ANYSTART) which will enable the
   creation of TCP flows for non-SYN packets. These new flows will begin with
   a 120 sec timeout, but will become established if a second packet is
   observed for the flow.
 * Improved performance by reducing the number of map lookups per packet.
 * Client / Server is now determined based on packet direction rather than the
   return value of trace_get_server_port(). This is a more consistent and 
   simple approach than before, but may result in a lot of client/server swaps
   when comparing new results against results generated with an older version
   of libprotoident.
 * Flow Id numbers are now 64 bit values.
 * Fixed bug where get_client_ip() would return an inappropriate value for an
   IPv6 flow.
 * Fixed a compilation problem with newer versions of gcc.

Version 2.0.1
-------------

 * Version only used internally within WAND.


Version 2.0.0
-------------
 * Added support for IPv6 flows
 * Slight API change - get_client_ip_str() and get_server_ip_str() functions
   for the flow ID now take a pointer to a string as a parameter, which is 
   updated to contain the IP address string. Previously, a static string was
   created and returned by these functions, which created a "use it or lose 
   it" scenario.
 * Fixed bug where a TCP flow was treated as established without seeing a SYN
   ACK
 * Fixed bug when the source and destination ports match
 * Restructured source code directories
 * Flows in the TCP half-close state now expire after only 4 minutes
 * UDP flows now expire after 2 minutes rather than 2 mins 20 secs
 * Added example program that demonstrates how the API should be used
 * Linking against C++ programs should now work properly.
 * Fixed bug with the DirectionInfo destructor.
