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