OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [Common/] [ethernet/] [lwIP_132/] [CHANGELOG] - Blame information for rev 609

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 606 jeremybenn
FUTURE
2
 
3
  * TODO: The lwIP source code makes some invalid assumptions on processor
4
    word-length, storage sizes and alignment. See the mailing lists for
5
    problems with exoteric (/DSP) architectures showing these problems.
6
    We still have to fix some of these issues neatly.
7
 
8
  * TODO: the PPP code is broken in a few ways. There are namespace
9
    collisions on BSD systems and many assumptions on word-length
10
    (sizeof(int)). In ppp.c an assumption is made on the availability of
11
    a thread subsystem. Either PPP needs to be moved to contrib/ports/???
12
    or rearranged to be more generic.
13
 
14
HISTORY
15
 
16
(CVS HEAD)
17
 
18
  * [Enter new changes just after this line - do not remove this line]
19
 
20
  ++ New features:
21
 
22
 
23
  ++ Bugfixes:
24
 
25
 
26
(STABLE-1.3.2)
27
 
28
  ++ New features:
29
 
30
  2009-10-27 Simon Goldschmidt/Stephan Lesage
31
  * netifapi.c/.h: Added netifapi_netif_set_addr()
32
 
33
  2009-10-07 Simon Goldschmidt/Fabian Koch
34
  * api_msg.c, netbuf.c/.h, opt.h: patch #6888: Patch for UDP Netbufs to
35
    support dest-addr and dest-port (optional: LWIP_NETBUF_RECVINFO)
36
 
37
  2009-08-26 Simon Goldschmidt/Simon Kallweit
38
  * slipif.c/.h: bug #26397: SLIP polling support
39
 
40
  2009-08-25 Simon Goldschmidt
41
  * opt.h, etharp.h/.c: task #9033: Support IEEE 802.1q tagged frame (VLAN),
42
    New configuration options ETHARP_SUPPORT_VLAN and ETHARP_VLAN_CHECK.
43
 
44
  2009-08-25 Simon Goldschmidt
45
  * ip_addr.h, netdb.c: patch #6900: added define ip_ntoa(struct ip_addr*)
46
 
47
  2009-08-24 Jakob Stoklund Olesen
48
  * autoip.c, dhcp.c, netif.c: patch #6725: Teach AutoIP and DHCP to respond
49
    to netif_set_link_up().
50
 
51
  2009-08-23 Simon Goldschmidt
52
  * tcp.h/.c: Added function tcp_debug_state_str() to convert a tcp state
53
    to a human-readable string.
54
 
55
  ++ Bugfixes:
56
 
57
  2009-12-24: Kieran Mansley
58
  * tcp_in.c Apply patches from Oleg Tyshev to improve OOS processing
59
    (BUG#28241)
60
 
61
  2009-12-06: Simon Goldschmidt
62
  * ppp.h/.c: Fixed bug #27079 (Yet another leak in PPP): outpacket_buf can
63
    be statically allocated (like in ucip)
64
 
65
  2009-12-04: Simon Goldschmidt (patch by Ioardan Neshev)
66
  * pap.c: patch #6969: PPP: missing PAP authentication UNTIMEOUT
67
 
68
  2009-12-03: Simon Goldschmidt
69
  * tcp.h, tcp_in.c, tcp_out.c: Fixed bug #28106: dup ack for fast retransmit
70
    could have non-zero length
71
 
72
  2009-12-02: Simon Goldschmidt
73
  * tcp_in.c: Fixed bug #27904: TCP sends too many ACKs: delay resetting
74
    tcp_input_pcb until after calling the pcb's callbacks
75
 
76
  2009-11-29: Simon Goldschmidt
77
  * tcp_in.c: Fixed bug #28054: Two segments with FIN flag on the out-of-
78
    sequence queue, also fixed PBUF_POOL leak in the out-of-sequence code
79
 
80
  2009-11-29: Simon Goldschmidt
81
  * pbuf.c: Fixed bug #28064: pbuf_alloc(PBUF_POOL) is not thread-safe by
82
    queueing a call into tcpip_thread to free ooseq-bufs if the pool is empty
83
 
84
  2009-11-26: Simon Goldschmidt
85
  * tcp.h: Fixed bug #28098: Nagle can prevent fast retransmit from sending
86
    segment
87
 
88
  2009-11-26: Simon Goldschmidt
89
  * tcp.h, sockets.c: Fixed bug #28099: API required to disable Nagle
90
    algorithm at PCB level
91
 
92
  2009-11-22: Simon Goldschmidt
93
  * tcp_out.c: Fixed bug #27905: FIN isn't combined with data on unsent
94
 
95
  2009-11-22: Simon Goldschmidt (suggested by Bill Auerbach)
96
  * tcp.c: tcp_alloc: prevent increasing stats.err for MEMP_TCP_PCB when
97
    reusing time-wait pcb
98
 
99
  2009-11-20: Simon Goldschmidt (patch by Albert Bartel)
100
  * sockets.c: Fixed bug #28062: Data received directly after accepting
101
    does not wake up select
102
 
103
  2009-11-11: Simon Goldschmidt
104
  * netdb.h: Fixed bug #27994: incorrect define for freeaddrinfo(addrinfo)
105
 
106
  2009-10-30: Simon Goldschmidt
107
  * opt.h: Increased default value for TCP_MSS to 536, updated default
108
    value for TCP_WND to 4*TCP_MSS to keep delayed ACK working.
109
 
110
  2009-10-28: Kieran Mansley
111
  * tcp_in.c, tcp_out.c, tcp.h: re-work the fast retransmission code
112
    to follow algorithm from TCP/IP Illustrated
113
 
114
  2009-10-27: Kieran Mansley
115
  * tcp_in.c: fix BUG#27445: grow cwnd with every duplicate ACK
116
 
117
  2009-10-25: Simon Goldschmidt
118
  * tcp.h: bug-fix in the TCP_EVENT_RECV macro (has to call tcp_recved if
119
    pcb->recv is NULL to keep rcv_wnd correct)
120
 
121
  2009-10-25: Simon Goldschmidt
122
  * tcp_in.c: Fixed bug #26251: RST process in TIME_WAIT TCP state
123
 
124
  2009-10-23: Simon Goldschmidt (David Empson)
125
  * tcp.c: Fixed bug #27783: Silly window avoidance for small window sizes
126
 
127
  2009-10-21: Simon Goldschmidt
128
  * tcp_in.c: Fixed bug #27215: TCP sent() callback gives leading and
129
    trailing 1 byte len (SYN/FIN)
130
 
131
  2009-10-21: Simon Goldschmidt
132
  * tcp_out.c: Fixed bug #27315: zero window probe and FIN
133
 
134
  2009-10-19: Simon Goldschmidt
135
  * dhcp.c/.h: Minor code simplification (don't store received pbuf, change
136
    conditional code to assert where applicable), check pbuf length before
137
    testing for valid reply
138
 
139
  2009-10-19: Simon Goldschmidt
140
  * dhcp.c: Removed most calls to udp_connect since they aren't necessary
141
    when using udp_sendto_if() - always stay connected to IP_ADDR_ANY.
142
 
143
  2009-10-16: Simon Goldschmidt
144
  * ip.c: Fixed bug #27390: Source IP check in ip_input() causes it to drop
145
    valid DHCP packets -> allow 0.0.0.0 as source address when LWIP_DHCP is
146
    enabled
147
 
148
  2009-10-15: Simon Goldschmidt (Oleg Tyshev)
149
  * tcp_in.c: Fixed bug #27329: dupacks by unidirectional data transmit
150
 
151
  2009-10-15: Simon Goldschmidt
152
  * api_lib.c: Fixed bug #27709: conn->err race condition on netconn_recv()
153
    timeout
154
 
155
  2009-10-15: Simon Goldschmidt
156
  * autoip.c: Fixed bug #27704: autoip starts with wrong address
157
    LWIP_AUTOIP_CREATE_SEED_ADDR() returned address in host byte order instead
158
    of network byte order
159
 
160
  2009-10-11 Simon Goldschmidt (Jörg Kesten)
161
  * tcp_out.c: Fixed bug #27504: tcp_enqueue wrongly concatenates segments
162
    which are not consecutive when retransmitting unacked segments
163
 
164
  2009-10-09 Simon Goldschmidt
165
  * opt.h: Fixed default values of some stats to only be enabled if used
166
    Fixes bug #27338: sys_stats is defined when NO_SYS = 1
167
 
168
  2009-08-30 Simon Goldschmidt
169
  * ip.c: Fixed bug bug #27345: "ip_frag() does not use the LWIP_NETIF_LOOPBACK
170
    function" by checking for loopback before calling ip_frag
171
 
172
  2009-08-25 Simon Goldschmidt
173
  * dhcp.c: fixed invalid dependency to etharp_query if DHCP_DOES_ARP_CHECK==0
174
 
175
  2009-08-23 Simon Goldschmidt
176
  * ppp.c: bug #27078: Possible memory leak in pppInit()
177
 
178
  2009-08-23 Simon Goldschmidt
179
  * netdb.c, dns.c: bug #26657: DNS, if host name is "localhost", result
180
    is error.
181
 
182
  2009-08-23 Simon Goldschmidt
183
  * opt.h, init.c: bug #26649: TCP fails when TCP_MSS > TCP_SND_BUF
184
    Fixed wrong parenthesis, added check in init.c
185
 
186
  2009-08-23 Simon Goldschmidt
187
  * ppp.c: bug #27266: wait-state debug message in pppMain occurs every ms
188
 
189
  2009-08-23 Simon Goldschmidt
190
  * many ppp files: bug #27267: Added include to string.h where needed
191
 
192
  2009-08-23 Simon Goldschmidt
193
  * tcp.h: patch #6843: tcp.h macro optimization patch (for little endian)
194
 
195
 
196
(STABLE-1.3.1)
197
 
198
  ++ New features:
199
 
200
  2009-05-10 Simon Goldschmidt
201
  * opt.h, sockets.c, pbuf.c, netbuf.h, pbuf.h: task #7013: Added option
202
    LWIP_NETIF_TX_SINGLE_PBUF to try to create transmit packets from only
203
    one pbuf to help MACs that don't support scatter-gather DMA.
204
 
205
  2009-05-09 Simon Goldschmidt
206
  * icmp.h, icmp.c: Shrinked ICMP code, added option to NOT check icoming
207
    ECHO pbuf for size (just use it): LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN
208
 
209
  2009-05-05 Simon Goldschmidt, Jakob Stoklund Olesen
210
  * ip.h, ip.c: Added ip_current_netif() & ip_current_header() to receive
211
    extended info about the currently received packet.
212
 
213
  2009-04-27 Simon Goldschmidt
214
  * sys.h: Made SYS_LIGHTWEIGHT_PROT and sys_now() work with NO_SYS=1
215
 
216
  2009-04-25 Simon Goldschmidt
217
  * mem.c, opt.h: Added option MEM_USE_POOLS_TRY_BIGGER_POOL to try the next
218
    bigger malloc pool if one is empty (only usable with MEM_USE_POOLS).
219
 
220
  2009-04-21 Simon Goldschmidt
221
  * dns.c, init.c, dns.h, opt.h: task #7507, patch #6786: DNS supports static
222
    hosts table. New configuration options DNS_LOCAL_HOSTLIST and
223
    DNS_LOCAL_HOSTLIST_IS_DYNAMIC. Also, DNS_LOOKUP_LOCAL_EXTERN() can be defined
224
    as an external function for lookup.
225
 
226
  2009-04-15 Simon Goldschmidt
227
  * dhcp.c: patch #6763: Global DHCP XID can be redefined to something more unique
228
 
229
  2009-03-31 Kieran Mansley
230
  * tcp.c, tcp_out.c, tcp_in.c, sys.h, tcp.h, opts.h: add support for
231
    TCP timestamp options, off by default.  Rework tcp_enqueue() to
232
    take option flags rather than specified option data
233
 
234
  2009-02-18 Simon Goldschmidt
235
  * cc.h: Added printf formatter for size_t: SZT_F
236
 
237
  2009-02-16 Simon Goldschmidt (patch by Rishi Khan)
238
  * icmp.c, opt.h: patch #6539: (configurable) response to broadcast- and multicast
239
    pings
240
 
241
  2009-02-12 Simon Goldschmidt
242
  * init.h: Added LWIP_VERSION to get the current version of the stack
243
 
244
  2009-02-11 Simon Goldschmidt (suggested by Gottfried Spitaler)
245
  * opt.h, memp.h/.c: added MEMP_MEM_MALLOC to use mem_malloc/mem_free instead
246
    of the pool allocator (can save code size with MEM_LIBC_MALLOC if libc-malloc
247
    is otherwise used)
248
 
249
  2009-01-28 Jonathan Larmour (suggested by Bill Bauerbach)
250
  * ipv4/inet_chksum.c, ipv4/lwip/inet_chksum.h: inet_chksum_pseudo_partial()
251
  is only used by UDPLITE at present, so conditionalise it.
252
 
253
  2008-12-03 Simon Goldschmidt (base on patch from Luca Ceresoli)
254
  * autoip.c: checked in (slightly modified) patch #6683: Customizable AUTOIP
255
    "seed" address. This should reduce AUTOIP conflicts if
256
    LWIP_AUTOIP_CREATE_SEED_ADDR is overridden.
257
 
258
  2008-10-02 Jonathan Larmour and Rishi Khan
259
  * sockets.c (lwip_accept): Return EWOULDBLOCK if would block on non-blocking
260
    socket.
261
 
262
  2008-06-30 Simon Goldschmidt
263
  * mem.c, opt.h, stats.h: fixed bug #21433: Calling mem_free/pbuf_free from
264
    interrupt context isn't safe: LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT allows
265
    mem_free to run between mem_malloc iterations. Added illegal counter for
266
    mem stats.
267
 
268
  2008-06-27 Simon Goldschmidt
269
  * stats.h/.c, some other files: patch #6483: stats module improvement:
270
    Added defines to display each module's statistic individually, added stats
271
    defines for MEM, MEMP and SYS modules, removed (unused) rexmit counter.
272
 
273
  2008-06-17 Simon Goldschmidt
274
  * err.h: patch #6459: Made err_t overridable to use a more efficient type
275
    (define LWIP_ERR_T in cc.h)
276
 
277
  2008-06-17 Simon Goldschmidt
278
  * slipif.c: patch #6480: Added a configuration option for slipif for symmetry
279
    to loopif
280
 
281
  2008-06-17 Simon Goldschmidt (patch by Luca Ceresoli)
282
  * netif.c, loopif.c, ip.c, netif.h, loopif.h, opt.h: Checked in slightly
283
    modified version of patch # 6370: Moved loopif code to netif.c so that
284
    loopback traffic is supported on all netifs (all local IPs).
285
    Added option to limit loopback packets for each netifs.
286
 
287
 
288
  ++ Bugfixes:
289
  2009-08-12 Kieran Mansley
290
  * tcp_in.c, tcp.c: Fix bug #27209: handle trimming of segments when
291
    out of window or out of order properly
292
 
293
  2009-08-12 Kieran Mansley
294
  * tcp_in.c: Fix bug #27199: use snd_wl2 instead of snd_wl1
295
 
296
  2009-07-28 Simon Goldschmidt
297
  * mem.h: Fixed bug #27105: "realloc() cannot replace mem_realloc()"s
298
 
299
  2009-07-27 Kieran Mansley
300
  * api.h api_msg.h netdb.h sockets.h: add missing #include directives
301
 
302
  2009-07-09 Kieran Mansley
303
  * api_msg.c, sockets.c, api.h: BUG23240 use signed counters for
304
    recv_avail and don't increment counters until message successfully
305
    sent to mbox
306
 
307
  2009-06-25 Kieran Mansley
308
  * api_msg.c api.h: BUG26722: initialise netconn write variables
309
    in netconn_alloc
310
 
311
  2009-06-25 Kieran Mansley
312
  * tcp.h: BUG26879: set ret value in TCP_EVENT macros when function is not set
313
 
314
  2009-06-25 Kieran Mansley
315
  * tcp.c, tcp_in.c, tcp_out.c, tcp.h: BUG26301 and BUG26267: correct
316
    simultaneous close behaviour, and make snd_nxt have the same meaning
317
    as in the RFCs.
318
 
319
  2009-05-12 Simon Goldschmidt
320
  * etharp.h, etharp.c, netif.c: fixed bug #26507: "Gratuitous ARP depends on
321
    arp_table / uses etharp_query" by adding etharp_gratuitous()
322
 
323
  2009-05-12 Simon Goldschmidt
324
  * ip.h, ip.c, igmp.c: bug #26487: Added ip_output_if_opt that can add IP options
325
    to the IP header (used by igmp_ip_output_if)
326
 
327
  2009-05-06 Simon Goldschmidt
328
  * inet_chksum.c: On little endian architectures, use LWIP_PLATFORM_HTONS (if
329
    defined) for SWAP_BYTES_IN_WORD to speed up checksumming.
330
 
331
  2009-05-05 Simon Goldschmidt
332
  * sockets.c: bug #26405: Prematurely released semaphore causes lwip_select()
333
    to crash
334
 
335
  2009-05-04 Simon Goldschmidt
336
  * init.c: snmp was not initialized in lwip_init()
337
 
338
  2009-05-04 Frédéric Bernon
339
  * dhcp.c, netbios.c: Changes if IP_SOF_BROADCAST is enabled.
340
 
341
  2009-05-03 Simon Goldschmidt
342
  * tcp.h: bug #26349: Nagle algorithm doesn't send although segment is full
343
    (and unsent->next == NULL)
344
 
345
  2009-05-02 Simon Goldschmidt
346
  * tcpip.h, tcpip.c: fixed tcpip_untimeout (does not need the time, broken after
347
    1.3.0 in CVS only) - fixes compilation of ppp_oe.c
348
 
349
  2009-05-02 Simon Goldschmidt
350
  * msg_in.c: fixed bug #25636: SNMPSET value is ignored for integer fields
351
 
352
  2009-05-01 Simon Goldschmidt
353
  * pap.c: bug #21680: PPP upap_rauthnak() drops legal NAK packets
354
 
355
  2009-05-01 Simon Goldschmidt
356
  * ppp.c: bug #24228: Memory corruption with PPP and DHCP
357
 
358
  2009-04-29 Frédéric Bernon
359
  * raw.c, udp.c, init.c, opt.h, ip.h, sockets.h: bug #26309: Implement the
360
    SO(F)_BROADCAST filter for all API layers. Avoid the unindented reception
361
    of broadcast packets even when this option wasn't set. Port maintainers
362
    which want to enable this filter have to set IP_SOF_BROADCAST=1 in opt.h.
363
    If you want this option also filter broadcast on recv operations, you also
364
    have to set IP_SOF_BROADCAST_RECV=1 in opt.h.
365
 
366
  2009-04-28 Simon Goldschmidt, Jakob Stoklund Olesen
367
  * dhcp.c: patch #6721, bugs #25575, #25576: Some small fixes to DHCP and
368
    DHCP/AUTOIP cooperation
369
 
370
  2009-04-25 Simon Goldschmidt, Oleg Tyshev
371
  * tcp_out.c: bug #24212: Deadlocked tcp_retransmit due to exceeded pcb->cwnd
372
    Fixed by sorting the unsent and unacked queues (segments are inserted at the
373
    right place in tcp_output and tcp_rexmit).
374
 
375
  2009-04-25 Simon Goldschmidt
376
  * memp.c, mem.c, memp.h, mem_std.h: bug #26213 "Problem with memory allocation
377
    when debugging": memp_sizes contained the wrong sizes (including sanity
378
    regions); memp pools for MEM_USE_POOLS were too small
379
 
380
  2009-04-24 Simon Goldschmidt, Frédéric Bernon
381
  * inet.c: patch #6765: Fix a small problem with the last changes (incorrect
382
    behavior, with with ip address string not ended by a '\0', a space or a
383
    end of line)
384
 
385
  2009-04-19 Simon Goldschmidt
386
  * rawapi.txt: Fixed bug #26069: Corrected documentation: if tcp_connect fails,
387
    pcb->err is called, not pcb->connected (with an error code).
388
 
389
  2009-04-19 Simon Goldschmidt
390
  * tcp_out.c: Fixed bug #26236: "TCP options (timestamp) don't work with
391
    no-copy-tcpwrite": deallocate option data, only concat segments with same flags
392
 
393
  2009-04-19 Simon Goldschmidt
394
  * tcp_out.c: Fixed bug #25094: "Zero-length pbuf" (options are now allocated
395
    in the header pbuf, not the data pbuf)
396
 
397
  2009-04-18 Simon Goldschmidt
398
  * api_msg.c: fixed bug #25695: Segmentation fault in do_writemore()
399
 
400
  2009-04-15 Simon Goldschmidt
401
  * sockets.c: tried to fix bug #23559: lwip_recvfrom problem with tcp
402
 
403
  2009-04-15 Simon Goldschmidt
404
  * dhcp.c: task #9192: mem_free of dhcp->options_in and dhcp->msg_in
405
 
406
  2009-04-15 Simon Goldschmidt
407
  * ip.c, ip6.c, tcp_out.c, ip.h: patch #6808: Add a utility function
408
    ip_hinted_output() (for smaller code mainly)
409
 
410
  2009-04-15 Simon Goldschmidt
411
  * inet.c: patch #6765: Supporting new line characters in inet_aton()
412
 
413
  2009-04-15 Simon Goldschmidt
414
  * dhcp.c: patch #6764: DHCP rebind and renew did not send hostnam option;
415
    Converted constant OPTION_MAX_MSG_SIZE to netif->mtu, check if netif->mtu
416
    is big enough in dhcp_start
417
 
418
  2009-04-15 Simon Goldschmidt
419
  * netbuf.c: bug #26027: netbuf_chain resulted in pbuf memory leak
420
 
421
  2009-04-15 Simon Goldschmidt
422
  * sockets.c, ppp.c: bug #25763: corrected 4 occurrences of SMEMCPY to MEMCPY
423
 
424
  2009-04-15 Simon Goldschmidt
425
  * sockets.c: bug #26121: set_errno can be overridden
426
 
427
  2009-04-09 Kieran Mansley (patch from Luca Ceresoli )
428
  * init.c, opt.h: Patch#6774 TCP_QUEUE_OOSEQ breaks compilation when
429
    LWIP_TCP==0
430
 
431
  2009-04-09 Kieran Mansley (patch from Roy Lee )
432
  * tcp.h: Patch#6802 Add do-while-clauses to those function like
433
    macros in tcp.h
434
 
435
  2009-03-31 Kieran Mansley
436
  * tcp.c, tcp_in.c, tcp_out.c, tcp.h, opt.h: Rework the way window
437
    updates are calculated and sent (BUG20515)
438
 
439
  * tcp_in.c: cope with SYN packets received during established states,
440
    and retransmission of initial SYN.
441
 
442
  * tcp_out.c: set push bit correctly when tcp segments are merged
443
 
444
  2009-03-27 Kieran Mansley
445
  * tcp_out.c set window correctly on probes (correcting change made
446
    yesterday)
447
 
448
  2009-03-26 Kieran Mansley
449
  * tcp.c, tcp_in.c, tcp.h: add tcp_abandon() to cope with dropping
450
    connections where no reset required (bug #25622)
451
 
452
  * tcp_out.c: set TCP_ACK flag on keepalive and zero window probes
453
    (bug #20779)
454
 
455
  2009-02-18 Simon Goldschmidt (Jonathan Larmour and Bill Auerbach)
456
  * ip_frag.c: patch #6528: the buffer used for IP_FRAG_USES_STATIC_BUF could be
457
    too small depending on MEM_ALIGNMENT
458
 
459
  2009-02-16 Simon Goldschmidt
460
  * sockets.h/.c, api_*.h/.c: fixed arguments of socket functions to match the standard;
461
    converted size argument of netconn_write to 'size_t'
462
 
463
  2009-02-16 Simon Goldschmidt
464
  * tcp.h, tcp.c: fixed bug #24440: TCP connection close problem on 64-bit host
465
    by moving accept callback function pointer to TCP_PCB_COMMON
466
 
467
  2009-02-12 Simon Goldschmidt
468
  * dhcp.c: fixed bug #25345 (DHCPDECLINE is sent with "Maximum message size"
469
    option)
470
 
471
  2009-02-11 Simon Goldschmidt
472
  * dhcp.c: fixed bug #24480 (releasing old udp_pdb and pbuf in dhcp_start)
473
 
474
  2009-02-11 Simon Goldschmidt
475
  * opt.h, api_msg.c: added configurable default valud for netconn->recv_bufsize:
476
    RECV_BUFSIZE_DEFAULT (fixes bug #23726: pbuf pool exhaustion on slow recv())
477
 
478
  2009-02-10 Simon Goldschmidt
479
  * tcp.c: fixed bug #25467: Listen backlog is not reset on timeout in SYN_RCVD:
480
    Accepts_pending is decrease on a corresponding listen pcb when a connection
481
    in state SYN_RCVD is close.
482
 
483
  2009-01-28 Jonathan Larmour
484
  * pbuf.c: reclaim pbufs from TCP out-of-sequence segments if we run
485
    out of pool pbufs.
486
 
487
  2008-12-19 Simon Goldschmidt
488
  * many files: patch #6699: fixed some warnings on platform where sizeof(int) == 2
489
 
490
  2008-12-10 Tamas Somogyi, Frédéric Bernon
491
  * sockets.c: fixed bug #25051: lwip_recvfrom problem with udp: fromaddr and
492
    port uses deleted netbuf.
493
 
494
  2008-10-18 Simon Goldschmidt
495
  * tcp_in.c: fixed bug ##24596: Vulnerability on faulty TCP options length
496
    in tcp_parseopt
497
 
498
  2008-10-15 Simon Goldschmidt
499
  * ip_frag.c: fixed bug #24517: IP reassembly crashes on unaligned IP headers
500
    by packing the struct ip_reass_helper.
501
 
502
  2008-10-03 David Woodhouse, Jonathan Larmour
503
  * etharp.c (etharp_arp_input): Fix type aliasing problem copying ip address.
504
 
505
  2008-10-02 Jonathan Larmour
506
  * dns.c: Hard-code structure sizes, to avoid issues on some compilers where
507
    padding is included.
508
 
509
  2008-09-30 Jonathan Larmour
510
  * sockets.c (lwip_accept): check addr isn't NULL. If it's valid, do an
511
    assertion check that addrlen isn't NULL.
512
 
513
  2008-09-30 Jonathan Larmour
514
  * tcp.c: Fix bug #24227, wrong error message in tcp_bind.
515
 
516
  2008-08-26 Simon Goldschmidt
517
  * inet.h, ip_addr.h: fixed bug #24132: Cross-dependency between ip_addr.h and
518
    inet.h -> moved declaration of struct in_addr from ip_addr.h to inet.h
519
 
520
  2008-08-14 Simon Goldschmidt
521
  * api_msg.c: fixed bug #23847: do_close_internal references freed memory (when
522
    tcp_close returns != ERR_OK)
523
 
524
  2008-07-08 Frédéric Bernon
525
  * stats.h: Fix some build bugs introduced with patch #6483 (missing some parameters
526
    in macros, mainly if MEM_STATS=0 and MEMP_STATS=0).
527
 
528
  2008-06-24 Jonathan Larmour
529
  * tcp_in.c: Fix for bug #23693 as suggested by Art R. Ensure cseg is unused
530
    if tcp_seg_copy fails.
531
 
532
  2008-06-17 Simon Goldschmidt
533
  * inet_chksum.c: Checked in some ideas of patch #6460 (loop optimizations)
534
    and created defines for swapping bytes and folding u32 to u16.
535
 
536
  2008-05-30 Kieran Mansley
537
  * tcp_in.c Remove redundant "if" statement, and use real rcv_wnd
538
    rather than rcv_ann_wnd when deciding if packets are in-window.
539
    Contributed by 
540
 
541
  2008-05-30 Kieran Mansley
542
  * mem.h: Fix BUG#23254.  Change macro definition of mem_* to allow
543
    passing as function pointers when MEM_LIBC_MALLOC is defined.
544
 
545
  2008-05-09 Jonathan Larmour
546
  * err.h, err.c, sockets.c: Fix bug #23119: Reorder timeout error code to
547
    stop it being treated as a fatal error.
548
 
549
  2008-04-15 Simon Goldschmidt
550
  * dhcp.c: fixed bug #22804: dhcp_stop doesn't clear NETIF_FLAG_DHCP
551
    (flag now cleared)
552
 
553
  2008-03-27 Simon Goldschmidt
554
  * mem.c, tcpip.c, tcpip.h, opt.h: fixed bug #21433 (Calling mem_free/pbuf_free
555
    from interrupt context isn't safe): set LWIP_USE_HEAP_FROM_INTERRUPT to 1
556
    in lwipopts.h or use pbuf_free_callback(p)/mem_free_callback(m) to free pbufs
557
    or heap memory from interrupt context
558
 
559
  2008-03-26 Simon Goldschmidt
560
  * tcp_in.c, tcp.c: fixed bug #22249: division by zero could occur if a remote
561
    host sent a zero mss as TCP option.
562
 
563
 
564
(STABLE-1.3.0)
565
 
566
  ++ New features:
567
 
568
  2008-03-10 Jonathan Larmour
569
  * inet_chksum.c: Allow choice of one of the sample algorithms to be
570
    made from lwipopts.h. Fix comment on how to override LWIP_CHKSUM.
571
 
572
  2008-01-22 Frédéric Bernon
573
  * tcp.c, tcp_in.c, tcp.h, opt.h: Rename LWIP_CALCULATE_EFF_SEND_MSS in
574
    TCP_CALCULATE_EFF_SEND_MSS to have coherent TCP options names.
575
 
576
  2008-01-14 Frédéric Bernon
577
  * rawapi.txt, api_msg.c, tcp.c, tcp_in.c, tcp.h: changes for task #7675 "Enable
578
    to refuse data on a TCP_EVENT_RECV call". Important, behavior changes for the
579
    tcp_recv callback (see rawapi.txt).
580
 
581
  2008-01-14 Frédéric Bernon, Marc Chaland
582
  * ip.c: Integrate patch #6369" ip_input : checking before realloc".
583
 
584
  2008-01-12 Frédéric Bernon
585
  * tcpip.h, tcpip.c, api.h, api_lib.c, api_msg.c, sockets.c: replace the field
586
    netconn::sem per netconn::op_completed like suggested for the task #7490
587
    "Add return value to sys_mbox_post".
588
 
589
  2008-01-12 Frédéric Bernon
590
  * api_msg.c, opt.h: replace DEFAULT_RECVMBOX_SIZE per DEFAULT_TCP_RECVMBOX_SIZE,
591
    DEFAULT_UDP_RECVMBOX_SIZE and DEFAULT_RAW_RECVMBOX_SIZE (to optimize queues
592
    sizes), like suggested for the task #7490 "Add return value to sys_mbox_post".
593
 
594
  2008-01-10 Frédéric Bernon
595
  * tcpip.h, tcpip.c: add tcpip_callback_with_block function for the task #7490
596
    "Add return value to sys_mbox_post". tcpip_callback is always defined as
597
    "blocking" ("block" parameter = 1).
598
 
599
  2008-01-10 Frédéric Bernon
600
  * tcpip.h, tcpip.c, api.h, api_lib.c, api_msg.c, sockets.c: replace the field
601
    netconn::mbox (sys_mbox_t) per netconn::sem (sys_sem_t) for the task #7490
602
    "Add return value to sys_mbox_post".
603
 
604
  2008-01-05 Frédéric Bernon
605
  * sys_arch.txt, api.h, api_lib.c, api_msg.h, api_msg.c, tcpip.c, sys.h, opt.h:
606
    Introduce changes for task #7490 "Add return value to sys_mbox_post" with some
607
    modifications in the sys_mbox api: sys_mbox_new take a "size" parameters which
608
    indicate the number of pointers query by the mailbox. There is three defines
609
    in opt.h to indicate sizes for tcpip::mbox, netconn::recvmbox, and for the
610
    netconn::acceptmbox. Port maintainers, you can decide to just add this new
611
    parameter in your implementation, but to ignore it to keep the previous behavior.
612
    The new sys_mbox_trypost function return a value to know if the mailbox is
613
    full or if the message is posted. Take a look to sys_arch.txt for more details.
614
    This new function is used in tcpip_input (so, can be called in an interrupt
615
    context since the function is not blocking), and in recv_udp and recv_raw.
616
 
617
  2008-01-04 Frédéric Bernon, Simon Goldschmidt, Jonathan Larmour
618
  * rawapi.txt, api.h, api_lib.c, api_msg.h, api_msg.c, sockets.c, tcp.h, tcp.c,
619
    tcp_in.c, init.c, opt.h: rename backlog options with TCP_ prefix, limit the
620
    "backlog" parameter in an u8_t, 0 is interpreted as "smallest queue", add
621
    documentation in the rawapi.txt file.
622
 
623
  2007-12-31 Kieran Mansley (based on patch from Per-Henrik Lundbolm)
624
  * tcp.c, tcp_in.c, tcp_out.c, tcp.h: Add TCP persist timer
625
 
626
  2007-12-31 Frédéric Bernon, Luca Ceresoli
627
  * autoip.c, etharp.c: ip_addr.h: Integrate patch #6348: "Broadcast ARP packets
628
    in autoip". The change in etharp_raw could be removed, since all calls to
629
    etharp_raw use ethbroadcast for the "ethdst_addr" parameter. But it could be
630
    wrong in the future.
631
 
632
  2007-12-30 Frédéric Bernon, Tom Evans
633
  * ip.c: Fix bug #21846 "LwIP doesn't appear to perform any IP Source Address
634
    Filtering" reported by Tom Evans.
635
 
636
  2007-12-21 Frédéric Bernon, Simon Goldschmidt, Jonathan Larmour
637
  * tcp.h, opt.h, api.h, api_msg.h, tcp.c, tcp_in.c, api_lib.c, api_msg.c,
638
    sockets.c, init.c: task #7252: Implement TCP listen backlog: Warning: raw API
639
    applications have to call 'tcp_accepted(pcb)' in their accept callback to
640
    keep accepting new connections.
641
 
642
  2007-12-13 Frédéric Bernon
643
  * api_msg.c, err.h, err.c, sockets.c, dns.c, dns.h: replace "enum dns_result"
644
    by err_t type. Add a new err_t code "ERR_INPROGRESS".
645
 
646
  2007-12-12 Frédéric Bernon
647
  * dns.h, dns.c, opt.h: move DNS options to the "right" place. Most visibles
648
    are the one which have ram usage.
649
 
650
  2007-12-05 Frédéric Bernon
651
  * netdb.c: add a LWIP_DNS_API_HOSTENT_STORAGE option to decide to use a static
652
    set of variables (=0) or a local one (=1). In this last case, your port should
653
    provide a function "struct hostent* sys_thread_hostent( struct hostent* h)"
654
    which have to do a copy of "h" and return a pointer ont the "per-thread" copy.
655
 
656
  2007-12-03 Simon Goldschmidt
657
  * ip.c: ip_input: check if a packet is for inp first before checking all other
658
    netifs on netif_list (speeds up packet receiving in most cases)
659
 
660
  2007-11-30 Simon Goldschmidt
661
  * udp.c, raw.c: task #7497: Sort lists (pcb, netif, ...) for faster access
662
    UDP: move a (connected) pcb selected for input to the front of the list of
663
    pcbs so that it is found faster next time. Same for RAW pcbs that have eaten
664
    a packet.
665
 
666
  2007-11-28 Simon Goldschmidt
667
  * etharp.c, stats.c, stats.h, opt.h: Introduced ETHARP_STATS
668
 
669
  2007-11-25 Simon Goldschmidt
670
  * dhcp.c: dhcp_unfold_reply() uses pbuf_copy_partial instead of its own copy
671
    algorithm.
672
 
673
  2007-11-24 Simon Goldschmidt
674
  * netdb.h, netdb.c, sockets.h/.c: Moved lwip_gethostbyname from sockets.c
675
    to the new file netdb.c; included lwip_getaddrinfo.
676
 
677
  2007-11-21 Simon Goldschmidt
678
  * tcp.h, opt.h, tcp.c, tcp_in.c: implemented calculating the effective send-mss
679
    based on the MTU of the netif used to send. Enabled by default. Disable by
680
    setting LWIP_CALCULATE_EFF_SEND_MSS to 0. This fixes bug #21492.
681
 
682
  2007-11-19 Frédéric Bernon
683
  * api_msg.c, dns.h, dns.c: Implement DNS_DOES_NAME_CHECK option (check if name
684
    received match the name query), implement DNS_USES_STATIC_BUF (the place where
685
    copy dns payload to parse the response), return an error if there is no place
686
    for a new query, and fix some minor problems.
687
 
688
  2007-11-16 Simon Goldschmidt
689
  * new files: ipv4/inet.c, ipv4/inet_chksum.c, ipv6/inet6.c
690
    removed files: core/inet.c, core/inet6.c
691
    Moved inet files into ipv4/ipv6 directory; splitted inet.c/inet.h into
692
    inet and chksum part; changed includes in all lwIP files as appropriate
693
 
694
  2007-11-16 Simon Goldschmidt
695
  * api.h, api_msg.h, api_lib.c, api_msg.c, socket.h, socket.c: Added sequential
696
    dns resolver function for netconn api (netconn_gethostbyname) and socket api
697
    (gethostbyname/gethostbyname_r).
698
 
699
  2007-11-15 Jim Pettinato, Frédéric Bernon
700
  * opt.h, init.c, tcpip.c, dhcp.c, dns.h, dns.c: add DNS client for simple name
701
    requests with RAW api interface. Initialization is done in lwip_init() with
702
    build time options. DNS timer is added in tcpip_thread context. DHCP can set
703
    DNS server ip addresses when options are received. You need to set LWIP_DNS=1
704
    in your lwipopts.h file (LWIP_DNS=0 in opt.h). DNS_DEBUG can be set to get
705
    some traces with LWIP_DEBUGF. Sanity check have been added. There is a "todo"
706
    list with points to improve.
707
 
708
  2007-11-06 Simon Goldschmidt
709
  * opt.h, mib2.c: Patch #6215: added ifAdminStatus write support (if explicitly
710
    enabled by defining SNMP_SAFE_REQUESTS to 0); added code to check link status
711
    for ifOperStatus if LWIP_NETIF_LINK_CALLBACK is defined.
712
 
713
  2007-11-06 Simon Goldschmidt
714
  * api.h, api_msg.h and dependent files: Task #7410: Removed the need to include
715
    core header files in api.h (ip/tcp/udp/raw.h) to hide the internal
716
    implementation from netconn api applications.
717
 
718
  2007-11-03 Frédéric Bernon
719
  * api.h, api_lib.c, api_msg.c, sockets.c, opt.h: add SO_RCVBUF option for UDP &
720
    RAW netconn. You need to set LWIP_SO_RCVBUF=1 in your lwipopts.h (it's disabled
721
    by default). Netconn API users can use the netconn_recv_bufsize macro to access
722
    it. This is a first release which have to be improve for TCP. Note it used the
723
    netconn::recv_avail which need to be more "thread-safe" (note there is already
724
    the problem for FIONREAD with lwip_ioctl/ioctlsocket).
725
 
726
  2007-11-01 Frédéric Bernon, Marc Chaland
727
  * sockets.h, sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c, tcp.h, tcp_out.c:
728
    Integrate "patch #6250 : MSG_MORE flag for send". MSG_MORE is used at socket api
729
    layer, NETCONN_MORE at netconn api layer, and TCP_WRITE_FLAG_MORE at raw api
730
    layer. This option enable to delayed TCP PUSH flag on multiple "write" calls.
731
    Note that previous "copy" parameter for "write" APIs is now called "apiflags".
732
 
733
  2007-10-24 Frédéric Bernon
734
  * api.h, api_lib.c, api_msg.c: Add macro API_EVENT in the same spirit than
735
    TCP_EVENT_xxx macros to get a code more readable. It could also help to remove
736
    some code (like we have talk in "patch #5919 : Create compile switch to remove
737
    select code"), but it could be done later.
738
 
739
  2007-10-08 Simon Goldschmidt
740
  * many files: Changed initialization: many init functions are not needed any
741
    more since we now rely on the compiler initializing global and static
742
    variables to zero!
743
 
744
  2007-10-06 Simon Goldschmidt
745
  * ip_frag.c, memp.c, mib2.c, ip_frag.h, memp_std.h, opt.h: Changed IP_REASSEMBLY
746
    to enqueue the received pbufs so that multiple packets can be reassembled
747
    simultaneously and no static reassembly buffer is needed.
748
 
749
  2007-10-05 Simon Goldschmidt
750
  * tcpip.c, etharp.h, etharp.c: moved ethernet_input from tcpip.c to etharp.c so
751
    all netifs (or ports) can use it.
752
 
753
  2007-10-05 Frédéric Bernon
754
  * netifapi.h, netifapi.c: add function netifapi_netif_set_default. Change the
755
    common function to reduce a little bit the footprint (for all functions using
756
    only the "netif" parameter).
757
 
758
  2007-10-03 Frédéric Bernon
759
  * netifapi.h, netifapi.c: add functions netifapi_netif_set_up, netifapi_netif_set_down,
760
    netifapi_autoip_start and netifapi_autoip_stop. Use a common function to reduce
761
    a little bit the footprint (for all functions using only the "netif" parameter).
762
 
763
  2007-09-15 Frédéric Bernon
764
  * udp.h, udp.c, sockets.c: Changes for "#20503 IGMP Improvement". Add IP_MULTICAST_IF
765
    option in socket API, and a new field "multicast_ip" in "struct udp_pcb" (for
766
    netconn and raw API users), only if LWIP_IGMP=1. Add getsockopt processing for
767
    IP_MULTICAST_TTL and IP_MULTICAST_IF.
768
 
769
  2007-09-10 Frédéric Bernon
770
  * snmp.h, mib2.c: enable to remove SNMP timer (which consumne several cycles
771
    even when it's not necessary). snmp_agent.txt tell to call snmp_inc_sysuptime()
772
    each 10ms (but, it's intrusive if you use sys_timeout feature). Now, you can
773
    decide to call snmp_add_sysuptime(100) each 1000ms (which is bigger "step", but
774
    call to a lower frequency). Or, you can decide to not call snmp_inc_sysuptime()
775
    or snmp_add_sysuptime(), and to define the SNMP_GET_SYSUPTIME(sysuptime) macro.
776
    This one is undefined by default in mib2.c. SNMP_GET_SYSUPTIME is called inside
777
    snmp_get_sysuptime(u32_t *value), and enable to change "sysuptime" value only
778
    when it's queried (any direct call to "sysuptime" is changed by a call to
779
    snmp_get_sysuptime).
780
 
781
  2007-09-09 Frédéric Bernon, Bill Florac
782
  * igmp.h, igmp.c, netif.h, netif.c, ip.c: To enable to have interfaces with IGMP,
783
    and others without it, there is a new NETIF_FLAG_IGMP flag to set in netif->flags
784
    if you want IGMP on an interface. igmp_stop() is now called inside netif_remove().
785
    igmp_report_groups() is now called inside netif_set_link_up() (need to have
786
    LWIP_NETIF_LINK_CALLBACK=1) to resend reports once the link is up (avoid to wait
787
    the next query message to receive the matching multicast streams).
788
 
789
  2007-09-08 Frédéric Bernon
790
  * sockets.c, ip.h, api.h, tcp.h: declare a "struct ip_pcb" which only contains
791
    IP_PCB. Add in the netconn's "pcb" union a "struct ip_pcb *ip;" (no size change).
792
    Use this new field to access to common pcb fields (ttl, tos, so_options, etc...).
793
    Enable to access to these fields with LWIP_TCP=0.
794
 
795
  2007-09-05 Frédéric Bernon
796
  * udp.c, ipv4/icmp.c, ipv4/ip.c, ipv6/icmp.c, ipv6/ip6.c, ipv4/icmp.h,
797
    ipv6/icmp.h, opt.h: Integrate "task #7272 : LWIP_ICMP option". The new option
798
    LWIP_ICMP enable/disable ICMP module inside the IP stack (enable per default).
799
    Be careful, disabling ICMP make your product non-compliant to RFC1122, but
800
    help to reduce footprint, and to reduce "visibility" on the Internet.
801
 
802
  2007-09-05 Frédéric Bernon, Bill Florac
803
  * opt.h, sys.h, tcpip.c, slipif.c, ppp.c, sys_arch.txt: Change parameters list
804
    for sys_thread_new (see "task #7252 : Create sys_thread_new_ex()"). Two new
805
    parameters have to be provided: a task name, and a task stack size. For this
806
    one, since it's platform dependant, you could define the best one for you in
807
    your lwipopts.h. For port maintainers, you can just add these new parameters
808
    in your sys_arch.c file, and but it's not mandatory, use them in your OS
809
    specific functions.
810
 
811
  2007-09-05 Frédéric Bernon
812
  * inet.c, autoip.c, msg_in.c, msg_out.c, init.c: Move some build time checkings
813
    inside init.c for task #7142 "Sanity check user-configurable values".
814
 
815
  2007-09-04 Frédéric Bernon, Bill Florac
816
  * igmp.h, igmp.c, memp_std.h, memp.c, init.c, opt.h: Replace mem_malloc call by
817
    memp_malloc, and use a new MEMP_NUM_IGMP_GROUP option (see opt.h to define the
818
    value). It will avoid potential fragmentation problems, use a counter to know
819
    how many times a group is used on an netif, and free it when all applications
820
    leave it. MEMP_NUM_IGMP_GROUP got 8 as default value (and init.c got a sanity
821
    check if LWIP_IGMP!=0).
822
 
823
  2007-09-03 Frédéric Bernon
824
  * igmp.h, igmp.c, sockets.c, api_msg.c: Changes for "#20503 IGMP Improvement".
825
    Initialize igmp_mac_filter to NULL in netif_add (this field should be set in
826
    the netif's "init" function). Use the "imr_interface" field (for socket layer)
827
    and/or the "interface" field (for netconn layer), for join/leave operations.
828
    The igmp_join/leavegroup first parameter change from a netif to an ipaddr.
829
    This field could be a netif's ipaddr, or "any" (same meaning than ip_addr_isany).
830
 
831
  2007-08-30 Frédéric Bernon
832
  * Add netbuf.h, netbuf.c, Change api.h, api_lib.c: #7249 "Split netbuf functions
833
    from api/api_lib". Now netbuf API is independant of netconn, and can be used
834
    with other API (application based on raw API, or future "socket2" API). Ports
835
    maintainers just have to add src/api/netbuf.c in their makefile/projects.
836
 
837
  2007-08-30 Frédéric Bernon, Jonathan Larmour
838
  * init.c: Add first version of lwip_sanity_check for task #7142 "Sanity check
839
    user-configurable values".
840
 
841
  2007-08-29 Frédéric Bernon
842
  * igmp.h, igmp.c, tcpip.c, init.c, netif.c: change igmp_init and add igmp_start.
843
    igmp_start is call inside netif_add. Now, igmp initialization is in the same
844
    spirit than the others modules. Modify some IGMP debug traces.
845
 
846
  2007-08-29 Frédéric Bernon
847
  * Add init.h, init.c, Change opt.h, tcpip.c: Task  #7213 "Add a lwip_init function"
848
    Add lwip_init function to regroup all modules initializations, and to provide
849
    a place to add code for task #7142 "Sanity check user-configurable values".
850
    Ports maintainers should remove direct initializations calls from their code,
851
    and add init.c in their makefiles. Note that lwip_init() function is called
852
    inside tcpip_init, but can also be used by raw api users since all calls are
853
    disabled when matching options are disabled. Also note that their is new options
854
    in opt.h, you should configure in your lwipopts.h (they are enabled per default).
855
 
856
  2007-08-26 Marc Boucher
857
  * api_msg.c: do_close_internal(): Reset the callbacks and arg (conn) to NULL
858
    since they can under certain circumstances be called with an invalid conn
859
    pointer after the connection has been closed (and conn has been freed).
860
 
861
  2007-08-25 Frédéric Bernon (Artem Migaev's Patch)
862
  * netif.h, netif.c: Integrate "patch #6163 : Function to check if link layer is up".
863
    Add a netif_is_link_up() function if LWIP_NETIF_LINK_CALLBACK option is set.
864
 
865
  2007-08-22 Frédéric Bernon
866
  * netif.h, netif.c, opt.h: Rename LWIP_NETIF_CALLBACK in LWIP_NETIF_STATUS_CALLBACK
867
    to be coherent with new LWIP_NETIF_LINK_CALLBACK option before next release.
868
 
869
  2007-08-22 Frédéric Bernon
870
  * tcpip.h, tcpip.c, ethernetif.c, opt.h: remove options ETHARP_TCPIP_INPUT &
871
    ETHARP_TCPIP_ETHINPUT, now, only "ethinput" code is supported, even if the
872
    name is tcpip_input (we keep the name of 1.2.0 function).
873
 
874
  2007-08-17 Jared Grubb
875
  * memp_std.h, memp.h, memp.c, mem.c, stats.c: (Task #7136) Centralize mempool
876
    settings into new memp_std.h and optional user file lwippools.h. This adds
877
    more dynamic mempools, and allows the user to create an arbitrary number of
878
    mempools for mem_malloc.
879
 
880
  2007-08-16 Marc Boucher
881
  * api_msg.c: Initialize newconn->state to NETCONN_NONE in accept_function;
882
    otherwise it was left to NETCONN_CLOSE and sent_tcp() could prematurely
883
    close the connection.
884
 
885
  2007-08-16 Marc Boucher
886
  * sockets.c: lwip_accept(): check netconn_peer() error return.
887
 
888
  2007-08-16 Marc Boucher
889
  * mem.c, mem.h: Added mem_calloc().
890
 
891
  2007-08-16 Marc Boucher
892
  * tcpip.c, tcpip.h memp.c, memp.h: Added distinct memp (MEMP_TCPIP_MSG_INPKT)
893
    for input packets to prevent floods from consuming all of MEMP_TCPIP_MSG
894
    and starving other message types.
895
    Renamed MEMP_TCPIP_MSG to MEMP_TCPIP_MSG_API
896
 
897
  2007-08-16 Marc Boucher
898
  * pbuf.c, pbuf.h, etharp.c, tcp_in.c, sockets.c: Split pbuf flags in pbuf
899
    type and flgs (later renamed to flags).
900
    Use enum pbuf_flag as pbuf_type.  Renumber PBUF_FLAG_*.
901
    Improved lwip_recvfrom().  TCP push now propagated.
902
 
903
  2007-08-16 Marc Boucher
904
  * ethernetif.c, contrib/ports/various: ethbroadcast now a shared global
905
    provided by etharp.
906
 
907
  2007-08-16 Marc Boucher
908
  * ppp_oe.c ppp_oe.h, auth.c chap.c fsm.c lcp.c ppp.c ppp.h,
909
    etharp.c ethernetif.c, etharp.h, opt.h tcpip.h, tcpip.c:
910
    Added PPPoE support and various PPP improvements.
911
 
912
  2007-07-25 Simon Goldschmidt
913
  * api_lib.c, ip_frag.c, pbuf.c, api.h, pbuf.h: Introduced pbuf_copy_partial,
914
    making netbuf_copy_partial use this function.
915
 
916
  2007-07-25 Simon Goldschmidt
917
  * tcp_in.c: Fix bug #20506: Slow start / initial congestion window starts with
918
    2 * mss (instead of 1 * mss previously) to comply with some newer RFCs and
919
    other stacks.
920
 
921
  2007-07-13 Jared Grubb (integrated by Frédéric Bernon)
922
  * opt.h, netif.h, netif.c, ethernetif.c: Add new configuration option to add
923
    a link callback in the netif struct, and functions to handle it. Be carefull
924
    for port maintainers to add the NETIF_FLAG_LINK_UP flag (like in ethernetif.c)
925
    if you want to be sure to be compatible with future changes...
926
 
927
  2007-06-30 Frédéric Bernon
928
  * sockets.h, sockets.c: Implement MSG_PEEK flag for recv/recvfrom functions.
929
 
930
  2007-06-21 Simon Goldschmidt
931
  * etharp.h, etharp.c: Combined etharp_request with etharp_raw for both
932
    LWIP_AUTOIP =0 and =1 to remove redundant code.
933
 
934
  2007-06-21 Simon Goldschmidt
935
  * mem.c, memp.c, mem.h, memp.h, opt.h: task #6863: Introduced the option
936
    MEM_USE_POOLS to use 4 pools with different sized elements instead of a
937
    heap. This both prevents memory fragmentation and gives a higher speed
938
    at the cost of more memory consumption. Turned off by default.
939
 
940
  2007-06-21 Simon Goldschmidt
941
  * api_lib.c, api_msg.c, api.h, api_msg.h: Converted the length argument of
942
    netconn_write (and therefore also api_msg_msg.msg.w.len) from u16_t into
943
    int to be able to send a bigger buffer than 64K with one time (mainly
944
    used from lwip_send).
945
 
946
  2007-06-21 Simon Goldschmidt
947
  * tcp.h, api_msg.c: Moved the nagle algorithm from netconn_write/do_write
948
    into a define (tcp_output_nagle) in tcp.h to provide it to raw api users, too.
949
 
950
  2007-06-21 Simon Goldschmidt
951
  * api.h, api_lib.c, api_msg.c: Fixed bug #20021: Moved sendbuf-processing in
952
    netconn_write from api_lib.c to api_msg.c to also prevent multiple context-
953
    changes on low memory or empty send-buffer.
954
 
955
  2007-06-18 Simon Goldschmidt
956
  * etharp.c, etharp.h: Changed etharp to use a defined hardware address length
957
    of 6 to avoid loading netif->hwaddr_len every time (since this file is only
958
    used for ethernet and struct eth_addr already had a defined length of 6).
959
 
960
  2007-06-17 Simon Goldschmidt
961
  * sockets.c, sockets.h: Implemented socket options SO_NO_CHECK for UDP sockets
962
    to disable UDP checksum generation on transmit.
963
 
964
  2007-06-13 Frédéric Bernon, Simon Goldschmidt
965
  * debug.h, api_msg.c: change LWIP_ERROR to use it to check errors like invalid
966
    pointers or parameters, and let the possibility to redefined it in cc.h. Use
967
    this macro to check "conn" parameter in api_msg.c functions.
968
 
969
  2007-06-11 Simon Goldschmidt
970
  * sockets.c, sockets.h: Added UDP lite support for sockets
971
 
972
  2007-06-10 Simon Goldschmidt
973
  * udp.h, opt.h, api_msg.c, ip.c, udp.c: Included switch LWIP_UDPLITE (enabled
974
    by default) to switch off UDP-Lite support if not needed (reduces udp.c code
975
    size)
976
 
977
  2007-06-09 Dominik Spies (integrated by Frédéric Bernon)
978
  * autoip.h, autoip.c, dhcp.h, dhcp.c, netif.h, netif.c, etharp.h, etharp.c, opt.h:
979
    AutoIP implementation available for IPv4, with new options LWIP_AUTOIP and
980
    LWIP_DHCP_AUTOIP_COOP if you want to cooperate with DHCP. Some tips to adapt
981
    (see TODO mark in the source code).
982
 
983
  2007-06-09 Simon Goldschmidt
984
  * etharp.h, etharp.c, ethernetif.c: Modified order of parameters for
985
    etharp_output() to match netif->output so etharp_output() can be used
986
    directly as netif->output to save one function call.
987
 
988
  2007-06-08 Simon Goldschmidt
989
  * netif.h, ethernetif.c, slipif.c, loopif.c: Added define
990
    NETIF_INIT_SNMP(netif, type, speed) to initialize per-netif snmp variables,
991
    added initialization of those to ethernetif, slipif and loopif.
992
 
993
  2007-05-18 Simon Goldschmidt
994
  * opt.h, ip_frag.c, ip_frag.h, ip.c: Added option IP_FRAG_USES_STATIC_BUF
995
    (defaulting to off for now) that can be set to 0 to send fragmented
996
    packets by passing PBUF_REFs down the stack.
997
 
998
  2007-05-23 Frédéric Bernon
999
  * api_lib.c: Implement SO_RCVTIMEO for accept and recv on TCP
1000
    connections, such present in patch #5959.
1001
 
1002
  2007-05-23 Frédéric Bernon
1003
  * api.h, api_lib.c, api_msg.c, sockets.c: group the different NETCONN_UDPxxx
1004
    code in only one part...
1005
 
1006
  2007-05-18 Simon Goldschmidt
1007
  * opt.h, memp.h, memp.c: Added option MEMP_OVERFLOW_CHECK to check for memp
1008
    elements to overflow. This is achieved by adding some bytes before and after
1009
    each pool element (increasing their size, of course), filling them with a
1010
    prominent value and checking them on freeing the element.
1011
    Set it to 2 to also check every element in every pool each time memp_malloc()
1012
    or memp_free() is called (slower but more helpful).
1013
 
1014
  2007-05-10 Simon Goldschmidt
1015
  * opt.h, memp.h, memp.c, pbuf.c (see task #6831): use a new memp pool for
1016
    PBUF_POOL pbufs instead of the old pool implementation in pbuf.c to reduce
1017
    code size.
1018
 
1019
  2007-05-11 Frédéric Bernon
1020
  * sockets.c, api_lib.c, api_msg.h, api_msg.c, netifapi.h, netifapi.c, tcpip.c:
1021
    Include a function pointer instead of a table index in the message to reduce
1022
    footprint. Disable some part of lwip_send and lwip_sendto if some options are
1023
    not set (LWIP_TCP, LWIP_UDP, LWIP_RAW).
1024
 
1025
  2007-05-10 Simon Goldschmidt
1026
  * *.h (except netif/ppp/*.h): Included patch #5448: include '#ifdef __cplusplus
1027
    \ extern "C" {' in all header files. Now you can write your application using
1028
    the lwIP stack in C++ and simply #include the core files. Note I have left
1029
    out the netif/ppp/*h header files for now, since I don't know which files are
1030
    included by applications and which are for internal use only.
1031
 
1032
  2007-05-09 Simon Goldschmidt
1033
  * opt.h, *.c/*.h: Included patch #5920: Create define to override C-library
1034
    memcpy. 2 Defines are created: MEMCPY() for normal memcpy, SMEMCPY() for
1035
    situations where some compilers might inline the copy and save a function
1036
    call. Also replaced all calls to memcpy() with calls to (S)MEMCPY().
1037
 
1038
  2007-05-08 Simon Goldschmidt
1039
  * mem.h: If MEM_LIBC_MALLOC==1, allow the defines (e.g. mem_malloc() -> malloc())
1040
    to be overriden in case the C-library malloc implementation is not protected
1041
    against concurrent access.
1042
 
1043
  2007-05-04 Simon Goldschmidt (Atte Kojo)
1044
  * etharp.c: Introduced fast one-entry-cache to speed up ARP lookup when sending
1045
    multiple packets to the same host.
1046
 
1047
  2007-05-04 Frédéric Bernon, Jonathan Larmour
1048
  * sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c: Fix bug #19162 "lwip_sento: a possible
1049
    to corrupt remote addr/port connection state". Reduce problems "not enought memory" with
1050
    netbuf (if we receive lot of datagrams). Improve lwip_sendto (only one exchange between
1051
    sockets api and api_msg which run in tcpip_thread context). Add netconn_sento function.
1052
    Warning, if you directly access to "fromaddr" & "fromport" field from netbuf struct,
1053
    these fields are now renamed "addr" & "port".
1054
 
1055
  2007-04-11 Jonathan Larmour
1056
  * sys.h, api_lib.c: Provide new sys_mbox_tryfetch function. Require ports to provide new
1057
    sys_arch_mbox_tryfetch function to get a message if one is there, otherwise return
1058
    with SYS_MBOX_EMPTY. sys_arch_mbox_tryfetch can be implemented as a function-like macro
1059
    by the port in sys_arch.h if desired.
1060
 
1061
  2007-04-06 Frédéric Bernon, Simon Goldschmidt
1062
  * opt.h, tcpip.h, tcpip.c, netifapi.h, netifapi.c: New configuration option LWIP_NETIF_API
1063
    allow to use thread-safe functions to add/remove netif in list, and to start/stop dhcp
1064
    clients, using new functions from netifapi.h. Disable as default (no port change to do).
1065
 
1066
  2007-04-05 Frédéric Bernon
1067
  * sockets.c: remplace ENOBUFS errors on alloc_socket by ENFILE to be more BSD compliant.
1068
 
1069
  2007-04-04 Simon Goldschmidt
1070
  * arch.h, api_msg.c, dhcp.c, msg_in.c, sockets.c: Introduced #define LWIP_UNUSED_ARG(x)
1071
    use this for and architecture-independent form to tell the compiler you intentionally
1072
    are not using this variable. Can be overriden in cc.h.
1073
 
1074
  2007-03-28 Frédéric Bernon
1075
  * opt.h, netif.h, dhcp.h, dhcp.c: New configuration option LWIP_NETIF_HOSTNAME allow to
1076
    define a hostname in netif struct (this is just a pointer, so, you can use a hardcoded
1077
    string, point on one of your's ethernetif field, or alloc a string you will free yourself).
1078
    It will be used by DHCP to register a client hostname, but can also be use when you call
1079
    snmp_set_sysname.
1080
 
1081
  2007-03-28 Frédéric Bernon
1082
  * netif.h, netif.c: A new NETIF_FLAG_ETHARP flag is defined in netif.h, to allow to
1083
    initialize a network interface's flag with. It tell this interface is an ethernet
1084
    device, and we can use ARP with it to do a "gratuitous ARP" (RFC 3220 "IP Mobility
1085
    Support for IPv4" section 4.6) when interface is "up" with netif_set_up().
1086
 
1087
  2007-03-26 Frédéric Bernon, Jonathan Larmour
1088
  * opt.h, tcpip.c: New configuration option LWIP_ARP allow to disable ARP init at build
1089
    time if you only use PPP or SLIP. The default is enable. Note we don't have to call
1090
    etharp_init in your port's initilization sequence if you use tcpip.c, because this call
1091
    is done in tcpip_init function.
1092
 
1093
  2007-03-22 Frédéric Bernon
1094
  * stats.h, stats.c, msg_in.c: Stats counters can be change to u32_t if necessary with the
1095
    new option LWIP_STATS_LARGE. If you need this option, define LWIP_STATS_LARGE to 1 in
1096
    your lwipopts.h. More, unused counters are not defined in the stats structs, and not
1097
    display by stats_display(). Note that some options (SYS_STATS and RAW_STATS) are defined
1098
    but never used. Fix msg_in.c with the correct #if test for a stat display.
1099
 
1100
  2007-03-21 Kieran Mansley
1101
  * netif.c, netif.h: Apply patch#4197 with some changes (originator: rireland@hmgsl.com).
1102
    Provides callback on netif up/down state change.
1103
 
1104
  2007-03-11 Frédéric Bernon, Mace Gael, Steve Reynolds
1105
  * sockets.h, sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c, igmp.h, igmp.c,
1106
    ip.c, netif.h, tcpip.c, opt.h:
1107
    New configuration option LWIP_IGMP to enable IGMP processing. Based on only one
1108
    filter per all network interfaces. Declare a new function in netif to enable to
1109
    control the MAC filter (to reduce lwIP traffic processing).
1110
 
1111
  2007-03-11 Frédéric Bernon
1112
  * tcp.h, tcp.c, sockets.c, tcp_out.c, tcp_in.c, opt.h: Keepalive values can
1113
    be configured at run time with LWIP_TCP_KEEPALIVE, but don't change this
1114
    unless you know what you're doing (default are RFC1122 compliant). Note
1115
    that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set in seconds.
1116
 
1117
  2007-03-08 Frédéric Bernon
1118
  * tcp.h: Keepalive values can be configured at compile time, but don't change
1119
    this unless you know what you're doing (default are RFC1122 compliant).
1120
 
1121
  2007-03-08 Frédéric Bernon
1122
  * sockets.c, api.h, api_lib.c, tcpip.c, sys.h, sys.c, err.c, opt.h:
1123
    Implement LWIP_SO_RCVTIMEO configuration option to enable/disable SO_RCVTIMEO
1124
    on UDP sockets/netconn.
1125
 
1126
  2007-03-08 Simon Goldschmidt
1127
  * snmp_msg.h, msg_in.c: SNMP UDP ports can be configured at compile time.
1128
 
1129
  2007-03-06 Frédéric Bernon
1130
  * api.h, api_lib.c, sockets.h, sockets.c, tcpip.c, sys.h, sys.c, err.h:
1131
    Implement SO_RCVTIMEO on UDP sockets/netconn.
1132
 
1133
  2007-02-28 Kieran Mansley (based on patch from Simon Goldschmidt)
1134
  * api_lib.c, tcpip.c, memp.c, memp.h: make API msg structs allocated
1135
    on the stack and remove the API msg type from memp
1136
 
1137
  2007-02-26 Jonathan Larmour (based on patch from Simon Goldschmidt)
1138
  * sockets.h, sockets.c: Move socket initialization to new
1139
    lwip_socket_init() function.
1140
    NOTE: this changes the API with ports. Ports will have to be
1141
    updated to call lwip_socket_init() now.
1142
 
1143
  2007-02-26 Jonathan Larmour (based on patch from Simon Goldschmidt)
1144
  * api_lib.c: Use memcpy in netbuf_copy_partial.
1145
 
1146
 
1147
  ++ Bug fixes:
1148
 
1149
  2008-03-17 Frédéric Bernon, Ed Kerekes
1150
  * igmp.h, igmp.c: Fix bug #22613 "IGMP iphdr problem" (could have
1151
    some problems to fill the IP header on some targets, use now the
1152
    ip.h macros to do it).
1153
 
1154
  2008-03-13 Frédéric Bernon
1155
  * sockets.c: Fix bug #22435 "lwip_recvfrom with TCP break;". Using
1156
    (lwip_)recvfrom with valid "from" and "fromlen" parameters, on a
1157
    TCP connection caused a crash. Note that using (lwip_)recvfrom
1158
    like this is a bit slow and that using (lwip)getpeername is the
1159
    good lwip way to do it (so, using recv is faster on tcp sockets).
1160
 
1161
  2008-03-12 Frédéric Bernon, Jonathan Larmour
1162
  * api_msg.c, contrib/apps/ping.c: Fix bug #22530 "api_msg.c's
1163
    recv_raw() does not consume data", and the ping sample (with
1164
    LWIP_SOCKET=1, the code did the wrong supposition that lwip_recvfrom
1165
    returned the IP payload, without the IP header).
1166
 
1167
  2008-03-04 Jonathan Larmour
1168
  * mem.c, stats.c, mem.h: apply patch #6414 to avoid compiler errors
1169
  and/or warnings on some systems where mem_size_t and size_t differ.
1170
  * pbuf.c, ppp.c: Fix warnings on some systems with mem_malloc.
1171
 
1172
  2008-03-04 Kieran Mansley (contributions by others)
1173
  * Numerous small compiler error/warning fixes from contributions to
1174
    mailing list after 1.3.0 release candidate made.
1175
 
1176
  2008-01-25 Cui hengbin (integrated by Frédéric Bernon)
1177
  * dns.c: Fix bug #22108 "DNS problem" caused by unaligned structures.
1178
 
1179
  2008-01-15 Kieran Mansley
1180
  * tcp_out.c: BUG20511.  Modify persist timer to start when we are
1181
    prevented from sending by a small send window, not just a zero
1182
    send window.
1183
 
1184
  2008-01-09 Jonathan Larmour
1185
  * opt.h, ip.c: Rename IP_OPTIONS define to IP_OPTIONS_ALLOWED to avoid
1186
    conflict with Linux system headers.
1187
 
1188
  2008-01-06 Jonathan Larmour
1189
  * dhcp.c: fix bug #19927: "DHCP NACK problem" by clearing any existing set IP
1190
    address entirely on receiving a DHCPNAK, and restarting discovery.
1191
 
1192
  2007-12-21 Simon Goldschmidt
1193
  * sys.h, api_lib.c, api_msg.c, sockets.c: fix bug #21698: "netconn->recv_avail
1194
    is not protected" by using new macros for interlocked access to modify/test
1195
    netconn->recv_avail.
1196
 
1197
  2007-12-20 Kieran Mansley (based on patch from Oleg Tyshev)
1198
  * tcp_in.c: fix bug# 21535 (nrtx not reset correctly in SYN_SENT state)
1199
 
1200
  2007-12-20 Kieran Mansley (based on patch from Per-Henrik Lundbolm)
1201
  * tcp.c, tcp_in.c, tcp_out.c, tcp.h: fix bug #20199 (better handling
1202
    of silly window avoidance and prevent lwIP from shrinking the window)
1203
 
1204
  2007-12-04 Simon Goldschmidt
1205
  * tcp.c, tcp_in.c: fix bug #21699 (segment leak in ooseq processing when last
1206
    data packet was lost): add assert that all segment lists are empty in
1207
    tcp_pcb_remove before setting pcb to CLOSED state; don't directly set CLOSED
1208
    state from LAST_ACK in tcp_process
1209
 
1210
  2007-12-02 Simon Goldschmidt
1211
  * sockets.h: fix bug #21654: exclude definition of struct timeval from #ifndef FD_SET
1212
    If including  for system-struct timeval, LWIP_TIMEVAL_PRIVATE now
1213
    has to be set to 0 in lwipopts.h
1214
 
1215
  2007-12-02 Simon Goldschmidt
1216
  * api_msg.c, api_lib.c: fix bug #21656 (recvmbox problem in netconn API): always
1217
    allocate a recvmbox in netconn_new_with_proto_and_callback. For a tcp-listen
1218
    netconn, this recvmbox is later freed and a new mbox is allocated for acceptmbox.
1219
    This is a fix for thread-safety and allocates all items needed for a netconn
1220
    when the netconn is created.
1221
 
1222
  2007-11-30 Simon Goldschmidt
1223
  * udp.c: first attempt to fix bug #21655 (DHCP doesn't work reliably with multiple
1224
    netifs): if LWIP_DHCP is enabled, UDP packets to DHCP_CLIENT_PORT are passed
1225
    to netif->dhcp->pcb only (if that exists) and not to any other pcb for the same
1226
    port (only solution to let UDP pcbs 'bind' to a netif instead of an IP address)
1227
 
1228
  2007-11-27 Simon Goldschmidt
1229
  * ip.c: fixed bug #21643 (udp_send/raw_send don't fail if netif is down) by
1230
    letting ip_route only use netifs that are up.
1231
 
1232
  2007-11-27 Simon Goldschmidt
1233
  * err.h, api_lib.c, api_msg.c, sockets.c: Changed error handling: ERR_MEM, ERR_BUF
1234
    and ERR_RTE are seen as non-fatal, all other errors are fatal. netconns and
1235
    sockets block most operations once they have seen a fatal error.
1236
 
1237
  2007-11-27 Simon Goldschmidt
1238
  * udp.h, udp.c, dhcp.c: Implemented new function udp_sendto_if which takes the
1239
    netif to send as an argument (to be able to send on netifs that are down).
1240
 
1241
  2007-11-26 Simon Goldschmidt
1242
  * tcp_in.c: Fixed bug #21582: pcb->acked accounting can be wrong when ACKs
1243
    arrive out-of-order
1244
 
1245
  2007-11-21 Simon Goldschmidt
1246
  * tcp.h, tcp_out.c, api_msg.c: Fixed bug #20287: tcp_output_nagle sends too early
1247
    Fixed the nagle algorithm; nagle now also works for all raw API applications
1248
    and has to be explicitly disabled with 'tcp_pcb->flags |= TF_NODELAY'
1249
 
1250
  2007-11-12 Frédéric Bernon
1251
  * sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c: Fixed bug #20900. Now, most
1252
    of the netconn_peer and netconn_addr processing is done inside tcpip_thread
1253
    context in do_getaddr.
1254
 
1255
  2007-11-10 Simon Goldschmidt
1256
  * etharp.c: Fixed bug: assert fired when MEMP_ARP_QUEUE was empty (which can
1257
    happen any time). Now the packet simply isn't enqueued when out of memory.
1258
 
1259
  2007-11-01 Simon Goldschmidt
1260
  * tcp.c, tcp_in.c: Fixed bug #21494: The send mss (pcb->mss) is set to 536 (or
1261
    TCP_MSS if that is smaller) as long as no MSS option is received from the
1262
    remote host.
1263
 
1264
  2007-11-01 Simon Goldschmidt
1265
  * tcp.h, tcp.c, tcp_in.c: Fixed bug #21491: The MSS option sent (with SYN)
1266
    is now based on TCP_MSS instead of pcb->mss (on passive open now effectively
1267
    sending our configured TCP_MSS instead of the one received).
1268
 
1269
  2007-11-01 Simon Goldschmidt
1270
  * tcp_in.c: Fixed bug #21181: On active open, the initial congestion window was
1271
    calculated based on the configured TCP_MSS, not on the MSS option received
1272
    with SYN+ACK.
1273
 
1274
  2007-10-09 Simon Goldschmidt
1275
  * udp.c, inet.c, inet.h: Fixed UDPLite: send: Checksum was always generated too
1276
    short and also was generated wrong if checksum coverage != tot_len;
1277
    receive: checksum was calculated wrong if checksum coverage != tot_len
1278
 
1279
  2007-10-08 Simon Goldschmidt
1280
  * mem.c: lfree was not updated in mem_realloc!
1281
 
1282
  2007-10-07 Frédéric Bernon
1283
  * sockets.c, api.h, api_lib.c: First step to fix "bug #20900 : Potential
1284
    crash error problem with netconn_peer & netconn_addr". VERY IMPORTANT:
1285
    this change cause an API breakage for netconn_addr, since a parameter
1286
    type change. Any compiler should cause an error without any changes in
1287
    yours netconn_peer calls (so, it can't be a "silent change"). It also
1288
    reduce a little bit the footprint for socket layer (lwip_getpeername &
1289
    lwip_getsockname use now a common lwip_getaddrname function since
1290
    netconn_peer & netconn_addr have the same parameters).
1291
 
1292
  2007-09-20 Simon Goldschmidt
1293
  * tcp.c: Fixed bug #21080 (tcp_bind without check pcbs in TIME_WAIT state)
1294
    by checking  tcp_tw_pcbs also
1295
 
1296
  2007-09-19 Simon Goldschmidt
1297
  * icmp.c: Fixed bug #21107 (didn't reset IP TTL in ICMP echo replies)
1298
 
1299
  2007-09-15 Mike Kleshov
1300
  * mem.c: Fixed bug #21077 (inaccuracy in calculation of lwip_stat.mem.used)
1301
 
1302
  2007-09-06 Frédéric Bernon
1303
  * several-files: replace some #include "arch/cc.h" by "lwip/arch.h", or simply remove
1304
    it as long as "lwip/opt.h" is included before (this one include "lwip/debug.h" which
1305
    already include "lwip/arch.h"). Like that, default defines are provided by "lwip/arch.h"
1306
    if they are not defined in cc.h, in the same spirit than "lwip/opt.h" for lwipopts.h.
1307
 
1308
  2007-08-30 Frédéric Bernon
1309
  * igmp.h, igmp.c: Some changes to remove some redundant code, add some traces,
1310
    and fix some coding style.
1311
 
1312
  2007-08-28 Frédéric Bernon
1313
  * tcpip.c: Fix TCPIP_MSG_INPKT processing: now, tcpip_input can be used for any
1314
    kind of packets. These packets are considered like Ethernet packets (payload
1315
    pointing to ethhdr) if the netif got the NETIF_FLAG_ETHARP flag. Else, packets
1316
    are considered like IP packets (payload pointing to iphdr).
1317
 
1318
  2007-08-27 Frédéric Bernon
1319
  * api.h, api_lib.c, api_msg.c: First fix for "bug #20900 : Potential crash error
1320
    problem with netconn_peer & netconn_addr". Introduce NETCONN_LISTEN netconn_state
1321
    and remove obsolete ones (NETCONN_RECV & NETCONN_ACCEPT).
1322
 
1323
  2007-08-24 Kieran Mansley
1324
  * inet.c Modify (acc >> 16) test to ((acc >> 16) != 0) to help buggy
1325
    compiler (Paradigm C++)
1326
 
1327
  2007-08-09 Frédéric Bernon, Bill Florac
1328
  * stats.h, stats.c, igmp.h, igmp.c, opt.h: Fix for bug #20503 : IGMP Improvement.
1329
    Introduce IGMP_STATS to centralize statistics management.
1330
 
1331
  2007-08-09 Frédéric Bernon, Bill Florac
1332
  * udp.c: Fix for bug #20503 : IGMP Improvement. Enable to receive a multicast
1333
    packet on a udp pcb binded on an netif's IP address, and not on "any".
1334
 
1335
  2007-08-09 Frédéric Bernon, Bill Florac
1336
  * igmp.h, igmp.c, ip.c: Fix minor changes from bug #20503 : IGMP Improvement.
1337
    This is mainly on using lookup/lookfor, and some coding styles...
1338
 
1339
  2007-07-26 Frédéric Bernon (and "thedoctor")
1340
  * igmp.c: Fix bug #20595 to accept IGMPv3 "Query" messages.
1341
 
1342
  2007-07-25 Simon Goldschmidt
1343
  * api_msg.c, tcp.c: Another fix for bug #20021: by not returning an error if
1344
    tcp_output fails in tcp_close, the code in do_close_internal gets simpler
1345
    (tcp_output is called again later from tcp timers).
1346
 
1347
  2007-07-25 Simon Goldschmidt
1348
  * ip_frag.c: Fixed bug #20429: use the new pbuf_copy_partial instead of the old
1349
    copy_from_pbuf, which illegally modified the given pbuf.
1350
 
1351
  2007-07-25 Simon Goldschmidt
1352
  * tcp_out.c: tcp_enqueue: pcb->snd_queuelen didn't work for chaine PBUF_RAMs:
1353
    changed snd_queuelen++ to snd_queuelen += pbuf_clen(p).
1354
 
1355
  2007-07-24 Simon Goldschmidt
1356
  * api_msg.c, tcp.c: Fix bug #20480: Check the pcb passed to tcp_listen() for the
1357
    correct state (must be CLOSED).
1358
 
1359
  2007-07-13 Thomas Taranowski (commited by Jared Grubb)
1360
  * memp.c: Fix bug #20478: memp_malloc returned NULL+MEMP_SIZE on failed
1361
    allocation. It now returns NULL.
1362
 
1363
  2007-07-13 Frédéric Bernon
1364
  * api_msg.c: Fix bug #20318: api_msg "recv" callbacks don't call pbuf_free in
1365
    all error cases.
1366
 
1367
  2007-07-13 Frédéric Bernon
1368
  * api_msg.c: Fix bug #20315: possible memory leak problem if tcp_listen failed,
1369
    because current code doesn't follow rawapi.txt documentation.
1370
 
1371
  2007-07-13 Kieran Mansley
1372
  * src/core/tcp_in.c Apply patch#5741 from Oleg Tyshev to fix bug in
1373
    out of sequence processing of received packets
1374
 
1375
  2007-07-03 Simon Goldschmidt
1376
  * nearly-all-files: Added assertions where PBUF_RAM pbufs are used and an
1377
    assumption is made that this pbuf is in one piece (i.e. not chained). These
1378
    assumptions clash with the possibility of converting to fully pool-based
1379
    pbuf implementations, where PBUF_RAM pbufs might be chained.
1380
 
1381
  2007-07-03 Simon Goldschmidt
1382
  * api.h, api_lib.c, api_msg.c: Final fix for bug #20021 and some other problems
1383
    when closing tcp netconns: removed conn->sem, less context switches when
1384
    closing, both netconn_close and netconn_delete should safely close tcp
1385
    connections.
1386
 
1387
  2007-07-02 Simon Goldschmidt
1388
  * ipv4/ip.h, ipv6/ip.h, opt.h, netif.h, etharp.h, ipv4/ip.c, netif.c, raw.c,
1389
    tcp_out.c, udp.c, etharp.c: Added option LWIP_NETIF_HWADDRHINT (default=off)
1390
    to cache ARP table indices with each pcb instead of single-entry cache for
1391
    the complete stack.
1392
 
1393
  2007-07-02 Simon Goldschmidt
1394
  * tcp.h, tcp.c, tcp_in.c, tcp_out.c: Added some ASSERTS and casts to prevent
1395
    warnings when assigning to smaller types.
1396
 
1397
  2007-06-28 Simon Goldschmidt
1398
  * tcp_out.c: Added check to prevent tcp_pcb->snd_queuelen from overflowing.
1399
 
1400
  2007-06-28 Simon Goldschmidt
1401
  * tcp.h: Fixed bug #20287: Fixed nagle algorithm (sending was done too early if
1402
    a segment contained chained pbufs)
1403
 
1404
  2007-06-28 Frédéric Bernon
1405
  * autoip.c: replace most of rand() calls by a macro LWIP_AUTOIP_RAND which compute
1406
    a "pseudo-random" value based on netif's MAC and some autoip fields. It's always
1407
    possible to define this macro in your own lwipopts.h to always use C library's
1408
    rand(). Note that autoip_create_rand_addr doesn't use this macro.
1409
 
1410
  2007-06-28 Frédéric Bernon
1411
  * netifapi.h, netifapi.c, tcpip.h, tcpip.c: Update code to handle the option
1412
    LWIP_TCPIP_CORE_LOCKING, and do some changes to be coherent with last modifications
1413
    in api_lib/api_msg (use pointers and not type with table, etc...)
1414
 
1415
  2007-06-26 Simon Goldschmidt
1416
  * udp.h: Fixed bug #20259: struct udp_hdr was lacking the packin defines.
1417
 
1418
  2007-06-25 Simon Goldschmidt
1419
  * udp.c: Fixed bug #20253: icmp_dest_unreach was called with a wrong p->payload
1420
    for udp packets with no matching pcb.
1421
 
1422
  2007-06-25 Simon Goldschmidt
1423
  * udp.c: Fixed bug #20220: UDP PCB search in udp_input(): a non-local match
1424
    could get udp input packets if the remote side matched.
1425
 
1426
  2007-06-13 Simon Goldschmidt
1427
  * netif.c: Fixed bug #20180 (TCP pcbs listening on IP_ADDR_ANY could get
1428
    changed in netif_set_ipaddr if previous netif->ip_addr.addr was 0.
1429
 
1430
  2007-06-13 Simon Goldschmidt
1431
  * api_msg.c: pcb_new sets conn->err if protocol is not implemented
1432
    -> netconn_new_..() does not allocate a new connection for unsupported
1433
    protocols.
1434
 
1435
  2007-06-13 Frédéric Bernon, Simon Goldschmidt
1436
  * api_lib.c: change return expression in netconn_addr and netconn_peer, because
1437
    conn->err was reset to ERR_OK without any reasons (and error was lost)...
1438
 
1439
  2007-06-13 Frédéric Bernon, Matthias Weisser
1440
  * opt.h, mem.h, mem.c, memp.c, pbuf.c, ip_frag.c, vj.c: Fix bug #20162. Rename
1441
    MEM_ALIGN in LWIP_MEM_ALIGN and MEM_ALIGN_SIZE in LWIP_MEM_ALIGN_SIZE to avoid
1442
    some macro names collision with some OS macros.
1443
 
1444
  2007-06-11 Simon Goldschmidt
1445
  * udp.c: UDP Lite: corrected the use of chksum_len (based on RFC3828: if it's 0,
1446
    create checksum over the complete packet. On RX, if it's < 8 (and not 0),
1447
    discard the packet. Also removed the duplicate 'udphdr->chksum = 0' for both
1448
    UDP & UDP Lite.
1449
 
1450
  2007-06-11 Srinivas Gollakota & Oleg Tyshev
1451
  * tcp_out.c: Fix for bug #20075 : "A problem with keep-alive timer and TCP flags"
1452
    where TCP flags wasn't initialized in tcp_keepalive.
1453
 
1454
  2007-06-03 Simon Goldschmidt
1455
  * udp.c: udp_input(): Input pbuf was not freed if pcb had no recv function
1456
    registered, p->payload was modified without modifying p->len if sending
1457
    icmp_dest_unreach() (had no negative effect but was definitively wrong).
1458
 
1459
  2007-06-03 Simon Goldschmidt
1460
  * icmp.c: Corrected bug #19937: For responding to an icmp echo request, icmp
1461
    re-used the input pbuf even if that didn't have enough space to include the
1462
    link headers. Now the space is tested and a new pbuf is allocated for the
1463
    echo response packet if the echo request pbuf isn't big enough.
1464
 
1465
  2007-06-01 Simon Goldschmidt
1466
  * sockets.c: Checked in patch #5914: Moved sockopt processing into tcpip_thread.
1467
 
1468
  2007-05-23 Frédéric Bernon
1469
  * api_lib.c, sockets.c: Fixed bug #5958 for netconn_listen (acceptmbox only
1470
    allocated by do_listen if success) and netconn_accept errors handling. In
1471
    most of api_lib functions, we replace some errors checkings like "if (conn==NULL)"
1472
    by ASSERT, except for netconn_delete.
1473
 
1474
  2007-05-23 Frédéric Bernon
1475
  * api_lib.c: Fixed bug #5957 "Safe-thread problem inside netconn_recv" to return
1476
    an error code if it's impossible to fetch a pbuf on a TCP connection (and not
1477
    directly close the recvmbox).
1478
 
1479
  2007-05-22 Simon Goldschmidt
1480
  * tcp.c: Fixed bug #1895 (tcp_bind not correct) by introducing a list of
1481
    bound but unconnected (and non-listening) tcp_pcbs.
1482
 
1483
  2007-05-22 Frédéric Bernon
1484
  * sys.h, sys.c, api_lib.c, tcpip.c: remove sys_mbox_fetch_timeout() (was only
1485
    used for LWIP_SO_RCVTIMEO option) and use sys_arch_mbox_fetch() instead of
1486
    sys_mbox_fetch() in api files. Now, users SHOULD NOT use internal lwIP features
1487
    like "sys_timeout" in their application threads.
1488
 
1489
  2007-05-22 Frédéric Bernon
1490
  * api.h, api_lib.c, api_msg.h, api_msg.c: change the struct api_msg_msg to see
1491
    which parameters are used by which do_xxx function, and to avoid "misusing"
1492
    parameters (patch #5938).
1493
 
1494
  2007-05-22 Simon Goldschmidt
1495
  * api_lib.c, api_msg.c, raw.c, api.h, api_msg.h, raw.h: Included patch #5938:
1496
    changed raw_pcb.protocol from u16_t to u8_t since for IPv4 and IPv6, proto
1497
    is only 8 bits wide. This affects the api, as there, the protocol was
1498
    u16_t, too.
1499
 
1500
  2007-05-18 Simon Goldschmidt
1501
  * memp.c: addition to patch #5913: smaller pointer was returned but
1502
    memp_memory was the same size -> did not save memory.
1503
 
1504
  2007-05-16 Simon Goldschmidt
1505
  * loopif.c, slipif.c: Fix bug #19729: free pbuf if netif->input() returns
1506
    != ERR_OK.
1507
 
1508
  2007-05-16 Simon Goldschmidt
1509
  * api_msg.c, udp.c: If a udp_pcb has a local_ip set, check if it is the same
1510
    as the one of the netif used for sending to prevent sending from old
1511
    addresses after a netif address gets changed (partly fixes bug #3168).
1512
 
1513
  2007-05-16 Frédéric Bernon
1514
  * tcpip.c, igmp.h, igmp.c: Fixed bug "#19800 : IGMP: igmp_tick() will not work
1515
    with NO_SYS=1". Note that igmp_init is always in tcpip_thread (and not in
1516
    tcpip_init) because we have to be sure that network interfaces are already
1517
    added (mac filter is updated only in igmp_init for the moment).
1518
 
1519
  2007-05-16 Simon Goldschmidt
1520
  * mem.c, memp.c: Removed semaphores from memp, changed sys_sem_wait calls
1521
    into sys_arch_sem_wait calls to prevent timers from running while waiting
1522
    for the heap. This fixes bug #19167.
1523
 
1524
  2007-05-13 Simon Goldschmidt
1525
  * tcp.h, sockets.h, sockets.c: Fixed bug from patch #5865 by moving the defines
1526
    for socket options (lwip_set/-getsockopt) used with level IPPROTO_TCP from
1527
    tcp.h to sockets.h.
1528
 
1529
  2007-05-07 Simon Goldschmidt
1530
  * mem.c: Another attempt to fix bug #17922.
1531
 
1532
  2007-05-04 Simon Goldschmidt
1533
  * pbuf.c, pbuf.h, etharp.c: Further update to ARP queueing: Changed pbuf_copy()
1534
    implementation so that it can be reused (don't allocate the target
1535
    pbuf inside pbuf_copy()).
1536
 
1537
  2007-05-04 Simon Goldschmidt
1538
  * memp.c: checked in patch #5913: in memp_malloc() we can return memp as mem
1539
    to save a little RAM (next pointer of memp is not used while not in pool).
1540
 
1541
  2007-05-03 "maq"
1542
  * sockets.c: Fix ioctl FIONREAD when some data remains from last recv.
1543
    (patch #3574).
1544
 
1545
  2007-04-23 Simon Goldschmidt
1546
  * loopif.c, loopif.h, opt.h, src/netif/FILES: fix bug #2595: "loopif results
1547
    in NULL reference for incoming TCP packets". Loopif has to be configured
1548
    (using LWIP_LOOPIF_MULTITHREADING) to directly call netif->input()
1549
    (multithreading environments, e.g. netif->input() = tcpip_input()) or
1550
    putting packets on a list that is fed to the stack by calling loopif_poll()
1551
    (single-thread / NO_SYS / polling environment where e.g.
1552
    netif->input() = ip_input).
1553
 
1554
  2007-04-17 Jonathan Larmour
1555
  * pbuf.c: Use s32_t in pbuf_realloc(), as an s16_t can't reliably hold
1556
    the difference between two u16_t's.
1557
  * sockets.h: FD_SETSIZE needs to match number of sockets, which is
1558
    MEMP_NUM_NETCONN in sockets.c right now.
1559
 
1560
  2007-04-12 Jonathan Larmour
1561
  * icmp.c: Reset IP header TTL in ICMP ECHO responses (bug #19580).
1562
 
1563
  2007-04-12 Kieran Mansley
1564
  * tcp.c, tcp_in.c, tcp_out.c, tcp.h: Modify way the retransmission
1565
    timer is reset to fix bug#19434, with help from Oleg Tyshev.
1566
 
1567
  2007-04-11 Simon Goldschmidt
1568
  * etharp.c, pbuf.c, pbuf.h: 3rd fix for bug #11400 (arp-queuing): More pbufs than
1569
    previously thought need to be copied (everything but PBUF_ROM!). Cleaned up
1570
    pbuf.c: removed functions no needed any more (by etharp).
1571
 
1572
  2007-04-11 Kieran Mansley
1573
  * inet.c, ip_addr.h, sockets.h, sys.h, tcp.h: Apply patch #5745: Fix
1574
    "Constant is long" warnings with 16bit compilers.  Contributed by
1575
    avatar@mmlab.cse.yzu.edu.tw
1576
 
1577
  2007-04-05 Frédéric Bernon, Jonathan Larmour
1578
  * api_msg.c: Fix bug #16830: "err_tcp() posts to connection mailbox when no pend on
1579
    the mailbox is active". Now, the post is only done during a connect, and do_send,
1580
    do_write and do_join_leave_group don't do anything if a previous error was signaled.
1581
 
1582
  2007-04-03 Frédéric Bernon
1583
  * ip.c: Don't set the IP_DF ("Don't fragment") flag in the IP header in IP output
1584
    packets. See patch #5834.
1585
 
1586
  2007-03-30 Frédéric Bernon
1587
  * api_msg.c: add a "pcb_new" helper function to avoid redundant code, and to add
1588
    missing  pcb allocations checking (in do_bind, and for each raw_new). Fix style.
1589
 
1590
  2007-03-30 Frédéric Bernon
1591
  * most of files: prefix all debug.h define with "LWIP_" to avoid any conflict with
1592
    others environment defines (these were too "generic").
1593
 
1594
  2007-03-28 Frédéric Bernon
1595
  * api.h, api_lib.c, sockets.c: netbuf_ref doesn't check its internal pbuf_alloc call
1596
    result and can cause a crash. lwip_send now check netbuf_ref result.
1597
 
1598
  2007-03-28 Simon Goldschmidt
1599
  * sockets.c Remove "#include " from sockets.c to avoid multiple
1600
    definition of macros (in errno.h and lwip/arch.h) if LWIP_PROVIDE_ERRNO is
1601
    defined. This is the way it should have been already (looking at
1602
    doc/sys_arch.txt)
1603
 
1604
  2007-03-28 Kieran Mansley
1605
  * opt.h Change default PBUF_POOL_BUFSIZE (again) to accomodate default MSS +
1606
    IP and TCP headers *and* physical link headers
1607
 
1608
  2007-03-26 Frédéric Bernon (based on patch from Dmitry Potapov)
1609
  * api_lib.c: patch for netconn_write(), fixes a possible race condition which cause
1610
    to send some garbage. It is not a definitive solution, but the patch does solve
1611
    the problem for most cases.
1612
 
1613
  2007-03-22 Frédéric Bernon
1614
  * api_msg.h, api_msg.c: Remove obsolete API_MSG_ACCEPT and do_accept (never used).
1615
 
1616
  2007-03-22 Frédéric Bernon
1617
  * api_lib.c: somes resources couldn't be freed if there was errors during
1618
    netconn_new_with_proto_and_callback.
1619
 
1620
  2007-03-22 Frédéric Bernon
1621
  * ethernetif.c: update netif->input calls to check return value. In older ports,
1622
    it's a good idea to upgrade them, even if before, there could be another problem
1623
    (access to an uninitialized mailbox).
1624
 
1625
  2007-03-21 Simon Goldschmidt
1626
  * sockets.c: fixed bug #5067 (essentialy a signed/unsigned warning fixed
1627
    by casting to unsigned).
1628
 
1629
  2007-03-21 Frédéric Bernon
1630
  * api_lib.c, api_msg.c, tcpip.c: integrate sys_mbox_fetch(conn->mbox, NULL) calls from
1631
    api_lib.c to tcpip.c's tcpip_apimsg(). Now, use a local variable and not a
1632
    dynamic one from memp to send tcpip_msg to tcpip_thread in a synchrone call.
1633
    Free tcpip_msg from tcpip_apimsg is not done in tcpip_thread. This give a
1634
    faster and more reliable communication between api_lib and tcpip.
1635
 
1636
  2007-03-21 Frédéric Bernon
1637
  * opt.h: Add LWIP_NETIF_CALLBACK (to avoid compiler warning) and set it to 0.
1638
 
1639
  2007-03-21 Frédéric Bernon
1640
  * api_msg.c, igmp.c, igmp.h: Fix C++ style comments
1641
 
1642
  2007-03-21 Kieran Mansley
1643
  * opt.h Change default PBUF_POOL_BUFSIZE to accomodate default MSS +
1644
    IP and TCP headers
1645
 
1646
  2007-03-21 Kieran Mansley
1647
  * Fix all uses of pbuf_header to check the return value.  In some
1648
    cases just assert if it fails as I'm not sure how to fix them, but
1649
    this is no worse than before when they would carry on regardless
1650
    of the failure.
1651
 
1652
  2007-03-21 Kieran Mansley
1653
  * sockets.c, igmp.c, igmp.h, memp.h: Fix C++ style comments and
1654
    comment out missing header include in icmp.c
1655
 
1656
  2007-03-20 Frédéric Bernon
1657
  * memp.h, stats.c: Fix stats_display function where memp_names table wasn't
1658
    synchronized with memp.h.
1659
 
1660
  2007-03-20 Frédéric Bernon
1661
  * tcpip.c: Initialize tcpip's mbox, and verify if initialized in tcpip_input,
1662
    tcpip_ethinput, tcpip_callback, tcpip_apimsg, to fix a init problem with
1663
    network interfaces. Also fix a compiler warning.
1664
 
1665
  2007-03-20 Kieran Mansley
1666
  * udp.c: Only try and use pbuf_header() to make space for headers if
1667
    not a ROM or REF pbuf.
1668
 
1669
  2007-03-19 Frédéric Bernon
1670
  * api_msg.h, api_msg.c, tcpip.h, tcpip.c: Add return types to tcpip_apimsg()
1671
    and api_msg_post().
1672
 
1673
  2007-03-19 Frédéric Bernon
1674
  * Remove unimplemented "memp_realloc" function from memp.h.
1675
 
1676
  2007-03-11 Simon Goldschmidt
1677
  * pbuf.c: checked in patch #5796: pbuf_alloc: len field claculation caused
1678
    memory corruption.
1679
 
1680
  2007-03-11 Simon Goldschmidt (based on patch from Dmitry Potapov)
1681
  * api_lib.c, sockets.c, api.h, api_msg.h, sockets.h: Fixed bug #19251
1682
    (missing `const' qualifier in socket functions), to get more compatible to
1683
    standard POSIX sockets.
1684
 
1685
  2007-03-11 Frédéric Bernon (based on patch from Dmitry Potapov)
1686
  * sockets.c: Add asserts inside bind, connect and sendto to check input
1687
    parameters. Remove excessive set_errno() calls after get_socket(), because
1688
    errno is set inside of get_socket(). Move last sock_set_errno() inside
1689
    lwip_close.
1690
 
1691
  2007-03-09 Simon Goldschmidt
1692
  * memp.c: Fixed bug #11400: New etharp queueing introduced bug: memp_memory
1693
    was allocated too small.
1694
 
1695
  2007-03-06 Simon Goldschmidt
1696
  * tcpip.c: Initialize dhcp timers in tcpip_thread (if LWIP_DHCP) to protect
1697
    the stack from concurrent access.
1698
 
1699
  2007-03-06 Frédéric Bernon, Dmitry Potapov
1700
  * tcpip.c, ip_frag.c, ethernetif.c: Fix some build problems, and a redundancy
1701
    call to "lwip_stats.link.recv++;" in low_level_input() & ethernetif_input().
1702
 
1703
  2007-03-06 Simon Goldschmidt
1704
  * ip_frag.c, ip_frag.h: Reduce code size: don't include code in those files
1705
    if IP_FRAG == 0 and IP_REASSEMBLY == 0
1706
 
1707
  2007-03-06 Frédéric Bernon, Simon Goldschmidt
1708
  * opt.h, ip_frag.h, tcpip.h, tcpip.c, ethernetif.c: add new configuration
1709
    option named ETHARP_TCPIP_ETHINPUT, which enable the new tcpip_ethinput.
1710
    Allow to do ARP processing for incoming packets inside tcpip_thread
1711
    (protecting ARP layer against concurrent access). You can also disable
1712
    old code using tcp_input with new define ETHARP_TCPIP_INPUT set to 0.
1713
    Older ports have to use tcpip_ethinput.
1714
 
1715
  2007-03-06 Simon Goldschmidt (based on patch from Dmitry Potapov)
1716
  * err.h, err.c: fixed compiler warning "initialization dircards qualifiers
1717
    from pointer target type"
1718
 
1719
  2007-03-05 Frédéric Bernon
1720
  * opt.h, sockets.h: add new configuration options (LWIP_POSIX_SOCKETS_IO_NAMES,
1721
    ETHARP_TRUST_IP_MAC, review SO_REUSE)
1722
 
1723
  2007-03-04 Frédéric Bernon
1724
  * api_msg.c: Remove some compiler warnings : parameter "pcb" was never
1725
    referenced.
1726
 
1727
  2007-03-04 Frédéric Bernon
1728
  * api_lib.c: Fix "[patch #5764] api_lib.c cleanup: after patch #5687" (from
1729
    Dmitry Potapov).
1730
    The api_msg struct stay on the stack (not moved to netconn struct).
1731
 
1732
  2007-03-04 Simon Goldschmidt (based on patch from Dmitry Potapov)
1733
  * pbuf.c: Fix BUG#19168 - pbuf_free can cause deadlock (if
1734
    SYS_LIGHTWEIGHT_PROT=1 & freeing PBUF_RAM when mem_sem is not available)
1735
    Also fixed cast warning in pbuf_alloc()
1736
 
1737
  2007-03-04 Simon Goldschmidt
1738
  * etharp.c, etharp.h, memp.c, memp.h, opt.h: Fix BUG#11400 - don't corrupt
1739
    existing pbuf chain when enqueuing multiple pbufs to a pending ARP request
1740
 
1741
  2007-03-03 Frédéric Bernon
1742
  * udp.c: remove obsolete line "static struct udp_pcb *pcb_cache = NULL;"
1743
    It is static, and never used in udp.c except udp_init().
1744
 
1745
  2007-03-02 Simon Goldschmidt
1746
  * tcpip.c: Moved call to ip_init(), udp_init() and tcp_init() from
1747
    tcpip_thread() to tcpip_init(). This way, raw API connections can be
1748
    initialized before tcpip_thread is running (e.g. before OS is started)
1749
 
1750
  2007-03-02 Frédéric Bernon
1751
  * rawapi.txt: Fix documentation mismatch with etharp.h about etharp_tmr's call
1752
    interval.
1753
 
1754
  2007-02-28 Kieran Mansley
1755
  * pbuf.c: Fix BUG#17645 - ensure pbuf payload pointer is not moved
1756
    outside the region of the pbuf by pbuf_header()
1757
 
1758
  2007-02-28 Kieran Mansley
1759
  * sockets.c: Fix BUG#19161 - ensure milliseconds timeout is non-zero
1760
    when supplied timeout is also non-zero
1761
 
1762
(STABLE-1.2.0)
1763
 
1764
  2006-12-05 Leon Woestenberg
1765
  * CHANGELOG: Mention STABLE-1.2.0 release.
1766
 
1767
  ++ New features:
1768
 
1769
  2006-12-01 Christiaan Simons
1770
  * mem.h, opt.h: Added MEM_LIBC_MALLOC option.
1771
    Note this is a workaround. Currently I have no other options left.
1772
 
1773
  2006-10-26 Christiaan Simons (accepted patch by Jonathan Larmour)
1774
  * ipv4/ip_frag.c: rename MAX_MTU to IP_FRAG_MAX_MTU and move define
1775
    to include/lwip/opt.h.
1776
  * ipv4/lwip/ip_frag.h: Remove unused IP_REASS_INTERVAL.
1777
    Move IP_REASS_MAXAGE and IP_REASS_BUFSIZE to include/lwip/opt.h.
1778
  * opt.h: Add above new options.
1779
 
1780
  2006-08-18 Christiaan Simons
1781
  * tcp_{in,out}.c: added SNMP counters.
1782
  * ipv4/ip.c: added SNMP counters.
1783
  * ipv4/ip_frag.c: added SNMP counters.
1784
 
1785
  2006-08-08 Christiaan Simons
1786
  * etharp.{c,h}: added etharp_find_addr() to read
1787
    (stable) ethernet/IP address pair from ARP table
1788
 
1789
  2006-07-14 Christiaan Simons
1790
  * mib_structs.c: added
1791
  * include/lwip/snmp_structs.h: added
1792
  * netif.{c,h}, netif/ethernetif.c: added SNMP statistics to netif struct
1793
 
1794
  2006-07-06 Christiaan Simons
1795
  * snmp/asn1_{enc,dec}.c added
1796
  * snmp/mib2.c added
1797
  * snmp/msg_{in,out}.c added
1798
  * include/lwip/snmp_asn1.h added
1799
  * include/lwip/snmp_msg.h added
1800
  * doc/snmp_agent.txt added
1801
 
1802
  2006-03-29 Christiaan Simons
1803
  * inet.c, inet.h: Added platform byteswap support.
1804
    Added LWIP_PLATFORM_BYTESWAP define (defaults to 0) and
1805
    optional LWIP_PLATFORM_HTONS(), LWIP_PLATFORM_HTONL() macros.
1806
 
1807
  ++ Bug fixes:
1808
 
1809
  2006-11-30 Christiaan Simons
1810
  * dhcp.c: Fixed false triggers of request_timeout.
1811
 
1812
  2006-11-28 Christiaan Simons
1813
  * netif.c: In netif_add() fixed missing clear of ip_addr, netmask, gw and flags.
1814
 
1815
  2006-10-11 Christiaan Simons
1816
  * api_lib.c etharp.c, ip.c, memp.c, stats.c, sys.{c,h} tcp.h:
1817
    Partially accepted patch #5449 for ANSI C compatibility / build fixes.
1818
  * ipv4/lwip/ip.h ipv6/lwip/ip.h: Corrected UDP-Lite protocol
1819
    identifier from 170 to 136 (bug #17574).
1820
 
1821
  2006-10-10 Christiaan Simons
1822
  * api_msg.c: Fixed Nagle algorithm as reported by Bob Grice.
1823
 
1824
  2006-08-17 Christiaan Simons
1825
  * udp.c: Fixed bug #17200, added check for broadcast
1826
    destinations for PCBs bound to a unicast address.
1827
 
1828
  2006-08-07 Christiaan Simons
1829
  * api_msg.c: Flushing TCP output in do_close() (bug #15926).
1830
 
1831
  2006-06-27 Christiaan Simons
1832
  * api_msg.c: Applied patch for cold case (bug #11135).
1833
    In accept_function() ensure newconn->callback is always initialized.
1834
 
1835
  2006-06-15 Christiaan Simons
1836
  * mem.h: added MEM_SIZE_F alias to fix an ancient cold case (bug #1748),
1837
    facilitate printing of mem_size_t and u16_t statistics.
1838
 
1839
  2006-06-14 Christiaan Simons
1840
  * api_msg.c: Applied patch #5146 to handle allocation failures
1841
    in accept() by Kevin Lawson.
1842
 
1843
  2006-05-26 Christiaan Simons
1844
  * api_lib.c: Removed conn->sem creation and destruction
1845
    from netconn_write() and added sys_sem_new to netconn_new_*.
1846
 
1847
(STABLE-1_1_1)
1848
 
1849
  2006-03-03  Christiaan Simons
1850
  * ipv4/ip_frag.c: Added bound-checking assertions on ip_reassbitmap
1851
    access and added pbuf_alloc() return value checks.
1852
 
1853
  2006-01-01  Leon Woestenberg 
1854
  * tcp_{in,out}.c, tcp_out.c: Removed 'even sndbuf' fix in TCP, which is
1855
    now handled by the checksum routine properly.
1856
 
1857
  2006-02-27  Leon Woestenberg 
1858
   * pbuf.c: Fix alignment; pbuf_init() would not work unless
1859
     pbuf_pool_memory[] was properly aligned. (Patch by Curt McDowell.)
1860
 
1861
  2005-12-20  Leon Woestenberg 
1862
  * tcp.c: Remove PCBs which stay in LAST_ACK state too long. Patch
1863
    submitted by Mitrani Hiroshi.
1864
 
1865
  2005-12-15  Christiaan Simons
1866
  * inet.c: Disabled the added summing routine to preserve code space.
1867
 
1868
  2005-12-14  Leon Woestenberg 
1869
  * tcp_in.c: Duplicate FIN ACK race condition fix by Kelvin Lawson.
1870
    Added Curt McDowell's optimized checksumming routine for future
1871
    inclusion. Need to create test case for unaliged, aligned, odd,
1872
    even length combination of cases on various endianess machines.
1873
 
1874
  2005-12-09  Christiaan Simons
1875
  * inet.c: Rewrote standard checksum routine in proper portable C.
1876
 
1877
  2005-11-25  Christiaan Simons
1878
  * udp.c tcp.c: Removed SO_REUSE hack. Should reside in socket code only.
1879
  * *.c: introduced cc.h LWIP_DEBUG formatters matching the u16_t, s16_t,
1880
    u32_t, s32_t typedefs. This solves most debug word-length assumes.
1881
 
1882
  2005-07-17 Leon Woestenberg 
1883
  * inet.c: Fixed unaligned 16-bit access in the standard checksum
1884
    routine by Peter Jolasson.
1885
  * slipif.c: Fixed implementation assumption of single-pbuf datagrams.
1886
 
1887
  2005-02-04 Leon Woestenberg 
1888
  * tcp_out.c: Fixed uninitialized 'queue' referenced in memerr branch.
1889
  * tcp_{out|in}.c: Applied patch fixing unaligned access.
1890
 
1891
  2005-01-04 Leon Woestenberg 
1892
  * pbuf.c: Fixed missing semicolon after LWIP_DEBUG statement.
1893
 
1894
  2005-01-03 Leon Woestenberg 
1895
  * udp.c: UDP pcb->recv() was called even when it was NULL.
1896
 
1897
(STABLE-1_1_0)
1898
 
1899
  2004-12-28 Leon Woestenberg 
1900
  * etharp.*: Disabled multiple packets on the ARP queue.
1901
    This clashes with TCP queueing.
1902
 
1903
  2004-11-28 Leon Woestenberg 
1904
  * etharp.*: Fixed race condition from ARP request to ARP timeout.
1905
    Halved the ARP period, doubled the period counts.
1906
    ETHARP_MAX_PENDING now should be at least 2. This prevents
1907
    the counter from reaching 0 right away (which would allow
1908
    too little time for ARP responses to be received).
1909
 
1910
  2004-11-25 Leon Woestenberg 
1911
  * dhcp.c: Decline messages were not multicast but unicast.
1912
  * etharp.c: ETHARP_CREATE is renamed to ETHARP_TRY_HARD.
1913
    Do not try hard to insert arbitrary packet's source address,
1914
    etharp_ip_input() now calls etharp_update() without ETHARP_TRY_HARD.
1915
    etharp_query() now always DOES call ETHARP_TRY_HARD so that users
1916
    querying an address will see it appear in the cache (DHCP could
1917
    suffer from this when a server invalidly gave an in-use address.)
1918
  * ipv4/ip_addr.h: Renamed ip_addr_maskcmp() to _netcmp() as we are
1919
    comparing network addresses (identifiers), not the network masks
1920
    themselves.
1921
  * ipv4/ip_addr.c: ip_addr_isbroadcast() now checks that the given
1922
    IP address actually belongs to the network of the given interface.
1923
 
1924
  2004-11-24 Kieran Mansley 
1925
  * tcp.c: Increment pcb->snd_buf when ACK is received in SYN_SENT state.
1926
 
1927
(STABLE-1_1_0-RC1)
1928
 
1929
  2004-10-16 Kieran Mansley 
1930
  * tcp.c: Add code to tcp_recved() to send an ACK (window update) immediately,
1931
    even if one is already pending, if the rcv_wnd is above a threshold
1932
    (currently TCP_WND/2). This avoids waiting for a timer to expire to send a
1933
    delayed ACK in order to open the window if the stack is only receiving data.
1934
 
1935
  2004-09-12 Kieran Mansley 
1936
  * tcp*.*: Retransmit time-out handling improvement by Sam Jansen.
1937
 
1938
  2004-08-20 Tony Mountifield 
1939
  * etharp.c: Make sure the first pbuf queued on an ARP entry
1940
    is properly ref counted.
1941
 
1942
  2004-07-27 Tony Mountifield 
1943
  * debug.h: Added (int) cast in LWIP_DEBUGF() to avoid compiler
1944
    warnings about comparison.
1945
  * pbuf.c: Stopped compiler complaining of empty if statement
1946
    when LWIP_DEBUGF() empty.  Closed an unclosed comment.
1947
  * tcp.c: Stopped compiler complaining of empty if statement
1948
    when LWIP_DEBUGF() empty.
1949
  * ip.h Corrected IPH_TOS() macro: returns a byte, so doesn't need htons().
1950
  * inet.c: Added a couple of casts to quiet the compiler.
1951
    No need to test isascii(c) before isdigit(c) or isxdigit(c).
1952
 
1953
  2004-07-22 Tony Mountifield 
1954
  * inet.c: Made data types consistent in inet_ntoa().
1955
    Added casts for return values of checksum routines, to pacify compiler.
1956
  * ip_frag.c, tcp_out.c, sockets.c, pbuf.c
1957
    Small corrections to some debugging statements, to pacify compiler.
1958
 
1959
  2004-07-21 Tony Mountifield 
1960
  * etharp.c: Removed spurious semicolon and added missing end-of-comment.
1961
  * ethernetif.c Updated low_level_output() to match prototype for
1962
    netif->linkoutput and changed low_level_input() similarly for consistency.
1963
  * api_msg.c: Changed recv_raw() from int to u8_t, to match prototype
1964
    of raw_recv() in raw.h and so avoid compiler error.
1965
  * sockets.c: Added trivial (int) cast to keep compiler happier.
1966
  * ip.c, netif.c Changed debug statements to use the tidier ip4_addrN() macros.
1967
 
1968
(STABLE-1_0_0)
1969
 
1970
  ++ Changes:
1971
 
1972
  2004-07-05 Leon Woestenberg 
1973
  * sockets.*: Restructured LWIP_PRIVATE_TIMEVAL. Make sure
1974
    your cc.h file defines this either 1 or 0. If non-defined,
1975
    defaults to 1.
1976
  * .c: Added  and  includes where used.
1977
  * etharp.c: Made some array indices unsigned.
1978
 
1979
  2004-06-27 Leon Woestenberg 
1980
  * netif.*: Added netif_set_up()/down().
1981
  * dhcp.c: Changes to restart program flow.
1982
 
1983
  2004-05-07 Leon Woestenberg 
1984
  * etharp.c: In find_entry(), instead of a list traversal per candidate, do a
1985
    single-pass lookup for different candidates. Should exploit locality.
1986
 
1987
  2004-04-29 Leon Woestenberg 
1988
  * tcp*.c: Cleaned up source comment documentation for Doxygen processing.
1989
  * opt.h: ETHARP_ALWAYS_INSERT option removed to comply with ARP RFC.
1990
  * etharp.c: update_arp_entry() only adds new ARP entries when adviced to by
1991
    the caller. This deprecates the ETHARP_ALWAYS_INSERT overrule option.
1992
 
1993
  ++ Bug fixes:
1994
 
1995
  2004-04-27 Leon Woestenberg 
1996
  * etharp.c: Applied patch of bug #8708 by Toni Mountifield with a solution
1997
    suggested by Timmy Brolin. Fix for 32-bit processors that cannot access
1998
    non-aligned 32-bit words, such as soms 32-bit TCP/IP header fields. Fix
1999
    is to prefix the 14-bit Ethernet headers with two padding bytes.
2000
 
2001
  2004-04-23 Leon Woestenberg 
2002
  * ip_addr.c: Fix in the ip_addr_isbroadcast() check.
2003
  * etharp.c: Fixed the case where the packet that initiates the ARP request
2004
    is not queued, and gets lost. Fixed the case where the packets destination
2005
    address is already known; we now always queue the packet and perform an ARP
2006
    request.
2007
 
2008
(STABLE-0_7_0)
2009
 
2010
  ++ Bug fixes:
2011
 
2012
  * Fixed TCP bug for SYN_SENT to ESTABLISHED state transition.
2013
  * Fixed TCP bug in dequeueing of FIN from out of order segment queue.
2014
  * Fixed two possible NULL references in rare cases.
2015
 
2016
(STABLE-0_6_6)
2017
 
2018
  ++ Bug fixes:
2019
 
2020
  * Fixed DHCP which did not include the IP address in DECLINE messages.
2021
 
2022
  ++ Changes:
2023
 
2024
  * etharp.c has been hauled over a bit.
2025
 
2026
(STABLE-0_6_5)
2027
 
2028
  ++ Bug fixes:
2029
 
2030
  * Fixed TCP bug induced by bad window resizing with unidirectional TCP traffic.
2031
  * Packets sent from ARP queue had invalid source hardware address.
2032
 
2033
  ++ Changes:
2034
 
2035
  * Pass-by ARP requests do now update the cache.
2036
 
2037
  ++ New features:
2038
 
2039
  * No longer dependent on ctype.h.
2040
  * New socket options.
2041
  * Raw IP pcb support.
2042
 
2043
(STABLE-0_6_4)
2044
 
2045
  ++ Bug fixes:
2046
 
2047
  * Some debug formatters and casts fixed.
2048
  * Numereous fixes in PPP.
2049
 
2050
  ++ Changes:
2051
 
2052
  * DEBUGF now is LWIP_DEBUGF
2053
  * pbuf_dechain() has been re-enabled.
2054
  * Mentioned the changed use of CVS branches in README.
2055
 
2056
(STABLE-0_6_3)
2057
 
2058
  ++ Bug fixes:
2059
 
2060
  * Fixed pool pbuf memory leak in pbuf_alloc().
2061
    Occured if not enough PBUF_POOL pbufs for a packet pbuf chain.
2062
    Reported by Savin Zlobec.
2063
 
2064
  * PBUF_POOL chains had their tot_len field not set for non-first
2065
    pbufs. Fixed in pbuf_alloc().
2066
 
2067
  ++ New features:
2068
 
2069
  * Added PPP stack contributed by Marc Boucher
2070
 
2071
  ++ Changes:
2072
 
2073
  * Now drops short packets for ICMP/UDP/TCP protocols. More robust.
2074
 
2075
  * ARP queueuing now queues the latest packet instead of the first.
2076
    This is the RFC recommended behaviour, but can be overridden in
2077
    lwipopts.h.
2078
 
2079
(0.6.2)
2080
 
2081
  ++ Bugfixes:
2082
 
2083
  * TCP has been fixed to deal with the new use of the pbuf->ref
2084
    counter.
2085
 
2086
  * DHCP dhcp_inform() crash bug fixed.
2087
 
2088
  ++ Changes:
2089
 
2090
  * Removed pbuf_pool_free_cache and pbuf_pool_alloc_cache. Also removed
2091
    pbuf_refresh(). This has sped up pbuf pool operations considerably.
2092
    Implemented by David Haas.
2093
 
2094
(0.6.1)
2095
 
2096
  ++ New features:
2097
 
2098
  * The packet buffer implementation has been enhanced to support
2099
    zero-copy and copy-on-demand for packet buffers which have their
2100
    payloads in application-managed memory.
2101
    Implemented by David Haas.
2102
 
2103
    Use PBUF_REF to make a pbuf refer to RAM. lwIP will use zero-copy
2104
    if an outgoing packet can be directly sent on the link, or perform
2105
    a copy-on-demand when necessary.
2106
 
2107
    The application can safely assume the packet is sent, and the RAM
2108
    is available to the application directly after calling udp_send()
2109
    or similar function.
2110
 
2111
  ++ Bugfixes:
2112
 
2113
  * ARP_QUEUEING should now correctly work for all cases, including
2114
    PBUF_REF.
2115
    Implemented by Leon Woestenberg.
2116
 
2117
  ++ Changes:
2118
 
2119
  * IP_ADDR_ANY is no longer a NULL pointer. Instead, it is a pointer
2120
    to a '0.0.0.0' IP address.
2121
 
2122
  * The packet buffer implementation is changed. The pbuf->ref counter
2123
    meaning has changed, and several pbuf functions have been
2124
    adapted accordingly.
2125
 
2126
  * netif drivers have to be changed to set the hardware address length field
2127
    that must be initialized correctly by the driver (hint: 6 for Ethernet MAC).
2128
    See the contrib/ports/c16x cs8900 driver as a driver example.
2129
 
2130
  * netif's have a dhcp field that must be initialized to NULL by the driver.
2131
    See the contrib/ports/c16x cs8900 driver as a driver example.
2132
 
2133
(0.5.x) This file has been unmaintained up to 0.6.1. All changes are
2134
  logged in CVS but have not been explained here.
2135
 
2136
(0.5.3) Changes since version 0.5.2
2137
 
2138
  ++ Bugfixes:
2139
 
2140
  * memp_malloc(MEMP_API_MSG) could fail with multiple application
2141
    threads because it wasn't protected by semaphores.
2142
 
2143
  ++ Other changes:
2144
 
2145
  * struct ip_addr now packed.
2146
 
2147
  * The name of the time variable in arp.c has been changed to ctime
2148
    to avoid conflicts with the time() function.
2149
 
2150
(0.5.2) Changes since version 0.5.1
2151
 
2152
  ++ New features:
2153
 
2154
  * A new TCP function, tcp_tmr(), now handles both TCP timers.
2155
 
2156
  ++ Bugfixes:
2157
 
2158
  * A bug in tcp_parseopt() could cause the stack to hang because of a
2159
    malformed TCP option.
2160
 
2161
  * The address of new connections in the accept() function in the BSD
2162
    socket library was not handled correctly.
2163
 
2164
  * pbuf_dechain() did not update the ->tot_len field of the tail.
2165
 
2166
  * Aborted TCP connections were not handled correctly in all
2167
    situations.
2168
 
2169
  ++ Other changes:
2170
 
2171
  * All protocol header structs are now packed.
2172
 
2173
  * The ->len field in the tcp_seg structure now counts the actual
2174
    amount of data, and does not add one for SYN and FIN segments.
2175
 
2176
(0.5.1) Changes since version 0.5.0
2177
 
2178
  ++ New features:
2179
 
2180
  * Possible to run as a user process under Linux.
2181
 
2182
  * Preliminary support for cross platform packed structs.
2183
 
2184
  * ARP timer now implemented.
2185
 
2186
  ++ Bugfixes:
2187
 
2188
  * TCP output queue length was badly initialized when opening
2189
    connections.
2190
 
2191
  * TCP delayed ACKs were not sent correctly.
2192
 
2193
  * Explicit initialization of BSS segment variables.
2194
 
2195
  * read() in BSD socket library could drop data.
2196
 
2197
  * Problems with memory alignment.
2198
 
2199
  * Situations when all TCP buffers were used could lead to
2200
    starvation.
2201
 
2202
  * TCP MSS option wasn't parsed correctly.
2203
 
2204
  * Problems with UDP checksum calculation.
2205
 
2206
  * IP multicast address tests had endianess problems.
2207
 
2208
  * ARP requests had wrong destination hardware address.
2209
 
2210
  ++ Other changes:
2211
 
2212
  * struct eth_addr changed from u16_t[3] array to u8_t[6].
2213
 
2214
  * A ->linkoutput() member was added to struct netif.
2215
 
2216
  * TCP and UDP ->dest_* struct members where changed to ->remote_*.
2217
 
2218
  * ntoh* macros are now null definitions for big endian CPUs.
2219
 
2220
(0.5.0) Changes since version 0.4.2
2221
 
2222
  ++ New features:
2223
 
2224
  * Redesigned operating system emulation layer to make porting easier.
2225
 
2226
  * Better control over TCP output buffers.
2227
 
2228
  * Documenation added.
2229
 
2230
  ++ Bugfixes:
2231
 
2232
  * Locking issues in buffer management.
2233
 
2234
  * Bugfixes in the sequential API.
2235
 
2236
  * IP forwarding could cause memory leakage. This has been fixed.
2237
 
2238
  ++ Other changes:
2239
 
2240
  * Directory structure somewhat changed; the core/ tree has been
2241
    collapsed.
2242
 
2243
(0.4.2) Changes since version 0.4.1
2244
 
2245
  ++ New features:
2246
 
2247
  * Experimental ARP implementation added.
2248
 
2249
  * Skeleton Ethernet driver added.
2250
 
2251
  * Experimental BSD socket API library added.
2252
 
2253
  ++ Bugfixes:
2254
 
2255
  * In very intense situations, memory leakage could occur. This has
2256
    been fixed.
2257
 
2258
  ++ Other changes:
2259
 
2260
  * Variables named "data" and "code" have been renamed in order to
2261
    avoid name conflicts in certain compilers.
2262
 
2263
  * Variable++ have in appliciable cases been translated to ++variable
2264
    since some compilers generate better code in the latter case.
2265
 
2266
(0.4.1) Changes since version 0.4
2267
 
2268
  ++ New features:
2269
 
2270
  * TCP: Connection attempts time out earlier than data
2271
    transmissions. Nagle algorithm implemented. Push flag set on the
2272
    last segment in a burst.
2273
 
2274
  * UDP: experimental support for UDP-Lite extensions.
2275
 
2276
  ++ Bugfixes:
2277
 
2278
  * TCP: out of order segments were in some cases handled incorrectly,
2279
    and this has now been fixed. Delayed acknowledgements was broken
2280
    in 0.4, has now been fixed. Binding to an address that is in use
2281
    now results in an error. Reset connections sometimes hung an
2282
    application; this has been fixed.
2283
 
2284
  * Checksum calculation sometimes failed for chained pbufs with odd
2285
    lengths. This has been fixed.
2286
 
2287
  * API: a lot of bug fixes in the API. The UDP API has been improved
2288
    and tested. Error reporting and handling has been
2289
    improved. Logical flaws and race conditions for incoming TCP
2290
    connections has been found and removed.
2291
 
2292
  * Memory manager: alignment issues. Reallocating memory sometimes
2293
    failed, this has been fixed.
2294
 
2295
  * Generic library: bcopy was flawed and has been fixed.
2296
 
2297
  ++ Other changes:
2298
 
2299
  * API: all datatypes has been changed from generic ones such as
2300
    ints, to specified ones such as u16_t. Functions that return
2301
    errors now have the correct type (err_t).
2302
 
2303
  * General: A lot of code cleaned up and debugging code removed. Many
2304
    portability issues have been fixed.
2305
 
2306
  * The license was changed; the advertising clause was removed.
2307
 
2308
  * C64 port added.
2309
 
2310
  * Thanks: Huge thanks go to Dagan Galarneau, Horst Garnetzke, Petri
2311
    Kosunen, Mikael Caleres, and Frits Wilmink for reporting and
2312
    fixing bugs!
2313
 
2314
(0.4) Changes since version 0.3.1
2315
 
2316
  * Memory management has been radically changed; instead of
2317
    allocating memory from a shared heap, memory for objects that are
2318
    rapidly allocated and deallocated is now kept in pools. Allocation
2319
    and deallocation from those memory pools is very fast. The shared
2320
    heap is still present but is used less frequently.
2321
 
2322
  * The memory, memory pool, and packet buffer subsystems now support
2323
    4-, 2-, or 1-byte alignment.
2324
 
2325
  * "Out of memory" situations are handled in a more robust way.
2326
 
2327
  * Stack usage has been reduced.
2328
 
2329
  * Easier configuration of lwIP parameters such as memory usage,
2330
    TTLs, statistics gathering, etc. All configuration parameters are
2331
    now kept in a single header file "lwipopts.h".
2332
 
2333
  * The directory structure has been changed slightly so that all
2334
    architecture specific files are kept under the src/arch
2335
    hierarchy.
2336
 
2337
  * Error propagation has been improved, both in the protocol modules
2338
    and in the API.
2339
 
2340
  * The code for the RTXC architecture has been implemented, tested
2341
    and put to use.
2342
 
2343
  * Bugs have been found and corrected in the TCP, UDP, IP, API, and
2344
    the Internet checksum modules.
2345
 
2346
  * Bugs related to porting between a 32-bit and a 16-bit architecture
2347
    have been found and corrected.
2348
 
2349
  * The license has been changed slightly to conform more with the
2350
    original BSD license, including the advertisement clause.
2351
 
2352
(0.3.1) Changes since version 0.3
2353
 
2354
  * Fix of a fatal bug in the buffer management. Pbufs with allocated
2355
    RAM never returned the RAM when the pbuf was deallocated.
2356
 
2357
  * TCP congestion control, window updates and retransmissions did not
2358
    work correctly. This has now been fixed.
2359
 
2360
  * Bugfixes in the API.
2361
 
2362
(0.3) Changes since version 0.2
2363
 
2364
  * New and improved directory structure. All include files are now
2365
    kept in a dedicated include/ directory.
2366
 
2367
  * The API now has proper error handling. A new function,
2368
    netconn_err(), now returns an error code for the connection in
2369
    case of errors.
2370
 
2371
  * Improvements in the memory management subsystem. The system now
2372
    keeps a pointer to the lowest free memory block. A new function,
2373
    mem_malloc2() tries to allocate memory once, and if it fails tries
2374
    to free some memory and retry the allocation.
2375
 
2376
  * Much testing has been done with limited memory
2377
    configurations. lwIP now does a better job when overloaded.
2378
 
2379
  * Some bugfixes and improvements to the buffer (pbuf) subsystem.
2380
 
2381
  * Many bugfixes in the TCP code:
2382
 
2383
    - Fixed a bug in tcp_close().
2384
 
2385
    - The TCP receive window was incorrectly closed when out of
2386
      sequence segments was received. This has been fixed.
2387
 
2388
    - Connections are now timed-out of the FIN-WAIT-2 state.
2389
 
2390
    - The initial congestion window could in some cases be too
2391
      large. This has been fixed.
2392
 
2393
    - The retransmission queue could in some cases be screwed up. This
2394
      has been fixed.
2395
 
2396
    - TCP RST flag now handled correctly.
2397
 
2398
    - Out of sequence data was in some cases never delivered to the
2399
      application. This has been fixed.
2400
 
2401
    - Retransmitted segments now contain the correct acknowledgment
2402
      number and advertised window.
2403
 
2404
    - TCP retransmission timeout backoffs are not correctly computed
2405
      (ala BSD). After a number of retransmissions, TCP now gives up
2406
      the connection.
2407
 
2408
  * TCP connections now are kept on three lists, one for active
2409
    connections, one for listening connections, and one for
2410
    connections that are in TIME-WAIT. This greatly speeds up the fast
2411
    timeout processing for sending delayed ACKs.
2412
 
2413
  * TCP now provides proper feedback to the application when a
2414
    connection has been successfully set up.
2415
 
2416
  * More comments have been added to the code. The code has also been
2417
    somewhat cleaned up.
2418
 
2419
(0.2) Initial public release.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.