1* A new API: protosockets that are similar to BSD sockets but does not 2 require any underlying multithreading system. 3 4* Very rudimentary IPv6 support 5 6* New application: DHCP client. Web server rewritten with protosockets. 7 8* Removed uIP zero-copy functionality in order to simplify uIP device 9 driver coding: outbound packets are now *always* stored in full in 10 the uip_buf buffer. 11 12* Checksum computation is now part of uip.c, but it still is possible 13 to implement them in assembly code by specifying a configuration 14 option. Checksum code now runs on architectures with 2-byte alignment. 15 16* Added TCP persistent timer. 17 18* Made all IP address representations use the new uip_ipaddr_ip 19 datatype for clarity. 20 21* Updated window behavior so that sending to a host with a small open 22 window works better now. 23 24* UDP API change: uip_udp_new() now takes port numbers in network byte 25 order like TCP functions. 26 27* Allow reception of packets when no IP address is configured to make 28 DHCP work. 29 30* Moved Ethernet address into main uIP module from ARP module. 31 32* Made constants explicit #defines and moved them out of the code 33 (header sizes, TCP options, TCP header length field). 34 35* If uip_len is less than that reported by the IP header, the packet 36 is discarded. If uip_len is greater than the length reported by the 37 IP header, uip_len is adjusted. 38 39* Moved header size definitions into header file. 40 41* Added uIP call for polling an application without triggering any 42 timer events. Removed redundant assignments of uip_len and uip_slen. 43 44* Removed compiler warning about icmp_input label being defined when 45 UIP_PINGADDRCONF was not used. 46 47* Added UIP_APPDATA_SIZE macro that holds the available buffer size 48 for user data. 49 50* Added uip_udp_bind() call. 51 52* Moved checksum code into main uIP module. 53 54* Switched the TCP, UDP and IP header structures to be structs rather 55 than typedefs. 56 57* Prefixed TCP state names with UIP_ to avoid name space 58 contamination. 59 60* Changed declarations of uip_appdatap and friends to void * to avoid 61 explicit typecasts. 62 63* Bugfixes 64 65 o TCP: Fixed bug with high byte of peer window size. 66 67 o TCP: Fixed bug that in some cases prevented concurrent reception and 68 transmission of TCP data. 69 70 o TCP: uip_connect() didn't correctly calculate age of TIME_WAIT 71 connections. 72 73 o TCP: Array index for uip_conns[] array was out of bounds in 74 comparison. Comparison changed to make index within bounds. 75 76 o TCP: if the remote host crashes and tries to reestablish an old 77 connection, uIP should respond with an ACK with the correct 78 sequence and acknowledgment numbers, to which the remote host 79 should respond with an ACK. uIP did not respond with the correct 80 ACK. 81 82 o TCP: Fixed check for SYNACK segment: now checks only relevant TCP 83 control flags and discards flags reserved for future expansion. 84 85 o TCP: Fixed bug where uIP did not inform application that a connection 86 had been aborted during an active open. 87 88 o TCP: FIN segment was accepted even though application had stopped 89 incoming data with uip_stop(). 90 91 o TCP: A FINACK segment would not always correctly acknowledge data. 92 93 o UDP: checksums are now calculated after all fields have been 94 filled in. 95 96 o UDP: network byte order on lastport in uip_udp_new(). 97 98 o IP: memset() bugs in IP fragment reassembly code fixed. 99