1HISTORY 2 3(git master) 4 5 * [Enter new changes just after this line - do not remove this line] 6 7(STABLE-2.0.3) 8 9 ++ Bugfixes: 10 11 2017-09-11: Simon Goldschmidt 12 * tcp_in.c: fix bug #51937 (leaking tcp_pcbs on passive close with unacked data) 13 14 2017-08-02: Abroz Bizjak/Simon Goldschmidt 15 * multiple fixes in IPv4 reassembly (leading to corrupted datagrams received) 16 17 2017-03-30: Simon Goldschmidt 18 * dhcp.c: return ERR_VAL instead of asserting on offset-out-of-pbuf 19 20 2017-03-23: Dirk Ziegelmeier 21 * dhcp.h: fix bug #50618 (dhcp_remove_struct() macro does not work) 22 23(STABLE-2.0.2) 24 25 ++ New features: 26 27 2017-02-10: Dirk Ziegelmeier 28 * Implement task #14367: Hooks need a better place to be defined: 29 We now have a #define for a header file name that is #included in every .c 30 file that provides hooks. 31 32 2017-02-10: Simon Goldschmidt 33 * tcp_close does not fail on memory error (instead, FIN is sent from tcp_tmr) 34 35 ++ Bugfixes: 36 37 2017-03-08 38 * tcp: do not keep sending SYNs when getting ACKs 39 40 2017-03-08: Joel Cunningham 41 * tcp: Initialize ssthresh to TCP_SND_BUF (bug #50476) 42 43 2017-03-01: Simon Goldschmidt 44 * httpd: LWIP_HTTPD_POST_MANUAL_WND: fixed double-free when httpd_post_data_recved 45 is called nested from httpd_post_receive_data() (bug #50424) 46 47 2017-02-28: David van Moolenbroek/Simon Goldschmidt 48 * tcp: fixed bug #50418: LWIP_EVENT_API: fix invalid calbacks for SYN_RCVD pcb 49 50 2017-02-17: Simon Goldschmidt 51 * dns: Improved DNS_LOCAL_HOSTLIST interface (bug #50325) 52 53 2017-02-16: Simon Goldschmidt 54 * LWIP_NETCONN_FULLDUPLEX: fixed shutdown during write (bug #50274) 55 56 2017-02-13: Simon Goldschmidt/Dirk Ziegelmeier 57 * For tiny targtes, LWIP_RAND is optional (fix compile time checks) 58 59 2017-02-10: Simon Goldschmidt 60 * tcp: Fixed bug #47485 (tcp_close() should not fail on memory error) by retrying 61 to send FIN from tcp_fasttmr 62 63 2017-02-09: Simon Goldschmidt 64 * sockets: Fixed bug #44032 (LWIP_NETCONN_FULLDUPLEX: select might work on 65 invalid/reused socket) by not allowing to reallocate a socket that has 66 "select_waiting != 0" 67 68 2017-02-09: Simon Goldschmidt 69 * httpd: Fixed bug #50059 (httpd LWIP_HTTPD_SUPPORT_11_KEEPALIVE vs. 70 LWIP_HTTPD_KILL_OLD_ON_CONNECTIONS_EXCEEDED) 71 72 2017-02-08: Dirk Ziegelmeier 73 * Rename "IPv6 mapped IPv4 addresses" to their correct name from RFC4191: 74 "IPv4-mapped IPv6 address" 75 76 2017-02-08: Luc Revardel 77 * mld6.c: Fix bug #50220 (mld6_leavegroup does not send ICMP6_TYPE_MLD, even 78 if last reporter) 79 80 2017-02-08: David van Moolenbroek 81 * ip6.c: Patch #9250: fix source substitution in ip6_output_if() 82 83 2017-02-08: Simon Goldschmidt 84 * tcp_out.c: Fixed bug #50090 (last_unsent->oversize_left can become wrong value 85 in tcp_write error path) 86 87 2017-02-02: Dirk Ziegelmeier 88 * Fix bug #50206: UDP Netconn bind to IP6_ADDR_ANY fails 89 90 2017-01-18: Dirk Ziegelmeier 91 * Fix zero-copy RX, see bug bug #50064. PBUF_REFs were not supported as ARP requests. 92 93 2017-01-15: Axel Lin, Dirk Ziegelmeier 94 * minor bug fixes in mqtt 95 96 2017-01-11: Knut Andre Tidemann 97 * sockets/netconn: fix broken default ICMPv6 handling of checksums 98 99(STABLE-2.0.1) 100 101 ++ New features: 102 103 2016-12-31: Simon Goldschmidt 104 * tcp.h/.c: added function tcp_listen_with_backlog_and_err() to get the error 105 reason when listening fails (bug #49861) 106 107 2016-12-20: Erik Andersen 108 * Add MQTT client 109 110 2016-12-14: Jan Breuer: 111 * opt.h, ndc.h/.c: add support for RDNSS option (as per RFC 6106) 112 113 2016-12-14: David van Moolenbroek 114 * opt.h, nd6.c: Added LWIP_HOOK_ND6_GET_GW() 115 116 2016-12-09: Dirk Ziegelmeier 117 * ip6_frag.c: Implemented support for LWIP_NETIF_TX_SINGLE_PBUF 118 119 2016-12-09: Simon Goldschmidt 120 * dns.c: added one-shot multicast DNS queries 121 122 2016-11-24: Ambroz Bizjak, David van Moolenbroek 123 * tcp_out.c: Optimize passing contiguous nocopy buffers to tcp_write (bug #46290) 124 125 2016-11-16: Dirk Ziegelmeier 126 * sockets.c: added support for IPv6 mapped IPv4 addresses 127 128 ++ Bugfixes: 129 130 2016-12-16: Thomas Mueller 131 * api_lib.c: fixed race condition in return value of netconn_gethostbyname() 132 (and thus also lwip_gethostbyname/_r() and lwip_getaddrinfo()) 133 134 2016-12-15: David van Moolenbroek 135 * opt.h, tcp: added LWIP_HOOK_TCP_ISN() to implement less predictable initial 136 sequence numbers (see contrib/addons/tcp_isn for an example implementation) 137 138 2016-12-05: Dirk Ziegelmeier 139 * fixed compiling with IPv4 disabled (IPv6 only case) 140 141 2016-11-28: Simon Goldschmidt 142 * api_lib.c: fixed bug #49725 (send-timeout: netconn_write() can return 143 ERR_OK without all bytes being written) 144 145 2016-11-28: Ambroz Bizjak 146 * tcpi_in.c: fixed bug #49717 (window size in received SYN and SYN-ACK 147 assumed scaled) 148 149 2016-11-25: Simon Goldschmidt 150 * dhcp.c: fixed bug #49676 (Possible endless loop when parsing dhcp options) 151 152 2016-11-23: Dirk Ziegelmeier 153 * udp.c: fixed bug #49662: multicast traffic is now only received on a UDP PCB 154 (and therefore on a UDP socket/netconn) when the PCB is bound to IP_ADDR_ANY 155 156 2016-11-16: Dirk Ziegelmeier 157 * *: Fixed dual-stack behaviour, IPv6 mapped IPv4 support in socket API 158 159 2016-11-14: Joel Cunningham 160 * tcp_out.c: fixed bug #49533 (start persist timer when unsent seg can't fit 161 in window) 162 163 2016-11-16: Roberto Barbieri Carrera 164 * autoip.c: fixed bug #49610 (sometimes AutoIP fails to reuse the same address) 165 166 2016-11-11: Dirk Ziegelmeier 167 * sockets.c: fixed bug #49578 (dropping multicast membership does not work 168 with LWIP_SOCKET_OFFSET) 169 170(STABLE-2.0.0) 171 172 ++ New features: 173 174 2016-07-27: Simon Goldschmidt 175 * opt.h, timeouts.h/.c: added LWIP_TIMERS_CUSTOM to override the default 176 implementation of timeouts 177 178 2016-07-xx: Dirk Ziegelmeier 179 * Large overhaul of doxygen documentation 180 181 2016-04-05: Simon Goldschmidt 182 * timers.h/.c: prepare for overriding current timeout implementation: all 183 stack-internal caclic timers are avaliable in the lwip_cyclic_timers array 184 185 2016-03-23: Simon Goldschmidt 186 * tcp: call accept-callback with ERR_MEM when allocating a pcb fails on 187 passive open to inform the application about this error 188 ATTENTION: applications have to handle NULL pcb in accept callback! 189 190 2016-02-22: Ivan Delamer 191 * Initial 6LoWPAN support 192 193 2016-02-XX to 2016-03-XX: Dirk Ziegelmeier 194 * Cleanup TCPIP thread sync methods in a way that it is possibe to use them 195 in arbitrary code that needs things to be done in TCPIP thread. Used to 196 decouple netconn, netif, ppp and 6LoWPAN from LWIP core. 197 198 2016-02-XX: Dirk Ziegelmeier 199 * Implement dual-stack support in RAW, UDP and TCP. Add new IP address 200 type IPADDR_ANY_TYPE for this. Netconn/Socket API: Dual-stack is 201 automatically supported when an IPv6 netconn/socket is created. 202 203 2015-12-26: Martin Hentschel and Dirk Ziegelmeier 204 * Rewrite SNMP agent. SNMPv2c + MIB compiler. 205 206 2015-11-12: Dirk Ziegelmeier 207 * Decouple SNMP stack from lwIP core and move stack to apps/ directory. 208 Breaking change: Users have to call snmp_init() now! 209 210 2015-11-12: Dirk Ziegelmeier 211 * Implement possibility to declare private memory pools. This is useful to 212 decouple some apps from the core (SNMP stack) or make contrib app usage 213 simpler (httpserver_raw) 214 215 2015-10-09: Simon Goldschmidt 216 * started to move "private" header files containing implementation details to 217 "lwip/priv/" include directory to seperate the API from the implementation. 218 219 2015-10-07: Simon Goldschmidt 220 * added sntp client as first "supported" application layer protocol implementation 221 added 'apps' folder 222 223 2015-09-30: Dirk Ziegelmeier 224 * snmp_structs.h, mib_structs.c, mib2.c: snmp: fixed ugly inheritance 225 implementation by aggregating the "base class" (struct mib_node) in all 226 derived node classes to get more type-safe code 227 228 2015-09-23: Simon Goldschmidt 229 * netif.h/.c, nd6.c: task #13729: Convert netif addresses (IPv4 & IPv6) to 230 ip_addr_t (so they can be used without conversion/temporary storage) 231 232 2015-09-08: Dirk Ziegelmeier 233 * snmp: Separate mib2 counter/table callbacks from snmp agent. This both cleans 234 up the code and should allow integration of a 3rd party agent/mib2. Simple 235 counters are kept in MIB2_STATS, tree/table change function prototypes moved to 236 snmp_mib2.h. 237 238 2015-09-03: Simon Goldschmidt 239 * opt.h, dns.h/.c: DNS/IPv6: added support for AAAA records 240 241 2015-09-01: Simon Goldschmidt 242 * task #12178: hardware checksum capabilities can be configured per netif 243 (use NETIF_SET_CHECKSUM_CTRL() in your netif's init function) 244 245 2015-08-30: Simon Goldschmidt 246 * PBUF_REF with "custom" pbufs is now supported for RX pbufs (see pcapif in 247 contrib for an example, LWIP_SUPPORT_CUSTOM_PBUF is required) 248 249 2015-08-30: Simon Goldschmidt 250 * support IPv4 source based routing: define LWIP_HOOK_IP4_ROUTE_SRC to point 251 to a routing function 252 253 2015-08-05: Simon Goldschmidt 254 * many files: allow multicast socket options IP_MULTICAST_TTL, IP_MULTICAST_IF 255 and IP_MULTICAST_LOOP to be used without IGMP 256 257 2015-04-24: Simon Goldschmidt 258 * dhcp.h/c, autoip.h/.c: added functions dhcp/autoip_supplied_address() to 259 check for the source of address assignment (replacement for NETIF_FLAG_DHCP) 260 261 2015-04-10: Simon Goldschmidt 262 * many files: task #13480: added LWIP_IPV4 define - IPv4 can be disabled, 263 leaving an IPv6-only stack 264 265 2015-04-09: Simon Goldschmidt 266 * nearly all files: task #12722 (improve IPv4/v6 address handling): renamed 267 ip_addr_t to ip4_addr_t, renamed ipX_addr_t to ip_addr_t and added IP 268 version; ip_addr_t is used for all generic IP addresses for the API, 269 ip(4/6)_addr_t are only used internally or when initializing netifs or when 270 calling version-related functions 271 272 2015-03-24: Simon Goldschmidt 273 * opt.h, ip4_addr.h, ip4.c, ip6.c: loopif is not required for loopback traffic 274 any more but passed through any netif (ENABLE_LOOPBACK has to be enabled) 275 276 2015-03-23: Simon Goldschmidt 277 * opt.h, etharp.c: with ETHARP_TABLE_MATCH_NETIF== 1, duplicate (Auto)-IP 278 addresses on multiple netifs should now be working correctly (if correctly 279 addressed by routing, that is) 280 281 2015-03-23: Simon Goldschmidt 282 * etharp.c: Stable etharp entries that are about to expire are now refreshed 283 using unicast to prevent unnecessary broadcast. Only if no answer is received 284 after 15 seconds, broadcast is used. 285 286 2015-03-06: Philip Gladstone 287 * netif.h/.c: patch #8359 (Provide utility function to add an IPv6 address to 288 an interface) 289 290 2015-03-05: Simon Goldschmidt 291 * netif.c, ip4.c, dhcp.c, autoip.c: fixed bug #37068 (netif up/down handling 292 is unclear): correclty separated administrative status of a netif (up/down) 293 from 'valid address' status 294 ATTENTION: netif_set_up() now always has to be called, even when dhcp/autoip 295 is used! 296 297 2015-02-26: patch by TabascoEye 298 * netif.c, udp.h/.c: fixed bug #40753 (re-bind UDP pcbs on change of IP address) 299 300 2015-02-22: chrysn, Simon Goldschmidt 301 * *.*: Changed nearly all functions taking 'ip(X)_addr_t' pointer to take 302 const pointers (changed user callbacks: raw_recv_fn, udp_recv_fn; changed 303 port callbacks: netif_output_fn, netif_igmp_mac_filter_fn) 304 305 2015-02-19: Ivan Delamer 306 * netif.h, dhcp.c: Removed unused netif flag for DHCP. The preferred way to evaluate 307 if DHCP is active is through netif->dhcp field. 308 309 2015-02-19: Ivan Delamer 310 * netif.h, slipif.c, ppp.c: Removed unused netif flag for point to point connections 311 312 2015-02-18: Simon Goldschmidt 313 * api_lib.c: fixed bug #37958 "netconn API doesn't handle correctly 314 connections half-closed by peer" 315 316 2015-02-18: Simon Goldschmidt 317 * tcp.c: tcp_alloc() prefers killing CLOSING/LAST_ACK over active connections 318 (see bug #39565) 319 320 2015-02-16: Claudius Zingerli, Sergio Caprile 321 * opt.h, dhcp.h/.c: patch #8361 "Add support for NTP option in DHCP" 322 323 2015-02-14: Simon Goldschmidt 324 * opt.h, snmp*: added support for write-access community and dedicated 325 community for sending traps 326 327 2015-02-13: Simon Goldschmidt 328 * opt.h, memp.c: added hook LWIP_HOOK_MEMP_AVAILABLE() to get informed when 329 a memp pool was empty and an item is now available 330 331 2015-02-13: Simon Goldschmidt 332 * opt.h, pbuf.h/.c, etharp.c: Added the option PBUF_LINK_ENCAPSULATION_HLEN to 333 allocate additional header space for TX on netifs requiring additional headers 334 335 2015-02-12: chrysn 336 * timers.h/.c: introduce sys_timeouts_sleeptime (returns the time left before 337 the next timeout is due, for NO_SYS==1) 338 339 2015-02-11: Nick van Ijzendoorn 340 * opt.h, sockets.h/c: patch #7702 "Include ability to increase the socket number 341 with defined offset" 342 343 2015-02-11: Frederick Baksik 344 * opt.h, def.h, others: patch #8423 "arch/perf.h" should be made an optional item 345 346 2015-02-11: Simon Goldschmidt 347 * api_msg.c, opt.h: started to implement fullduplex sockets/netconns 348 (note that this is highly unstable yet!) 349 350 2015-01-17: Simon Goldschmidt 351 * api: allow enabling socket API without (public) netconn API - netconn API is 352 still used by sockets, but keeping it private (static) should allow better 353 compiler optimizations 354 355 2015-01-16: Simon Goldschmidt 356 * tcp_in.c: fixed bug #20506 "Initial congestion window is very small" again 357 by implementing the calculation formula from RFC3390 358 359 2014-12-10: Simon Goldschmidt 360 * api: added option LWIP_NETCONN_SEM_PER_THREAD to use a semaphore per thread 361 instead of using one per netconn and per select call 362 363 2014-12-08: Simon Goldschmidt 364 * ip6.h: fixed bug #43778: IPv6 header version not set on 16-bit platform 365 (macro IP6H_VTCFL_SET()) 366 367 2014-12-08: Simon Goldschmidt 368 * icmp.c, ip4.c, pbuf.c, udp.c, pbuf.h: task #11472 Support PBUF_REF for RX 369 (IPv6 and IPv4/v6 reassembly might not work yet) 370 371 2014-11-06: Simon Goldschmidt 372 * sockets.c/.h, init.c: lwip_socket_init() is not needed any more 373 -> compatibility define 374 375 2014-09-16: Simon Goldschmidt 376 * dns.c, opt.h: reduced ram usage by parsing DNS responses in place 377 378 2014-09-16: Simon Goldschmidt 379 * pbuf.h/.c: added pbuf_take_at() and pbuf_put_at() 380 381 2014-09-15: Simon Goldschmidt 382 * dns.c: added source port randomization to make the DNS client more robust 383 (see bug #43144) 384 385 2013-09-02: Simon Goldschmidt 386 * arch.h and many other files: added optional macros PACK_STRUCT_FLD_8() and 387 PACK_STRUCT_FLD_S() to prevent gcc 4 from warning about struct members that 388 do not need packing 389 390 2013-08-19: Simon Goldschmidt 391 * netif.h: bug #42998: made NETIF_MAX_HWADDR_LEN overridable for some special 392 networks 393 394 2013-03-17: Simon Goldschmidt (patch by Ghobad Emadi) 395 * opt.h, etharp.c: Added LWIP_HOOK_ETHARP_GET_GW to implement IPv4 routing with 396 multiple gateways 397 398 2013-04-20: Fatih Asici 399 * opt.h, etharp.h/.c: patch #7993: Added support for transmitting packets 400 with VLAN headers via hook function LWIP_HOOK_VLAN_SET and to check them 401 via hook function LWIP_HOOK_VLAN_CHECK 402 403 2014-02-20: Simon Goldschmidt (based on patch by Artem Pisarenko) 404 * patch #7885: modification of api modules to support FreeRTOS-MPU 405 (don't pass stack-pointers to other threads) 406 407 2014-02-05: Simon Goldschmidt (patch by "xtian" and "alex_ab") 408 * patch #6537/#7858: TCP window scaling support 409 410 2014-01-17: Jiri Engelthaler 411 * icmp, icmp6, opt.h: patch #8027: Completed HW checksuming for IPv4 and 412 IPv6 ICMP's 413 414 2012-08-22: Sylvain Rochet 415 * New PPP stack for lwIP, developed in ppp-new branch. 416 Based from pppd 2.4.5, released 2009-11-17, with huge changes to match 417 code size and memory requirements for embedded devices, including: 418 - Gluing together the previous low-level PPP code in lwIP to pppd 2.4.5, which 419 is more or less what pppd sys-* files are, so that we get something working 420 using the unix port. 421 - Merged some patchs from lwIP Git repository which add interesting features 422 or fix bugs. 423 - Merged some patchs from Debian pppd package which add interesting features 424 or fix bugs. 425 - Ported PPP timeout handling to the lwIP timers system 426 - Disabled all the PPP code using filesystem access, replaced in necessary cases 427 to configuration variables. 428 - Disabled all the PPP code forking processes. 429 - Removed IPX support, lwIP does not support IPX. 430 - Ported and improved random module from the previous PPP port. 431 - Removed samba TDB (file-driven database) usage, because it needs a filesystem. 432 - MS-CHAP required a DES implementation, we added the latest PolarSSL DES 433 implementation which is under a BSD-ish license. 434 - Also switched to PolarSSL MD4,MD5,SHA1 implementations, which are meant to be 435 used in embedded devices with reduced memory footprint. 436 - Removed PPP configuration file parsing support. 437 - Added macro definition EAP_SUPPORT to make EAP support optional. 438 - Added macro definition CHAP_SUPPORT to make CHAP support optional. 439 - Added macro definition MSCHAP_SUPPORT to make MSCHAP support optional. 440 - Added macro definition PAP_SUPPORT to make PAP support optional. 441 - Cleared all Linux syscall calls. 442 - Disabled demand support using a macro, so that it can be ported later. 443 - Disabled ECP support using a macro, so that it can be ported later. 444 - Disabled CCP support using a macro, so that it can be ported later. 445 - Disabled CBCP support using a macro, so that it can be ported later. 446 - Disabled LQR support using a macro, so that it can be ported later. 447 - Print packet debug feature optional, through PRINTPKT_SUPPORT 448 - Removed POSIX signal usage. 449 - Fully ported PPPoS code from the previous port. 450 - Fully ported PPPoE code from the previous port. 451 - Fully ported VJ compression protocol code from the previous port. 452 - Removed all malloc()/free() use from PPP, replaced by stack usage or PBUF. 453 - Disabled PPP server support using a macro, so that it can be ported later. 454 - Switched all PPP debug to lwIP debug system. 455 - Created PPP Control Block (PPP PCB), removed PPP unit integer everywhere, 456 removed all global variables everywhere, did everything necessary for 457 the PPP stack to support more than one PPP session (pppd only support 458 one session per process). 459 - Removed the statically allocated output buffer, now using PBUF. 460 - Improved structure size of all PPP modules, deep analyze of code to reduce 461 variables size to the bare minimum. Switched all boolean type (char type in 462 most architecture) to compiler generated bitfields. 463 - Added PPP IPv6 support, glued lwIP IPv6 support to PPP. 464 - Now using a persistent netif interface which can then be used in lwIP 465 functions requiring a netif. 466 - Now initializing PPP in lwip_init() function. 467 - Reworked completely the PPP state machine, so that we don't end up in 468 anymore in inconsistent state, especially with PPPoE. 469 - Improved the way we handle PPP reconnection after disconnect, cleaning 470 everything required so that we start the PPP connection again from a 471 clean state. 472 - Added PPP holdoff support, allow the lwIP user to wait a little bit before 473 reconnecting, prevents connection flood, especially when using PPPoL2TP. 474 - Added PPPoL2TP LAC support (a.k.a. UDP tunnels), adding a VPN client 475 feature to lwIP, L2TP being a widely used tunnel protocol. 476 - Switched all used PPP types to lwIP types (u8t, u16t, u32t, ...) 477 - Added PPP API "sequential" thread-safe API, based from NETIFAPI. 478 479 2011-07-21: Simon Goldschmidt 480 * sockets.c, opt.h: (bug #30185): added LWIP_FIONREAD_LINUXMODE that makes 481 ioctl/FIONREAD return the size of the next pending datagram. 482 483 2011-05-25: Simon Goldschmidt 484 * again nearly the whole stack, renamed ip.c to ip4.c, ip_addr.c to ip4_addr.c, 485 combined ipv4/ipv6 inet_chksum.c, added ip.h, ip_addr.h: Combined IPv4 486 and IPv6 code where possible, added defines to access IPv4/IPv6 in non-IP 487 code so that the code is more readable. 488 489 2011-05-17: Patch by Ivan Delamer (only checked in by Simon Goldschmidt) 490 * nearly the whole stack: Finally, we got decent IPv6 support, big thanks to 491 Ivan! (this is work in progress: we're just post release anyway :-) 492 493 494 ++ Bugfixes: 495 496 2016-08-23: Simon Goldschmidt 497 * etharp: removed ETHARP_TRUST_IP_MAC since it is insecure and we don't need 498 it any more after implementing unicast ARP renewal towards arp entry timeout 499 500 2016-07-20: Simon Goldschmidt 501 * memp.h/.c: fixed bug #48442 (memp stats don't work for MEMP_MEM_MALLOC) 502 503 2016-07-21: Simon Goldschmidt (patch by Ambroz Bizjak) 504 * tcp_in.c, tcp_out.c: fixed bug #48543 (TCP sent callback may prematurely 505 report sent data when only part of a segment is acked) and don't include 506 SYN/FIN in snd_buf counter 507 508 2016-07-19: Simon Goldschmidt 509 * etharp.c: fixed bug #48477 (ARP input packet might update static entry) 510 511 2016-07-11: Simon Goldschmidt 512 * tcp_in.c: fixed bug #48476 (TCP sent callback called wrongly due to picking 513 up old pcb->acked 514 515 2016-06-30: Simon Goldschmidt (original patch by Fabian Koch) 516 * tcp_in.c: fixed bug #48170 (Vulnerable to TCP RST spoofing) 517 518 2016-05-20: Dirk Ziegelmeier 519 * sntp.h/.c: Fix return value of sntp_getserver() call to return a pointer 520 521 2016-04-05: Simon Goldschmidt (patch by Philip Gladstone) 522 * udp.c: patch #8358: allow more combinations of listening PCB for IPv6 523 524 2016-04-05: Simon Goldschmidt 525 * netconn/socket API: fixed bug# 43739 (Accept not reporting errors about 526 aborted connections): netconn_accept() returns ERR_ABRT (sockets: ECONNABORTED) 527 for aborted connections, ERR_CLSD (sockets: EINVAL) if the listening netconn 528 is closed, which better seems to follow the standard. 529 530 2016-03-23: Florent Matignon 531 * dhcp.c: fixed bug #38203: DHCP options are not recorded in all DHCP ack messages 532 533 2016-03-22: Simon Goldschmidt 534 * tcp: changed accept handling to be done internally: the application does not 535 have to call tcp_accepted() any more. Instead, when delaying accept (e.g. sockets 536 do), call tcp_backlog_delayed()/tcp_backlog_accepted() (fixes bug #46696) 537 538 2016-03-22: Simon Goldschmidt 539 * dns.c: ignore dns response parsing errors, only abort resolving for correct 540 responses or error responses from correct server (bug #47459) 541 542 2016-03-17: Simon Goldschmidt 543 * api_msg.c: fixed bug #47448 (netconn/socket leak if RST is received during close) 544 545 2016-03-17: Joel Cunningham 546 * api_msg.c: don't fail closing a socket/netconn when failing to allocate the 547 FIN segment; blocking the calling thread for a while is better than risking 548 leaking a netconn/socket (see bug #46701) 549 550 2016-03-16: Joel Cunningham 551 * tcp_out.c: reset rto timer on fast retransmission 552 553 2016-03-16: Deomid Ryabkov 554 * tcp_out.c: fixed bug #46384 Segment size calculation bug with MSS != TCP_MSS 555 556 2016-03-05: Simon Goldschmidt 557 * err.h/.c, sockets.c: ERR_IF is not necessarily a fatal error 558 559 2015-11-19: fix by Kerem Hadimli 560 * sockets.c: fixed bug #46471: lwip_accept() leaks socket descriptors if new 561 netconn was already closed because of peer behavior 562 563 2015-11-12: fix by Valery Ushakov 564 * tcp_in.c: fixed bug #46365 tcp_accept_null() should call tcp_abort() 565 566 2015-10-02: Dirk Ziegelmeier/Simon Goldschmidt 567 * snmp: cleaned up snmp structs API (fixed race conditions from bug #46089, 568 reduce ram/rom usage of tables): incompatible change for private MIBs 569 570 2015-09-30: Simon Goldschmidt 571 * ip4_addr.c: fixed bug #46072: ip4addr_aton() does not check the number range 572 of all address parts 573 574 2015-08-28: Simon Goldschmidt 575 * tcp.c, tcp_in.c: fixed bug #44023: TCP ssthresh value is unclear: ssthresh 576 is set to the full send window for active open, too, and is updated once 577 after SYN to ensure the correct send window is used 578 579 2015-08-28: Simon Goldschmidt 580 * tcp: fixed bug #45559: Window scaling casts u32_t to u16_t without checks 581 582 2015-08-26: Simon Goldschmidt 583 * ip6_frag.h/.c: fixed bug bug #41009: IPv6 reassembly broken on 64-bit platforms: 584 define IPV6_FRAG_COPYHEADER==1 on these platforms to copy the IPv6 header 585 instead of referencing it, which gives more room for struct ip6_reass_helper 586 587 2015-08-25: Simon Goldschmidt 588 * sockets.c: fixed bug #45827: recvfrom: TCP window is updated with MSG_PEEK 589 590 2015-08-20: Manoj Kumar 591 * snmp_msg.h, msg_in.c: fixed bug #43790: Sending octet string of Length >255 592 from SNMP agent 593 594 2015-08-19: Jens Nielsen 595 * icmp.c, ip4.c, tcp_in.c, udp.c, raw.c: fixed bug #45120: Broadcast & multiple 596 interfaces handling 597 598 2015-08-19: Simon Goldschmidt (patch by "Sandra") 599 * dns.c: fixed bug #45004: dns response without answer might be discarded 600 601 2015-08-18: Chrysn 602 * timers.c: patch #8704 fix sys_timeouts_sleeptime function 603 604 2015-07-01: Erik Ekman 605 * puf.c: fixed bug #45454 (pbuf_take_at() skips write and returns OK if offset 606 is at start of pbuf in chain) 607 608 2015-05-19: Simon Goldschmidt 609 * dhcp.h/.c: fixed bugs #45140 and #45141 (dhcp was not stopped correctly after 610 fixing bug #38204) 611 612 2015-03-21: Simon Goldschmidt (patch by Homyak) 613 * tcp_in.c: fixed bug #44766 (LWIP_WND_SCALE: tcphdr->wnd was not scaled in 614 two places) 615 616 2015-03-21: Simon Goldschmidt 617 * tcp_impl.h, tcp.c, tcp_in.c: fixed bug #41318 (Bad memory ref in tcp_input() 618 after tcp_close()) 619 620 2015-03-21: Simon Goldschmidt 621 * tcp_in.c: fixed bug #38468 (tcp_sent() not called on half-open connection for 622 data ACKed with the same ack as FIN) 623 624 2015-03-21: Simon Goldschmidt (patch by Christoffer Lind) 625 * dhcp.h/.c: fixed bug #38204 (DHCP lease time not handled correctly) 626 627 2015-03-20: Simon Goldschmidt 628 * dhcp.c: fixed bug #38714 (Missing option and client address in DHCPRELEASE message) 629 630 2015-03-19: Simon Goldschmidt 631 * api.h, tcpip.h, api_lib.c, api_msg.c: fixed race conditions in assigning 632 netconn->last_err (fixed bugs #38121 and #37676) 633 634 2015-03-09: Simon Goldschmidt 635 * ip4.c: fixed the IPv4 part of bug #43904 (ip_route() must detect linkup status) 636 637 2015-03-04: Simon Goldschmidt 638 * nd6.c: fixed bug #43784 (a host should send at least one Router Solicitation) 639 640 2015-03-04: Valery Ushakov 641 * ip6.c: fixed bug #41094 (Byte-order bug in IPv6 fragmentation header test) 642 643 2015-03-04: Zach Smith 644 * nd6.c: fixed bug #38153 (nd6_input() byte order issues) 645 646 2015-02-26: Simon Goldschmidt 647 * netif.c, tcp.h/.c: fixed bug #44378 (TCP connections are not aborted on netif 648 remove) 649 650 2015-02-25: Simon Goldschmidt 651 * ip4.c, etharp.c: fixed bug #40177 (System hangs when dealing with corrupted 652 packets), implemented task #12357 (Ensure that malicious packets don't 653 assert-fail): improved some pbuf_header calls to not assert-fail. 654 655 2015-02-25: patch by Joel Cunningham 656 * udp.h/.c, sockets.c: fixed bug #43028 (IP_MULTICAST_TTL affects unicast 657 datagrams) 658 659 2015-02-25: patch by Greg Renda 660 * ip4_frag.c: fixed bug #38210 (ip reassembly while remove oldest datagram) 661 662 2015-02-25: Simon Goldschmidt 663 * sockets.c: fixed bug #38165 (socket with mulicast): ensure igmp membership 664 are dropped when socket (not netconn!) is closed. 665 666 2015-02-25: Simon Goldschmidt 667 * ip4.h/.c, udp.c: fixed bug #38061 (wrong multicast routing in IPv4) by 668 adding an optional default netif for multicast routing 669 670 2015-02-25: Simon Goldschmidt 671 * netconn API: fixed that netconn_connect still used message passing for 672 LWIP_TCPIP_CORE_LOCKING==1 673 674 2015-02-22: patch by Jens Nielsen 675 * icmp.c: fixed bug #38803 (Source address in broadcast ping reply) 676 677 2015-02-22: Simon Goldschmidt 678 * udp.h, sockets.c: added proper accessor functions for pcb->multicast_ip 679 (previously used by get/setsockopt only) 680 681 2015-02-18: Simon Goldschmidt 682 * sockets.c: Fixed select not reporting received FIN as 'readable' in certain 683 rare cases (bug #43779: select(), close(), and TCP retransmission error) 684 685 2015-02-17: Simon Goldschmidt 686 * err.h, sockets.c, api_msg.c: fixed bug #38853 "connect() use a wrong errno": 687 return ERR_ALREADY/EALRADY during connect, ERR_ISCONN/EISCONN when already 688 connected 689 690 2015-02-17: Simon Goldschmidt 691 * tcp_impl.h, tcp_out.c, tcp.c, api_msg.c: fixed bug #37614 "Errors from 692 ipX_output are not processed". Now tcp_output(_segment) checks for the return 693 value of ipX_output and does not try to send more on error. A netif driver 694 can call tcp_txnow() (from tcpip_thread!) to try to send again if TX buffers 695 are available again. 696 697 2015-02-14: patches by Freddie Chopin 698 * snmp*: made community writable, fixed some const pointers 699 700 2015-02-13: Simon Goldschmidt 701 * msg_in.c: fixed bug #22070 "MIB_OBJECT_WRITE_ONLY not implemented in SNMP" 702 703 2015-02-12: Simon Goldschmidt 704 * ip.h, ip4.c, ip6.c: fixed bug #36403 "ip4_input() and ip6_input() always pass 705 inp to higher layers": now the accepting netif is passed up, but the input 706 netif is available through ip_current_input_netif() if required. 707 708 2015-02-11: patch by hichard 709 * tcpip.c: fixed bug #43094 "The function tcpip_input() forget to handle IPv6" 710 711 2015-02-10: Simon Goldschmidt 712 * netconn API: fixed that netconn_close/netconn_delete still used message passing 713 for LWIP_TCPIP_CORE_LOCKING==1 714 715 2015-02-10: Simon Goldschmidt 716 * netconn/socket api: fixed bug #44225 "closing TCP socket should time out 717 eventually", implemented task #6930 "Implement SO_LINGER": closing TCP sockets 718 times out after 20 seconds or after the configured SND_TIMEOUT or depending 719 on the linger settings. 720 721 2015-01-27: Simon Goldschmidt 722 * api_msg.c: fixed that SHUT_RD followed by SHUT_WR was different to SHUT_RDWR, 723 fixed return value of lwip_netconn_do_close on unconnected netconns 724 725 2015-01-17: Simon Goldschmidt 726 * sockets.c: fixed bug #43361 select() crashes with stale FDs 727 728 2015-01-17: Simon Goldschmidt 729 * sockets.c/.h, memp_std.h: fixed bug #40788 "lwip_setsockopt_internal() crashes" 730 by rewriting set/getsockopt functions to combine checks with the actual code 731 and add more NULL checks; this also fixes that CORE_LOCKING used message 732 passing for set/getsockopt. 733 734 2014-12-19: Simon Goldschmidt 735 * opt.h, dhcp.h/.c: prevent dhcp from starting when netif link is down (only 736 when LWIP_DHCP_CHECK_LINK_UP==1, which is disabled by default for 737 compatibility reasons) 738 739 2014-12-17: Simon Goldschmidt 740 * tcp_out.c: fixed bug #43840 Checksum error for TCP_CHECKSUM_ON_COPY==1 for 741 no-copy data with odd length 742 743 2014-12-10: Simon Goldschmidt 744 * sockets.c, tcp.c, others: fixed bug #43797 set/getsockopt: SO_SNDTIMEO/SO_RCVTIMEO 745 take int as option but should take timeval (LWIP_SO_SNDRCVTIMEO_STANDARD==0 can 746 be used to revert to the old 'winsock' style behaviour) 747 Fixed implementation of SO_ACCEPTCONN to just look at the pcb state 748 749 2014-12-09: Simon Goldschmidt 750 * ip4.c: fixed bug #43596 IGMP queries from 0.0.0.0 are discarded 751 752 2014-10-21: Simon Goldschmidt (patch by Joel Cunningham and Albert Huitsing) 753 * sockts.c: fixed bugs #41495 Possible threading issue in select() and #43278 754 event_callback() handle context switch when calling sys_sem_signal() 755 756 2014-10-21: Simon Goldschmidt 757 * api_msg.c: fixed bug #38219 Assert on TCP netconn_write with sndtimeout set 758 759 2014-09-16: Kevin Cernekee 760 * dns.c: patch #8480 Fix handling of dns_seqno wraparound 761 762 2014-09-16: Simon Goldschmidt 763 * tcp_out.c: fixed bug #43192 tcp_enqueue_flags() should not check TCP_SND_QUEUELEN 764 when sending FIN 765 766 2014-09-03: Simon Goldschmidt 767 * msg_in.c: fixed bug #39355 SNMP Memory Leak in case of error 768 769 2014-09-02: Simon Goldschmidt 770 * err.h/.c, sockets.c, api_msg.c: fixed bug #43110 call getpeername() before 771 listen() will cause a error 772 773 2014-09-02: Simon Goldschmidt 774 * sockets.c: fixed bug #42117 lwip_fcntl does not set errno 775 776 2014-09-02: Simon Goldschmidt 777 * tcp.c: fixed bug #42299 tcp_abort() leaves freed pcb on tcp_bound_pcbs list 778 779 2014-08-20: Simon Goldschmidt 780 * dns.c: fixed bug #42987 lwIP is vulnerable to DNS cache poisoning due to 781 non-randomized TXIDs 782 783 2014-06-03: Simon Goldschmidt 784 * tcp_impl.h, tcp_in.c: fixed bug #37969 SYN packet dropped as short packet in 785 tcp_input function 786 787 2014-05-20: Simon Goldschmidt 788 * tcp_out.c: fixed bug #37184 tcp_write problem for pcbs in the SYN_SENT state 789 790 2014-05-19: Simon Goldschmidt 791 * *.h: Fixed bug #35874 reserved identifier violation (removed leading underscores 792 from header include guards) 793 794 2014-04-08: Simon Goldschmidt 795 * tcp.c: Fixed bug #36167 tcp server crash when client closes (maximum window) 796 797 2014-04-06: Simon Goldschmidt 798 * tcp_in.c: Fixed bug #36210 lwIP does not elicit an empty ACK when received 799 unacceptable ACK 800 801 2014-04-06: Simon Goldschmidt 802 * dhcp.c, ip4.c/.h, ip6.c/.h, udp.c/.h, ip.h: Fixed bug #41787 DHCP Discovery 803 is invalid when an IP is set to thet netif. 804 805 2014-03-14: Simon Goldschmidt 806 * tcp_out.c: Fixed bug #36153 TCP Cheksum error if LWIP_CHECKSUM_ON_COPY=1 807 808 2014-03-11: Simon Goldschmidt (patch by Mason) 809 * opt.h, sockets.c: fixed bug #35928 BSD sockets functions must set errno for 810 POSIX-compliance 811 812 2014-02-27: Simon Goldschmidt 813 * dhcp.c: fixed bug #40303 DHCP xid renewed when sending a DHCPREQUEST 814 815 2014-02-27: Simon Goldschmidt 816 * raw.c: fixed bug #41680 raw socket can not receive IPv6 packet when 817 IP_SOF_BROADCAST_RECV==1 818 819 2014-02-27: Simon Goldschmidt 820 * api_msg.c, sockets.c: fixed bug #38404 getpeeraddr returns success on 821 unconnected/listening TCP sockets 822 823 2014-02-27: Simon Goldschmidt 824 * sockets.c: fixed bug #41729 Some socket functions return Exyz instead of -1 825 826 2014-02-25: Simon Goldschmidt 827 * ip4.c: fixed bug #39514 ip_route() may return an IPv6-only interface 828 829 2014-02-25: Simon Goldschmidt, patch by Fatih Asici 830 * pbuf.c: fixed bug #39356 Wrong increment in pbuf_memfind() 831 832 2014-02-25: Simon Goldschmidt 833 * netif.c/.h, udp.c: fixed bug #39225 udp.c uses netif_matches_ip6_addr() incorrectly; 834 renamed function netif_matches_ip6_addr() to netif_get_ip6_addr_match() 835 836 2014-02-25: Simon Goldschmidt 837 * igmp.c: fixed bug #39145 IGMP membership report for 224.0.0.1 838 839 2014-02-22: Simon Goldschmidt (patch by Amir Shalem) 840 * etharp.c, opt.h: fixed bug #34681 Limit ARP queue length by ARP_QUEUE_LEN (=3) 841 842 2014-02-22: Simon Goldschmidt (patch by Amir Shalem) 843 * etharp.h/.c: fixed bug #34682 Limit ARP request flood for unresolved entry 844 845 2014-02-20: Simon Goldschmidt 846 * tcp_out.c: fixed bug #39683 Assertion "seg->tcphdr not aligned" failed with 847 MEM_ALIGNMENT = 8 848 849 2014-02-20: Simon Goldschmidt 850 * sockets.c: fixed bug #39882 No function shall set errno to 0 851 852 2014-02-20: Simon Goldschmidt 853 * mib_structs.c: fixed bug #40050 SNMP problem with MIB arrays > 255 854 855 2014-02-20: Simon Goldschmidt 856 * api.h, sockets.c: fixed bug #41499 netconn::recv_avail can overflow 857 858 2014-01-08: Stathis Voukelatos 859 * memp_std.h: patch #7928 Fixed size calculation in MALLOC memory pool 860 creation macro 861 862 2014-01-18: Brian Fahs 863 * tcp_out.c: patch #8237: tcp_rexmit_rto fails to update pcb->unsent_oversize 864 when necessary 865 866 2014-01-17: Grant Erickson, Jay Logue, Simon Goldschmidt 867 * ipv6.c, netif.c: patch #7913 Enable Support for IPv6 Loopback 868 869 2014-01-16: Stathis Voukelatos 870 * netif.c: patch #7902 Fixed netif_poll() operation when LWIP_LOOPBACK_MAX_PBUFS > 0 871 872 2014-01-14: "Freddie Chopin" 873 * snmp.h, mib2.c: fixed constness and spelling of sysdescr 874 875 2014-01-14: Simon Goldschmidt (patch by Thomas Faber) 876 * tcpip.c: patch #8241: Fix implicit declaration of ip_input with 877 LWIP_TCPIP_CORE_LOCKING_INPUT disabled 878 879 2014-01-14: chrysn 880 * timers.c: patch #8244 make timeouts usable reliably from outside of the 881 timeout routine 882 883 2014-01-10: Simon Goldschmidt 884 * ip_frag.c, ip6_frag.c: fixed bug #41041 Potential use-after-free in IPv6 reassembly 885 886 2014-01-10: Simon Goldschmidt 887 * memp.c: fixed bug #41188 Alignment error in memp_init() when MEMP_SEPARATE_POOLS==1 888 889 2014-01-10: Simon Goldschmidt 890 * tcp.c: fixed bug #39898 tcp_fasttmr() possible lock due to infinte queue process loop 891 892 2013-06-29: Simon Goldschmidt 893 * inet.h, sockets.h: partially fixed bug #37585: IPv6 compatibility (in socket structs) 894 895 2013-06-29: Simon Goldschmidt 896 * inet6.h: bug #37585/task #12600: fixed struct in6_addr.s6_addr to conform to spec 897 898 2013-04-24: patch by Liam <morepork> 899 * api_msg.c: patch #8008 Fix a potential null pointer dereference in assert 900 901 2013-04-24: Simon Goldschmidt 902 * igmp.c: fixed possible division by zero 903 904 2013-04-24: Simon Goldschmidt 905 * ip6.h, some ipv6 C files: fixed bug #38526 Coverity: Recursive Header Inclusion in ip6.h 906 907 2013-04-24: Simon Goldschmidt (patch by Emil Ljungdahl): 908 * netif.c: fixed bug #38586 netif_loop_output() "deadlocks" 909 910 2013-01-15: Simon Goldschmidt 911 * ip4.c: fixed bug #37665 ip_canforward operates on address in wrong byte order 912 913 2013-01-15: Simon Goldschmidt 914 * pbuf.h: fixed bug #38097 pbuf_free_ooseq() warning 915 916 2013-01-14: Simon Goldschmidt 917 * dns.c: fixed bug #37705 Possible memory corruption in DNS query 918 919 2013-01-11: Simon Goldschmidt 920 * raw.c: fixed bug #38066 Raw pcbs can alter packet without eating it 921 922 2012-08-22: Simon Goldschmidt 923 * memp.c: fixed bug #37166: memp_sanity check loops itself 924 925 2012-08-13: Simon Goldschmidt 926 * dhcp.c: fixed bug #36645: Calling dhcp_release before dhcp_start 927 dereferences NULL 928 929 2012-08-13: Simon Goldschmidt 930 * msg_out.c: fixed bug #36840 snmp_send_trap() NULL de-reference if traps 931 configured but no interfaces available 932 933 2012-08-13: Simon Goldschmidt 934 * dns.c: fixed bug #36899 DNS TTL 0 is cached for a long time 935 936 2012-05-11: Simon Goldschmidt (patch by Marty) 937 * memp.c: fixed bug #36412: memp.c does not compile when 938 MEMP_OVERFLOW_CHECK > zero and MEMP_SEPARATE_POOLS == 1 939 940 2012-05-03: Simon Goldschmidt (patch by Sylvain Rochet) 941 * ppp.c: fixed bug #36283 (PPP struct used on header size computation and 942 not packed) 943 944 2012-05-03: Simon Goldschmidt (patch by David Empson) 945 * ppp.c: fixed bug #36388 (PPP: checksum-only in last pbuf leads to pbuf with 946 zero length) 947 948 2012-03-25: Simon Goldschmidt 949 * api_msg.c: Fixed bug #35817: do_connect() invalidly signals op_completed 950 for UDP/RAW with LWIP_TCPIP_CORE_LOCKING==1 951 952 2012-03-25: Simon Goldschmidt 953 * api_msg.h, api_lib.c, api_msg.c, netifapi.c: fixed bug #35931: Name space 954 pollution in api_msg.c and netifapi.c 955 956 2011-08-24: Simon Goldschmidt 957 * inet6.h: fixed bug #34124 struct in6_addr does not conform to the standard 958 959 960 961(STABLE-1.4.1) 962 963 ++ New features: 964 965 2012-03-25: Simon Goldschmidt (idea by Mason) 966 * posix/*: added posix-compatibility include files posix/netdb.h and posix/sys/socket.h 967 which are a simple wrapper to the correct lwIP include files. 968 969 2012-01-16: Simon Goldschmidt 970 * opt.h, icmp.c: Added option CHECKSUM_GEN_ICMP 971 972 2011-12-17: Simon Goldschmidt 973 * ip.h: implemented API functions to access so_options of IP pcbs (UDP, TCP, RAW) 974 (fixes bug #35061) 975 976 2011-09-27: Simon Goldschmidt 977 * opt.h, tcp.c, tcp_in.c: Implemented limiting data on ooseq queue (task #9989) 978 (define TCP_OOSEQ_MAX_BYTES / TCP_OOSEQ_MAX_PBUFS in lwipopts.h) 979 980 2011-09-21: Simon Goldschmidt 981 * opt.h, api.h, api_lib.c, api_msg.h/.c, sockets.c: Implemented timeout on 982 send (TCP only, bug #33820) 983 984 2011-09-21: Simon Goldschmidt 985 * init.c: Converted runtime-sanity-checks into compile-time checks that can 986 be disabled (since runtime checks can often not be seen on embedded targets) 987 988 2011-09-11: Simon Goldschmidt 989 * ppp.h, ppp_impl.h: splitted ppp.h to an internal and external header file 990 to get a clear separation of which functions an application or port may use 991 (task #11281) 992 993 2011-09-11: Simon Goldschmidt 994 * opt.h, tcp_impl.h, tcp.c, udp.h/.c: Added a config option to randomize 995 initial local TCP/UDP ports (so that different port ranges are used after 996 a reboot; bug #33818; this one added tcp_init/udp_init functions again) 997 998 2011-09-03: Simon Goldschmidt 999 * dhcp.c: DHCP uses LWIP_RAND() for xid's (bug #30302) 1000 1001 2011-08-24: Simon Goldschmidt 1002 * opt.h, netif.h/.c: added netif remove callback (bug #32397) 1003 1004 2011-07-26: Simon Goldschmidt 1005 * etharp.c: ETHARP_SUPPORT_VLAN: add support for an external VLAN filter 1006 function instead of only checking for one VLAN (define ETHARP_VLAN_CHECK_FN) 1007 1008 2011-07-21: Simon Goldschmidt (patch by hanhui) 1009 * ip4.c, etharp.c, pbuf.h: bug #33634 ip_forward() have a faulty behaviour: 1010 Added pbuf flags to mark incoming packets as link-layer broadcast/multicast. 1011 Also added code to allow ip_forward() to forward non-broadcast packets to 1012 the input netif (set IP_FORWARD_ALLOW_TX_ON_RX_NETIF==1). 1013 1014 2011-06-26: Simon Goldschmidt (patch by Cameron Gutman) 1015 * tcp.c, tcp_out.c: bug #33604: added some more asserts to check that 1016 pcb->state != LISTEN 1017 1018 2011-05-14: Simon Goldschmidt (patch by Stéphane Lesage) 1019 * tcpip.c/.h: patch #7449 allow tcpip callback from interrupt with static 1020 memory message 1021 1022 1023 ++ Bugfixes: 1024 1025 2012-09-26: Simon Goldschmidt 1026 * api_msg.c: fixed bug #37405 'err_tcp()' uses already freed 'netconn' object 1027 1028 2012-09-26: patch by Henrik Persson 1029 * dhcp.c: patch #7843 Fix corner case with dhcp timeouts 1030 1031 2012-09-26: patch by Henrik Persson 1032 * dhcp.c: patch #7840 Segfault in dhcp_parse_reply if no end marker in dhcp packet 1033 1034 2012-08-22: Simon Goldschmidt 1035 * memp.c: fixed bug #37166: memp_sanity check loops itself 1036 1037 2012-05-08: Simon Goldschmidt 1038 * tcp_out.c: fixed bug: #36380 unsent_oversize mismatch in 1.4.1RC1 (this was 1039 a debug-check issue only) 1040 1041 2012-03-27: Simon Goldschmidt 1042 * vj.c: fixed bug #35756 header length calculation problem in ppp/vj.c 1043 1044 2012-03-27: Simon Goldschmidt (patch by Mason) 1045 * tcp_out.c: fixed bug #35945: SYN packet should provide the recv MSS not the 1046 send MSS 1047 1048 2012-03-22: Simon Goldschmidt 1049 * ip4.c: fixed bug #35927: missing refragmentaion in ip_forward 1050 1051 2012-03-20: Simon Goldschmidt (patch by Mason) 1052 * netdb.c: fixed bug #35907: lwip_gethostbyname_r returns an invalid h_addr_list 1053 1054 2012-03-12: Simon Goldschmidt (patch by Bostjan Meglic) 1055 * ppp.c: fixed bug #35809: PPP GetMask(): Compiler warning on big endian, 1056 possible bug on little endian system 1057 1058 2012-02-23: Simon Goldschmidt 1059 * etharp.c: fixed bug #35595: Impossible to send broadcast without a gateway 1060 (introduced when fixing bug# 33551) 1061 1062 2012-02-16: Simon Goldschmidt 1063 * ppp.c: fixed pbuf leak when PPP session is aborted through pppSigHUP() 1064 (bug #35541: PPP Memory Leak) 1065 1066 2012-02-16: Simon Goldschmidt 1067 * etharp.c: fixed bug #35531: Impossible to send multicast without a gateway 1068 (introduced when fixing bug# 33551) 1069 1070 2012-02-16: Simon Goldschmidt (patch by Stéphane Lesage) 1071 * msg_in.c, msg_out.c: fixed bug #35536 SNMP: error too big response is malformed 1072 1073 2012-02-15: Simon Goldschmidt 1074 * init.c: fixed bug #35537: MEMP_NUM_* sanity checks should be disabled with 1075 MEMP_MEM_MALLOC==1 1076 1077 2012-02-12: Simon Goldschmidt 1078 * tcp.h, tcp_in.c, tcp_out.c: partly fixed bug #25882: TCP hangs on 1079 MSS > pcb->snd_wnd (by not creating segments bigger than half the window) 1080 1081 2012-02-11: Simon Goldschmidt 1082 * tcp.c: fixed bug #35435: No pcb state check before adding it to time-wait 1083 queue while closing 1084 1085 2012-01-22: Simon Goldschmidt 1086 * tcp.c, tcp_in.c: fixed bug #35305: pcb may be freed too early on shutdown(WR) 1087 1088 2012-01-21: Simon Goldschmidt 1089 * tcp.c: fixed bug #34636: FIN_WAIT_2 - Incorrect shutdown of TCP pcb 1090 1091 2012-01-20: Simon Goldschmidt 1092 * dhcp.c: fixed bug #35151: DHCP asserts on incoming option lengths 1093 1094 2012-01-20: Simon Goldschmidt 1095 * pbuf.c: fixed bug #35291: NULL pointer in pbuf_copy 1096 1097 2011-11-25: Simon Goldschmidt 1098 * tcp.h/.c, tcp_impl.h, tcp_in.c: fixed bug #31177: tcp timers can corrupt 1099 tcp_active_pcbs in some cases 1100 1101 2011-11-23: Simon Goldschmidt 1102 * sys.c: fixed bug #34884: sys_msleep() body needs to be surrounded with 1103 '#ifndef sys_msleep' 1104 1105 2011-11-22: Simon Goldschmidt 1106 * netif.c, etharp.h/.c: fixed bug #34684: Clear the arp table cache when 1107 netif is brought down 1108 1109 2011-10-28: Simon Goldschmidt 1110 * tcp_in.c: fixed bug #34638: Dead code in tcp_receive - pcb->dupacks 1111 1112 2011-10-23: Simon Goldschmidt 1113 * mem.c: fixed bug #34429: possible memory corruption with 1114 LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT set to 1 1115 1116 2011-10-18: Simon Goldschmidt 1117 * arch.h, netdb.c: fixed bug #34592: lwip_gethostbyname_r uses nonstandard 1118 error value 1119 1120 2011-10-18: Simon Goldschmidt 1121 * opt.h: fixed default values of TCP_SNDLOWAT and TCP_SNDQUEUELOWAT for small 1122 windows (bug #34176 select after non-blocking send times out) 1123 1124 2011-10-18: Simon Goldschmidt 1125 * tcp_impl.h, tcp_out.c: fixed bug #34587: TCP_BUILD_MSS_OPTION doesn't 1126 consider netif->mtu, causes slow network 1127 1128 2011-10-18: Simon Goldschmidt 1129 * sockets.c: fixed bug #34581 missing parentheses in udplite sockets code 1130 1131 2011-10-18: Simon Goldschmidt 1132 * sockets.h: fixed bug #34580 fcntl() is missing in LWIP_COMPAT_SOCKETS 1133 1134 2011-10-17: Simon Goldschmidt 1135 * api_msg.c: fixed bug #34569: shutdown(SHUT_WR) crashes netconn/socket api 1136 1137 2011-10-13: Simon Goldschmidt 1138 * tcp_in.c, tcp_out.c: fixed bug #34517 (persist timer is started although no 1139 zero window is received) by starting the persist timer when a zero window is 1140 received, not when we have more data queued for sending than fits into the 1141 window 1142 1143 2011-10-13: Simon Goldschmidt 1144 * def.h, timers.c: fixed bug #34541: LWIP_U32_DIFF is unnecessarily complex 1145 1146 2011-10-13: Simon Goldschmidt 1147 * sockets.c, api_lib.c: fixed bug #34540: compiler error when CORE_LOCKING is 1148 used and not all protocols are enabled 1149 1150 2011-10-12: Simon Goldschmidt 1151 * pbuf.c: fixed bug #34534: Error in sending fragmented IP if MEM_ALIGNMENT > 4 1152 1153 2011-10-09: Simon Goldschmidt 1154 * tcp_out.c: fixed bug #34426: tcp_zero_window_probe() transmits incorrect 1155 byte value when pcb->unacked != NULL 1156 1157 2011-10-09: Simon Goldschmidt 1158 * ip4.c: fixed bug #34447 LWIP_IP_ACCEPT_UDP_PORT(dst_port) wrong 1159 1160 2011-09-27: Simon Goldschmidt 1161 * tcp_in.c, tcp_out.c: Reset pcb->unsent_oversize in 2 more places... 1162 1163 2011-09-27: Simon Goldschmidt 1164 * tcp_in.c: fixed bug #28288: Data after FIN in oos queue 1165 1166 2011-09-27: Simon Goldschmidt 1167 * dhcp.c: fixed bug #34406 dhcp_option_hostname() can overflow the pbuf 1168 1169 2011-09-24: Simon Goldschmidt 1170 * mem.h: fixed bug #34377 MEM_SIZE_F is not defined if MEM_LIBC_MALLOC==1 1171 1172 2011-09-23: Simon Goldschmidt 1173 * pbuf.h, tcp.c, tcp_in.c: fixed bug #33871: rejecting TCP_EVENT_RECV() for 1174 the last packet including FIN can lose data 1175 1176 2011-09-22: Simon Goldschmidt 1177 * tcp_impl.h: fixed bug #34355: nagle does not take snd_buf/snd_queuelen into 1178 account 1179 1180 2011-09-21: Simon Goldschmidt 1181 * opt.h: fixed default value of TCP_SND_BUF to not violate the sanity checks 1182 in init.c 1183 1184 2011-09-20: Simon Goldschmidt 1185 * timers.c: fixed bug #34337 (possible NULL pointer in sys_check_timeouts) 1186 1187 2011-09-11: Simon Goldschmidt 1188 * tcp_out.c: use pcb->mss instead of TCP_MSS for preallocate mss-sized pbufs 1189 (bug #34019) 1190 1191 2011-09-09: Simon Goldschmidt 1192 * udp.c: fixed bug #34072: UDP broadcast is received from wrong UDP pcb if 1193 udp port matches 1194 1195 2011-09-03: Simon Goldschmidt 1196 * tcp_in.c: fixed bug #33952 PUSH flag in incoming packet is lost when packet 1197 is aggregated and sent to application 1198 1199 2011-09-01: Simon Goldschmidt 1200 * opt.h: fixed bug #31809 LWIP_EVENT_API in opts.h is inconsistent compared 1201 to other options 1202 1203 2011-09-01: Simon Goldschmidt 1204 * tcp_in.c: fixed bug #34111 RST for ACK to listening pcb has wrong seqno 1205 1206 2011-08-24: Simon Goldschmidt 1207 * api_msg.c, sockets.c: fixed bug #33956 Wrong error returned when calling 1208 accept() on UDP connections 1209 1210 2011-08-24: Simon Goldschmidt 1211 * sockets.h: fixed bug #34057 socklen_t should be a typedef 1212 1213 2011-08-24: Simon Goldschmidt 1214 * pbuf.c: fixed bug #34112 Odd check in pbuf_alloced_custom (typo) 1215 1216 2011-08-24: Simon Goldschmidt 1217 * dhcp.c: fixed bug #34122 dhcp: hostname can overflow 1218 1219 2011-08-24: Simon Goldschmidt 1220 * netif.c: fixed bug #34121 netif_add/netif_set_ipaddr fail on NULL ipaddr 1221 1222 2011-08-22: Simon Goldschmidt 1223 * tcp_out.c: fixed bug #33962 TF_FIN not always set after FIN is sent. (This 1224 merely prevents nagle from not transmitting fast after closing.) 1225 1226 2011-07-22: Simon Goldschmidt 1227 * api_lib.c, api_msg.c, sockets.c, api.h: fixed bug #31084 (socket API returns 1228 always EMSGSIZE on non-blocking sockets if data size > send buffers) -> now 1229 lwip_send() sends as much as possible for non-blocking sockets 1230 1231 2011-07-22: Simon Goldschmidt 1232 * pbuf.c/.h, timers.c: freeing ooseq pbufs when the pbuf pool is empty implemented 1233 for NO_SYS==1: when not using sys_check_timeouts(), call PBUF_CHECK_FREE_OOSEQ() 1234 at regular intervals from main level. 1235 1236 2011-07-21: Simon Goldschmidt 1237 * etharp.c: fixed bug #33551 (ARP entries may time out although in use) by 1238 sending an ARP request when an ARP entry is used in the last minute before 1239 it would time out. 1240 1241 2011-07-04: Simon Goldschmidt 1242 * sys_arch.txt: Fixed documentation after changing sys arch prototypes for 1.4.0. 1243 1244 2011-06-26: Simon Goldschmidt 1245 * tcp.c: fixed bug #31723 (tcp_kill_prio() kills pcbs with the same prio) by 1246 updating its documentation only. 1247 1248 2011-06-26: Simon Goldschmidt 1249 * mem.c: fixed bug #33545: With MEM_USE_POOLS==1, mem_malloc can return an 1250 unaligned pointer. 1251 1252 2011-06-26: Simon Goldschmidt 1253 * mem.c: fixed bug #33544 "warning in mem.c in lwip 1.4.0 with NO_SYS=1" 1254 1255 2011-05-25: Simon Goldschmidt 1256 * tcp.c: fixed bug #33398 (pointless conversion when checking TCP port range) 1257 1258 1259 1260(STABLE-1.4.0) 1261 1262 ++ New features: 1263 1264 2011-03-27: Simon Goldschmidt 1265 * tcp_impl.h, tcp_in.c, tcp_out.c: Removed 'dataptr' from 'struct tcp_seg' and 1266 calculate it in tcp_zero_window_probe (the only place where it was used). 1267 1268 2010-11-21: Simon Goldschmidt 1269 * dhcp.c/.h: Added a function to deallocate the struct dhcp from a netif 1270 (fixes bug #31525). 1271 1272 2010-07-12: Simon Goldschmidt (patch by Stephane Lesage) 1273 * ip.c, udp.c/.h, pbuf.h, sockets.c: task #10495: Added support for 1274 IP_MULTICAST_LOOP at socket- and raw-API level. 1275 1276 2010-06-16: Simon Goldschmidt 1277 * ip.c: Added an optional define (LWIP_IP_ACCEPT_UDP_PORT) that can allow 1278 link-layer-addressed UDP traffic to be received while a netif is down (just 1279 like DHCP during configuration) 1280 1281 2010-05-22: Simon Goldschmidt 1282 * many many files: bug #27352: removed packing from ip_addr_t, the packed 1283 version is now only used in protocol headers. Added global storage for 1284 current src/dest IP address while in input functions. 1285 1286 2010-05-16: Simon Goldschmidt 1287 * def.h: task #10391: Add preprocessor-macros for compile-time htonl 1288 calculation (and use them throughout the stack where applicable) 1289 1290 2010-05-16: Simon Goldschmidt 1291 * opt.h, memp_std.h, memp.c, ppp_oe.h/.c: PPPoE now uses its own MEMP pool 1292 instead of the heap (moved struct pppoe_softc from ppp_oe.c to ppp_oe.h) 1293 1294 2010-05-16: Simon Goldschmidt 1295 * opt.h, memp_std.h, dns.h/.c: DNS_LOCAL_HOSTLIST_IS_DYNAMIC uses its own 1296 MEMP pool instead of the heap 1297 1298 2010-05-13: Simon Goldschmidt 1299 * tcp.c, udp.c: task #6995: Implement SO_REUSEADDR (correctly), added 1300 new option SO_REUSE_RXTOALL to pass received UDP broadcast/multicast 1301 packets to more than one pcb. 1302 1303 2010-05-02: Simon Goldschmidt 1304 * netbuf.h/.c, sockets.c, api_msg.c: use checksum-on-copy for sending 1305 UDP data for LWIP_NETIF_TX_SINGLE_PBUF==1 1306 1307 2010-04-30: Simon Goldschmidt 1308 * udp.h/.c, pbuf.h/.c: task #6849: added udp_send(_to/_if) functions that 1309 take a precalculated checksum, added pbuf_fill_chksum() to copy data 1310 into a pbuf and at the same time calculating the checksum for that data 1311 1312 2010-04-29: Simon Goldschmidt 1313 * ip_addr.h, etharp.h/.c, autoip.c: Create overridable macros for copying 1314 2-byte-aligned IP addresses and MAC addresses 1315 1316 2010-04-28: Patch by Bill Auerbach 1317 * ip.c: Inline generating IP checksum to save a function call 1318 1319 2010-04-14: Simon Goldschmidt 1320 * tcpip.h/.c, timers.c: Added an overridable define to get informed when the 1321 tcpip_thread processes messages or timeouts to implement a watchdog. 1322 1323 2010-03-28: Simon Goldschmidt 1324 * ip_frag.c: create a new (contiguous) PBUF_RAM for every outgoing 1325 fragment if LWIP_NETIF_TX_SINGLE_PBUF==1 1326 1327 2010-03-27: Simon Goldschmidt 1328 * etharp.c: Speedup TX by moving code from find_entry to etharp_output/ 1329 etharp_query to prevent unnecessary function calls (inspired by 1330 patch #7135). 1331 1332 2010-03-20: Simon Goldschmidt 1333 * opt.h, tcpip.c/.h: Added an option to disable tcpip_(un)timeout code 1334 since the linker cannot do this automatically to save space. 1335 1336 2010-03-20: Simon Goldschmidt 1337 * opt.h, etharp.c/.h: Added support for static ARP table entries 1338 1339 2010-03-14: Simon Goldschmidt 1340 * tcp_impl.h, tcp_out.c, inet_chksum.h/.c: task #6849: Calculate checksum 1341 when creating TCP segments, not when (re-)transmitting them. 1342 1343 2010-03-07: Simon Goldschmidt 1344 * sockets.c: bug #28775 (select/event_callback: only check select_cb_list 1345 on change) plus use SYS_LIGHTWEIGHT_PROT to protect the select code. 1346 This should speed up receiving data on sockets as the select code in 1347 event_callback is only executed when select is waiting. 1348 1349 2010-03-06: Simon Goldschmidt 1350 * tcp_out.c: task #7013 (Create option to have all packets delivered to 1351 netif->output in one piece): Always copy to try to create single pbufs 1352 in tcp_write. 1353 1354 2010-03-06: Simon Goldschmidt 1355 * api.h, api_lib.c, sockets.c: task #10167 (sockets: speed up TCP recv 1356 by not allocating a netbuf): added function netconn_recv_tcp_pbuf() 1357 for tcp netconns to receive pbufs, not netbufs; use that function 1358 for tcp sockets. 1359 1360 2010-03-05: Jakob Ole Stoklundsen / Simon Goldschmidt 1361 * opt.h, tcp.h, tcp_impl.h, tcp.c, tcp_in.c, tcp_out.c: task #7040: 1362 Work on tcp_enqueue: Don't waste memory when chaining segments, 1363 added option TCP_OVERSIZE to prevent creating many small pbufs when 1364 calling tcp_write with many small blocks of data. Instead, pbufs are 1365 allocated larger than needed and the space is used for later calls to 1366 tcp_write. 1367 1368 2010-02-21: Simon Goldschmidt 1369 * stats.c/.h: Added const char* name to mem- and memp-stats for easier 1370 debugging. 1371 1372 2010-02-21: Simon Goldschmidt 1373 * tcp.h (and usages), added tcp_impl.h: Splitted API and internal 1374 implementation of tcp to make API usage cleare to application programmers 1375 1376 2010-02-14: Simon Goldschmidt/Stephane Lesage 1377 * ip_addr.h: Improved some defines working on ip addresses, added faster 1378 macro to copy addresses that cannot be NULL 1379 1380 2010-02-13: Simon Goldschmidt 1381 * api.h, api_lib.c, api_msg.c, sockets.c: task #7865 (implement non- 1382 blocking send operation) 1383 1384 2010-02-12: Simon Goldschmidt 1385 * sockets.c/.h: Added a minimal version of posix fctl() to have a 1386 standardised way to set O_NONBLOCK for nonblocking sockets. 1387 1388 2010-02-12: Simon Goldschmidt 1389 * dhcp.c/.h, autoip.c/.h: task #10139 (Prefer statically allocated 1390 memory): added autoip_set_struct() and dhcp_set_struct() to let autoip 1391 and dhcp work with user-allocated structs instead of callin mem_malloc 1392 1393 2010-02-12: Simon Goldschmidt/Jeff Barber 1394 * tcp.c/h: patch #6865 (SO_REUSEADDR for TCP): if pcb.so_options has 1395 SOF_REUSEADDR set, allow binding to endpoint in TIME_WAIT 1396 1397 2010-02-12: Simon Goldschmidt 1398 * sys layer: task #10139 (Prefer statically allocated memory): converted 1399 mbox and semaphore functions to take pointers to sys_mbox_t/sys_sem_t; 1400 converted sys_mbox_new/sys_sem_new to take pointers and return err_t; 1401 task #7212: Add Mutex concept in sys_arch (define LWIP_COMPAT_MUTEX 1402 to let sys.h use binary semaphores instead of mutexes - as before) 1403 1404 2010-02-09: Simon Goldschmidt (Simon Kallweit) 1405 * timers.c/.h: Added function sys_restart_timeouts() from patch #7085 1406 (Restart system timeout handling) 1407 1408 2010-02-09: Simon Goldschmidt 1409 * netif.c/.h, removed loopif.c/.h: task #10153 (Integrate loopif into 1410 netif.c) - loopif does not have to be created by the port any more, 1411 just define LWIP_HAVE_LOOPIF to 1. 1412 1413 2010-02-08: Simon Goldschmidt 1414 * inet.h, ip_addr.c/.h: Added reentrant versions of inet_ntoa/ipaddr_ntoa 1415 inet_ntoa_r/ipaddr_ntoa_r 1416 1417 2010-02-08: Simon Goldschmidt 1418 * netif.h: Added netif_s/get_igmp_mac_filter() macros 1419 1420 2010-02-05: Simon Goldschmidt 1421 * netif.h: Added function-like macros to get/set the hostname on a netif 1422 1423 2010-02-04: Simon Goldschmidt 1424 * nearly every file: Replaced struct ip_addr by typedef ip_addr_t to 1425 make changing the actual implementation behind the typedef easier. 1426 1427 2010-02-01: Simon Goldschmidt 1428 * opt.h, memp_std.h, dns.h, netdb.c, memp.c: Let netdb use a memp pool 1429 for allocating memory when getaddrinfo() is called. 1430 1431 2010-01-31: Simon Goldschmidt 1432 * dhcp.h, dhcp.c: Reworked the code that parses DHCP options: parse 1433 them once instead of parsing for every option. This also removes 1434 the need for mem_malloc from dhcp_recv and makes it possible to 1435 correctly retrieve the BOOTP file. 1436 1437 2010-01-30: simon Goldschmidt 1438 * sockets.c: Use SYS_LIGHTWEIGHT_PROT instead of a semaphore to protect 1439 the sockets array. 1440 1441 2010-01-29: Simon Goldschmidt (patch by Laura Garrett) 1442 * api.h, api_msg.c, sockets.c: Added except set support in select 1443 (patch #6860) 1444 1445 2010-01-29: Simon Goldschmidt (patch by Laura Garrett) 1446 * api.h, sockets.h, err.h, api_lib.c, api_msg.c, sockets.c, err.c: 1447 Add non-blocking support for connect (partly from patch #6860), 1448 plus many cleanups in socket & netconn API. 1449 1450 2010-01-27: Simon Goldschmidt 1451 * opt.h, tcp.h, init.c, api_msg.c: Added TCP_SNDQUEUELOWAT corresponding 1452 to TCP_SNDLOWAT and added tcp_sndqueuelen() - this fixes bug #28605 1453 1454 2010-01-26: Simon Goldschmidt 1455 * snmp: Use memp pools for snmp instead of the heap; added 4 new pools. 1456 1457 2010-01-14: Simon Goldschmidt 1458 * ppp.c/.h: Fixed bug #27856: PPP: Set netif link- and status-callback 1459 by adding ppp_set_netif_statuscallback()/ppp_set_netif_linkcallback() 1460 1461 2010-01-13: Simon Goldschmidt 1462 * mem.c: The heap now may be moved to user-defined memory by defining 1463 LWIP_RAM_HEAP_POINTER as a void pointer to that memory's address 1464 (patch #6966 and bug #26133) 1465 1466 2010-01-10: Simon Goldschmidt (Bill Auerbach) 1467 * opt.h, memp.c: patch #6822 (Add option to place memory pools in 1468 separate arrays) 1469 1470 2010-01-10: Simon Goldschmidt 1471 * init.c, igmp.c: patch #6463 (IGMP - Adding Random Delay): added define 1472 LWIP_RAND() for lwip-wide randomization (to be defined in cc.h) 1473 1474 2009-12-31: Simon Goldschmidt 1475 * tcpip.c, init.c, memp.c, sys.c, memp_std.h, sys.h, tcpip.h 1476 added timers.c/.h: Separated timer implementation from semaphore/mbox 1477 implementation, moved timer implementation to timers.c/.h, timers are 1478 now only called from tcpip_thread or by explicitly checking them. 1479 (TASK#7235) 1480 1481 2009-12-27: Simon Goldschmidt 1482 * opt.h, etharp.h/.c, init.c, tcpip.c: Added an additional option 1483 LWIP_ETHERNET to support ethernet without ARP (necessary for pure PPPoE) 1484 1485 1486 ++ Bugfixes: 1487 1488 2011-04-20: Simon Goldschmidt 1489 * sys_arch.txt: sys_arch_timeouts() is not needed any more. 1490 1491 2011-04-13: Simon Goldschmidt 1492 * tcp.c, udp.c: Fixed bug #33048 (Bad range for IP source port numbers) by 1493 using ports in the IANA private/dynamic range (49152 through 65535). 1494 1495 2011-03-29: Simon Goldschmidt, patch by Emil Lhungdahl: 1496 * etharp.h/.c: Fixed broken VLAN support. 1497 1498 2011-03-27: Simon Goldschmidt 1499 * tcp.c: Fixed bug #32926 (TCP_RMV(&tcp_bound_pcbs) is called on unbound tcp 1500 pcbs) by checking if the pcb was bound (local_port != 0). 1501 1502 2011-03-27: Simon Goldschmidt 1503 * ppp.c: Fixed bug #32280 (ppp: a pbuf is freed twice) 1504 1505 2011-03-27: Simon Goldschmidt 1506 * sockets.c: Fixed bug #32906: lwip_connect+lwip_send did not work for udp and 1507 raw pcbs with LWIP_TCPIP_CORE_LOCKING==1. 1508 1509 2011-03-27: Simon Goldschmidt 1510 * tcp_out.c: Fixed bug #32820 (Outgoing TCP connections created before route 1511 is present never times out) by starting retransmission timer before checking 1512 route. 1513 1514 2011-03-22: Simon Goldschmidt 1515 * ppp.c: Fixed bug #32648 (PPP code crashes when terminating a link) by only 1516 calling sio_read_abort() if the file descriptor is valid. 1517 1518 2011-03-14: Simon Goldschmidt 1519 * err.h/.c, sockets.c, api_msg.c: fixed bug #31748 (Calling non-blocking connect 1520 more than once can render a socket useless) since it mainly involves changing 1521 "FATAL" classification of error codes: ERR_USE and ERR_ISCONN just aren't fatal. 1522 1523 2011-03-13: Simon Goldschmidt 1524 * sockets.c: fixed bug #32769 (ESHUTDOWN is linux-specific) by fixing 1525 err_to_errno_table (ERR_CLSD: ENOTCONN instead of ESHUTDOWN), ERR_ISCONN: 1526 use EALRADY instead of -1 1527 1528 2011-03-13: Simon Goldschmidt 1529 * api_lib.c: netconn_accept: return ERR_ABRT instead of ERR_CLSD if the 1530 connection has been aborted by err_tcp (since this is not a normal closing 1531 procedure). 1532 1533 2011-03-13: Simon Goldschmidt 1534 * tcp.c: tcp_bind: return ERR_VAL instead of ERR_ISCONN when trying to bind 1535 with pcb->state != CLOSED 1536 1537 2011-02-17: Simon Goldschmidt 1538 * rawapi.txt: Fixed bug #32561 tcp_poll argument definition out-of-order in 1539 documentation 1540 1541 2011-02-17: Simon Goldschmidt 1542 * many files: Added missing U/UL modifiers to fix 16-bit-arch portability. 1543 1544 2011-01-24: Simon Goldschmidt 1545 * sockets.c: Fixed bug #31741: lwip_select seems to have threading problems 1546 1547 2010-12-02: Simon Goldschmidt 1548 * err.h: Fixed ERR_IS_FATAL so that ERR_WOULDBLOCK is not fatal. 1549 1550 2010-11-23: Simon Goldschmidt 1551 * api.h, api_lib.c, api_msg.c, sockets.c: netconn.recv_avail is only used for 1552 LWIP_SO_RCVBUF and ioctl/FIONREAD. 1553 1554 2010-11-23: Simon Goldschmidt 1555 * etharp.c: Fixed bug #31720: ARP-queueing: RFC 1122 recommends to queue at 1556 least 1 packet -> ARP_QUEUEING==0 now queues the most recent packet. 1557 1558 2010-11-23: Simon Goldschmidt 1559 * tcp_in.c: Fixed bug #30577: tcp_input: don't discard ACK-only packets after 1560 refusing 'refused_data' again. 1561 1562 2010-11-22: Simon Goldschmidt 1563 * sockets.c: Fixed bug #31590: getsockopt(... SO_ERROR ...) gives EINPROGRESS 1564 after a successful nonblocking connection. 1565 1566 2010-11-22: Simon Goldschmidt 1567 * etharp.c: Fixed bug #31722: IP packets sent with an AutoIP source addr 1568 must be sent link-local 1569 1570 2010-11-22: Simon Goldschmidt 1571 * timers.c: patch #7329: tcp_timer_needed prototype was ifdef'ed out for 1572 LWIP_TIMERS==0 1573 1574 2010-11-20: Simon Goldschmidt 1575 * sockets.c: Fixed bug #31170: lwip_setsockopt() does not set socket number 1576 1577 2010-11-20: Simon Goldschmidt 1578 * sockets.h: Fixed bug #31304: Changed SHUT_RD, SHUT_WR and SHUT_RDWR to 1579 resemble other stacks. 1580 1581 2010-11-20: Simon Goldschmidt 1582 * dns.c: Fixed bug #31535: TCP_SND_QUEUELEN must be at least 2 or else 1583 no-copy TCP writes will never succeed. 1584 1585 2010-11-20: Simon Goldschmidt 1586 * dns.c: Fixed bug #31701: Error return value from dns_gethostbyname() does 1587 not match documentation: return ERR_ARG instead of ERR_VAL if not 1588 initialized or wrong argument. 1589 1590 2010-10-20: Simon Goldschmidt 1591 * sockets.h: Fixed bug #31385: sizeof(struct sockaddr) is 30 but should be 16 1592 1593 2010-10-05: Simon Goldschmidt 1594 * dhcp.c: Once again fixed #30038: DHCP/AutoIP cooperation failed when 1595 replugging the network cable after an AutoIP address was assigned. 1596 1597 2010-08-10: Simon Goldschmidt 1598 * tcp.c: Fixed bug #30728: tcp_new_port() did not check listen pcbs 1599 1600 2010-08-03: Simon Goldschmidt 1601 * udp.c, raw.c: Don't chain empty pbufs when sending them (fixes bug #30625) 1602 1603 2010-08-01: Simon Goldschmidt (patch by Greg Renda) 1604 * ppp.c: Applied patch #7264 (PPP protocols are rejected incorrectly on big 1605 endian architectures) 1606 1607 2010-07-28: Simon Goldschmidt 1608 * api_lib.c, api_msg.c, sockets.c, mib2.c: Fixed compilation with TCP or UDP 1609 disabled. 1610 1611 2010-07-27: Simon Goldschmidt 1612 * tcp.c: Fixed bug #30565 (tcp_connect() check bound list): that check did no 1613 harm but never did anything 1614 1615 2010-07-21: Simon Goldschmidt 1616 * ip.c: Fixed invalid fix for bug #30402 (CHECKSUM_GEN_IP_INLINE does not 1617 add IP options) 1618 1619 2010-07-16: Kieran Mansley 1620 * msg_in.c: Fixed SNMP ASN constant defines to not use ! operator 1621 1622 2010-07-10: Simon Goldschmidt 1623 * ip.c: Fixed bug #30402: CHECKSUM_GEN_IP_INLINE does not add IP options 1624 1625 2010-06-30: Simon Goldschmidt 1626 * api_msg.c: fixed bug #30300 (shutdown parameter was not initialized in 1627 netconn_delete) 1628 1629 2010-06-28: Kieran Mansley 1630 * timers.c remove unportable printing of C function pointers 1631 1632 2010-06-24: Simon Goldschmidt 1633 * init.c, timers.c/.h, opt.h, memp_std.h: From patch #7221: added flag 1634 NO_SYS_NO_TIMERS to drop timer support for NO_SYS==1 for easier upgrading 1635 1636 2010-06-24: Simon Goldschmidt 1637 * api(_lib).c/.h, api_msg.c/.h, sockets.c/.h: Fixed bug #10088: Correctly 1638 implemented shutdown at socket level. 1639 1640 2010-06-21: Simon Goldschmidt 1641 * pbuf.c/.h, ip_frag.c/.h, opt.h, memp_std.h: Fixed bug #29361 (ip_frag has 1642 problems with zero-copy DMA MACs) by adding custom pbufs and implementing 1643 custom pbufs that reference other (original) pbufs. Additionally set 1644 IP_FRAG_USES_STATIC_BUF=0 as default to be on the safe side. 1645 1646 2010-06-15: Simon Goldschmidt 1647 * dhcp.c: Fixed bug #29970: DHCP endian issue parsing option responses 1648 1649 2010-06-14: Simon Goldschmidt 1650 * autoip.c: Fixed bug #30039: AutoIP does not reuse previous addresses 1651 1652 2010-06-12: Simon Goldschmidt 1653 * dhcp.c: Fixed bug #30038: dhcp_network_changed doesn't reset AUTOIP coop 1654 state 1655 1656 2010-05-17: Simon Goldschmidt 1657 * netdb.c: Correctly NULL-terminate h_addr_list 1658 1659 2010-05-16: Simon Goldschmidt 1660 * def.h/.c: changed the semantics of LWIP_PREFIX_BYTEORDER_FUNCS to prevent 1661 "symbol already defined" i.e. when linking to winsock 1662 1663 2010-05-05: Simon Goldschmidt 1664 * def.h, timers.c: Fixed bug #29769 (sys_check_timeouts: sys_now() may 1665 overflow) 1666 1667 2010-04-21: Simon Goldschmidt 1668 * api_msg.c: Fixed bug #29617 (sometime cause stall on delete listening 1669 connection) 1670 1671 2010-03-28: Luca Ceresoli 1672 * ip_addr.c/.h: patch #7143: Add a few missing const qualifiers 1673 1674 2010-03-27: Luca Ceresoli 1675 * mib2.c: patch #7130: remove meaningless const qualifiers 1676 1677 2010-03-26: Simon Goldschmidt 1678 * tcp_out.c: Make LWIP_NETIF_TX_SINGLE_PBUF work for TCP, too 1679 1680 2010-03-26: Simon Goldschmidt 1681 * various files: Fixed compiling with different options disabled (TCP/UDP), 1682 triggered by bug #29345; don't allocate acceptmbox if LWIP_TCP is disabled 1683 1684 2010-03-25: Simon Goldschmidt 1685 * sockets.c: Fixed bug #29332: lwip_select() processes readset incorrectly 1686 1687 2010-03-25: Simon Goldschmidt 1688 * tcp_in.c, test_tcp_oos.c: Fixed bug #29080: Correctly handle remote side 1689 overrunning our rcv_wnd in ooseq case. 1690 1691 2010-03-22: Simon Goldschmidt 1692 * tcp.c: tcp_listen() did not copy the pcb's prio. 1693 1694 2010-03-19: Simon Goldschmidt 1695 * snmp_msg.c: Fixed bug #29256: SNMP Trap address was not correctly set 1696 1697 2010-03-14: Simon Goldschmidt 1698 * opt.h, etharp.h: Fixed bug #29148 (Incorrect PBUF_POOL_BUFSIZE for ports 1699 where ETH_PAD_SIZE > 0) by moving definition of ETH_PAD_SIZE to opt.h 1700 and basing PBUF_LINK_HLEN on it. 1701 1702 2010-03-08: Simon Goldschmidt 1703 * netif.c, ipv4/ip.c: task #10241 (AutoIP: don't break existing connections 1704 when assiging routable address): when checking incoming packets and 1705 aborting existing connection on address change, filter out link-local 1706 addresses. 1707 1708 2010-03-06: Simon Goldschmidt 1709 * sockets.c: Fixed LWIP_NETIF_TX_SINGLE_PBUF for LWIP_TCPIP_CORE_LOCKING 1710 1711 2010-03-06: Simon Goldschmidt 1712 * ipv4/ip.c: Don't try to forward link-local addresses 1713 1714 2010-03-06: Simon Goldschmidt 1715 * etharp.c: Fixed bug #29087: etharp: don't send packets for LinkLocal- 1716 addresses to gw 1717 1718 2010-03-05: Simon Goldschmidt 1719 * dhcp.c: Fixed bug #29072: Correctly set ciaddr based on message-type 1720 and state. 1721 1722 2010-03-05: Simon Goldschmidt 1723 * api_msg.c: Correctly set TCP_WRITE_FLAG_MORE when netconn_write is split 1724 into multiple calls to tcp_write. 1725 1726 2010-02-21: Simon Goldschmidt 1727 * opt.h, mem.h, dns.c: task #10140: Remove DNS_USES_STATIC_BUF (keep 1728 the implementation of DNS_USES_STATIC_BUF==1) 1729 1730 2010-02-20: Simon Goldschmidt 1731 * tcp.h, tcp.c, tcp_in.c, tcp_out.c: Task #10088: Correctly implement 1732 close() vs. shutdown(). Now the application does not get any more 1733 recv callbacks after calling tcp_close(). Added tcp_shutdown(). 1734 1735 2010-02-19: Simon Goldschmidt 1736 * mem.c/.h, pbuf.c: Renamed mem_realloc() to mem_trim() to prevent 1737 confusion with realloc() 1738 1739 2010-02-15: Simon Goldschmidt/Stephane Lesage 1740 * netif.c/.h: Link status does not depend on LWIP_NETIF_LINK_CALLBACK 1741 (fixes bug #28899) 1742 1743 2010-02-14: Simon Goldschmidt 1744 * netif.c: Fixed bug #28877 (Duplicate ARP gratuitous packet with 1745 LWIP_NETIF_LINK_CALLBACK set on) by only sending if both link- and 1746 admin-status of a netif are up 1747 1748 2010-02-14: Simon Goldschmidt 1749 * opt.h: Disable ETHARP_TRUST_IP_MAC by default since it slows down packet 1750 reception and is not really necessary 1751 1752 2010-02-14: Simon Goldschmidt 1753 * etharp.c/.h: Fixed ARP input processing: only add a new entry if a 1754 request was directed as us (RFC 826, Packet Reception), otherwise 1755 only update existing entries; internalized some functions 1756 1757 2010-02-14: Simon Goldschmidt 1758 * netif.h, etharp.c, tcpip.c: Fixed bug #28183 (ARP and TCP/IP cannot be 1759 disabled on netif used for PPPoE) by adding a new netif flag 1760 (NETIF_FLAG_ETHERNET) that tells the stack the device is an ethernet 1761 device but prevents usage of ARP (so that ethernet_input can be used 1762 for PPPoE). 1763 1764 2010-02-12: Simon Goldschmidt 1765 * netif.c: netif_set_link_up/down: only do something if the link state 1766 actually changes 1767 1768 2010-02-12: Simon Goldschmidt/Stephane Lesage 1769 * api_msg.c: Fixed bug #28865 (Cannot close socket/netconn in non-blocking 1770 connect) 1771 1772 2010-02-12: Simon Goldschmidt 1773 * mem.h: Fixed bug #28866 (mem_realloc function defined in mem.h) 1774 1775 2010-02-09: Simon Goldschmidt 1776 * api_lib.c, api_msg.c, sockets.c, api.h, api_msg.h: Fixed bug #22110 1777 (recv() makes receive window update for data that wasn't received by 1778 application) 1779 1780 2010-02-09: Simon Goldschmidt/Stephane Lesage 1781 * sockets.c: Fixed bug #28853 (lwip_recvfrom() returns 0 on receive time-out 1782 or any netconn_recv() error) 1783 1784 2010-02-09: Simon Goldschmidt 1785 * ppp.c: task #10154 (PPP: Update snmp in/out counters for tx/rx packets) 1786 1787 2010-02-09: Simon Goldschmidt 1788 * netif.c: For loopback packets, adjust the stats- and snmp-counters 1789 for the loopback netif. 1790 1791 2010-02-08: Simon Goldschmidt 1792 * igmp.c/.h, ip.h: Moved most defines from igmp.h to igmp.c for clarity 1793 since they are not used anywhere else. 1794 1795 2010-02-08: Simon Goldschmidt (Stéphane Lesage) 1796 * igmp.c, igmp.h, stats.c, stats.h: Improved IGMP stats 1797 (patch from bug #28798) 1798 1799 2010-02-08: Simon Goldschmidt (Stéphane Lesage) 1800 * igmp.c: Fixed bug #28798 (Error in "Max Response Time" processing) and 1801 another bug when LWIP_RAND() returns zero. 1802 1803 2010-02-04: Simon Goldschmidt 1804 * nearly every file: Use macros defined in ip_addr.h (some of them new) 1805 to work with IP addresses (preparation for bug #27352 - Change ip_addr 1806 from struct to typedef (u32_t) - and better code). 1807 1808 2010-01-31: Simon Goldschmidt 1809 * netif.c: Don't call the link-callback from netif_set_up/down() since 1810 this invalidly retriggers DHCP. 1811 1812 2010-01-29: Simon Goldschmidt 1813 * ip_addr.h, inet.h, def.h, inet.c, def.c, more: Cleanly separate the 1814 portability file inet.h and its contents from the stack: moved htonX- 1815 functions to def.h (and the new def.c - they are not ipv4 dependent), 1816 let inet.h depend on ip_addr.h and not the other way round. 1817 This fixes bug #28732. 1818 1819 2010-01-28: Kieran Mansley 1820 * tcp.c: Ensure ssthresh >= 2*MSS 1821 1822 2010-01-27: Simon Goldschmidt 1823 * tcp.h, tcp.c, tcp_in.c: Fixed bug #27871: Calling tcp_abort() in recv 1824 callback can lead to accessing unallocated memory. As a consequence, 1825 ERR_ABRT means the application has called tcp_abort()! 1826 1827 2010-01-25: Simon Goldschmidt 1828 * snmp_structs.h, msg_in.c: Partly fixed bug #22070 (MIB_OBJECT_WRITE_ONLY 1829 not implemented in SNMP): write-only or not-accessible are still 1830 returned by getnext (though not by get) 1831 1832 2010-01-24: Simon Goldschmidt 1833 * snmp: Renamed the private mib node from 'private' to 'mib_private' to 1834 not use reserved C/C++ keywords 1835 1836 2010-01-23: Simon Goldschmidt 1837 * sockets.c: Fixed bug #28716: select() returns 0 after waiting for less 1838 than 1 ms 1839 1840 2010-01-21: Simon Goldschmidt 1841 * tcp.c, api_msg.c: Fixed bug #28651 (tcp_connect: no callbacks called 1842 if tcp_enqueue fails) both in raw- and netconn-API 1843 1844 2010-01-19: Simon Goldschmidt 1845 * api_msg.c: Fixed bug #27316: netconn: Possible deadlock in err_tcp 1846 1847 2010-01-18: Iordan Neshev/Simon Goldschmidt 1848 * src/netif/ppp: reorganised PPP sourcecode to 2.3.11 including some 1849 bugfix backports from 2.4.x. 1850 1851 2010-01-18: Simon Goldschmidt 1852 * mem.c: Fixed bug #28679: mem_realloc calculates mem_stats wrong 1853 1854 2010-01-17: Simon Goldschmidt 1855 * api_lib.c, api_msg.c, (api_msg.h, api.h, sockets.c, tcpip.c): 1856 task #10102: "netconn: clean up conn->err threading issues" by adding 1857 error return value to struct api_msg_msg 1858 1859 2010-01-17: Simon Goldschmidt 1860 * api.h, api_lib.c, sockets.c: Changed netconn_recv() and netconn_accept() 1861 to return err_t (bugs #27709 and #28087) 1862 1863 2010-01-14: Simon Goldschmidt 1864 * ...: Use typedef for function prototypes throughout the stack. 1865 1866 2010-01-13: Simon Goldschmidt 1867 * api_msg.h/.c, api_lib.c: Fixed bug #26672 (close connection when receive 1868 window = 0) by correctly draining recvmbox/acceptmbox 1869 1870 2010-01-11: Simon Goldschmidt 1871 * pap.c: Fixed bug #13315 (PPP PAP authentication can result in 1872 erroneous callbacks) by copying the code from recent pppd 1873 1874 2010-01-10: Simon Goldschmidt 1875 * raw.c: Fixed bug #28506 (raw_bind should filter received packets) 1876 1877 2010-01-10: Simon Goldschmidt 1878 * tcp.h/.c: bug #28127 (remove call to tcp_output() from tcp_ack(_now)()) 1879 1880 2010-01-08: Simon Goldschmidt 1881 * sockets.c: Fixed bug #28519 (lwip_recvfrom bug with len > 65535) 1882 1883 2010-01-08: Simon Goldschmidt 1884 * dns.c: Copy hostname for DNS_LOCAL_HOSTLIST_IS_DYNAMIC==1 since string 1885 passed to dns_local_addhost() might be volatile 1886 1887 2010-01-07: Simon Goldschmidt 1888 * timers.c, tcp.h: Call tcp_timer_needed() with NO_SYS==1, too 1889 1890 2010-01-06: Simon Goldschmidt 1891 * netdb.h: Fixed bug #28496: missing include guards in netdb.h 1892 1893 2009-12-31: Simon Goldschmidt 1894 * many ppp files: Reorganised PPP source code from ucip structure to pppd 1895 structure to easily compare our code against the pppd code (around v2.3.1) 1896 1897 2009-12-27: Simon Goldschmidt 1898 * tcp_in.c: Another fix for bug #28241 (ooseq processing) and adapted 1899 unit test 1900 1901 1902(STABLE-1.3.2) 1903 1904 ++ New features: 1905 1906 2009-10-27 Simon Goldschmidt/Stephan Lesage 1907 * netifapi.c/.h: Added netifapi_netif_set_addr() 1908 1909 2009-10-07 Simon Goldschmidt/Fabian Koch 1910 * api_msg.c, netbuf.c/.h, opt.h: patch #6888: Patch for UDP Netbufs to 1911 support dest-addr and dest-port (optional: LWIP_NETBUF_RECVINFO) 1912 1913 2009-08-26 Simon Goldschmidt/Simon Kallweit 1914 * slipif.c/.h: bug #26397: SLIP polling support 1915 1916 2009-08-25 Simon Goldschmidt 1917 * opt.h, etharp.h/.c: task #9033: Support IEEE 802.1q tagged frame (VLAN), 1918 New configuration options ETHARP_SUPPORT_VLAN and ETHARP_VLAN_CHECK. 1919 1920 2009-08-25 Simon Goldschmidt 1921 * ip_addr.h, netdb.c: patch #6900: added define ip_ntoa(struct ip_addr*) 1922 1923 2009-08-24 Jakob Stoklund Olesen 1924 * autoip.c, dhcp.c, netif.c: patch #6725: Teach AutoIP and DHCP to respond 1925 to netif_set_link_up(). 1926 1927 2009-08-23 Simon Goldschmidt 1928 * tcp.h/.c: Added function tcp_debug_state_str() to convert a tcp state 1929 to a human-readable string. 1930 1931 ++ Bugfixes: 1932 1933 2009-12-24: Kieran Mansley 1934 * tcp_in.c Apply patches from Oleg Tyshev to improve OOS processing 1935 (BUG#28241) 1936 1937 2009-12-06: Simon Goldschmidt 1938 * ppp.h/.c: Fixed bug #27079 (Yet another leak in PPP): outpacket_buf can 1939 be statically allocated (like in ucip) 1940 1941 2009-12-04: Simon Goldschmidt (patch by Ioardan Neshev) 1942 * pap.c: patch #6969: PPP: missing PAP authentication UNTIMEOUT 1943 1944 2009-12-03: Simon Goldschmidt 1945 * tcp.h, tcp_in.c, tcp_out.c: Fixed bug #28106: dup ack for fast retransmit 1946 could have non-zero length 1947 1948 2009-12-02: Simon Goldschmidt 1949 * tcp_in.c: Fixed bug #27904: TCP sends too many ACKs: delay resetting 1950 tcp_input_pcb until after calling the pcb's callbacks 1951 1952 2009-11-29: Simon Goldschmidt 1953 * tcp_in.c: Fixed bug #28054: Two segments with FIN flag on the out-of- 1954 sequence queue, also fixed PBUF_POOL leak in the out-of-sequence code 1955 1956 2009-11-29: Simon Goldschmidt 1957 * pbuf.c: Fixed bug #28064: pbuf_alloc(PBUF_POOL) is not thread-safe by 1958 queueing a call into tcpip_thread to free ooseq-bufs if the pool is empty 1959 1960 2009-11-26: Simon Goldschmidt 1961 * tcp.h: Fixed bug #28098: Nagle can prevent fast retransmit from sending 1962 segment 1963 1964 2009-11-26: Simon Goldschmidt 1965 * tcp.h, sockets.c: Fixed bug #28099: API required to disable Nagle 1966 algorithm at PCB level 1967 1968 2009-11-22: Simon Goldschmidt 1969 * tcp_out.c: Fixed bug #27905: FIN isn't combined with data on unsent 1970 1971 2009-11-22: Simon Goldschmidt (suggested by Bill Auerbach) 1972 * tcp.c: tcp_alloc: prevent increasing stats.err for MEMP_TCP_PCB when 1973 reusing time-wait pcb 1974 1975 2009-11-20: Simon Goldschmidt (patch by Albert Bartel) 1976 * sockets.c: Fixed bug #28062: Data received directly after accepting 1977 does not wake up select 1978 1979 2009-11-11: Simon Goldschmidt 1980 * netdb.h: Fixed bug #27994: incorrect define for freeaddrinfo(addrinfo) 1981 1982 2009-10-30: Simon Goldschmidt 1983 * opt.h: Increased default value for TCP_MSS to 536, updated default 1984 value for TCP_WND to 4*TCP_MSS to keep delayed ACK working. 1985 1986 2009-10-28: Kieran Mansley 1987 * tcp_in.c, tcp_out.c, tcp.h: re-work the fast retransmission code 1988 to follow algorithm from TCP/IP Illustrated 1989 1990 2009-10-27: Kieran Mansley 1991 * tcp_in.c: fix BUG#27445: grow cwnd with every duplicate ACK 1992 1993 2009-10-25: Simon Goldschmidt 1994 * tcp.h: bug-fix in the TCP_EVENT_RECV macro (has to call tcp_recved if 1995 pcb->recv is NULL to keep rcv_wnd correct) 1996 1997 2009-10-25: Simon Goldschmidt 1998 * tcp_in.c: Fixed bug #26251: RST process in TIME_WAIT TCP state 1999 2000 2009-10-23: Simon Goldschmidt (David Empson) 2001 * tcp.c: Fixed bug #27783: Silly window avoidance for small window sizes 2002 2003 2009-10-21: Simon Goldschmidt 2004 * tcp_in.c: Fixed bug #27215: TCP sent() callback gives leading and 2005 trailing 1 byte len (SYN/FIN) 2006 2007 2009-10-21: Simon Goldschmidt 2008 * tcp_out.c: Fixed bug #27315: zero window probe and FIN 2009 2010 2009-10-19: Simon Goldschmidt 2011 * dhcp.c/.h: Minor code simplification (don't store received pbuf, change 2012 conditional code to assert where applicable), check pbuf length before 2013 testing for valid reply 2014 2015 2009-10-19: Simon Goldschmidt 2016 * dhcp.c: Removed most calls to udp_connect since they aren't necessary 2017 when using udp_sendto_if() - always stay connected to IP_ADDR_ANY. 2018 2019 2009-10-16: Simon Goldschmidt 2020 * ip.c: Fixed bug #27390: Source IP check in ip_input() causes it to drop 2021 valid DHCP packets -> allow 0.0.0.0 as source address when LWIP_DHCP is 2022 enabled 2023 2024 2009-10-15: Simon Goldschmidt (Oleg Tyshev) 2025 * tcp_in.c: Fixed bug #27329: dupacks by unidirectional data transmit 2026 2027 2009-10-15: Simon Goldschmidt 2028 * api_lib.c: Fixed bug #27709: conn->err race condition on netconn_recv() 2029 timeout 2030 2031 2009-10-15: Simon Goldschmidt 2032 * autoip.c: Fixed bug #27704: autoip starts with wrong address 2033 LWIP_AUTOIP_CREATE_SEED_ADDR() returned address in host byte order instead 2034 of network byte order 2035 2036 2009-10-11 Simon Goldschmidt (Jörg Kesten) 2037 * tcp_out.c: Fixed bug #27504: tcp_enqueue wrongly concatenates segments 2038 which are not consecutive when retransmitting unacked segments 2039 2040 2009-10-09 Simon Goldschmidt 2041 * opt.h: Fixed default values of some stats to only be enabled if used 2042 Fixes bug #27338: sys_stats is defined when NO_SYS = 1 2043 2044 2009-08-30 Simon Goldschmidt 2045 * ip.c: Fixed bug bug #27345: "ip_frag() does not use the LWIP_NETIF_LOOPBACK 2046 function" by checking for loopback before calling ip_frag 2047 2048 2009-08-25 Simon Goldschmidt 2049 * dhcp.c: fixed invalid dependency to etharp_query if DHCP_DOES_ARP_CHECK==0 2050 2051 2009-08-23 Simon Goldschmidt 2052 * ppp.c: bug #27078: Possible memory leak in pppInit() 2053 2054 2009-08-23 Simon Goldschmidt 2055 * netdb.c, dns.c: bug #26657: DNS, if host name is "localhost", result 2056 is error. 2057 2058 2009-08-23 Simon Goldschmidt 2059 * opt.h, init.c: bug #26649: TCP fails when TCP_MSS > TCP_SND_BUF 2060 Fixed wrong parenthesis, added check in init.c 2061 2062 2009-08-23 Simon Goldschmidt 2063 * ppp.c: bug #27266: wait-state debug message in pppMain occurs every ms 2064 2065 2009-08-23 Simon Goldschmidt 2066 * many ppp files: bug #27267: Added include to string.h where needed 2067 2068 2009-08-23 Simon Goldschmidt 2069 * tcp.h: patch #6843: tcp.h macro optimization patch (for little endian) 2070 2071 2072(STABLE-1.3.1) 2073 2074 ++ New features: 2075 2076 2009-05-10 Simon Goldschmidt 2077 * opt.h, sockets.c, pbuf.c, netbuf.h, pbuf.h: task #7013: Added option 2078 LWIP_NETIF_TX_SINGLE_PBUF to try to create transmit packets from only 2079 one pbuf to help MACs that don't support scatter-gather DMA. 2080 2081 2009-05-09 Simon Goldschmidt 2082 * icmp.h, icmp.c: Shrinked ICMP code, added option to NOT check icoming 2083 ECHO pbuf for size (just use it): LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN 2084 2085 2009-05-05 Simon Goldschmidt, Jakob Stoklund Olesen 2086 * ip.h, ip.c: Added ip_current_netif() & ip_current_header() to receive 2087 extended info about the currently received packet. 2088 2089 2009-04-27 Simon Goldschmidt 2090 * sys.h: Made SYS_LIGHTWEIGHT_PROT and sys_now() work with NO_SYS=1 2091 2092 2009-04-25 Simon Goldschmidt 2093 * mem.c, opt.h: Added option MEM_USE_POOLS_TRY_BIGGER_POOL to try the next 2094 bigger malloc pool if one is empty (only usable with MEM_USE_POOLS). 2095 2096 2009-04-21 Simon Goldschmidt 2097 * dns.c, init.c, dns.h, opt.h: task #7507, patch #6786: DNS supports static 2098 hosts table. New configuration options DNS_LOCAL_HOSTLIST and 2099 DNS_LOCAL_HOSTLIST_IS_DYNAMIC. Also, DNS_LOOKUP_LOCAL_EXTERN() can be defined 2100 as an external function for lookup. 2101 2102 2009-04-15 Simon Goldschmidt 2103 * dhcp.c: patch #6763: Global DHCP XID can be redefined to something more unique 2104 2105 2009-03-31 Kieran Mansley 2106 * tcp.c, tcp_out.c, tcp_in.c, sys.h, tcp.h, opts.h: add support for 2107 TCP timestamp options, off by default. Rework tcp_enqueue() to 2108 take option flags rather than specified option data 2109 2110 2009-02-18 Simon Goldschmidt 2111 * cc.h: Added printf formatter for size_t: SZT_F 2112 2113 2009-02-16 Simon Goldschmidt (patch by Rishi Khan) 2114 * icmp.c, opt.h: patch #6539: (configurable) response to broadcast- and multicast 2115 pings 2116 2117 2009-02-12 Simon Goldschmidt 2118 * init.h: Added LWIP_VERSION to get the current version of the stack 2119 2120 2009-02-11 Simon Goldschmidt (suggested by Gottfried Spitaler) 2121 * opt.h, memp.h/.c: added MEMP_MEM_MALLOC to use mem_malloc/mem_free instead 2122 of the pool allocator (can save code size with MEM_LIBC_MALLOC if libc-malloc 2123 is otherwise used) 2124 2125 2009-01-28 Jonathan Larmour (suggested by Bill Bauerbach) 2126 * ipv4/inet_chksum.c, ipv4/lwip/inet_chksum.h: inet_chksum_pseudo_partial() 2127 is only used by UDPLITE at present, so conditionalise it. 2128 2129 2008-12-03 Simon Goldschmidt (base on patch from Luca Ceresoli) 2130 * autoip.c: checked in (slightly modified) patch #6683: Customizable AUTOIP 2131 "seed" address. This should reduce AUTOIP conflicts if 2132 LWIP_AUTOIP_CREATE_SEED_ADDR is overridden. 2133 2134 2008-10-02 Jonathan Larmour and Rishi Khan 2135 * sockets.c (lwip_accept): Return EWOULDBLOCK if would block on non-blocking 2136 socket. 2137 2138 2008-06-30 Simon Goldschmidt 2139 * mem.c, opt.h, stats.h: fixed bug #21433: Calling mem_free/pbuf_free from 2140 interrupt context isn't safe: LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT allows 2141 mem_free to run between mem_malloc iterations. Added illegal counter for 2142 mem stats. 2143 2144 2008-06-27 Simon Goldschmidt 2145 * stats.h/.c, some other files: patch #6483: stats module improvement: 2146 Added defines to display each module's statistic individually, added stats 2147 defines for MEM, MEMP and SYS modules, removed (unused) rexmit counter. 2148 2149 2008-06-17 Simon Goldschmidt 2150 * err.h: patch #6459: Made err_t overridable to use a more efficient type 2151 (define LWIP_ERR_T in cc.h) 2152 2153 2008-06-17 Simon Goldschmidt 2154 * slipif.c: patch #6480: Added a configuration option for slipif for symmetry 2155 to loopif 2156 2157 2008-06-17 Simon Goldschmidt (patch by Luca Ceresoli) 2158 * netif.c, loopif.c, ip.c, netif.h, loopif.h, opt.h: Checked in slightly 2159 modified version of patch # 6370: Moved loopif code to netif.c so that 2160 loopback traffic is supported on all netifs (all local IPs). 2161 Added option to limit loopback packets for each netifs. 2162 2163 2164 ++ Bugfixes: 2165 2009-08-12 Kieran Mansley 2166 * tcp_in.c, tcp.c: Fix bug #27209: handle trimming of segments when 2167 out of window or out of order properly 2168 2169 2009-08-12 Kieran Mansley 2170 * tcp_in.c: Fix bug #27199: use snd_wl2 instead of snd_wl1 2171 2172 2009-07-28 Simon Goldschmidt 2173 * mem.h: Fixed bug #27105: "realloc() cannot replace mem_realloc()"s 2174 2175 2009-07-27 Kieran Mansley 2176 * api.h api_msg.h netdb.h sockets.h: add missing #include directives 2177 2178 2009-07-09 Kieran Mansley 2179 * api_msg.c, sockets.c, api.h: BUG23240 use signed counters for 2180 recv_avail and don't increment counters until message successfully 2181 sent to mbox 2182 2183 2009-06-25 Kieran Mansley 2184 * api_msg.c api.h: BUG26722: initialise netconn write variables 2185 in netconn_alloc 2186 2187 2009-06-25 Kieran Mansley 2188 * tcp.h: BUG26879: set ret value in TCP_EVENT macros when function is not set 2189 2190 2009-06-25 Kieran Mansley 2191 * tcp.c, tcp_in.c, tcp_out.c, tcp.h: BUG26301 and BUG26267: correct 2192 simultaneous close behaviour, and make snd_nxt have the same meaning 2193 as in the RFCs. 2194 2195 2009-05-12 Simon Goldschmidt 2196 * etharp.h, etharp.c, netif.c: fixed bug #26507: "Gratuitous ARP depends on 2197 arp_table / uses etharp_query" by adding etharp_gratuitous() 2198 2199 2009-05-12 Simon Goldschmidt 2200 * ip.h, ip.c, igmp.c: bug #26487: Added ip_output_if_opt that can add IP options 2201 to the IP header (used by igmp_ip_output_if) 2202 2203 2009-05-06 Simon Goldschmidt 2204 * inet_chksum.c: On little endian architectures, use LWIP_PLATFORM_HTONS (if 2205 defined) for SWAP_BYTES_IN_WORD to speed up checksumming. 2206 2207 2009-05-05 Simon Goldschmidt 2208 * sockets.c: bug #26405: Prematurely released semaphore causes lwip_select() 2209 to crash 2210 2211 2009-05-04 Simon Goldschmidt 2212 * init.c: snmp was not initialized in lwip_init() 2213 2214 2009-05-04 Frédéric Bernon 2215 * dhcp.c, netbios.c: Changes if IP_SOF_BROADCAST is enabled. 2216 2217 2009-05-03 Simon Goldschmidt 2218 * tcp.h: bug #26349: Nagle algorithm doesn't send although segment is full 2219 (and unsent->next == NULL) 2220 2221 2009-05-02 Simon Goldschmidt 2222 * tcpip.h, tcpip.c: fixed tcpip_untimeout (does not need the time, broken after 2223 1.3.0 in CVS only) - fixes compilation of ppp_oe.c 2224 2225 2009-05-02 Simon Goldschmidt 2226 * msg_in.c: fixed bug #25636: SNMPSET value is ignored for integer fields 2227 2228 2009-05-01 Simon Goldschmidt 2229 * pap.c: bug #21680: PPP upap_rauthnak() drops legal NAK packets 2230 2231 2009-05-01 Simon Goldschmidt 2232 * ppp.c: bug #24228: Memory corruption with PPP and DHCP 2233 2234 2009-04-29 Frédéric Bernon 2235 * raw.c, udp.c, init.c, opt.h, ip.h, sockets.h: bug #26309: Implement the 2236 SO(F)_BROADCAST filter for all API layers. Avoid the unindented reception 2237 of broadcast packets even when this option wasn't set. Port maintainers 2238 which want to enable this filter have to set IP_SOF_BROADCAST=1 in opt.h. 2239 If you want this option also filter broadcast on recv operations, you also 2240 have to set IP_SOF_BROADCAST_RECV=1 in opt.h. 2241 2242 2009-04-28 Simon Goldschmidt, Jakob Stoklund Olesen 2243 * dhcp.c: patch #6721, bugs #25575, #25576: Some small fixes to DHCP and 2244 DHCP/AUTOIP cooperation 2245 2246 2009-04-25 Simon Goldschmidt, Oleg Tyshev 2247 * tcp_out.c: bug #24212: Deadlocked tcp_retransmit due to exceeded pcb->cwnd 2248 Fixed by sorting the unsent and unacked queues (segments are inserted at the 2249 right place in tcp_output and tcp_rexmit). 2250 2251 2009-04-25 Simon Goldschmidt 2252 * memp.c, mem.c, memp.h, mem_std.h: bug #26213 "Problem with memory allocation 2253 when debugging": memp_sizes contained the wrong sizes (including sanity 2254 regions); memp pools for MEM_USE_POOLS were too small 2255 2256 2009-04-24 Simon Goldschmidt, Frédéric Bernon 2257 * inet.c: patch #6765: Fix a small problem with the last changes (incorrect 2258 behavior, with with ip address string not ended by a '\0', a space or a 2259 end of line) 2260 2261 2009-04-19 Simon Goldschmidt 2262 * rawapi.txt: Fixed bug #26069: Corrected documentation: if tcp_connect fails, 2263 pcb->err is called, not pcb->connected (with an error code). 2264 2265 2009-04-19 Simon Goldschmidt 2266 * tcp_out.c: Fixed bug #26236: "TCP options (timestamp) don't work with 2267 no-copy-tcpwrite": deallocate option data, only concat segments with same flags 2268 2269 2009-04-19 Simon Goldschmidt 2270 * tcp_out.c: Fixed bug #25094: "Zero-length pbuf" (options are now allocated 2271 in the header pbuf, not the data pbuf) 2272 2273 2009-04-18 Simon Goldschmidt 2274 * api_msg.c: fixed bug #25695: Segmentation fault in do_writemore() 2275 2276 2009-04-15 Simon Goldschmidt 2277 * sockets.c: tried to fix bug #23559: lwip_recvfrom problem with tcp 2278 2279 2009-04-15 Simon Goldschmidt 2280 * dhcp.c: task #9192: mem_free of dhcp->options_in and dhcp->msg_in 2281 2282 2009-04-15 Simon Goldschmidt 2283 * ip.c, ip6.c, tcp_out.c, ip.h: patch #6808: Add a utility function 2284 ip_hinted_output() (for smaller code mainly) 2285 2286 2009-04-15 Simon Goldschmidt 2287 * inet.c: patch #6765: Supporting new line characters in inet_aton() 2288 2289 2009-04-15 Simon Goldschmidt 2290 * dhcp.c: patch #6764: DHCP rebind and renew did not send hostnam option; 2291 Converted constant OPTION_MAX_MSG_SIZE to netif->mtu, check if netif->mtu 2292 is big enough in dhcp_start 2293 2294 2009-04-15 Simon Goldschmidt 2295 * netbuf.c: bug #26027: netbuf_chain resulted in pbuf memory leak 2296 2297 2009-04-15 Simon Goldschmidt 2298 * sockets.c, ppp.c: bug #25763: corrected 4 occurrences of SMEMCPY to MEMCPY 2299 2300 2009-04-15 Simon Goldschmidt 2301 * sockets.c: bug #26121: set_errno can be overridden 2302 2303 2009-04-09 Kieran Mansley (patch from Luca Ceresoli <lucaceresoli>) 2304 * init.c, opt.h: Patch#6774 TCP_QUEUE_OOSEQ breaks compilation when 2305 LWIP_TCP==0 2306 2307 2009-04-09 Kieran Mansley (patch from Roy Lee <roylee17>) 2308 * tcp.h: Patch#6802 Add do-while-clauses to those function like 2309 macros in tcp.h 2310 2311 2009-03-31 Kieran Mansley 2312 * tcp.c, tcp_in.c, tcp_out.c, tcp.h, opt.h: Rework the way window 2313 updates are calculated and sent (BUG20515) 2314 2315 * tcp_in.c: cope with SYN packets received during established states, 2316 and retransmission of initial SYN. 2317 2318 * tcp_out.c: set push bit correctly when tcp segments are merged 2319 2320 2009-03-27 Kieran Mansley 2321 * tcp_out.c set window correctly on probes (correcting change made 2322 yesterday) 2323 2324 2009-03-26 Kieran Mansley 2325 * tcp.c, tcp_in.c, tcp.h: add tcp_abandon() to cope with dropping 2326 connections where no reset required (bug #25622) 2327 2328 * tcp_out.c: set TCP_ACK flag on keepalive and zero window probes 2329 (bug #20779) 2330 2331 2009-02-18 Simon Goldschmidt (Jonathan Larmour and Bill Auerbach) 2332 * ip_frag.c: patch #6528: the buffer used for IP_FRAG_USES_STATIC_BUF could be 2333 too small depending on MEM_ALIGNMENT 2334 2335 2009-02-16 Simon Goldschmidt 2336 * sockets.h/.c, api_*.h/.c: fixed arguments of socket functions to match the standard; 2337 converted size argument of netconn_write to 'size_t' 2338 2339 2009-02-16 Simon Goldschmidt 2340 * tcp.h, tcp.c: fixed bug #24440: TCP connection close problem on 64-bit host 2341 by moving accept callback function pointer to TCP_PCB_COMMON 2342 2343 2009-02-12 Simon Goldschmidt 2344 * dhcp.c: fixed bug #25345 (DHCPDECLINE is sent with "Maximum message size" 2345 option) 2346 2347 2009-02-11 Simon Goldschmidt 2348 * dhcp.c: fixed bug #24480 (releasing old udp_pdb and pbuf in dhcp_start) 2349 2350 2009-02-11 Simon Goldschmidt 2351 * opt.h, api_msg.c: added configurable default valud for netconn->recv_bufsize: 2352 RECV_BUFSIZE_DEFAULT (fixes bug #23726: pbuf pool exhaustion on slow recv()) 2353 2354 2009-02-10 Simon Goldschmidt 2355 * tcp.c: fixed bug #25467: Listen backlog is not reset on timeout in SYN_RCVD: 2356 Accepts_pending is decrease on a corresponding listen pcb when a connection 2357 in state SYN_RCVD is close. 2358 2359 2009-01-28 Jonathan Larmour 2360 * pbuf.c: reclaim pbufs from TCP out-of-sequence segments if we run 2361 out of pool pbufs. 2362 2363 2008-12-19 Simon Goldschmidt 2364 * many files: patch #6699: fixed some warnings on platform where sizeof(int) == 2 2365 2366 2008-12-10 Tamas Somogyi, Frédéric Bernon 2367 * sockets.c: fixed bug #25051: lwip_recvfrom problem with udp: fromaddr and 2368 port uses deleted netbuf. 2369 2370 2008-10-18 Simon Goldschmidt 2371 * tcp_in.c: fixed bug ##24596: Vulnerability on faulty TCP options length 2372 in tcp_parseopt 2373 2374 2008-10-15 Simon Goldschmidt 2375 * ip_frag.c: fixed bug #24517: IP reassembly crashes on unaligned IP headers 2376 by packing the struct ip_reass_helper. 2377 2378 2008-10-03 David Woodhouse, Jonathan Larmour 2379 * etharp.c (etharp_arp_input): Fix type aliasing problem copying ip address. 2380 2381 2008-10-02 Jonathan Larmour 2382 * dns.c: Hard-code structure sizes, to avoid issues on some compilers where 2383 padding is included. 2384 2385 2008-09-30 Jonathan Larmour 2386 * sockets.c (lwip_accept): check addr isn't NULL. If it's valid, do an 2387 assertion check that addrlen isn't NULL. 2388 2389 2008-09-30 Jonathan Larmour 2390 * tcp.c: Fix bug #24227, wrong error message in tcp_bind. 2391 2392 2008-08-26 Simon Goldschmidt 2393 * inet.h, ip_addr.h: fixed bug #24132: Cross-dependency between ip_addr.h and 2394 inet.h -> moved declaration of struct in_addr from ip_addr.h to inet.h 2395 2396 2008-08-14 Simon Goldschmidt 2397 * api_msg.c: fixed bug #23847: do_close_internal references freed memory (when 2398 tcp_close returns != ERR_OK) 2399 2400 2008-07-08 Frédéric Bernon 2401 * stats.h: Fix some build bugs introduced with patch #6483 (missing some parameters 2402 in macros, mainly if MEM_STATS=0 and MEMP_STATS=0). 2403 2404 2008-06-24 Jonathan Larmour 2405 * tcp_in.c: Fix for bug #23693 as suggested by Art R. Ensure cseg is unused 2406 if tcp_seg_copy fails. 2407 2408 2008-06-17 Simon Goldschmidt 2409 * inet_chksum.c: Checked in some ideas of patch #6460 (loop optimizations) 2410 and created defines for swapping bytes and folding u32 to u16. 2411 2412 2008-05-30 Kieran Mansley 2413 * tcp_in.c Remove redundant "if" statement, and use real rcv_wnd 2414 rather than rcv_ann_wnd when deciding if packets are in-window. 2415 Contributed by <arasmussen@consultant.datasys.swri.edu> 2416 2417 2008-05-30 Kieran Mansley 2418 * mem.h: Fix BUG#23254. Change macro definition of mem_* to allow 2419 passing as function pointers when MEM_LIBC_MALLOC is defined. 2420 2421 2008-05-09 Jonathan Larmour 2422 * err.h, err.c, sockets.c: Fix bug #23119: Reorder timeout error code to 2423 stop it being treated as a fatal error. 2424 2425 2008-04-15 Simon Goldschmidt 2426 * dhcp.c: fixed bug #22804: dhcp_stop doesn't clear NETIF_FLAG_DHCP 2427 (flag now cleared) 2428 2429 2008-03-27 Simon Goldschmidt 2430 * mem.c, tcpip.c, tcpip.h, opt.h: fixed bug #21433 (Calling mem_free/pbuf_free 2431 from interrupt context isn't safe): set LWIP_USE_HEAP_FROM_INTERRUPT to 1 2432 in lwipopts.h or use pbuf_free_callback(p)/mem_free_callback(m) to free pbufs 2433 or heap memory from interrupt context 2434 2435 2008-03-26 Simon Goldschmidt 2436 * tcp_in.c, tcp.c: fixed bug #22249: division by zero could occur if a remote 2437 host sent a zero mss as TCP option. 2438 2439 2440(STABLE-1.3.0) 2441 2442 ++ New features: 2443 2444 2008-03-10 Jonathan Larmour 2445 * inet_chksum.c: Allow choice of one of the sample algorithms to be 2446 made from lwipopts.h. Fix comment on how to override LWIP_CHKSUM. 2447 2448 2008-01-22 Frédéric Bernon 2449 * tcp.c, tcp_in.c, tcp.h, opt.h: Rename LWIP_CALCULATE_EFF_SEND_MSS in 2450 TCP_CALCULATE_EFF_SEND_MSS to have coherent TCP options names. 2451 2452 2008-01-14 Frédéric Bernon 2453 * rawapi.txt, api_msg.c, tcp.c, tcp_in.c, tcp.h: changes for task #7675 "Enable 2454 to refuse data on a TCP_EVENT_RECV call". Important, behavior changes for the 2455 tcp_recv callback (see rawapi.txt). 2456 2457 2008-01-14 Frédéric Bernon, Marc Chaland 2458 * ip.c: Integrate patch #6369" ip_input : checking before realloc". 2459 2460 2008-01-12 Frédéric Bernon 2461 * tcpip.h, tcpip.c, api.h, api_lib.c, api_msg.c, sockets.c: replace the field 2462 netconn::sem per netconn::op_completed like suggested for the task #7490 2463 "Add return value to sys_mbox_post". 2464 2465 2008-01-12 Frédéric Bernon 2466 * api_msg.c, opt.h: replace DEFAULT_RECVMBOX_SIZE per DEFAULT_TCP_RECVMBOX_SIZE, 2467 DEFAULT_UDP_RECVMBOX_SIZE and DEFAULT_RAW_RECVMBOX_SIZE (to optimize queues 2468 sizes), like suggested for the task #7490 "Add return value to sys_mbox_post". 2469 2470 2008-01-10 Frédéric Bernon 2471 * tcpip.h, tcpip.c: add tcpip_callback_with_block function for the task #7490 2472 "Add return value to sys_mbox_post". tcpip_callback is always defined as 2473 "blocking" ("block" parameter = 1). 2474 2475 2008-01-10 Frédéric Bernon 2476 * tcpip.h, tcpip.c, api.h, api_lib.c, api_msg.c, sockets.c: replace the field 2477 netconn::mbox (sys_mbox_t) per netconn::sem (sys_sem_t) for the task #7490 2478 "Add return value to sys_mbox_post". 2479 2480 2008-01-05 Frédéric Bernon 2481 * sys_arch.txt, api.h, api_lib.c, api_msg.h, api_msg.c, tcpip.c, sys.h, opt.h: 2482 Introduce changes for task #7490 "Add return value to sys_mbox_post" with some 2483 modifications in the sys_mbox api: sys_mbox_new take a "size" parameters which 2484 indicate the number of pointers query by the mailbox. There is three defines 2485 in opt.h to indicate sizes for tcpip::mbox, netconn::recvmbox, and for the 2486 netconn::acceptmbox. Port maintainers, you can decide to just add this new 2487 parameter in your implementation, but to ignore it to keep the previous behavior. 2488 The new sys_mbox_trypost function return a value to know if the mailbox is 2489 full or if the message is posted. Take a look to sys_arch.txt for more details. 2490 This new function is used in tcpip_input (so, can be called in an interrupt 2491 context since the function is not blocking), and in recv_udp and recv_raw. 2492 2493 2008-01-04 Frédéric Bernon, Simon Goldschmidt, Jonathan Larmour 2494 * rawapi.txt, api.h, api_lib.c, api_msg.h, api_msg.c, sockets.c, tcp.h, tcp.c, 2495 tcp_in.c, init.c, opt.h: rename backlog options with TCP_ prefix, limit the 2496 "backlog" parameter in an u8_t, 0 is interpreted as "smallest queue", add 2497 documentation in the rawapi.txt file. 2498 2499 2007-12-31 Kieran Mansley (based on patch from Per-Henrik Lundbolm) 2500 * tcp.c, tcp_in.c, tcp_out.c, tcp.h: Add TCP persist timer 2501 2502 2007-12-31 Frédéric Bernon, Luca Ceresoli 2503 * autoip.c, etharp.c: ip_addr.h: Integrate patch #6348: "Broadcast ARP packets 2504 in autoip". The change in etharp_raw could be removed, since all calls to 2505 etharp_raw use ethbroadcast for the "ethdst_addr" parameter. But it could be 2506 wrong in the future. 2507 2508 2007-12-30 Frédéric Bernon, Tom Evans 2509 * ip.c: Fix bug #21846 "LwIP doesn't appear to perform any IP Source Address 2510 Filtering" reported by Tom Evans. 2511 2512 2007-12-21 Frédéric Bernon, Simon Goldschmidt, Jonathan Larmour 2513 * tcp.h, opt.h, api.h, api_msg.h, tcp.c, tcp_in.c, api_lib.c, api_msg.c, 2514 sockets.c, init.c: task #7252: Implement TCP listen backlog: Warning: raw API 2515 applications have to call 'tcp_accepted(pcb)' in their accept callback to 2516 keep accepting new connections. 2517 2518 2007-12-13 Frédéric Bernon 2519 * api_msg.c, err.h, err.c, sockets.c, dns.c, dns.h: replace "enum dns_result" 2520 by err_t type. Add a new err_t code "ERR_INPROGRESS". 2521 2522 2007-12-12 Frédéric Bernon 2523 * dns.h, dns.c, opt.h: move DNS options to the "right" place. Most visibles 2524 are the one which have ram usage. 2525 2526 2007-12-05 Frédéric Bernon 2527 * netdb.c: add a LWIP_DNS_API_HOSTENT_STORAGE option to decide to use a static 2528 set of variables (=0) or a local one (=1). In this last case, your port should 2529 provide a function "struct hostent* sys_thread_hostent( struct hostent* h)" 2530 which have to do a copy of "h" and return a pointer ont the "per-thread" copy. 2531 2532 2007-12-03 Simon Goldschmidt 2533 * ip.c: ip_input: check if a packet is for inp first before checking all other 2534 netifs on netif_list (speeds up packet receiving in most cases) 2535 2536 2007-11-30 Simon Goldschmidt 2537 * udp.c, raw.c: task #7497: Sort lists (pcb, netif, ...) for faster access 2538 UDP: move a (connected) pcb selected for input to the front of the list of 2539 pcbs so that it is found faster next time. Same for RAW pcbs that have eaten 2540 a packet. 2541 2542 2007-11-28 Simon Goldschmidt 2543 * etharp.c, stats.c, stats.h, opt.h: Introduced ETHARP_STATS 2544 2545 2007-11-25 Simon Goldschmidt 2546 * dhcp.c: dhcp_unfold_reply() uses pbuf_copy_partial instead of its own copy 2547 algorithm. 2548 2549 2007-11-24 Simon Goldschmidt 2550 * netdb.h, netdb.c, sockets.h/.c: Moved lwip_gethostbyname from sockets.c 2551 to the new file netdb.c; included lwip_getaddrinfo. 2552 2553 2007-11-21 Simon Goldschmidt 2554 * tcp.h, opt.h, tcp.c, tcp_in.c: implemented calculating the effective send-mss 2555 based on the MTU of the netif used to send. Enabled by default. Disable by 2556 setting LWIP_CALCULATE_EFF_SEND_MSS to 0. This fixes bug #21492. 2557 2558 2007-11-19 Frédéric Bernon 2559 * api_msg.c, dns.h, dns.c: Implement DNS_DOES_NAME_CHECK option (check if name 2560 received match the name query), implement DNS_USES_STATIC_BUF (the place where 2561 copy dns payload to parse the response), return an error if there is no place 2562 for a new query, and fix some minor problems. 2563 2564 2007-11-16 Simon Goldschmidt 2565 * new files: ipv4/inet.c, ipv4/inet_chksum.c, ipv6/inet6.c 2566 removed files: core/inet.c, core/inet6.c 2567 Moved inet files into ipv4/ipv6 directory; splitted inet.c/inet.h into 2568 inet and chksum part; changed includes in all lwIP files as appropriate 2569 2570 2007-11-16 Simon Goldschmidt 2571 * api.h, api_msg.h, api_lib.c, api_msg.c, socket.h, socket.c: Added sequential 2572 dns resolver function for netconn api (netconn_gethostbyname) and socket api 2573 (gethostbyname/gethostbyname_r). 2574 2575 2007-11-15 Jim Pettinato, Frédéric Bernon 2576 * opt.h, init.c, tcpip.c, dhcp.c, dns.h, dns.c: add DNS client for simple name 2577 requests with RAW api interface. Initialization is done in lwip_init() with 2578 build time options. DNS timer is added in tcpip_thread context. DHCP can set 2579 DNS server ip addresses when options are received. You need to set LWIP_DNS=1 2580 in your lwipopts.h file (LWIP_DNS=0 in opt.h). DNS_DEBUG can be set to get 2581 some traces with LWIP_DEBUGF. Sanity check have been added. There is a "todo" 2582 list with points to improve. 2583 2584 2007-11-06 Simon Goldschmidt 2585 * opt.h, mib2.c: Patch #6215: added ifAdminStatus write support (if explicitly 2586 enabled by defining SNMP_SAFE_REQUESTS to 0); added code to check link status 2587 for ifOperStatus if LWIP_NETIF_LINK_CALLBACK is defined. 2588 2589 2007-11-06 Simon Goldschmidt 2590 * api.h, api_msg.h and dependent files: Task #7410: Removed the need to include 2591 core header files in api.h (ip/tcp/udp/raw.h) to hide the internal 2592 implementation from netconn api applications. 2593 2594 2007-11-03 Frédéric Bernon 2595 * api.h, api_lib.c, api_msg.c, sockets.c, opt.h: add SO_RCVBUF option for UDP & 2596 RAW netconn. You need to set LWIP_SO_RCVBUF=1 in your lwipopts.h (it's disabled 2597 by default). Netconn API users can use the netconn_recv_bufsize macro to access 2598 it. This is a first release which have to be improve for TCP. Note it used the 2599 netconn::recv_avail which need to be more "thread-safe" (note there is already 2600 the problem for FIONREAD with lwip_ioctl/ioctlsocket). 2601 2602 2007-11-01 Frédéric Bernon, Marc Chaland 2603 * sockets.h, sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c, tcp.h, tcp_out.c: 2604 Integrate "patch #6250 : MSG_MORE flag for send". MSG_MORE is used at socket api 2605 layer, NETCONN_MORE at netconn api layer, and TCP_WRITE_FLAG_MORE at raw api 2606 layer. This option enable to delayed TCP PUSH flag on multiple "write" calls. 2607 Note that previous "copy" parameter for "write" APIs is now called "apiflags". 2608 2609 2007-10-24 Frédéric Bernon 2610 * api.h, api_lib.c, api_msg.c: Add macro API_EVENT in the same spirit than 2611 TCP_EVENT_xxx macros to get a code more readable. It could also help to remove 2612 some code (like we have talk in "patch #5919 : Create compile switch to remove 2613 select code"), but it could be done later. 2614 2615 2007-10-08 Simon Goldschmidt 2616 * many files: Changed initialization: many init functions are not needed any 2617 more since we now rely on the compiler initializing global and static 2618 variables to zero! 2619 2620 2007-10-06 Simon Goldschmidt 2621 * ip_frag.c, memp.c, mib2.c, ip_frag.h, memp_std.h, opt.h: Changed IP_REASSEMBLY 2622 to enqueue the received pbufs so that multiple packets can be reassembled 2623 simultaneously and no static reassembly buffer is needed. 2624 2625 2007-10-05 Simon Goldschmidt 2626 * tcpip.c, etharp.h, etharp.c: moved ethernet_input from tcpip.c to etharp.c so 2627 all netifs (or ports) can use it. 2628 2629 2007-10-05 Frédéric Bernon 2630 * netifapi.h, netifapi.c: add function netifapi_netif_set_default. Change the 2631 common function to reduce a little bit the footprint (for all functions using 2632 only the "netif" parameter). 2633 2634 2007-10-03 Frédéric Bernon 2635 * netifapi.h, netifapi.c: add functions netifapi_netif_set_up, netifapi_netif_set_down, 2636 netifapi_autoip_start and netifapi_autoip_stop. Use a common function to reduce 2637 a little bit the footprint (for all functions using only the "netif" parameter). 2638 2639 2007-09-15 Frédéric Bernon 2640 * udp.h, udp.c, sockets.c: Changes for "#20503 IGMP Improvement". Add IP_MULTICAST_IF 2641 option in socket API, and a new field "multicast_ip" in "struct udp_pcb" (for 2642 netconn and raw API users), only if LWIP_IGMP=1. Add getsockopt processing for 2643 IP_MULTICAST_TTL and IP_MULTICAST_IF. 2644 2645 2007-09-10 Frédéric Bernon 2646 * snmp.h, mib2.c: enable to remove SNMP timer (which consumne several cycles 2647 even when it's not necessary). snmp_agent.txt tell to call snmp_inc_sysuptime() 2648 each 10ms (but, it's intrusive if you use sys_timeout feature). Now, you can 2649 decide to call snmp_add_sysuptime(100) each 1000ms (which is bigger "step", but 2650 call to a lower frequency). Or, you can decide to not call snmp_inc_sysuptime() 2651 or snmp_add_sysuptime(), and to define the SNMP_GET_SYSUPTIME(sysuptime) macro. 2652 This one is undefined by default in mib2.c. SNMP_GET_SYSUPTIME is called inside 2653 snmp_get_sysuptime(u32_t *value), and enable to change "sysuptime" value only 2654 when it's queried (any direct call to "sysuptime" is changed by a call to 2655 snmp_get_sysuptime). 2656 2657 2007-09-09 Frédéric Bernon, Bill Florac 2658 * igmp.h, igmp.c, netif.h, netif.c, ip.c: To enable to have interfaces with IGMP, 2659 and others without it, there is a new NETIF_FLAG_IGMP flag to set in netif->flags 2660 if you want IGMP on an interface. igmp_stop() is now called inside netif_remove(). 2661 igmp_report_groups() is now called inside netif_set_link_up() (need to have 2662 LWIP_NETIF_LINK_CALLBACK=1) to resend reports once the link is up (avoid to wait 2663 the next query message to receive the matching multicast streams). 2664 2665 2007-09-08 Frédéric Bernon 2666 * sockets.c, ip.h, api.h, tcp.h: declare a "struct ip_pcb" which only contains 2667 IP_PCB. Add in the netconn's "pcb" union a "struct ip_pcb *ip;" (no size change). 2668 Use this new field to access to common pcb fields (ttl, tos, so_options, etc...). 2669 Enable to access to these fields with LWIP_TCP=0. 2670 2671 2007-09-05 Frédéric Bernon 2672 * udp.c, ipv4/icmp.c, ipv4/ip.c, ipv6/icmp.c, ipv6/ip6.c, ipv4/icmp.h, 2673 ipv6/icmp.h, opt.h: Integrate "task #7272 : LWIP_ICMP option". The new option 2674 LWIP_ICMP enable/disable ICMP module inside the IP stack (enable per default). 2675 Be careful, disabling ICMP make your product non-compliant to RFC1122, but 2676 help to reduce footprint, and to reduce "visibility" on the Internet. 2677 2678 2007-09-05 Frédéric Bernon, Bill Florac 2679 * opt.h, sys.h, tcpip.c, slipif.c, ppp.c, sys_arch.txt: Change parameters list 2680 for sys_thread_new (see "task #7252 : Create sys_thread_new_ex()"). Two new 2681 parameters have to be provided: a task name, and a task stack size. For this 2682 one, since it's platform dependant, you could define the best one for you in 2683 your lwipopts.h. For port maintainers, you can just add these new parameters 2684 in your sys_arch.c file, and but it's not mandatory, use them in your OS 2685 specific functions. 2686 2687 2007-09-05 Frédéric Bernon 2688 * inet.c, autoip.c, msg_in.c, msg_out.c, init.c: Move some build time checkings 2689 inside init.c for task #7142 "Sanity check user-configurable values". 2690 2691 2007-09-04 Frédéric Bernon, Bill Florac 2692 * igmp.h, igmp.c, memp_std.h, memp.c, init.c, opt.h: Replace mem_malloc call by 2693 memp_malloc, and use a new MEMP_NUM_IGMP_GROUP option (see opt.h to define the 2694 value). It will avoid potential fragmentation problems, use a counter to know 2695 how many times a group is used on an netif, and free it when all applications 2696 leave it. MEMP_NUM_IGMP_GROUP got 8 as default value (and init.c got a sanity 2697 check if LWIP_IGMP!=0). 2698 2699 2007-09-03 Frédéric Bernon 2700 * igmp.h, igmp.c, sockets.c, api_msg.c: Changes for "#20503 IGMP Improvement". 2701 Initialize igmp_mac_filter to NULL in netif_add (this field should be set in 2702 the netif's "init" function). Use the "imr_interface" field (for socket layer) 2703 and/or the "interface" field (for netconn layer), for join/leave operations. 2704 The igmp_join/leavegroup first parameter change from a netif to an ipaddr. 2705 This field could be a netif's ipaddr, or "any" (same meaning than ip_addr_isany). 2706 2707 2007-08-30 Frédéric Bernon 2708 * Add netbuf.h, netbuf.c, Change api.h, api_lib.c: #7249 "Split netbuf functions 2709 from api/api_lib". Now netbuf API is independant of netconn, and can be used 2710 with other API (application based on raw API, or future "socket2" API). Ports 2711 maintainers just have to add src/api/netbuf.c in their makefile/projects. 2712 2713 2007-08-30 Frédéric Bernon, Jonathan Larmour 2714 * init.c: Add first version of lwip_sanity_check for task #7142 "Sanity check 2715 user-configurable values". 2716 2717 2007-08-29 Frédéric Bernon 2718 * igmp.h, igmp.c, tcpip.c, init.c, netif.c: change igmp_init and add igmp_start. 2719 igmp_start is call inside netif_add. Now, igmp initialization is in the same 2720 spirit than the others modules. Modify some IGMP debug traces. 2721 2722 2007-08-29 Frédéric Bernon 2723 * Add init.h, init.c, Change opt.h, tcpip.c: Task #7213 "Add a lwip_init function" 2724 Add lwip_init function to regroup all modules initializations, and to provide 2725 a place to add code for task #7142 "Sanity check user-configurable values". 2726 Ports maintainers should remove direct initializations calls from their code, 2727 and add init.c in their makefiles. Note that lwip_init() function is called 2728 inside tcpip_init, but can also be used by raw api users since all calls are 2729 disabled when matching options are disabled. Also note that their is new options 2730 in opt.h, you should configure in your lwipopts.h (they are enabled per default). 2731 2732 2007-08-26 Marc Boucher 2733 * api_msg.c: do_close_internal(): Reset the callbacks and arg (conn) to NULL 2734 since they can under certain circumstances be called with an invalid conn 2735 pointer after the connection has been closed (and conn has been freed). 2736 2737 2007-08-25 Frédéric Bernon (Artem Migaev's Patch) 2738 * netif.h, netif.c: Integrate "patch #6163 : Function to check if link layer is up". 2739 Add a netif_is_link_up() function if LWIP_NETIF_LINK_CALLBACK option is set. 2740 2741 2007-08-22 Frédéric Bernon 2742 * netif.h, netif.c, opt.h: Rename LWIP_NETIF_CALLBACK in LWIP_NETIF_STATUS_CALLBACK 2743 to be coherent with new LWIP_NETIF_LINK_CALLBACK option before next release. 2744 2745 2007-08-22 Frédéric Bernon 2746 * tcpip.h, tcpip.c, ethernetif.c, opt.h: remove options ETHARP_TCPIP_INPUT & 2747 ETHARP_TCPIP_ETHINPUT, now, only "ethinput" code is supported, even if the 2748 name is tcpip_input (we keep the name of 1.2.0 function). 2749 2750 2007-08-17 Jared Grubb 2751 * memp_std.h, memp.h, memp.c, mem.c, stats.c: (Task #7136) Centralize mempool 2752 settings into new memp_std.h and optional user file lwippools.h. This adds 2753 more dynamic mempools, and allows the user to create an arbitrary number of 2754 mempools for mem_malloc. 2755 2756 2007-08-16 Marc Boucher 2757 * api_msg.c: Initialize newconn->state to NETCONN_NONE in accept_function; 2758 otherwise it was left to NETCONN_CLOSE and sent_tcp() could prematurely 2759 close the connection. 2760 2761 2007-08-16 Marc Boucher 2762 * sockets.c: lwip_accept(): check netconn_peer() error return. 2763 2764 2007-08-16 Marc Boucher 2765 * mem.c, mem.h: Added mem_calloc(). 2766 2767 2007-08-16 Marc Boucher 2768 * tcpip.c, tcpip.h memp.c, memp.h: Added distinct memp (MEMP_TCPIP_MSG_INPKT) 2769 for input packets to prevent floods from consuming all of MEMP_TCPIP_MSG 2770 and starving other message types. 2771 Renamed MEMP_TCPIP_MSG to MEMP_TCPIP_MSG_API 2772 2773 2007-08-16 Marc Boucher 2774 * pbuf.c, pbuf.h, etharp.c, tcp_in.c, sockets.c: Split pbuf flags in pbuf 2775 type and flgs (later renamed to flags). 2776 Use enum pbuf_flag as pbuf_type. Renumber PBUF_FLAG_*. 2777 Improved lwip_recvfrom(). TCP push now propagated. 2778 2779 2007-08-16 Marc Boucher 2780 * ethernetif.c, contrib/ports/various: ethbroadcast now a shared global 2781 provided by etharp. 2782 2783 2007-08-16 Marc Boucher 2784 * ppp_oe.c ppp_oe.h, auth.c chap.c fsm.c lcp.c ppp.c ppp.h, 2785 etharp.c ethernetif.c, etharp.h, opt.h tcpip.h, tcpip.c: 2786 Added PPPoE support and various PPP improvements. 2787 2788 2007-07-25 Simon Goldschmidt 2789 * api_lib.c, ip_frag.c, pbuf.c, api.h, pbuf.h: Introduced pbuf_copy_partial, 2790 making netbuf_copy_partial use this function. 2791 2792 2007-07-25 Simon Goldschmidt 2793 * tcp_in.c: Fix bug #20506: Slow start / initial congestion window starts with 2794 2 * mss (instead of 1 * mss previously) to comply with some newer RFCs and 2795 other stacks. 2796 2797 2007-07-13 Jared Grubb (integrated by Frédéric Bernon) 2798 * opt.h, netif.h, netif.c, ethernetif.c: Add new configuration option to add 2799 a link callback in the netif struct, and functions to handle it. Be carefull 2800 for port maintainers to add the NETIF_FLAG_LINK_UP flag (like in ethernetif.c) 2801 if you want to be sure to be compatible with future changes... 2802 2803 2007-06-30 Frédéric Bernon 2804 * sockets.h, sockets.c: Implement MSG_PEEK flag for recv/recvfrom functions. 2805 2806 2007-06-21 Simon Goldschmidt 2807 * etharp.h, etharp.c: Combined etharp_request with etharp_raw for both 2808 LWIP_AUTOIP =0 and =1 to remove redundant code. 2809 2810 2007-06-21 Simon Goldschmidt 2811 * mem.c, memp.c, mem.h, memp.h, opt.h: task #6863: Introduced the option 2812 MEM_USE_POOLS to use 4 pools with different sized elements instead of a 2813 heap. This both prevents memory fragmentation and gives a higher speed 2814 at the cost of more memory consumption. Turned off by default. 2815 2816 2007-06-21 Simon Goldschmidt 2817 * api_lib.c, api_msg.c, api.h, api_msg.h: Converted the length argument of 2818 netconn_write (and therefore also api_msg_msg.msg.w.len) from u16_t into 2819 int to be able to send a bigger buffer than 64K with one time (mainly 2820 used from lwip_send). 2821 2822 2007-06-21 Simon Goldschmidt 2823 * tcp.h, api_msg.c: Moved the nagle algorithm from netconn_write/do_write 2824 into a define (tcp_output_nagle) in tcp.h to provide it to raw api users, too. 2825 2826 2007-06-21 Simon Goldschmidt 2827 * api.h, api_lib.c, api_msg.c: Fixed bug #20021: Moved sendbuf-processing in 2828 netconn_write from api_lib.c to api_msg.c to also prevent multiple context- 2829 changes on low memory or empty send-buffer. 2830 2831 2007-06-18 Simon Goldschmidt 2832 * etharp.c, etharp.h: Changed etharp to use a defined hardware address length 2833 of 6 to avoid loading netif->hwaddr_len every time (since this file is only 2834 used for ethernet and struct eth_addr already had a defined length of 6). 2835 2836 2007-06-17 Simon Goldschmidt 2837 * sockets.c, sockets.h: Implemented socket options SO_NO_CHECK for UDP sockets 2838 to disable UDP checksum generation on transmit. 2839 2840 2007-06-13 Frédéric Bernon, Simon Goldschmidt 2841 * debug.h, api_msg.c: change LWIP_ERROR to use it to check errors like invalid 2842 pointers or parameters, and let the possibility to redefined it in cc.h. Use 2843 this macro to check "conn" parameter in api_msg.c functions. 2844 2845 2007-06-11 Simon Goldschmidt 2846 * sockets.c, sockets.h: Added UDP lite support for sockets 2847 2848 2007-06-10 Simon Goldschmidt 2849 * udp.h, opt.h, api_msg.c, ip.c, udp.c: Included switch LWIP_UDPLITE (enabled 2850 by default) to switch off UDP-Lite support if not needed (reduces udp.c code 2851 size) 2852 2853 2007-06-09 Dominik Spies (integrated by Frédéric Bernon) 2854 * autoip.h, autoip.c, dhcp.h, dhcp.c, netif.h, netif.c, etharp.h, etharp.c, opt.h: 2855 AutoIP implementation available for IPv4, with new options LWIP_AUTOIP and 2856 LWIP_DHCP_AUTOIP_COOP if you want to cooperate with DHCP. Some tips to adapt 2857 (see TODO mark in the source code). 2858 2859 2007-06-09 Simon Goldschmidt 2860 * etharp.h, etharp.c, ethernetif.c: Modified order of parameters for 2861 etharp_output() to match netif->output so etharp_output() can be used 2862 directly as netif->output to save one function call. 2863 2864 2007-06-08 Simon Goldschmidt 2865 * netif.h, ethernetif.c, slipif.c, loopif.c: Added define 2866 NETIF_INIT_SNMP(netif, type, speed) to initialize per-netif snmp variables, 2867 added initialization of those to ethernetif, slipif and loopif. 2868 2869 2007-05-18 Simon Goldschmidt 2870 * opt.h, ip_frag.c, ip_frag.h, ip.c: Added option IP_FRAG_USES_STATIC_BUF 2871 (defaulting to off for now) that can be set to 0 to send fragmented 2872 packets by passing PBUF_REFs down the stack. 2873 2874 2007-05-23 Frédéric Bernon 2875 * api_lib.c: Implement SO_RCVTIMEO for accept and recv on TCP 2876 connections, such present in patch #5959. 2877 2878 2007-05-23 Frédéric Bernon 2879 * api.h, api_lib.c, api_msg.c, sockets.c: group the different NETCONN_UDPxxx 2880 code in only one part... 2881 2882 2007-05-18 Simon Goldschmidt 2883 * opt.h, memp.h, memp.c: Added option MEMP_OVERFLOW_CHECK to check for memp 2884 elements to overflow. This is achieved by adding some bytes before and after 2885 each pool element (increasing their size, of course), filling them with a 2886 prominent value and checking them on freeing the element. 2887 Set it to 2 to also check every element in every pool each time memp_malloc() 2888 or memp_free() is called (slower but more helpful). 2889 2890 2007-05-10 Simon Goldschmidt 2891 * opt.h, memp.h, memp.c, pbuf.c (see task #6831): use a new memp pool for 2892 PBUF_POOL pbufs instead of the old pool implementation in pbuf.c to reduce 2893 code size. 2894 2895 2007-05-11 Frédéric Bernon 2896 * sockets.c, api_lib.c, api_msg.h, api_msg.c, netifapi.h, netifapi.c, tcpip.c: 2897 Include a function pointer instead of a table index in the message to reduce 2898 footprint. Disable some part of lwip_send and lwip_sendto if some options are 2899 not set (LWIP_TCP, LWIP_UDP, LWIP_RAW). 2900 2901 2007-05-10 Simon Goldschmidt 2902 * *.h (except netif/ppp/*.h): Included patch #5448: include '#ifdef __cplusplus 2903 \ extern "C" {' in all header files. Now you can write your application using 2904 the lwIP stack in C++ and simply #include the core files. Note I have left 2905 out the netif/ppp/*h header files for now, since I don't know which files are 2906 included by applications and which are for internal use only. 2907 2908 2007-05-09 Simon Goldschmidt 2909 * opt.h, *.c/*.h: Included patch #5920: Create define to override C-library 2910 memcpy. 2 Defines are created: MEMCPY() for normal memcpy, SMEMCPY() for 2911 situations where some compilers might inline the copy and save a function 2912 call. Also replaced all calls to memcpy() with calls to (S)MEMCPY(). 2913 2914 2007-05-08 Simon Goldschmidt 2915 * mem.h: If MEM_LIBC_MALLOC==1, allow the defines (e.g. mem_malloc() -> malloc()) 2916 to be overriden in case the C-library malloc implementation is not protected 2917 against concurrent access. 2918 2919 2007-05-04 Simon Goldschmidt (Atte Kojo) 2920 * etharp.c: Introduced fast one-entry-cache to speed up ARP lookup when sending 2921 multiple packets to the same host. 2922 2923 2007-05-04 Frédéric Bernon, Jonathan Larmour 2924 * sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c: Fix bug #19162 "lwip_sento: a possible 2925 to corrupt remote addr/port connection state". Reduce problems "not enought memory" with 2926 netbuf (if we receive lot of datagrams). Improve lwip_sendto (only one exchange between 2927 sockets api and api_msg which run in tcpip_thread context). Add netconn_sento function. 2928 Warning, if you directly access to "fromaddr" & "fromport" field from netbuf struct, 2929 these fields are now renamed "addr" & "port". 2930 2931 2007-04-11 Jonathan Larmour 2932 * sys.h, api_lib.c: Provide new sys_mbox_tryfetch function. Require ports to provide new 2933 sys_arch_mbox_tryfetch function to get a message if one is there, otherwise return 2934 with SYS_MBOX_EMPTY. sys_arch_mbox_tryfetch can be implemented as a function-like macro 2935 by the port in sys_arch.h if desired. 2936 2937 2007-04-06 Frédéric Bernon, Simon Goldschmidt 2938 * opt.h, tcpip.h, tcpip.c, netifapi.h, netifapi.c: New configuration option LWIP_NETIF_API 2939 allow to use thread-safe functions to add/remove netif in list, and to start/stop dhcp 2940 clients, using new functions from netifapi.h. Disable as default (no port change to do). 2941 2942 2007-04-05 Frédéric Bernon 2943 * sockets.c: remplace ENOBUFS errors on alloc_socket by ENFILE to be more BSD compliant. 2944 2945 2007-04-04 Simon Goldschmidt 2946 * arch.h, api_msg.c, dhcp.c, msg_in.c, sockets.c: Introduced #define LWIP_UNUSED_ARG(x) 2947 use this for and architecture-independent form to tell the compiler you intentionally 2948 are not using this variable. Can be overriden in cc.h. 2949 2950 2007-03-28 Frédéric Bernon 2951 * opt.h, netif.h, dhcp.h, dhcp.c: New configuration option LWIP_NETIF_HOSTNAME allow to 2952 define a hostname in netif struct (this is just a pointer, so, you can use a hardcoded 2953 string, point on one of your's ethernetif field, or alloc a string you will free yourself). 2954 It will be used by DHCP to register a client hostname, but can also be use when you call 2955 snmp_set_sysname. 2956 2957 2007-03-28 Frédéric Bernon 2958 * netif.h, netif.c: A new NETIF_FLAG_ETHARP flag is defined in netif.h, to allow to 2959 initialize a network interface's flag with. It tell this interface is an ethernet 2960 device, and we can use ARP with it to do a "gratuitous ARP" (RFC 3220 "IP Mobility 2961 Support for IPv4" section 4.6) when interface is "up" with netif_set_up(). 2962 2963 2007-03-26 Frédéric Bernon, Jonathan Larmour 2964 * opt.h, tcpip.c: New configuration option LWIP_ARP allow to disable ARP init at build 2965 time if you only use PPP or SLIP. The default is enable. Note we don't have to call 2966 etharp_init in your port's initilization sequence if you use tcpip.c, because this call 2967 is done in tcpip_init function. 2968 2969 2007-03-22 Frédéric Bernon 2970 * stats.h, stats.c, msg_in.c: Stats counters can be change to u32_t if necessary with the 2971 new option LWIP_STATS_LARGE. If you need this option, define LWIP_STATS_LARGE to 1 in 2972 your lwipopts.h. More, unused counters are not defined in the stats structs, and not 2973 display by stats_display(). Note that some options (SYS_STATS and RAW_STATS) are defined 2974 but never used. Fix msg_in.c with the correct #if test for a stat display. 2975 2976 2007-03-21 Kieran Mansley 2977 * netif.c, netif.h: Apply patch#4197 with some changes (originator: rireland@hmgsl.com). 2978 Provides callback on netif up/down state change. 2979 2980 2007-03-11 Frédéric Bernon, Mace Gael, Steve Reynolds 2981 * sockets.h, sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c, igmp.h, igmp.c, 2982 ip.c, netif.h, tcpip.c, opt.h: 2983 New configuration option LWIP_IGMP to enable IGMP processing. Based on only one 2984 filter per all network interfaces. Declare a new function in netif to enable to 2985 control the MAC filter (to reduce lwIP traffic processing). 2986 2987 2007-03-11 Frédéric Bernon 2988 * tcp.h, tcp.c, sockets.c, tcp_out.c, tcp_in.c, opt.h: Keepalive values can 2989 be configured at run time with LWIP_TCP_KEEPALIVE, but don't change this 2990 unless you know what you're doing (default are RFC1122 compliant). Note 2991 that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set in seconds. 2992 2993 2007-03-08 Frédéric Bernon 2994 * tcp.h: Keepalive values can be configured at compile time, but don't change 2995 this unless you know what you're doing (default are RFC1122 compliant). 2996 2997 2007-03-08 Frédéric Bernon 2998 * sockets.c, api.h, api_lib.c, tcpip.c, sys.h, sys.c, err.c, opt.h: 2999 Implement LWIP_SO_RCVTIMEO configuration option to enable/disable SO_RCVTIMEO 3000 on UDP sockets/netconn. 3001 3002 2007-03-08 Simon Goldschmidt 3003 * snmp_msg.h, msg_in.c: SNMP UDP ports can be configured at compile time. 3004 3005 2007-03-06 Frédéric Bernon 3006 * api.h, api_lib.c, sockets.h, sockets.c, tcpip.c, sys.h, sys.c, err.h: 3007 Implement SO_RCVTIMEO on UDP sockets/netconn. 3008 3009 2007-02-28 Kieran Mansley (based on patch from Simon Goldschmidt) 3010 * api_lib.c, tcpip.c, memp.c, memp.h: make API msg structs allocated 3011 on the stack and remove the API msg type from memp 3012 3013 2007-02-26 Jonathan Larmour (based on patch from Simon Goldschmidt) 3014 * sockets.h, sockets.c: Move socket initialization to new 3015 lwip_socket_init() function. 3016 NOTE: this changes the API with ports. Ports will have to be 3017 updated to call lwip_socket_init() now. 3018 3019 2007-02-26 Jonathan Larmour (based on patch from Simon Goldschmidt) 3020 * api_lib.c: Use memcpy in netbuf_copy_partial. 3021 3022 3023 ++ Bug fixes: 3024 3025 2008-03-17 Frédéric Bernon, Ed Kerekes 3026 * igmp.h, igmp.c: Fix bug #22613 "IGMP iphdr problem" (could have 3027 some problems to fill the IP header on some targets, use now the 3028 ip.h macros to do it). 3029 3030 2008-03-13 Frédéric Bernon 3031 * sockets.c: Fix bug #22435 "lwip_recvfrom with TCP break;". Using 3032 (lwip_)recvfrom with valid "from" and "fromlen" parameters, on a 3033 TCP connection caused a crash. Note that using (lwip_)recvfrom 3034 like this is a bit slow and that using (lwip)getpeername is the 3035 good lwip way to do it (so, using recv is faster on tcp sockets). 3036 3037 2008-03-12 Frédéric Bernon, Jonathan Larmour 3038 * api_msg.c, contrib/apps/ping.c: Fix bug #22530 "api_msg.c's 3039 recv_raw() does not consume data", and the ping sample (with 3040 LWIP_SOCKET=1, the code did the wrong supposition that lwip_recvfrom 3041 returned the IP payload, without the IP header). 3042 3043 2008-03-04 Jonathan Larmour 3044 * mem.c, stats.c, mem.h: apply patch #6414 to avoid compiler errors 3045 and/or warnings on some systems where mem_size_t and size_t differ. 3046 * pbuf.c, ppp.c: Fix warnings on some systems with mem_malloc. 3047 3048 2008-03-04 Kieran Mansley (contributions by others) 3049 * Numerous small compiler error/warning fixes from contributions to 3050 mailing list after 1.3.0 release candidate made. 3051 3052 2008-01-25 Cui hengbin (integrated by Frédéric Bernon) 3053 * dns.c: Fix bug #22108 "DNS problem" caused by unaligned structures. 3054 3055 2008-01-15 Kieran Mansley 3056 * tcp_out.c: BUG20511. Modify persist timer to start when we are 3057 prevented from sending by a small send window, not just a zero 3058 send window. 3059 3060 2008-01-09 Jonathan Larmour 3061 * opt.h, ip.c: Rename IP_OPTIONS define to IP_OPTIONS_ALLOWED to avoid 3062 conflict with Linux system headers. 3063 3064 2008-01-06 Jonathan Larmour 3065 * dhcp.c: fix bug #19927: "DHCP NACK problem" by clearing any existing set IP 3066 address entirely on receiving a DHCPNAK, and restarting discovery. 3067 3068 2007-12-21 Simon Goldschmidt 3069 * sys.h, api_lib.c, api_msg.c, sockets.c: fix bug #21698: "netconn->recv_avail 3070 is not protected" by using new macros for interlocked access to modify/test 3071 netconn->recv_avail. 3072 3073 2007-12-20 Kieran Mansley (based on patch from Oleg Tyshev) 3074 * tcp_in.c: fix bug# 21535 (nrtx not reset correctly in SYN_SENT state) 3075 3076 2007-12-20 Kieran Mansley (based on patch from Per-Henrik Lundbolm) 3077 * tcp.c, tcp_in.c, tcp_out.c, tcp.h: fix bug #20199 (better handling 3078 of silly window avoidance and prevent lwIP from shrinking the window) 3079 3080 2007-12-04 Simon Goldschmidt 3081 * tcp.c, tcp_in.c: fix bug #21699 (segment leak in ooseq processing when last 3082 data packet was lost): add assert that all segment lists are empty in 3083 tcp_pcb_remove before setting pcb to CLOSED state; don't directly set CLOSED 3084 state from LAST_ACK in tcp_process 3085 3086 2007-12-02 Simon Goldschmidt 3087 * sockets.h: fix bug #21654: exclude definition of struct timeval from #ifndef FD_SET 3088 If including <sys/time.h> for system-struct timeval, LWIP_TIMEVAL_PRIVATE now 3089 has to be set to 0 in lwipopts.h 3090 3091 2007-12-02 Simon Goldschmidt 3092 * api_msg.c, api_lib.c: fix bug #21656 (recvmbox problem in netconn API): always 3093 allocate a recvmbox in netconn_new_with_proto_and_callback. For a tcp-listen 3094 netconn, this recvmbox is later freed and a new mbox is allocated for acceptmbox. 3095 This is a fix for thread-safety and allocates all items needed for a netconn 3096 when the netconn is created. 3097 3098 2007-11-30 Simon Goldschmidt 3099 * udp.c: first attempt to fix bug #21655 (DHCP doesn't work reliably with multiple 3100 netifs): if LWIP_DHCP is enabled, UDP packets to DHCP_CLIENT_PORT are passed 3101 to netif->dhcp->pcb only (if that exists) and not to any other pcb for the same 3102 port (only solution to let UDP pcbs 'bind' to a netif instead of an IP address) 3103 3104 2007-11-27 Simon Goldschmidt 3105 * ip.c: fixed bug #21643 (udp_send/raw_send don't fail if netif is down) by 3106 letting ip_route only use netifs that are up. 3107 3108 2007-11-27 Simon Goldschmidt 3109 * err.h, api_lib.c, api_msg.c, sockets.c: Changed error handling: ERR_MEM, ERR_BUF 3110 and ERR_RTE are seen as non-fatal, all other errors are fatal. netconns and 3111 sockets block most operations once they have seen a fatal error. 3112 3113 2007-11-27 Simon Goldschmidt 3114 * udp.h, udp.c, dhcp.c: Implemented new function udp_sendto_if which takes the 3115 netif to send as an argument (to be able to send on netifs that are down). 3116 3117 2007-11-26 Simon Goldschmidt 3118 * tcp_in.c: Fixed bug #21582: pcb->acked accounting can be wrong when ACKs 3119 arrive out-of-order 3120 3121 2007-11-21 Simon Goldschmidt 3122 * tcp.h, tcp_out.c, api_msg.c: Fixed bug #20287: tcp_output_nagle sends too early 3123 Fixed the nagle algorithm; nagle now also works for all raw API applications 3124 and has to be explicitly disabled with 'tcp_pcb->flags |= TF_NODELAY' 3125 3126 2007-11-12 Frédéric Bernon 3127 * sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c: Fixed bug #20900. Now, most 3128 of the netconn_peer and netconn_addr processing is done inside tcpip_thread 3129 context in do_getaddr. 3130 3131 2007-11-10 Simon Goldschmidt 3132 * etharp.c: Fixed bug: assert fired when MEMP_ARP_QUEUE was empty (which can 3133 happen any time). Now the packet simply isn't enqueued when out of memory. 3134 3135 2007-11-01 Simon Goldschmidt 3136 * tcp.c, tcp_in.c: Fixed bug #21494: The send mss (pcb->mss) is set to 536 (or 3137 TCP_MSS if that is smaller) as long as no MSS option is received from the 3138 remote host. 3139 3140 2007-11-01 Simon Goldschmidt 3141 * tcp.h, tcp.c, tcp_in.c: Fixed bug #21491: The MSS option sent (with SYN) 3142 is now based on TCP_MSS instead of pcb->mss (on passive open now effectively 3143 sending our configured TCP_MSS instead of the one received). 3144 3145 2007-11-01 Simon Goldschmidt 3146 * tcp_in.c: Fixed bug #21181: On active open, the initial congestion window was 3147 calculated based on the configured TCP_MSS, not on the MSS option received 3148 with SYN+ACK. 3149 3150 2007-10-09 Simon Goldschmidt 3151 * udp.c, inet.c, inet.h: Fixed UDPLite: send: Checksum was always generated too 3152 short and also was generated wrong if checksum coverage != tot_len; 3153 receive: checksum was calculated wrong if checksum coverage != tot_len 3154 3155 2007-10-08 Simon Goldschmidt 3156 * mem.c: lfree was not updated in mem_realloc! 3157 3158 2007-10-07 Frédéric Bernon 3159 * sockets.c, api.h, api_lib.c: First step to fix "bug #20900 : Potential 3160 crash error problem with netconn_peer & netconn_addr". VERY IMPORTANT: 3161 this change cause an API breakage for netconn_addr, since a parameter 3162 type change. Any compiler should cause an error without any changes in 3163 yours netconn_peer calls (so, it can't be a "silent change"). It also 3164 reduce a little bit the footprint for socket layer (lwip_getpeername & 3165 lwip_getsockname use now a common lwip_getaddrname function since 3166 netconn_peer & netconn_addr have the same parameters). 3167 3168 2007-09-20 Simon Goldschmidt 3169 * tcp.c: Fixed bug #21080 (tcp_bind without check pcbs in TIME_WAIT state) 3170 by checking tcp_tw_pcbs also 3171 3172 2007-09-19 Simon Goldschmidt 3173 * icmp.c: Fixed bug #21107 (didn't reset IP TTL in ICMP echo replies) 3174 3175 2007-09-15 Mike Kleshov 3176 * mem.c: Fixed bug #21077 (inaccuracy in calculation of lwip_stat.mem.used) 3177 3178 2007-09-06 Frédéric Bernon 3179 * several-files: replace some #include "arch/cc.h" by "lwip/arch.h", or simply remove 3180 it as long as "lwip/opt.h" is included before (this one include "lwip/debug.h" which 3181 already include "lwip/arch.h"). Like that, default defines are provided by "lwip/arch.h" 3182 if they are not defined in cc.h, in the same spirit than "lwip/opt.h" for lwipopts.h. 3183 3184 2007-08-30 Frédéric Bernon 3185 * igmp.h, igmp.c: Some changes to remove some redundant code, add some traces, 3186 and fix some coding style. 3187 3188 2007-08-28 Frédéric Bernon 3189 * tcpip.c: Fix TCPIP_MSG_INPKT processing: now, tcpip_input can be used for any 3190 kind of packets. These packets are considered like Ethernet packets (payload 3191 pointing to ethhdr) if the netif got the NETIF_FLAG_ETHARP flag. Else, packets 3192 are considered like IP packets (payload pointing to iphdr). 3193 3194 2007-08-27 Frédéric Bernon 3195 * api.h, api_lib.c, api_msg.c: First fix for "bug #20900 : Potential crash error 3196 problem with netconn_peer & netconn_addr". Introduce NETCONN_LISTEN netconn_state 3197 and remove obsolete ones (NETCONN_RECV & NETCONN_ACCEPT). 3198 3199 2007-08-24 Kieran Mansley 3200 * inet.c Modify (acc >> 16) test to ((acc >> 16) != 0) to help buggy 3201 compiler (Paradigm C++) 3202 3203 2007-08-09 Frédéric Bernon, Bill Florac 3204 * stats.h, stats.c, igmp.h, igmp.c, opt.h: Fix for bug #20503 : IGMP Improvement. 3205 Introduce IGMP_STATS to centralize statistics management. 3206 3207 2007-08-09 Frédéric Bernon, Bill Florac 3208 * udp.c: Fix for bug #20503 : IGMP Improvement. Enable to receive a multicast 3209 packet on a udp pcb binded on an netif's IP address, and not on "any". 3210 3211 2007-08-09 Frédéric Bernon, Bill Florac 3212 * igmp.h, igmp.c, ip.c: Fix minor changes from bug #20503 : IGMP Improvement. 3213 This is mainly on using lookup/lookfor, and some coding styles... 3214 3215 2007-07-26 Frédéric Bernon (and "thedoctor") 3216 * igmp.c: Fix bug #20595 to accept IGMPv3 "Query" messages. 3217 3218 2007-07-25 Simon Goldschmidt 3219 * api_msg.c, tcp.c: Another fix for bug #20021: by not returning an error if 3220 tcp_output fails in tcp_close, the code in do_close_internal gets simpler 3221 (tcp_output is called again later from tcp timers). 3222 3223 2007-07-25 Simon Goldschmidt 3224 * ip_frag.c: Fixed bug #20429: use the new pbuf_copy_partial instead of the old 3225 copy_from_pbuf, which illegally modified the given pbuf. 3226 3227 2007-07-25 Simon Goldschmidt 3228 * tcp_out.c: tcp_enqueue: pcb->snd_queuelen didn't work for chaine PBUF_RAMs: 3229 changed snd_queuelen++ to snd_queuelen += pbuf_clen(p). 3230 3231 2007-07-24 Simon Goldschmidt 3232 * api_msg.c, tcp.c: Fix bug #20480: Check the pcb passed to tcp_listen() for the 3233 correct state (must be CLOSED). 3234 3235 2007-07-13 Thomas Taranowski (commited by Jared Grubb) 3236 * memp.c: Fix bug #20478: memp_malloc returned NULL+MEMP_SIZE on failed 3237 allocation. It now returns NULL. 3238 3239 2007-07-13 Frédéric Bernon 3240 * api_msg.c: Fix bug #20318: api_msg "recv" callbacks don't call pbuf_free in 3241 all error cases. 3242 3243 2007-07-13 Frédéric Bernon 3244 * api_msg.c: Fix bug #20315: possible memory leak problem if tcp_listen failed, 3245 because current code doesn't follow rawapi.txt documentation. 3246 3247 2007-07-13 Kieran Mansley 3248 * src/core/tcp_in.c Apply patch#5741 from Oleg Tyshev to fix bug in 3249 out of sequence processing of received packets 3250 3251 2007-07-03 Simon Goldschmidt 3252 * nearly-all-files: Added assertions where PBUF_RAM pbufs are used and an 3253 assumption is made that this pbuf is in one piece (i.e. not chained). These 3254 assumptions clash with the possibility of converting to fully pool-based 3255 pbuf implementations, where PBUF_RAM pbufs might be chained. 3256 3257 2007-07-03 Simon Goldschmidt 3258 * api.h, api_lib.c, api_msg.c: Final fix for bug #20021 and some other problems 3259 when closing tcp netconns: removed conn->sem, less context switches when 3260 closing, both netconn_close and netconn_delete should safely close tcp 3261 connections. 3262 3263 2007-07-02 Simon Goldschmidt 3264 * ipv4/ip.h, ipv6/ip.h, opt.h, netif.h, etharp.h, ipv4/ip.c, netif.c, raw.c, 3265 tcp_out.c, udp.c, etharp.c: Added option LWIP_NETIF_HWADDRHINT (default=off) 3266 to cache ARP table indices with each pcb instead of single-entry cache for 3267 the complete stack. 3268 3269 2007-07-02 Simon Goldschmidt 3270 * tcp.h, tcp.c, tcp_in.c, tcp_out.c: Added some ASSERTS and casts to prevent 3271 warnings when assigning to smaller types. 3272 3273 2007-06-28 Simon Goldschmidt 3274 * tcp_out.c: Added check to prevent tcp_pcb->snd_queuelen from overflowing. 3275 3276 2007-06-28 Simon Goldschmidt 3277 * tcp.h: Fixed bug #20287: Fixed nagle algorithm (sending was done too early if 3278 a segment contained chained pbufs) 3279 3280 2007-06-28 Frédéric Bernon 3281 * autoip.c: replace most of rand() calls by a macro LWIP_AUTOIP_RAND which compute 3282 a "pseudo-random" value based on netif's MAC and some autoip fields. It's always 3283 possible to define this macro in your own lwipopts.h to always use C library's 3284 rand(). Note that autoip_create_rand_addr doesn't use this macro. 3285 3286 2007-06-28 Frédéric Bernon 3287 * netifapi.h, netifapi.c, tcpip.h, tcpip.c: Update code to handle the option 3288 LWIP_TCPIP_CORE_LOCKING, and do some changes to be coherent with last modifications 3289 in api_lib/api_msg (use pointers and not type with table, etc...) 3290 3291 2007-06-26 Simon Goldschmidt 3292 * udp.h: Fixed bug #20259: struct udp_hdr was lacking the packin defines. 3293 3294 2007-06-25 Simon Goldschmidt 3295 * udp.c: Fixed bug #20253: icmp_dest_unreach was called with a wrong p->payload 3296 for udp packets with no matching pcb. 3297 3298 2007-06-25 Simon Goldschmidt 3299 * udp.c: Fixed bug #20220: UDP PCB search in udp_input(): a non-local match 3300 could get udp input packets if the remote side matched. 3301 3302 2007-06-13 Simon Goldschmidt 3303 * netif.c: Fixed bug #20180 (TCP pcbs listening on IP_ADDR_ANY could get 3304 changed in netif_set_ipaddr if previous netif->ip_addr.addr was 0. 3305 3306 2007-06-13 Simon Goldschmidt 3307 * api_msg.c: pcb_new sets conn->err if protocol is not implemented 3308 -> netconn_new_..() does not allocate a new connection for unsupported 3309 protocols. 3310 3311 2007-06-13 Frédéric Bernon, Simon Goldschmidt 3312 * api_lib.c: change return expression in netconn_addr and netconn_peer, because 3313 conn->err was reset to ERR_OK without any reasons (and error was lost)... 3314 3315 2007-06-13 Frédéric Bernon, Matthias Weisser 3316 * opt.h, mem.h, mem.c, memp.c, pbuf.c, ip_frag.c, vj.c: Fix bug #20162. Rename 3317 MEM_ALIGN in LWIP_MEM_ALIGN and MEM_ALIGN_SIZE in LWIP_MEM_ALIGN_SIZE to avoid 3318 some macro names collision with some OS macros. 3319 3320 2007-06-11 Simon Goldschmidt 3321 * udp.c: UDP Lite: corrected the use of chksum_len (based on RFC3828: if it's 0, 3322 create checksum over the complete packet. On RX, if it's < 8 (and not 0), 3323 discard the packet. Also removed the duplicate 'udphdr->chksum = 0' for both 3324 UDP & UDP Lite. 3325 3326 2007-06-11 Srinivas Gollakota & Oleg Tyshev 3327 * tcp_out.c: Fix for bug #20075 : "A problem with keep-alive timer and TCP flags" 3328 where TCP flags wasn't initialized in tcp_keepalive. 3329 3330 2007-06-03 Simon Goldschmidt 3331 * udp.c: udp_input(): Input pbuf was not freed if pcb had no recv function 3332 registered, p->payload was modified without modifying p->len if sending 3333 icmp_dest_unreach() (had no negative effect but was definitively wrong). 3334 3335 2007-06-03 Simon Goldschmidt 3336 * icmp.c: Corrected bug #19937: For responding to an icmp echo request, icmp 3337 re-used the input pbuf even if that didn't have enough space to include the 3338 link headers. Now the space is tested and a new pbuf is allocated for the 3339 echo response packet if the echo request pbuf isn't big enough. 3340 3341 2007-06-01 Simon Goldschmidt 3342 * sockets.c: Checked in patch #5914: Moved sockopt processing into tcpip_thread. 3343 3344 2007-05-23 Frédéric Bernon 3345 * api_lib.c, sockets.c: Fixed bug #5958 for netconn_listen (acceptmbox only 3346 allocated by do_listen if success) and netconn_accept errors handling. In 3347 most of api_lib functions, we replace some errors checkings like "if (conn==NULL)" 3348 by ASSERT, except for netconn_delete. 3349 3350 2007-05-23 Frédéric Bernon 3351 * api_lib.c: Fixed bug #5957 "Safe-thread problem inside netconn_recv" to return 3352 an error code if it's impossible to fetch a pbuf on a TCP connection (and not 3353 directly close the recvmbox). 3354 3355 2007-05-22 Simon Goldschmidt 3356 * tcp.c: Fixed bug #1895 (tcp_bind not correct) by introducing a list of 3357 bound but unconnected (and non-listening) tcp_pcbs. 3358 3359 2007-05-22 Frédéric Bernon 3360 * sys.h, sys.c, api_lib.c, tcpip.c: remove sys_mbox_fetch_timeout() (was only 3361 used for LWIP_SO_RCVTIMEO option) and use sys_arch_mbox_fetch() instead of 3362 sys_mbox_fetch() in api files. Now, users SHOULD NOT use internal lwIP features 3363 like "sys_timeout" in their application threads. 3364 3365 2007-05-22 Frédéric Bernon 3366 * api.h, api_lib.c, api_msg.h, api_msg.c: change the struct api_msg_msg to see 3367 which parameters are used by which do_xxx function, and to avoid "misusing" 3368 parameters (patch #5938). 3369 3370 2007-05-22 Simon Goldschmidt 3371 * api_lib.c, api_msg.c, raw.c, api.h, api_msg.h, raw.h: Included patch #5938: 3372 changed raw_pcb.protocol from u16_t to u8_t since for IPv4 and IPv6, proto 3373 is only 8 bits wide. This affects the api, as there, the protocol was 3374 u16_t, too. 3375 3376 2007-05-18 Simon Goldschmidt 3377 * memp.c: addition to patch #5913: smaller pointer was returned but 3378 memp_memory was the same size -> did not save memory. 3379 3380 2007-05-16 Simon Goldschmidt 3381 * loopif.c, slipif.c: Fix bug #19729: free pbuf if netif->input() returns 3382 != ERR_OK. 3383 3384 2007-05-16 Simon Goldschmidt 3385 * api_msg.c, udp.c: If a udp_pcb has a local_ip set, check if it is the same 3386 as the one of the netif used for sending to prevent sending from old 3387 addresses after a netif address gets changed (partly fixes bug #3168). 3388 3389 2007-05-16 Frédéric Bernon 3390 * tcpip.c, igmp.h, igmp.c: Fixed bug "#19800 : IGMP: igmp_tick() will not work 3391 with NO_SYS=1". Note that igmp_init is always in tcpip_thread (and not in 3392 tcpip_init) because we have to be sure that network interfaces are already 3393 added (mac filter is updated only in igmp_init for the moment). 3394 3395 2007-05-16 Simon Goldschmidt 3396 * mem.c, memp.c: Removed semaphores from memp, changed sys_sem_wait calls 3397 into sys_arch_sem_wait calls to prevent timers from running while waiting 3398 for the heap. This fixes bug #19167. 3399 3400 2007-05-13 Simon Goldschmidt 3401 * tcp.h, sockets.h, sockets.c: Fixed bug from patch #5865 by moving the defines 3402 for socket options (lwip_set/-getsockopt) used with level IPPROTO_TCP from 3403 tcp.h to sockets.h. 3404 3405 2007-05-07 Simon Goldschmidt 3406 * mem.c: Another attempt to fix bug #17922. 3407 3408 2007-05-04 Simon Goldschmidt 3409 * pbuf.c, pbuf.h, etharp.c: Further update to ARP queueing: Changed pbuf_copy() 3410 implementation so that it can be reused (don't allocate the target 3411 pbuf inside pbuf_copy()). 3412 3413 2007-05-04 Simon Goldschmidt 3414 * memp.c: checked in patch #5913: in memp_malloc() we can return memp as mem 3415 to save a little RAM (next pointer of memp is not used while not in pool). 3416 3417 2007-05-03 "maq" 3418 * sockets.c: Fix ioctl FIONREAD when some data remains from last recv. 3419 (patch #3574). 3420 3421 2007-04-23 Simon Goldschmidt 3422 * loopif.c, loopif.h, opt.h, src/netif/FILES: fix bug #2595: "loopif results 3423 in NULL reference for incoming TCP packets". Loopif has to be configured 3424 (using LWIP_LOOPIF_MULTITHREADING) to directly call netif->input() 3425 (multithreading environments, e.g. netif->input() = tcpip_input()) or 3426 putting packets on a list that is fed to the stack by calling loopif_poll() 3427 (single-thread / NO_SYS / polling environment where e.g. 3428 netif->input() = ip_input). 3429 3430 2007-04-17 Jonathan Larmour 3431 * pbuf.c: Use s32_t in pbuf_realloc(), as an s16_t can't reliably hold 3432 the difference between two u16_t's. 3433 * sockets.h: FD_SETSIZE needs to match number of sockets, which is 3434 MEMP_NUM_NETCONN in sockets.c right now. 3435 3436 2007-04-12 Jonathan Larmour 3437 * icmp.c: Reset IP header TTL in ICMP ECHO responses (bug #19580). 3438 3439 2007-04-12 Kieran Mansley 3440 * tcp.c, tcp_in.c, tcp_out.c, tcp.h: Modify way the retransmission 3441 timer is reset to fix bug#19434, with help from Oleg Tyshev. 3442 3443 2007-04-11 Simon Goldschmidt 3444 * etharp.c, pbuf.c, pbuf.h: 3rd fix for bug #11400 (arp-queuing): More pbufs than 3445 previously thought need to be copied (everything but PBUF_ROM!). Cleaned up 3446 pbuf.c: removed functions no needed any more (by etharp). 3447 3448 2007-04-11 Kieran Mansley 3449 * inet.c, ip_addr.h, sockets.h, sys.h, tcp.h: Apply patch #5745: Fix 3450 "Constant is long" warnings with 16bit compilers. Contributed by 3451 avatar@mmlab.cse.yzu.edu.tw 3452 3453 2007-04-05 Frédéric Bernon, Jonathan Larmour 3454 * api_msg.c: Fix bug #16830: "err_tcp() posts to connection mailbox when no pend on 3455 the mailbox is active". Now, the post is only done during a connect, and do_send, 3456 do_write and do_join_leave_group don't do anything if a previous error was signaled. 3457 3458 2007-04-03 Frédéric Bernon 3459 * ip.c: Don't set the IP_DF ("Don't fragment") flag in the IP header in IP output 3460 packets. See patch #5834. 3461 3462 2007-03-30 Frédéric Bernon 3463 * api_msg.c: add a "pcb_new" helper function to avoid redundant code, and to add 3464 missing pcb allocations checking (in do_bind, and for each raw_new). Fix style. 3465 3466 2007-03-30 Frédéric Bernon 3467 * most of files: prefix all debug.h define with "LWIP_" to avoid any conflict with 3468 others environment defines (these were too "generic"). 3469 3470 2007-03-28 Frédéric Bernon 3471 * api.h, api_lib.c, sockets.c: netbuf_ref doesn't check its internal pbuf_alloc call 3472 result and can cause a crash. lwip_send now check netbuf_ref result. 3473 3474 2007-03-28 Simon Goldschmidt 3475 * sockets.c Remove "#include <errno.h>" from sockets.c to avoid multiple 3476 definition of macros (in errno.h and lwip/arch.h) if LWIP_PROVIDE_ERRNO is 3477 defined. This is the way it should have been already (looking at 3478 doc/sys_arch.txt) 3479 3480 2007-03-28 Kieran Mansley 3481 * opt.h Change default PBUF_POOL_BUFSIZE (again) to accomodate default MSS + 3482 IP and TCP headers *and* physical link headers 3483 3484 2007-03-26 Frédéric Bernon (based on patch from Dmitry Potapov) 3485 * api_lib.c: patch for netconn_write(), fixes a possible race condition which cause 3486 to send some garbage. It is not a definitive solution, but the patch does solve 3487 the problem for most cases. 3488 3489 2007-03-22 Frédéric Bernon 3490 * api_msg.h, api_msg.c: Remove obsolete API_MSG_ACCEPT and do_accept (never used). 3491 3492 2007-03-22 Frédéric Bernon 3493 * api_lib.c: somes resources couldn't be freed if there was errors during 3494 netconn_new_with_proto_and_callback. 3495 3496 2007-03-22 Frédéric Bernon 3497 * ethernetif.c: update netif->input calls to check return value. In older ports, 3498 it's a good idea to upgrade them, even if before, there could be another problem 3499 (access to an uninitialized mailbox). 3500 3501 2007-03-21 Simon Goldschmidt 3502 * sockets.c: fixed bug #5067 (essentialy a signed/unsigned warning fixed 3503 by casting to unsigned). 3504 3505 2007-03-21 Frédéric Bernon 3506 * api_lib.c, api_msg.c, tcpip.c: integrate sys_mbox_fetch(conn->mbox, NULL) calls from 3507 api_lib.c to tcpip.c's tcpip_apimsg(). Now, use a local variable and not a 3508 dynamic one from memp to send tcpip_msg to tcpip_thread in a synchrone call. 3509 Free tcpip_msg from tcpip_apimsg is not done in tcpip_thread. This give a 3510 faster and more reliable communication between api_lib and tcpip. 3511 3512 2007-03-21 Frédéric Bernon 3513 * opt.h: Add LWIP_NETIF_CALLBACK (to avoid compiler warning) and set it to 0. 3514 3515 2007-03-21 Frédéric Bernon 3516 * api_msg.c, igmp.c, igmp.h: Fix C++ style comments 3517 3518 2007-03-21 Kieran Mansley 3519 * opt.h Change default PBUF_POOL_BUFSIZE to accomodate default MSS + 3520 IP and TCP headers 3521 3522 2007-03-21 Kieran Mansley 3523 * Fix all uses of pbuf_header to check the return value. In some 3524 cases just assert if it fails as I'm not sure how to fix them, but 3525 this is no worse than before when they would carry on regardless 3526 of the failure. 3527 3528 2007-03-21 Kieran Mansley 3529 * sockets.c, igmp.c, igmp.h, memp.h: Fix C++ style comments and 3530 comment out missing header include in icmp.c 3531 3532 2007-03-20 Frédéric Bernon 3533 * memp.h, stats.c: Fix stats_display function where memp_names table wasn't 3534 synchronized with memp.h. 3535 3536 2007-03-20 Frédéric Bernon 3537 * tcpip.c: Initialize tcpip's mbox, and verify if initialized in tcpip_input, 3538 tcpip_ethinput, tcpip_callback, tcpip_apimsg, to fix a init problem with 3539 network interfaces. Also fix a compiler warning. 3540 3541 2007-03-20 Kieran Mansley 3542 * udp.c: Only try and use pbuf_header() to make space for headers if 3543 not a ROM or REF pbuf. 3544 3545 2007-03-19 Frédéric Bernon 3546 * api_msg.h, api_msg.c, tcpip.h, tcpip.c: Add return types to tcpip_apimsg() 3547 and api_msg_post(). 3548 3549 2007-03-19 Frédéric Bernon 3550 * Remove unimplemented "memp_realloc" function from memp.h. 3551 3552 2007-03-11 Simon Goldschmidt 3553 * pbuf.c: checked in patch #5796: pbuf_alloc: len field claculation caused 3554 memory corruption. 3555 3556 2007-03-11 Simon Goldschmidt (based on patch from Dmitry Potapov) 3557 * api_lib.c, sockets.c, api.h, api_msg.h, sockets.h: Fixed bug #19251 3558 (missing `const' qualifier in socket functions), to get more compatible to 3559 standard POSIX sockets. 3560 3561 2007-03-11 Frédéric Bernon (based on patch from Dmitry Potapov) 3562 * sockets.c: Add asserts inside bind, connect and sendto to check input 3563 parameters. Remove excessive set_errno() calls after get_socket(), because 3564 errno is set inside of get_socket(). Move last sock_set_errno() inside 3565 lwip_close. 3566 3567 2007-03-09 Simon Goldschmidt 3568 * memp.c: Fixed bug #11400: New etharp queueing introduced bug: memp_memory 3569 was allocated too small. 3570 3571 2007-03-06 Simon Goldschmidt 3572 * tcpip.c: Initialize dhcp timers in tcpip_thread (if LWIP_DHCP) to protect 3573 the stack from concurrent access. 3574 3575 2007-03-06 Frédéric Bernon, Dmitry Potapov 3576 * tcpip.c, ip_frag.c, ethernetif.c: Fix some build problems, and a redundancy 3577 call to "lwip_stats.link.recv++;" in low_level_input() & ethernetif_input(). 3578 3579 2007-03-06 Simon Goldschmidt 3580 * ip_frag.c, ip_frag.h: Reduce code size: don't include code in those files 3581 if IP_FRAG == 0 and IP_REASSEMBLY == 0 3582 3583 2007-03-06 Frédéric Bernon, Simon Goldschmidt 3584 * opt.h, ip_frag.h, tcpip.h, tcpip.c, ethernetif.c: add new configuration 3585 option named ETHARP_TCPIP_ETHINPUT, which enable the new tcpip_ethinput. 3586 Allow to do ARP processing for incoming packets inside tcpip_thread 3587 (protecting ARP layer against concurrent access). You can also disable 3588 old code using tcp_input with new define ETHARP_TCPIP_INPUT set to 0. 3589 Older ports have to use tcpip_ethinput. 3590 3591 2007-03-06 Simon Goldschmidt (based on patch from Dmitry Potapov) 3592 * err.h, err.c: fixed compiler warning "initialization dircards qualifiers 3593 from pointer target type" 3594 3595 2007-03-05 Frédéric Bernon 3596 * opt.h, sockets.h: add new configuration options (LWIP_POSIX_SOCKETS_IO_NAMES, 3597 ETHARP_TRUST_IP_MAC, review SO_REUSE) 3598 3599 2007-03-04 Frédéric Bernon 3600 * api_msg.c: Remove some compiler warnings : parameter "pcb" was never 3601 referenced. 3602 3603 2007-03-04 Frédéric Bernon 3604 * api_lib.c: Fix "[patch #5764] api_lib.c cleanup: after patch #5687" (from 3605 Dmitry Potapov). 3606 The api_msg struct stay on the stack (not moved to netconn struct). 3607 3608 2007-03-04 Simon Goldschmidt (based on patch from Dmitry Potapov) 3609 * pbuf.c: Fix BUG#19168 - pbuf_free can cause deadlock (if 3610 SYS_LIGHTWEIGHT_PROT=1 & freeing PBUF_RAM when mem_sem is not available) 3611 Also fixed cast warning in pbuf_alloc() 3612 3613 2007-03-04 Simon Goldschmidt 3614 * etharp.c, etharp.h, memp.c, memp.h, opt.h: Fix BUG#11400 - don't corrupt 3615 existing pbuf chain when enqueuing multiple pbufs to a pending ARP request 3616 3617 2007-03-03 Frédéric Bernon 3618 * udp.c: remove obsolete line "static struct udp_pcb *pcb_cache = NULL;" 3619 It is static, and never used in udp.c except udp_init(). 3620 3621 2007-03-02 Simon Goldschmidt 3622 * tcpip.c: Moved call to ip_init(), udp_init() and tcp_init() from 3623 tcpip_thread() to tcpip_init(). This way, raw API connections can be 3624 initialized before tcpip_thread is running (e.g. before OS is started) 3625 3626 2007-03-02 Frédéric Bernon 3627 * rawapi.txt: Fix documentation mismatch with etharp.h about etharp_tmr's call 3628 interval. 3629 3630 2007-02-28 Kieran Mansley 3631 * pbuf.c: Fix BUG#17645 - ensure pbuf payload pointer is not moved 3632 outside the region of the pbuf by pbuf_header() 3633 3634 2007-02-28 Kieran Mansley 3635 * sockets.c: Fix BUG#19161 - ensure milliseconds timeout is non-zero 3636 when supplied timeout is also non-zero 3637 3638(STABLE-1.2.0) 3639 3640 2006-12-05 Leon Woestenberg 3641 * CHANGELOG: Mention STABLE-1.2.0 release. 3642 3643 ++ New features: 3644 3645 2006-12-01 Christiaan Simons 3646 * mem.h, opt.h: Added MEM_LIBC_MALLOC option. 3647 Note this is a workaround. Currently I have no other options left. 3648 3649 2006-10-26 Christiaan Simons (accepted patch by Jonathan Larmour) 3650 * ipv4/ip_frag.c: rename MAX_MTU to IP_FRAG_MAX_MTU and move define 3651 to include/lwip/opt.h. 3652 * ipv4/lwip/ip_frag.h: Remove unused IP_REASS_INTERVAL. 3653 Move IP_REASS_MAXAGE and IP_REASS_BUFSIZE to include/lwip/opt.h. 3654 * opt.h: Add above new options. 3655 3656 2006-08-18 Christiaan Simons 3657 * tcp_{in,out}.c: added SNMP counters. 3658 * ipv4/ip.c: added SNMP counters. 3659 * ipv4/ip_frag.c: added SNMP counters. 3660 3661 2006-08-08 Christiaan Simons 3662 * etharp.{c,h}: added etharp_find_addr() to read 3663 (stable) ethernet/IP address pair from ARP table 3664 3665 2006-07-14 Christiaan Simons 3666 * mib_structs.c: added 3667 * include/lwip/snmp_structs.h: added 3668 * netif.{c,h}, netif/ethernetif.c: added SNMP statistics to netif struct 3669 3670 2006-07-06 Christiaan Simons 3671 * snmp/asn1_{enc,dec}.c added 3672 * snmp/mib2.c added 3673 * snmp/msg_{in,out}.c added 3674 * include/lwip/snmp_asn1.h added 3675 * include/lwip/snmp_msg.h added 3676 * doc/snmp_agent.txt added 3677 3678 2006-03-29 Christiaan Simons 3679 * inet.c, inet.h: Added platform byteswap support. 3680 Added LWIP_PLATFORM_BYTESWAP define (defaults to 0) and 3681 optional LWIP_PLATFORM_HTONS(), LWIP_PLATFORM_HTONL() macros. 3682 3683 ++ Bug fixes: 3684 3685 2006-11-30 Christiaan Simons 3686 * dhcp.c: Fixed false triggers of request_timeout. 3687 3688 2006-11-28 Christiaan Simons 3689 * netif.c: In netif_add() fixed missing clear of ip_addr, netmask, gw and flags. 3690 3691 2006-10-11 Christiaan Simons 3692 * api_lib.c etharp.c, ip.c, memp.c, stats.c, sys.{c,h} tcp.h: 3693 Partially accepted patch #5449 for ANSI C compatibility / build fixes. 3694 * ipv4/lwip/ip.h ipv6/lwip/ip.h: Corrected UDP-Lite protocol 3695 identifier from 170 to 136 (bug #17574). 3696 3697 2006-10-10 Christiaan Simons 3698 * api_msg.c: Fixed Nagle algorithm as reported by Bob Grice. 3699 3700 2006-08-17 Christiaan Simons 3701 * udp.c: Fixed bug #17200, added check for broadcast 3702 destinations for PCBs bound to a unicast address. 3703 3704 2006-08-07 Christiaan Simons 3705 * api_msg.c: Flushing TCP output in do_close() (bug #15926). 3706 3707 2006-06-27 Christiaan Simons 3708 * api_msg.c: Applied patch for cold case (bug #11135). 3709 In accept_function() ensure newconn->callback is always initialized. 3710 3711 2006-06-15 Christiaan Simons 3712 * mem.h: added MEM_SIZE_F alias to fix an ancient cold case (bug #1748), 3713 facilitate printing of mem_size_t and u16_t statistics. 3714 3715 2006-06-14 Christiaan Simons 3716 * api_msg.c: Applied patch #5146 to handle allocation failures 3717 in accept() by Kevin Lawson. 3718 3719 2006-05-26 Christiaan Simons 3720 * api_lib.c: Removed conn->sem creation and destruction 3721 from netconn_write() and added sys_sem_new to netconn_new_*. 3722 3723(STABLE-1_1_1) 3724 3725 2006-03-03 Christiaan Simons 3726 * ipv4/ip_frag.c: Added bound-checking assertions on ip_reassbitmap 3727 access and added pbuf_alloc() return value checks. 3728 3729 2006-01-01 Leon Woestenberg <leon.woestenberg@gmx.net> 3730 * tcp_{in,out}.c, tcp_out.c: Removed 'even sndbuf' fix in TCP, which is 3731 now handled by the checksum routine properly. 3732 3733 2006-02-27 Leon Woestenberg <leon.woestenberg@gmx.net> 3734 * pbuf.c: Fix alignment; pbuf_init() would not work unless 3735 pbuf_pool_memory[] was properly aligned. (Patch by Curt McDowell.) 3736 3737 2005-12-20 Leon Woestenberg <leon.woestenberg@gmx.net> 3738 * tcp.c: Remove PCBs which stay in LAST_ACK state too long. Patch 3739 submitted by Mitrani Hiroshi. 3740 3741 2005-12-15 Christiaan Simons 3742 * inet.c: Disabled the added summing routine to preserve code space. 3743 3744 2005-12-14 Leon Woestenberg <leon.woestenberg@gmx.net> 3745 * tcp_in.c: Duplicate FIN ACK race condition fix by Kelvin Lawson. 3746 Added Curt McDowell's optimized checksumming routine for future 3747 inclusion. Need to create test case for unaliged, aligned, odd, 3748 even length combination of cases on various endianess machines. 3749 3750 2005-12-09 Christiaan Simons 3751 * inet.c: Rewrote standard checksum routine in proper portable C. 3752 3753 2005-11-25 Christiaan Simons 3754 * udp.c tcp.c: Removed SO_REUSE hack. Should reside in socket code only. 3755 * *.c: introduced cc.h LWIP_DEBUG formatters matching the u16_t, s16_t, 3756 u32_t, s32_t typedefs. This solves most debug word-length assumes. 3757 3758 2005-07-17 Leon Woestenberg <leon.woestenberg@gmx.net> 3759 * inet.c: Fixed unaligned 16-bit access in the standard checksum 3760 routine by Peter Jolasson. 3761 * slipif.c: Fixed implementation assumption of single-pbuf datagrams. 3762 3763 2005-02-04 Leon Woestenberg <leon.woestenberg@gmx.net> 3764 * tcp_out.c: Fixed uninitialized 'queue' referenced in memerr branch. 3765 * tcp_{out|in}.c: Applied patch fixing unaligned access. 3766 3767 2005-01-04 Leon Woestenberg <leon.woestenberg@gmx.net> 3768 * pbuf.c: Fixed missing semicolon after LWIP_DEBUG statement. 3769 3770 2005-01-03 Leon Woestenberg <leon.woestenberg@gmx.net> 3771 * udp.c: UDP pcb->recv() was called even when it was NULL. 3772 3773(STABLE-1_1_0) 3774 3775 2004-12-28 Leon Woestenberg <leon.woestenberg@gmx.net> 3776 * etharp.*: Disabled multiple packets on the ARP queue. 3777 This clashes with TCP queueing. 3778 3779 2004-11-28 Leon Woestenberg <leon.woestenberg@gmx.net> 3780 * etharp.*: Fixed race condition from ARP request to ARP timeout. 3781 Halved the ARP period, doubled the period counts. 3782 ETHARP_MAX_PENDING now should be at least 2. This prevents 3783 the counter from reaching 0 right away (which would allow 3784 too little time for ARP responses to be received). 3785 3786 2004-11-25 Leon Woestenberg <leon.woestenberg@gmx.net> 3787 * dhcp.c: Decline messages were not multicast but unicast. 3788 * etharp.c: ETHARP_CREATE is renamed to ETHARP_TRY_HARD. 3789 Do not try hard to insert arbitrary packet's source address, 3790 etharp_ip_input() now calls etharp_update() without ETHARP_TRY_HARD. 3791 etharp_query() now always DOES call ETHARP_TRY_HARD so that users 3792 querying an address will see it appear in the cache (DHCP could 3793 suffer from this when a server invalidly gave an in-use address.) 3794 * ipv4/ip_addr.h: Renamed ip_addr_maskcmp() to _netcmp() as we are 3795 comparing network addresses (identifiers), not the network masks 3796 themselves. 3797 * ipv4/ip_addr.c: ip_addr_isbroadcast() now checks that the given 3798 IP address actually belongs to the network of the given interface. 3799 3800 2004-11-24 Kieran Mansley <kjm25@cam.ac.uk> 3801 * tcp.c: Increment pcb->snd_buf when ACK is received in SYN_SENT state. 3802 3803(STABLE-1_1_0-RC1) 3804 3805 2004-10-16 Kieran Mansley <kjm25@cam.ac.uk> 3806 * tcp.c: Add code to tcp_recved() to send an ACK (window update) immediately, 3807 even if one is already pending, if the rcv_wnd is above a threshold 3808 (currently TCP_WND/2). This avoids waiting for a timer to expire to send a 3809 delayed ACK in order to open the window if the stack is only receiving data. 3810 3811 2004-09-12 Kieran Mansley <kjm25@cam.ac.uk> 3812 * tcp*.*: Retransmit time-out handling improvement by Sam Jansen. 3813 3814 2004-08-20 Tony Mountifield <tony@softins.co.uk> 3815 * etharp.c: Make sure the first pbuf queued on an ARP entry 3816 is properly ref counted. 3817 3818 2004-07-27 Tony Mountifield <tony@softins.co.uk> 3819 * debug.h: Added (int) cast in LWIP_DEBUGF() to avoid compiler 3820 warnings about comparison. 3821 * pbuf.c: Stopped compiler complaining of empty if statement 3822 when LWIP_DEBUGF() empty. Closed an unclosed comment. 3823 * tcp.c: Stopped compiler complaining of empty if statement 3824 when LWIP_DEBUGF() empty. 3825 * ip.h Corrected IPH_TOS() macro: returns a byte, so doesn't need htons(). 3826 * inet.c: Added a couple of casts to quiet the compiler. 3827 No need to test isascii(c) before isdigit(c) or isxdigit(c). 3828 3829 2004-07-22 Tony Mountifield <tony@softins.co.uk> 3830 * inet.c: Made data types consistent in inet_ntoa(). 3831 Added casts for return values of checksum routines, to pacify compiler. 3832 * ip_frag.c, tcp_out.c, sockets.c, pbuf.c 3833 Small corrections to some debugging statements, to pacify compiler. 3834 3835 2004-07-21 Tony Mountifield <tony@softins.co.uk> 3836 * etharp.c: Removed spurious semicolon and added missing end-of-comment. 3837 * ethernetif.c Updated low_level_output() to match prototype for 3838 netif->linkoutput and changed low_level_input() similarly for consistency. 3839 * api_msg.c: Changed recv_raw() from int to u8_t, to match prototype 3840 of raw_recv() in raw.h and so avoid compiler error. 3841 * sockets.c: Added trivial (int) cast to keep compiler happier. 3842 * ip.c, netif.c Changed debug statements to use the tidier ip4_addrN() macros. 3843 3844(STABLE-1_0_0) 3845 3846 ++ Changes: 3847 3848 2004-07-05 Leon Woestenberg <leon.woestenberg@gmx.net> 3849 * sockets.*: Restructured LWIP_PRIVATE_TIMEVAL. Make sure 3850 your cc.h file defines this either 1 or 0. If non-defined, 3851 defaults to 1. 3852 * .c: Added <string.h> and <errno.h> includes where used. 3853 * etharp.c: Made some array indices unsigned. 3854 3855 2004-06-27 Leon Woestenberg <leon.woestenberg@gmx.net> 3856 * netif.*: Added netif_set_up()/down(). 3857 * dhcp.c: Changes to restart program flow. 3858 3859 2004-05-07 Leon Woestenberg <leon.woestenberg@gmx.net> 3860 * etharp.c: In find_entry(), instead of a list traversal per candidate, do a 3861 single-pass lookup for different candidates. Should exploit locality. 3862 3863 2004-04-29 Leon Woestenberg <leon.woestenberg@gmx.net> 3864 * tcp*.c: Cleaned up source comment documentation for Doxygen processing. 3865 * opt.h: ETHARP_ALWAYS_INSERT option removed to comply with ARP RFC. 3866 * etharp.c: update_arp_entry() only adds new ARP entries when adviced to by 3867 the caller. This deprecates the ETHARP_ALWAYS_INSERT overrule option. 3868 3869 ++ Bug fixes: 3870 3871 2004-04-27 Leon Woestenberg <leon.woestenberg@gmx.net> 3872 * etharp.c: Applied patch of bug #8708 by Toni Mountifield with a solution 3873 suggested by Timmy Brolin. Fix for 32-bit processors that cannot access 3874 non-aligned 32-bit words, such as soms 32-bit TCP/IP header fields. Fix 3875 is to prefix the 14-bit Ethernet headers with two padding bytes. 3876 3877 2004-04-23 Leon Woestenberg <leon.woestenberg@gmx.net> 3878 * ip_addr.c: Fix in the ip_addr_isbroadcast() check. 3879 * etharp.c: Fixed the case where the packet that initiates the ARP request 3880 is not queued, and gets lost. Fixed the case where the packets destination 3881 address is already known; we now always queue the packet and perform an ARP 3882 request. 3883 3884(STABLE-0_7_0) 3885 3886 ++ Bug fixes: 3887 3888 * Fixed TCP bug for SYN_SENT to ESTABLISHED state transition. 3889 * Fixed TCP bug in dequeueing of FIN from out of order segment queue. 3890 * Fixed two possible NULL references in rare cases. 3891 3892(STABLE-0_6_6) 3893 3894 ++ Bug fixes: 3895 3896 * Fixed DHCP which did not include the IP address in DECLINE messages. 3897 3898 ++ Changes: 3899 3900 * etharp.c has been hauled over a bit. 3901 3902(STABLE-0_6_5) 3903 3904 ++ Bug fixes: 3905 3906 * Fixed TCP bug induced by bad window resizing with unidirectional TCP traffic. 3907 * Packets sent from ARP queue had invalid source hardware address. 3908 3909 ++ Changes: 3910 3911 * Pass-by ARP requests do now update the cache. 3912 3913 ++ New features: 3914 3915 * No longer dependent on ctype.h. 3916 * New socket options. 3917 * Raw IP pcb support. 3918 3919(STABLE-0_6_4) 3920 3921 ++ Bug fixes: 3922 3923 * Some debug formatters and casts fixed. 3924 * Numereous fixes in PPP. 3925 3926 ++ Changes: 3927 3928 * DEBUGF now is LWIP_DEBUGF 3929 * pbuf_dechain() has been re-enabled. 3930 * Mentioned the changed use of CVS branches in README. 3931 3932(STABLE-0_6_3) 3933 3934 ++ Bug fixes: 3935 3936 * Fixed pool pbuf memory leak in pbuf_alloc(). 3937 Occured if not enough PBUF_POOL pbufs for a packet pbuf chain. 3938 Reported by Savin Zlobec. 3939 3940 * PBUF_POOL chains had their tot_len field not set for non-first 3941 pbufs. Fixed in pbuf_alloc(). 3942 3943 ++ New features: 3944 3945 * Added PPP stack contributed by Marc Boucher 3946 3947 ++ Changes: 3948 3949 * Now drops short packets for ICMP/UDP/TCP protocols. More robust. 3950 3951 * ARP queueuing now queues the latest packet instead of the first. 3952 This is the RFC recommended behaviour, but can be overridden in 3953 lwipopts.h. 3954 3955(0.6.2) 3956 3957 ++ Bugfixes: 3958 3959 * TCP has been fixed to deal with the new use of the pbuf->ref 3960 counter. 3961 3962 * DHCP dhcp_inform() crash bug fixed. 3963 3964 ++ Changes: 3965 3966 * Removed pbuf_pool_free_cache and pbuf_pool_alloc_cache. Also removed 3967 pbuf_refresh(). This has sped up pbuf pool operations considerably. 3968 Implemented by David Haas. 3969 3970(0.6.1) 3971 3972 ++ New features: 3973 3974 * The packet buffer implementation has been enhanced to support 3975 zero-copy and copy-on-demand for packet buffers which have their 3976 payloads in application-managed memory. 3977 Implemented by David Haas. 3978 3979 Use PBUF_REF to make a pbuf refer to RAM. lwIP will use zero-copy 3980 if an outgoing packet can be directly sent on the link, or perform 3981 a copy-on-demand when necessary. 3982 3983 The application can safely assume the packet is sent, and the RAM 3984 is available to the application directly after calling udp_send() 3985 or similar function. 3986 3987 ++ Bugfixes: 3988 3989 * ARP_QUEUEING should now correctly work for all cases, including 3990 PBUF_REF. 3991 Implemented by Leon Woestenberg. 3992 3993 ++ Changes: 3994 3995 * IP_ADDR_ANY is no longer a NULL pointer. Instead, it is a pointer 3996 to a '0.0.0.0' IP address. 3997 3998 * The packet buffer implementation is changed. The pbuf->ref counter 3999 meaning has changed, and several pbuf functions have been 4000 adapted accordingly. 4001 4002 * netif drivers have to be changed to set the hardware address length field 4003 that must be initialized correctly by the driver (hint: 6 for Ethernet MAC). 4004 See the contrib/ports/c16x cs8900 driver as a driver example. 4005 4006 * netif's have a dhcp field that must be initialized to NULL by the driver. 4007 See the contrib/ports/c16x cs8900 driver as a driver example. 4008 4009(0.5.x) This file has been unmaintained up to 0.6.1. All changes are 4010 logged in CVS but have not been explained here. 4011 4012(0.5.3) Changes since version 0.5.2 4013 4014 ++ Bugfixes: 4015 4016 * memp_malloc(MEMP_API_MSG) could fail with multiple application 4017 threads because it wasn't protected by semaphores. 4018 4019 ++ Other changes: 4020 4021 * struct ip_addr now packed. 4022 4023 * The name of the time variable in arp.c has been changed to ctime 4024 to avoid conflicts with the time() function. 4025 4026(0.5.2) Changes since version 0.5.1 4027 4028 ++ New features: 4029 4030 * A new TCP function, tcp_tmr(), now handles both TCP timers. 4031 4032 ++ Bugfixes: 4033 4034 * A bug in tcp_parseopt() could cause the stack to hang because of a 4035 malformed TCP option. 4036 4037 * The address of new connections in the accept() function in the BSD 4038 socket library was not handled correctly. 4039 4040 * pbuf_dechain() did not update the ->tot_len field of the tail. 4041 4042 * Aborted TCP connections were not handled correctly in all 4043 situations. 4044 4045 ++ Other changes: 4046 4047 * All protocol header structs are now packed. 4048 4049 * The ->len field in the tcp_seg structure now counts the actual 4050 amount of data, and does not add one for SYN and FIN segments. 4051 4052(0.5.1) Changes since version 0.5.0 4053 4054 ++ New features: 4055 4056 * Possible to run as a user process under Linux. 4057 4058 * Preliminary support for cross platform packed structs. 4059 4060 * ARP timer now implemented. 4061 4062 ++ Bugfixes: 4063 4064 * TCP output queue length was badly initialized when opening 4065 connections. 4066 4067 * TCP delayed ACKs were not sent correctly. 4068 4069 * Explicit initialization of BSS segment variables. 4070 4071 * read() in BSD socket library could drop data. 4072 4073 * Problems with memory alignment. 4074 4075 * Situations when all TCP buffers were used could lead to 4076 starvation. 4077 4078 * TCP MSS option wasn't parsed correctly. 4079 4080 * Problems with UDP checksum calculation. 4081 4082 * IP multicast address tests had endianess problems. 4083 4084 * ARP requests had wrong destination hardware address. 4085 4086 ++ Other changes: 4087 4088 * struct eth_addr changed from u16_t[3] array to u8_t[6]. 4089 4090 * A ->linkoutput() member was added to struct netif. 4091 4092 * TCP and UDP ->dest_* struct members where changed to ->remote_*. 4093 4094 * ntoh* macros are now null definitions for big endian CPUs. 4095 4096(0.5.0) Changes since version 0.4.2 4097 4098 ++ New features: 4099 4100 * Redesigned operating system emulation layer to make porting easier. 4101 4102 * Better control over TCP output buffers. 4103 4104 * Documenation added. 4105 4106 ++ Bugfixes: 4107 4108 * Locking issues in buffer management. 4109 4110 * Bugfixes in the sequential API. 4111 4112 * IP forwarding could cause memory leakage. This has been fixed. 4113 4114 ++ Other changes: 4115 4116 * Directory structure somewhat changed; the core/ tree has been 4117 collapsed. 4118 4119(0.4.2) Changes since version 0.4.1 4120 4121 ++ New features: 4122 4123 * Experimental ARP implementation added. 4124 4125 * Skeleton Ethernet driver added. 4126 4127 * Experimental BSD socket API library added. 4128 4129 ++ Bugfixes: 4130 4131 * In very intense situations, memory leakage could occur. This has 4132 been fixed. 4133 4134 ++ Other changes: 4135 4136 * Variables named "data" and "code" have been renamed in order to 4137 avoid name conflicts in certain compilers. 4138 4139 * Variable++ have in appliciable cases been translated to ++variable 4140 since some compilers generate better code in the latter case. 4141 4142(0.4.1) Changes since version 0.4 4143 4144 ++ New features: 4145 4146 * TCP: Connection attempts time out earlier than data 4147 transmissions. Nagle algorithm implemented. Push flag set on the 4148 last segment in a burst. 4149 4150 * UDP: experimental support for UDP-Lite extensions. 4151 4152 ++ Bugfixes: 4153 4154 * TCP: out of order segments were in some cases handled incorrectly, 4155 and this has now been fixed. Delayed acknowledgements was broken 4156 in 0.4, has now been fixed. Binding to an address that is in use 4157 now results in an error. Reset connections sometimes hung an 4158 application; this has been fixed. 4159 4160 * Checksum calculation sometimes failed for chained pbufs with odd 4161 lengths. This has been fixed. 4162 4163 * API: a lot of bug fixes in the API. The UDP API has been improved 4164 and tested. Error reporting and handling has been 4165 improved. Logical flaws and race conditions for incoming TCP 4166 connections has been found and removed. 4167 4168 * Memory manager: alignment issues. Reallocating memory sometimes 4169 failed, this has been fixed. 4170 4171 * Generic library: bcopy was flawed and has been fixed. 4172 4173 ++ Other changes: 4174 4175 * API: all datatypes has been changed from generic ones such as 4176 ints, to specified ones such as u16_t. Functions that return 4177 errors now have the correct type (err_t). 4178 4179 * General: A lot of code cleaned up and debugging code removed. Many 4180 portability issues have been fixed. 4181 4182 * The license was changed; the advertising clause was removed. 4183 4184 * C64 port added. 4185 4186 * Thanks: Huge thanks go to Dagan Galarneau, Horst Garnetzke, Petri 4187 Kosunen, Mikael Caleres, and Frits Wilmink for reporting and 4188 fixing bugs! 4189 4190(0.4) Changes since version 0.3.1 4191 4192 * Memory management has been radically changed; instead of 4193 allocating memory from a shared heap, memory for objects that are 4194 rapidly allocated and deallocated is now kept in pools. Allocation 4195 and deallocation from those memory pools is very fast. The shared 4196 heap is still present but is used less frequently. 4197 4198 * The memory, memory pool, and packet buffer subsystems now support 4199 4-, 2-, or 1-byte alignment. 4200 4201 * "Out of memory" situations are handled in a more robust way. 4202 4203 * Stack usage has been reduced. 4204 4205 * Easier configuration of lwIP parameters such as memory usage, 4206 TTLs, statistics gathering, etc. All configuration parameters are 4207 now kept in a single header file "lwipopts.h". 4208 4209 * The directory structure has been changed slightly so that all 4210 architecture specific files are kept under the src/arch 4211 hierarchy. 4212 4213 * Error propagation has been improved, both in the protocol modules 4214 and in the API. 4215 4216 * The code for the RTXC architecture has been implemented, tested 4217 and put to use. 4218 4219 * Bugs have been found and corrected in the TCP, UDP, IP, API, and 4220 the Internet checksum modules. 4221 4222 * Bugs related to porting between a 32-bit and a 16-bit architecture 4223 have been found and corrected. 4224 4225 * The license has been changed slightly to conform more with the 4226 original BSD license, including the advertisement clause. 4227 4228(0.3.1) Changes since version 0.3 4229 4230 * Fix of a fatal bug in the buffer management. Pbufs with allocated 4231 RAM never returned the RAM when the pbuf was deallocated. 4232 4233 * TCP congestion control, window updates and retransmissions did not 4234 work correctly. This has now been fixed. 4235 4236 * Bugfixes in the API. 4237 4238(0.3) Changes since version 0.2 4239 4240 * New and improved directory structure. All include files are now 4241 kept in a dedicated include/ directory. 4242 4243 * The API now has proper error handling. A new function, 4244 netconn_err(), now returns an error code for the connection in 4245 case of errors. 4246 4247 * Improvements in the memory management subsystem. The system now 4248 keeps a pointer to the lowest free memory block. A new function, 4249 mem_malloc2() tries to allocate memory once, and if it fails tries 4250 to free some memory and retry the allocation. 4251 4252 * Much testing has been done with limited memory 4253 configurations. lwIP now does a better job when overloaded. 4254 4255 * Some bugfixes and improvements to the buffer (pbuf) subsystem. 4256 4257 * Many bugfixes in the TCP code: 4258 4259 - Fixed a bug in tcp_close(). 4260 4261 - The TCP receive window was incorrectly closed when out of 4262 sequence segments was received. This has been fixed. 4263 4264 - Connections are now timed-out of the FIN-WAIT-2 state. 4265 4266 - The initial congestion window could in some cases be too 4267 large. This has been fixed. 4268 4269 - The retransmission queue could in some cases be screwed up. This 4270 has been fixed. 4271 4272 - TCP RST flag now handled correctly. 4273 4274 - Out of sequence data was in some cases never delivered to the 4275 application. This has been fixed. 4276 4277 - Retransmitted segments now contain the correct acknowledgment 4278 number and advertised window. 4279 4280 - TCP retransmission timeout backoffs are not correctly computed 4281 (ala BSD). After a number of retransmissions, TCP now gives up 4282 the connection. 4283 4284 * TCP connections now are kept on three lists, one for active 4285 connections, one for listening connections, and one for 4286 connections that are in TIME-WAIT. This greatly speeds up the fast 4287 timeout processing for sending delayed ACKs. 4288 4289 * TCP now provides proper feedback to the application when a 4290 connection has been successfully set up. 4291 4292 * More comments have been added to the code. The code has also been 4293 somewhat cleaned up. 4294 4295(0.2) Initial public release. 4296