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