Changes between 160919 and 180821 releases:

	+ Multiple security improvements and fixes in packet parsing routines, DNS
	  caching, and TCP sequence number and ID generation.
	+ Disable NBNS and LLMNR by default.
	+ Add TCP hang protection by default.

	We thank Ori Karliner of Zimperium zLabs Team for reporting these issues.

	+ Update FreeRTOS_gethostbyname() to allow an IP address to be passed in -
	  in which case it is just returned as a uint32_t.
	+ Introduce ipconfigSOCKET_HAS_USER_WAKE_CALLBACK to FreeRTOS_Sockets.c to
	  allow a user supposed callback function to be executed when socket events
	  occur in the same way that the socket semaphore is currently used.
	+ Update xNetworkBuffersInitialise() to ensure the semaphore created by the
	  function is not accessed until after the NULL check.
	+ Improve print messages output by the Win32 port layer version of
	  prvPrintAvailableNetworkInterfaces().

Changes between 160908 and 160919 releases:

	+ Add a NULL check before attempting to close the DHCP socket.  [Prior to
	  160823 the IP task closed the DHCP socket by calling a public API function
	  - which checked for the socket being NULL.  This was changed to call a
	  local private function, which did not have a NULL check, in place of the
	  public API function.]
	+ Various [internal only] naming changes to better comply with the FreeRTOS
	  naming conventions.
	+ Improvements to the Zynq network driver.  DMA transmission buffers now use
	  a counting semaphore. When all TX-buffers are in-use, the IP-task will
	  block momentarily until a TX-buffer becomes available.
	+ Experimental implementation of the TCP window scaling protocol.  The
	  scaling option will always be offered, at least with a factor 1. If the
	  TCP sliding window size becomes more than 64KB, the factor will increase
	  automatically.
	+ ipconfigETHERNET_MINIMUM_PACKET_BYTES is now applied for every protocol:
	  TCP, UDP, and ARP.
	+ Updated the Zynq project to use BufferAllocation_1.c rather than
	  BufferAllocation_2.c - which is a requirement with its current
	  configuration (due to the alignment requirements on the combined cache and
	  DMA configuration).

Changes between 160823 and 160908 releases:

	+ Use ipconfigZERO_COPY_TX_DRIVER as the xReleaseAfterSend() parameter where
	  prvTCPReturnPacket() is called in prvSendData() to prevent unnecessary
	  copying of data.
	+ Remove the use of the uxGetRxEventCount variable, which was used to give
	  priority to incoming messages, but could result in the IP task starving
	  application tasks of processing time.

Changes between 160112 and 160823 releases

	NOTE:  The 160908 release is a maintenance release for the 160112 single
	interface labs release - not a release of the current development branch.

	+ Various minor stability enhancements, including the ability to work with
	  configTICK_RATE_HZ set to less than 1KHz, closing DHCP sockets directly
	  rather than via FreeRTOS_closesocket(), and better handling of unknown
	  TCP packets before an IP address has been assigned.
	+ ipBUFFER_PADDING is now configurable through the ipconfigBUFFER_PADDING
	  constant to improve network buffer alignment handling capabilities (expert
	  users/driver writers only).
	+ Multiple improvements to the FTP server, including to how read only and
	  zero length files are handled.
	+ ipconfigFTP_HAS_USER_PROPERTIES_HOOK (to allow each user to have a
	  different root directory and access rights) and
	  ipconfigHTTP_HAS_HANDLE_REQUEST_HOOK (to handle AJAX style data)
	  introduced, although these are not yet fully tested and the constant names
	  are likely to change.
	+ Introduce ipconfigHAS_TX_CRC_OFFLOADING.
	+ ipconfigUSE_DHCP_HOOK is now called ipconfigUSE_DHCP_HOOK, and the name
	  of the callback function has also changed.  See the web documentation for
	  details.
	+ ipconfigTCP_RX_BUF_LEN is now ipconfigTCP_RX_BUFFER_LENGTH, and
	  ipconfigTCP_TX_BUF_LEN is now ipconfigTCP_TX_BUFFER_LENGTH, which is
	  actually how they have always been documented.
	+ Added example TFTP server capable of receiving (not sending) files.
	  Intended for bootloader type functionality.
	+ Various variable name changes for consistency (mainly ensuring UDP, TCP,
	  DNS, etc. always use the same case letters, and type prefixes are correct).
	+ Various minor edits to improve types used by internal variables.
	+ Simplified mapping of standard library functions to their Visual Studio
	  equivalents.
	+ Improve robustness of network drivers.
	+ Introduce pxResizeNetworkBufferWithDescriptor().
	+ Removed obsolete FreeRTOSIPConfig.h constants from
	  FreeRTOSIPConfigDefaults.h.
	+ Added additional asserts() - predominantly to catch incorrect structure
	  packing.

Changes between 160112 and 160111 releases

	+ Updated the STM32 network driver so checksums are calculated by the
	  hardware.
	+ Implemented a simple "quit" command in the TCP command console.

Changes between 150825 and 160111 releases

	+ New device support:  Demo applications and example drivers are provided
	  for Atmel SAM4E and ST STM32F4 microcontrollers.
	+ Various updates to improve compliance with the FreeRTOS coding standard.
	+ Added a command console example that uses TCP/IP for input and output (the
	  pre-existing command console example uses UDP/IP).
	+ Updated the UDP logging example so it will send log messages to the local
	  UDP broadcast address if a specific IP address is not provided.  This
	  simplifies configuration, but note not all switches and routers will pass
	  broadcast messages.
	+ Add TCP echo client and TCP echo server examples to the Zynq demo.
	+ Minor updates to the Zynq network driver.
	+ Update the Zynq project to use version 2015.4 of the Xilinx SDK.
	+ Introduce FreeRTOS_SignalSocket(), which can be used to interrupt a task
	  that is blocked while reading from a socket ( FreeRTOS_recv[from] ).
	+ Make use of FreeRTOS_SignalSocket() in the FTP and HTTP servers.
	+ Major updates to the NTP client, although this is not included in any of
	  the pre-configured demo applications yet.
	+ Added support for DHCP zero pad option.
	+ Added uxGetMinimumIPQueueSpace(), a function to monitor the minimum amount
	  of space on the message queue.
	+ Better handling of zero length files in the FTP server.
	+ Fixed a bug reported by Andrey Ivanov from swissEmbedded that affects
	  users of 'ipconfigZERO_COPY_TX_DRIVER'.


Changes between 150825 150825 (?)

	+ Added xApplicationDHCPUserHook() so a user defined hook will be
	  called at certain points in the DHCP process if
	  ipconfigDHCP_USES_USER_HOOK is set to 1.
	+ Added FreeRTOS_get_tx_head() to improve TCP zero copy behaviour - for
	  expert use only.
	+ RST is no longer sent if only the ACK flag is set.
	+ Previously, an immediate ACK was only sent when buffer space was
	  exhausted.  Now, to improve performance, it is possible to send an
	  immediate ACK earlier - dependent on the ipconfigTCP_ACK_EARLIER_PACKET
	  setting.
	+ LLMNR and NBNS requests can now be sent to locate other devices -
	  previously these protocols would only be replied to, not generated.
	+ Added Auto-IP functionality (still in test) in case DHCP fails.  Dependent
	  on the ipconfigDHCP_FALL_BACK_LINK_LAYER_ADDRESS and
	  ipconfigARP_USE_CLASH_DETECTION settings.
	+ Added NTP code and demo.
	+ FTP can now STOR and RETR zero-length files.
	+ Added LLMNR demo to Win32 demo - so now the Win32 responds to
	  "ping RTOSDemo".

Changes between 141019 and 150825

	+ Added FTP server, which uses the new FreeRTOS+FAT component.
	+ Added basic HTTP server, which uses the new FreeRTOS+FAT component.
	+ Multiple definitions that are now common with FreeRTOS+FAT have been moved
	  into FreeRTOS's ProjDefs.h header file, and so prefixed with 'pd'.
	+ Introduced ipconfigZERO_COPY_TX_DRIVER, which defines who is responsible
	  for freeing a buffer sent to to the MAC driver for transmission, and
	  facilitates the development of zero copy drivers.
	+ Introduced the FREERTOS_MSG_DONTWAIT flag.  The flag can be used as a
	  simpler and faster alternative to using FreeRTOS_setsockopt() to set the
	  send or receive timeout to 0.
	+ A few functions that were previously all lower case are now mixed case, as
	  lower case function names are only used when they are equivalent to a
	  a Berkeley sockets API function of the same name.
	+ Introduced uxGetMinimumFreeNetworkBuffers() to return the minimum number
	  of network buffers that have ever existed since the application started
	  executing.
	+ Introduce ipconfigETHERNET_MINIMUM_PACKET_BYTES to allow the application
	  writer to set their own minimum buffer size should the hardware not be
	  capable of padding under-sized Ethernet frames.
	+ vNetworkBufferRelease() renamed vReleaseNetworkBuffer() - just for
	  consistency with the names of other functions in the same file.
	+ Grouped DHCP status data into a structure.
	+ DHCP is now tried both with and without the broadcast flag.
	+ Replaced occurrences of configASSERT_VOID() with configASSERT().
	+ ipconfigDNS_USE_CALLBACKS introduced to allow FreeRTOS_gethostbyname() to
	  be used without blocking.
	+ Fix: LLMNR and NBNS behaviour when the reply is in a larger buffer than the
	  request, and BufferAllocation_2 was used.
	+ Introduced ipMAX_IP_TASK_SLEEP_TIME to allow the application writer to
	  override the default value of 10 seconds.
	+ Fix:  Correct error in *pxUDPPayloadBuffer_to_NetworkBuffer().
	+ FreeRTOS_recv() now recognises the FREERTOS_ZERO_COPY flag, which, when
	  set, the void *pvBuffer parameter is interpreted as void **pvBuffer.
	+ FreeRTOS_listen() now returns an error code.  Previously it always
	  returned 0.
	+ Fix:  Previously if a listening socket was reused, and a connection
	  failed, the TCP/IP stack closed the socket, now the socket is correctly
	  left unclosed as it is owned by the application.
	+ Various other formatting and minor fix alterations.