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