* A new API: protosockets that are similar to BSD sockets but does not
  require any underlying multithreading system. 

* Very rudimentary IPv6 support

* New application: DHCP client. Web server rewritten with protosockets.

* Removed uIP zero-copy functionality in order to simplify uIP device
  driver coding: outbound packets are now *always* stored in full in
  the uip_buf buffer.

* Checksum computation is now part of uip.c, but it still is possible
  to implement them in assembly code by specifying a configuration
  option. Checksum code now runs on architectures with 2-byte alignment.
  
* Added TCP persistent timer.

* Made all IP address representations use the new uip_ipaddr_ip
  datatype for clarity.

* Updated window behavior so that sending to a host with a small open
  window works better now.

* UDP API change: uip_udp_new() now takes port numbers in network byte
  order like TCP functions.

* Allow reception of packets when no IP address is configured to make
  DHCP work.

* Moved Ethernet address into main uIP module from ARP module.

* Made constants explicit #defines and moved them out of the code
  (header sizes, TCP options, TCP header length field). 

* If uip_len is less than that reported by the IP header, the packet
  is discarded. If uip_len is greater than the length reported by the
  IP header, uip_len is adjusted.

* Moved header size definitions into header file.

* Added uIP call for polling an application without triggering any
  timer events. Removed redundant assignments of uip_len and uip_slen.

* Removed compiler warning about icmp_input label being defined when
  UIP_PINGADDRCONF was not used.

* Added UIP_APPDATA_SIZE macro that holds the available buffer size
  for user data.

* Added uip_udp_bind() call.

* Moved checksum code into main uIP module.

* Switched the TCP, UDP and IP header structures to be structs rather
  than typedefs.

* Prefixed TCP state names with UIP_ to avoid name space
  contamination. 

* Changed declarations of uip_appdatap and friends to void * to avoid
  explicit typecasts. 

* Bugfixes
 
  o TCP: Fixed bug with high byte of peer window size.

  o TCP: Fixed bug that in some cases prevented concurrent reception and
    transmission of TCP data.

  o TCP: uip_connect() didn't correctly calculate age of TIME_WAIT
    connections.

  o TCP: Array index for uip_conns[] array was out of bounds in
    comparison. Comparison changed to make index within bounds.

  o TCP: if the remote host crashes and tries to reestablish an old
    connection, uIP should respond with an ACK with the correct
    sequence and acknowledgment numbers, to which the remote host
    should respond with an ACK. uIP did not respond with the correct
    ACK.

  o TCP: Fixed check for SYNACK segment: now checks only relevant TCP
    control flags and discards flags reserved for future expansion.

  o TCP: Fixed bug where uIP did not inform application that a connection
    had been aborted during an active open.

  o TCP: FIN segment was accepted even though application had stopped
    incoming data with uip_stop().

  o TCP: A FINACK segment would not always correctly acknowledge data.

  o UDP: checksums are now calculated after all fields have been
    filled in.

  o UDP: network byte order on lastport in uip_udp_new().

  o IP: memset() bugs in IP fragment reassembly code fixed.
