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