blob: 1e6c61cf80eec207ffe41966e9dff1c3223e4d25 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
* 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.
|