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