1*10465441SEvalZeroThis file lists major changes between release versions that require 2*10465441SEvalZeroports or applications to be changed. Use it to update a port or an 3*10465441SEvalZeroapplication written for an older version of lwIP to correctly work 4*10465441SEvalZerowith newer versions. 5*10465441SEvalZero 6*10465441SEvalZero 7*10465441SEvalZero(CVS HEAD) 8*10465441SEvalZero 9*10465441SEvalZero * [Enter new changes just after this line - do not remove this line] 10*10465441SEvalZero 11*10465441SEvalZero ++ Application changes: 12*10465441SEvalZero 13*10465441SEvalZero * Replaced struct ip_addr by typedef ip_addr_t (struct ip_addr is kept for 14*10465441SEvalZero compatibility to old applications, but will be removed in the future). 15*10465441SEvalZero 16*10465441SEvalZero * Renamed mem_realloc() to mem_trim() to prevent confusion with realloc() 17*10465441SEvalZero 18*10465441SEvalZero +++ Raw API: 19*10465441SEvalZero * Changed the semantics of tcp_close() (since it was rather a 20*10465441SEvalZero shutdown before): Now the application does *NOT* get any calls to the recv 21*10465441SEvalZero callback (aside from NULL/closed) after calling tcp_close() 22*10465441SEvalZero 23*10465441SEvalZero * When calling tcp_abort() from a raw API TCP callback function, 24*10465441SEvalZero make sure you return ERR_ABRT to prevent accessing unallocated memory. 25*10465441SEvalZero (ERR_ABRT now means the applicaiton has called tcp_abort!) 26*10465441SEvalZero 27*10465441SEvalZero +++ Netconn API: 28*10465441SEvalZero * Changed netconn_receive() and netconn_accept() to return 29*10465441SEvalZero err_t, not a pointer to new data/netconn. 30*10465441SEvalZero 31*10465441SEvalZero +++ Socket API: 32*10465441SEvalZero * LWIP_SO_RCVTIMEO: when accept() or recv() time out, they 33*10465441SEvalZero now set errno to EWOULDBLOCK/EAGAIN, not ETIMEDOUT. 34*10465441SEvalZero 35*10465441SEvalZero * Added a minimal version of posix fctl() to have a 36*10465441SEvalZero standardised way to set O_NONBLOCK for nonblocking sockets. 37*10465441SEvalZero 38*10465441SEvalZero +++ all APIs: 39*10465441SEvalZero * correctly implemented SO(F)_REUSEADDR 40*10465441SEvalZero 41*10465441SEvalZero ++ Port changes 42*10465441SEvalZero 43*10465441SEvalZero +++ new files: 44*10465441SEvalZero 45*10465441SEvalZero * Added 4 new files: def.c, timers.c, timers.h, tcp_impl.h: 46*10465441SEvalZero 47*10465441SEvalZero * Moved stack-internal parts of tcp.h to tcp_impl.h, tcp.h now only contains 48*10465441SEvalZero the actual application programmer's API 49*10465441SEvalZero 50*10465441SEvalZero * Separated timer implementation from sys.h/.c, moved to timers.h/.c; 51*10465441SEvalZero Added timer implementation for NO_SYS==1, set NO_SYS_NO_TIMERS==1 if you 52*10465441SEvalZero still want to use your own timer implementation for NO_SYS==0 (as before). 53*10465441SEvalZero 54*10465441SEvalZero +++ sys layer: 55*10465441SEvalZero 56*10465441SEvalZero * Converted mbox- and semaphore-functions to take pointers to sys_mbox_t/ 57*10465441SEvalZero sys_sem_t; 58*10465441SEvalZero 59*10465441SEvalZero * Converted sys_mbox_new/sys_sem_new to take pointers and return err_t; 60*10465441SEvalZero 61*10465441SEvalZero * Added Mutex concept in sys_arch (define LWIP_COMPAT_MUTEX to let sys.h use 62*10465441SEvalZero binary semaphores instead of mutexes - as before) 63*10465441SEvalZero 64*10465441SEvalZero +++ new options: 65*10465441SEvalZero 66*10465441SEvalZero * Don't waste memory when chaining segments, added option TCP_OVERSIZE to 67*10465441SEvalZero prevent creating many small pbufs when calling tcp_write with many small 68*10465441SEvalZero blocks of data. Instead, pbufs are allocated larger than needed and the 69*10465441SEvalZero space is used for later calls to tcp_write. 70*10465441SEvalZero 71*10465441SEvalZero * Added LWIP_NETIF_TX_SINGLE_PBUF to always copy to try to create single pbufs 72*10465441SEvalZero in tcp_write/udp_send. 73*10465441SEvalZero 74*10465441SEvalZero * Added an additional option LWIP_ETHERNET to support ethernet without ARP 75*10465441SEvalZero (necessary for pure PPPoE) 76*10465441SEvalZero 77*10465441SEvalZero * Add MEMP_SEPARATE_POOLS to place memory pools in separate arrays. This may 78*10465441SEvalZero be used to place these pools into user-defined memory by using external 79*10465441SEvalZero declaration. 80*10465441SEvalZero 81*10465441SEvalZero * Added TCP_SNDQUEUELOWAT corresponding to TCP_SNDLOWAT 82*10465441SEvalZero 83*10465441SEvalZero +++ new pools: 84*10465441SEvalZero 85*10465441SEvalZero * Netdb uses a memp pool for allocating memory when getaddrinfo() is called, 86*10465441SEvalZero so MEMP_NUM_NETDB has to be set accordingly. 87*10465441SEvalZero 88*10465441SEvalZero * DNS_LOCAL_HOSTLIST_IS_DYNAMIC uses a memp pool instead of the heap, so 89*10465441SEvalZero MEMP_NUM_LOCALHOSTLIST has to be set accordingly. 90*10465441SEvalZero 91*10465441SEvalZero * Snmp-agent uses a memp pools instead of the heap, so MEMP_NUM_SNMP_* have 92*10465441SEvalZero to be set accordingly. 93*10465441SEvalZero 94*10465441SEvalZero * PPPoE uses a MEMP pool instead of the heap, so MEMP_NUM_PPPOE_INTERFACES 95*10465441SEvalZero has to be set accordingly 96*10465441SEvalZero 97*10465441SEvalZero * Integrated loopif into netif.c - loopif does not have to be created by the 98*10465441SEvalZero port any more, just define LWIP_HAVE_LOOPIF to 1. 99*10465441SEvalZero 100*10465441SEvalZero * Added define LWIP_RAND() for lwip-wide randomization (needs to be defined 101*10465441SEvalZero in cc.h, e.g. used by igmp) 102*10465441SEvalZero 103*10465441SEvalZero * Added printf-formatter X8_F to printf u8_t as hex 104*10465441SEvalZero 105*10465441SEvalZero * The heap now may be moved to user-defined memory by defining 106*10465441SEvalZero LWIP_RAM_HEAP_POINTER as a void pointer to that memory's address 107*10465441SEvalZero 108*10465441SEvalZero * added autoip_set_struct() and dhcp_set_struct() to let autoip and dhcp work 109*10465441SEvalZero with user-allocated structs instead of calling mem_malloc 110*10465441SEvalZero 111*10465441SEvalZero * Added const char* name to mem- and memp-stats for easier debugging. 112*10465441SEvalZero 113*10465441SEvalZero * Calculate the TCP/UDP checksum while copying to only fetch data once: 114*10465441SEvalZero Define LWIP_CHKSUM_COPY to a memcpy-like function that returns the checksum 115*10465441SEvalZero 116*10465441SEvalZero * Added SO_REUSE_RXTOALL to pass received UDP broadcast/multicast packets to 117*10465441SEvalZero more than one pcb. 118*10465441SEvalZero 119*10465441SEvalZero * Changed the semantics of ARP_QUEUEING==0: ARP_QUEUEING now cannot be turned 120*10465441SEvalZero off any more, if this is set to 0, only one packet (the most recent one) is 121*10465441SEvalZero queued (like demanded by RFC 1122). 122*10465441SEvalZero 123*10465441SEvalZero 124*10465441SEvalZero ++ Major bugfixes/improvements 125*10465441SEvalZero 126*10465441SEvalZero * Implemented tcp_shutdown() to only shut down one end of a connection 127*10465441SEvalZero * Implemented shutdown() at socket- and netconn-level 128*10465441SEvalZero * Added errorset support to select() + improved select speed overhead 129*10465441SEvalZero * Merged pppd to v2.3.11 (including some backported bugfixes from 2.4.x) 130*10465441SEvalZero * Added timer implementation for NO_SYS==1 (may be disabled with NO_SYS_NO_TIMERS==1 131*10465441SEvalZero * Use macros defined in ip_addr.h to work with IP addresses 132*10465441SEvalZero * Implemented many nonblocking socket/netconn functions 133*10465441SEvalZero * Fixed ARP input processing: only add a new entry if a request was directed as us 134*10465441SEvalZero * mem_realloc() to mem_trim() to prevent confusion with realloc() 135*10465441SEvalZero * Some improvements for AutoIP (don't route/forward link-local addresses, don't break 136*10465441SEvalZero existing connections when assigning a routable address) 137*10465441SEvalZero * Correctly handle remote side overrunning our rcv_wnd in ooseq case 138*10465441SEvalZero * Removed packing from ip_addr_t, the packed version is now only used in protocol headers 139*10465441SEvalZero * Corrected PBUF_POOL_BUFSIZE for ports where ETH_PAD_SIZE > 0 140*10465441SEvalZero * Added support for static ARP table entries 141*10465441SEvalZero 142*10465441SEvalZero(STABLE-1.3.2) 143*10465441SEvalZero 144*10465441SEvalZero * initial version of this file 145