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