Changes between V1.0.2 and V1.0.3

	+ Previously, and in line with good software engineering practice, the
	  FreeRTOS coding standard did not permit the use of char types that were
	  not explicitly qualified as either signed or unsigned. As a result char
	  pointers used to reference strings required casts, as did the use of any
	  standard string handling functions. The casts ensured compiler warnings
	  were not generated by compilers that defaulted unqualified char types to
	  be signed or compilers that defaulted unqualified char types to be
	  unsigned.  As it has in later MISRA standards, this rule has now been
	  relaxed, and unqualified char types are now permitted, but only when:
		1) The char is used to point to a human readable text string.
		2) The char is used to hold a single ASCII character.

Changes between V1.0.1 and V1.0.2

	+ Increase the size of the critical section in the function that obtains a
	  private port number.
	+ Add defaults for more trace macros.
	+ Update network interfaces so all compile with latest code revision.
	+ Added the following definitions for improved performance on hardware that
	  has the ability to offload checksum generation and/or checking:
		ipconfigETHERNET_DRIVER_ADDS_UDP_CHECKSUM
		ipconfigETHERNET_DRIVER_ADDS_IP_CHECKSUM
		ipconfigETHERNET_DRIVER_CHECKS_IP_CHECKSUM
		ipconfigETHERNET_DRIVER_CHECKS_UDP_CHECKSUM

Changes between V1.0.0 and V1.0.1

	+ Set the broadcast flag in DHCP messages.
	+ Improve the DHCP standards compliance.
	+ Correct the check used to ensure the network event hook is not called for
	  the first network down event (which is generated by the stack itself).
	+ Allow sockets to be added to a set when they already have packets queued
	  waiting to be processed.

Changes between V1.0.0 and V1.0.0

	+ Add select() function.

Changes between V1.0.0rc1 and V1.0.0:

	+ Correct name of prvCompleteUDPHeader().
	+ Ensure network down events cannot be missed when the network event queue
	  to which they are posted is full.
	+ Only start the ARP timer when the network has connected.
	+ Remove initialisation call to the DHCP state machine - the call is made
	  directly when the network connects.
	+ Add the network event queue and the BufferAllocation_2.c counting
	  semaphore to the queue registry.
	+ Only initialise the DMA buffers in the lpc18xx_emac.c driver if the
	  autonegotiation was successful.

	Known issues in this version:

	+ DHCP server attempts to copy the IP addresses of all the offered DNS
	  servers into a buffer than can only hold one address.


