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