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