2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsyncThis file lists major changes between release versions that require
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsyncports or applications to be changed. Use it to update a port or an
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsyncapplication written for an older version of lwIP to correctly work
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsyncwith newer versions.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync(CVS HEAD)
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * [Enter new changes just after this line - do not remove this line]
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync ++ Application changes:
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Replaced struct ip_addr by typedef ip_addr_t (struct ip_addr is kept for
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync compatibility to old applications, but will be removed in the future).
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Renamed mem_realloc() to mem_trim() to prevent confusion with realloc()
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync +++ Raw API:
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Changed the semantics of tcp_close() (since it was rather a
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync shutdown before): Now the application does *NOT* get any calls to the recv
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync callback (aside from NULL/closed) after calling tcp_close()
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * When calling tcp_abort() from a raw API TCP callback function,
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync make sure you return ERR_ABRT to prevent accessing unallocated memory.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync (ERR_ABRT now means the applicaiton has called tcp_abort!)
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync +++ Netconn API:
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Changed netconn_receive() and netconn_accept() to return
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync err_t, not a pointer to new data/netconn.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync +++ Socket API:
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * LWIP_SO_RCVTIMEO: when accept() or recv() time out, they
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync now set errno to EWOULDBLOCK/EAGAIN, not ETIMEDOUT.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added a minimal version of posix fctl() to have a
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync standardised way to set O_NONBLOCK for nonblocking sockets.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync +++ all APIs:
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * correctly implemented SO(F)_REUSEADDR
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync ++ Port changes
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync +++ new files:
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added 4 new files: def.c, timers.c, timers.h, tcp_impl.h:
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Moved stack-internal parts of tcp.h to tcp_impl.h, tcp.h now only contains
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync the actual application programmer's API
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Separated timer implementation from sys.h/.c, moved to timers.h/.c;
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync Added timer implementation for NO_SYS==1, set NO_SYS_NO_TIMERS==1 if you
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync still want to use your own timer implementation for NO_SYS==0 (as before).
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync +++ sys layer:
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Converted mbox- and semaphore-functions to take pointers to sys_mbox_t/
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync sys_sem_t;
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Converted sys_mbox_new/sys_sem_new to take pointers and return err_t;
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added Mutex concept in sys_arch (define LWIP_COMPAT_MUTEX to let sys.h use
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync binary semaphores instead of mutexes - as before)
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync +++ new options:
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Don't waste memory when chaining segments, added option TCP_OVERSIZE to
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync prevent creating many small pbufs when calling tcp_write with many small
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync blocks of data. Instead, pbufs are allocated larger than needed and the
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync space is used for later calls to tcp_write.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added LWIP_NETIF_TX_SINGLE_PBUF to always copy to try to create single pbufs
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync in tcp_write/udp_send.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added an additional option LWIP_ETHERNET to support ethernet without ARP
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync (necessary for pure PPPoE)
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Add MEMP_SEPARATE_POOLS to place memory pools in separate arrays. This may
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync be used to place these pools into user-defined memory by using external
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync declaration.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added TCP_SNDQUEUELOWAT corresponding to TCP_SNDLOWAT
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync +++ new pools:
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Netdb uses a memp pool for allocating memory when getaddrinfo() is called,
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync so MEMP_NUM_NETDB has to be set accordingly.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * DNS_LOCAL_HOSTLIST_IS_DYNAMIC uses a memp pool instead of the heap, so
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync MEMP_NUM_LOCALHOSTLIST has to be set accordingly.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Snmp-agent uses a memp pools instead of the heap, so MEMP_NUM_SNMP_* have
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync to be set accordingly.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * PPPoE uses a MEMP pool instead of the heap, so MEMP_NUM_PPPOE_INTERFACES
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync has to be set accordingly
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Integrated loopif into netif.c - loopif does not have to be created by the
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync port any more, just define LWIP_HAVE_LOOPIF to 1.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added define LWIP_RAND() for lwip-wide randomization (needs to be defined
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync in cc.h, e.g. used by igmp)
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added printf-formatter X8_F to printf u8_t as hex
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * The heap now may be moved to user-defined memory by defining
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync LWIP_RAM_HEAP_POINTER as a void pointer to that memory's address
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * added autoip_set_struct() and dhcp_set_struct() to let autoip and dhcp work
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync with user-allocated structs instead of calling mem_malloc
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added const char* name to mem- and memp-stats for easier debugging.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Calculate the TCP/UDP checksum while copying to only fetch data once:
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync Define LWIP_CHKSUM_COPY to a memcpy-like function that returns the checksum
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added SO_REUSE_RXTOALL to pass received UDP broadcast/multicast packets to
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync more than one pcb.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Changed the semantics of ARP_QUEUEING==0: ARP_QUEUEING now cannot be turned
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync off any more, if this is set to 0, only one packet (the most recent one) is
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync queued (like demanded by RFC 1122).
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync ++ Major bugfixes/improvements
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Implemented tcp_shutdown() to only shut down one end of a connection
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Implemented shutdown() at socket- and netconn-level
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added errorset support to select() + improved select speed overhead
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Merged pppd to v2.3.11 (including some backported bugfixes from 2.4.x)
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added timer implementation for NO_SYS==1 (may be disabled with NO_SYS_NO_TIMERS==1
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Use macros defined in ip_addr.h to work with IP addresses
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Implemented many nonblocking socket/netconn functions
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Fixed ARP input processing: only add a new entry if a request was directed as us
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * mem_realloc() to mem_trim() to prevent confusion with realloc()
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Some improvements for AutoIP (don't route/forward link-local addresses, don't break
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync existing connections when assigning a routable address)
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Correctly handle remote side overrunning our rcv_wnd in ooseq case
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Removed packing from ip_addr_t, the packed version is now only used in protocol headers
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Corrected PBUF_POOL_BUFSIZE for ports where ETH_PAD_SIZE > 0
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * Added support for static ARP table entries
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync(STABLE-1.3.2)
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync * initial version of this file