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