BadVPN – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 This file lists major changes between release versions that require
2 ports or applications to be changed. Use it to update a port or an
3 application written for an older version of lwIP to correctly work
4 with newer versions.
5  
6  
7 (git master)
8  
9 * [Enter new changes just after this line - do not remove this line]
10  
11 ++ Application changes:
12  
13 * ip4_route_src: parameter order is reversed: ip4_route_src(dest, src) -> ip4_route_src(src, dest)
14 to make parameter order consistent with other ip*_route*() functions.
15 Same also applies to LWIP_HOOK_IP4_ROUTE_SRC() parameter order.
16  
17 * pbuf API: pbuf->type (an u8_t holding the enum 'pbuf_type') has changed to only hold a
18 description of the pbuf (e.g. data following pbuf struct, data volatile, allocation
19 source heap/pool/etc.). As a consequence, applications can't test pbuf->type any more.
20 Use pbuf_match_type(pbuf, type) instead.
21  
22 * socket API: according to the standard, SO_ERROR now only returns asynchronous errors.
23 All other/normal/synchronous errors are (and always were) available via 'errno'.
24 LWIP_SOCKET_SET_ERRNO has been removed - 'errno' is always set - and required!
25  
26 * compatibility headers: moved from 'src/include/posix' to 'src/include/compat/posix',
27 'src/include/compat/stdc' etc.
28  
29 * The IPv6 implementation now supports address scopes. All addresses that have a scope according
30 to the default policy (link-local unicast addresses, interface-local and link-local multicast
31 addresses) should now have a zone set on them before being passed to the core API, although
32 lwIP will currently attempt to select a zone on the caller's behalf when necessary.
33 Applications that directly assign IPv6 addresses to interfaces (which is NOT recommended)
34 must now ensure that link-local addresses carry the netif's zone. See the new ip6_zone.h header
35 file for more information and relevant macros. For now it is still possible to turn off scopes
36 support through the new LWIP_IPV6_SCOPES option. When upgrading an implementation that uses the
37 core API directly, it is highly recommended to enable LWIP_IPV6_SCOPES_DEBUG at least for
38 a while, to ensure e.g. proper address initialization.
39  
40 * LWIP_HOOK_DHCP_APPEND_OPTIONS() has changed, see description in opt.h (options_out_len is not
41 available in struct dhcp any more)
42  
43 (2.0.2)
44  
45 ++ Application changes:
46  
47 * slipif: The way to pass serial port number has changed. netif->num is not
48 supported any more, netif->state is interpreted as an u8_t port number now
49 (it's not a POINTER to an u8_t any more!)
50  
51 (2.0.1)
52  
53 ++ Application changes:
54  
55 * UDP does NOT receive multicast traffic from ALL netifs on an UDP PCB bound to a specific
56 netif any more. Users need to bind to IP_ADDR_ANY to receive multicast traffic and compare
57 ip_current_netif() to the desired netif for every packet.
58 See bug #49662 for an explanation.
59  
60 (2.0.0)
61  
62 ++ Application changes:
63  
64 * Changed netif "up" flag handling to be an administrative flag (as opposed to the previous meaning of
65 "ip4-address-valid", a netif will now not be used for transmission if not up) -> even a DHCP netif
66 has to be set "up" before starting the DHCP client
67 * Added IPv6 support (dual-stack or IPv4/IPv6 only)
68 * Changed ip_addr_t to be a union in dual-stack mode (use ip4_addr_t where referring to IPv4 only).
69 * Major rewrite of SNMP (added MIB parser that creates code stubs for custom MIBs);
70 supports SNMPv2c (experimental v3 support)
71 * Moved some core applications from contrib repository to src/apps (and include/lwip/apps)
72  
73 +++ Raw API:
74 * Changed TCP listen backlog: removed tcp_accepted(), added the function pair tcp_backlog_delayed()/
75 tcp_backlog_accepted() to explicitly delay backlog handling on a connection pcb
76  
77 +++ Socket API:
78 * Added an implementation for posix sendmsg()
79 * Added LWIP_FIONREAD_LINUXMODE that makes ioctl/FIONREAD return the size of the next pending datagram
80  
81 ++ Port changes
82  
83 +++ new files:
84 * MANY new and moved files!
85 * Added src/Filelists.mk for use in Makefile projects
86 * Continued moving stack-internal parts from abc.h to abc_priv.h in sub-folder "priv"
87 to let abc.h only contain the actual application programmer's API
88  
89 +++ sys layer:
90 * Made LWIP_TCPIP_CORE_LOCKING==1 the default as it usually performs better than
91 the traditional message passing (although with LWIP_COMPAT_MUTEX you are still
92 open to priority inversion, so this is not recommended any more)
93 * Added LWIP_NETCONN_SEM_PER_THREAD to use one "op_completed" semaphore per thread
94 instead of using one per netconn (these semaphores are used even with core locking
95 enabled as some longer lasting functions like big writes still need to delay)
96 * Added generalized abstraction for itoa(), strnicmp(), stricmp() and strnstr()
97 in def.h (to be overridden in cc.h) instead of config
98 options for netbiosns, httpd, dns, etc. ...
99 * New abstraction for hton* and ntoh* functions in def.h.
100 To override them, use the following in cc.h:
101 #define lwip_htons(x) <your_htons>
102 #define lwip_htonl(x) <your_htonl>
103  
104 +++ new options:
105 * TODO
106  
107 +++ new pools:
108 * Added LWIP_MEMPOOL_* (declare/init/alloc/free) to declare private memp pools
109 that share memp.c code but do not have to be made global via lwippools.h
110 * Added pools for IPv6, MPU_COMPATIBLE, dns-api, netif-api, etc.
111 * added hook LWIP_HOOK_MEMP_AVAILABLE() to get informed when a memp pool was empty and an item
112 is now available
113  
114 * Signature of LWIP_HOOK_VLAN_SET macro was changed
115  
116 * LWIP_DECLARE_MEMORY_ALIGNED() may be used to declare aligned memory buffers (mem/memp)
117 or to move buffers to dedicated memory using compiler attributes
118  
119 * Standard C headers are used to define sized types and printf formatters
120 (disable by setting LWIP_NO_STDINT_H=1 or LWIP_NO_INTTYPES_H=1 if your compiler
121 does not support these)
122  
123  
124 ++ Major bugfixes/improvements
125  
126 * Added IPv6 support (dual-stack or IPv4/IPv6 only)
127 * Major rewrite of PPP (incl. keep-up with apache pppd)
128 see doc/ppp.txt for an upgrading how-to
129 * Major rewrite of SNMP (incl. MIB parser)
130 * Fixed timing issues that might have lead to losing a DHCP lease
131 * Made rx processing path more robust against crafted errors
132 * TCP window scaling support
133 * modification of api modules to support FreeRTOS-MPU (don't pass stack-pointers to other threads)
134 * made DNS client more robust
135 * support PBUF_REF for RX packets
136 * LWIP_NETCONN_FULLDUPLEX allows netconn/sockets to be used for reading/writing from separate
137 threads each (needs LWIP_NETCONN_SEM_PER_THREAD)
138 * Moved and reordered stats (mainly memp/mib2)
139  
140 (1.4.0)
141  
142 ++ Application changes:
143  
144 * Replaced struct ip_addr by typedef ip_addr_t (struct ip_addr is kept for
145 compatibility to old applications, but will be removed in the future).
146  
147 * Renamed mem_realloc() to mem_trim() to prevent confusion with realloc()
148  
149 +++ Raw API:
150 * Changed the semantics of tcp_close() (since it was rather a
151 shutdown before): Now the application does *NOT* get any calls to the recv
152 callback (aside from NULL/closed) after calling tcp_close()
153  
154 * When calling tcp_abort() from a raw API TCP callback function,
155 make sure you return ERR_ABRT to prevent accessing unallocated memory.
156 (ERR_ABRT now means the applicaiton has called tcp_abort!)
157  
158 +++ Netconn API:
159 * Changed netconn_receive() and netconn_accept() to return
160 err_t, not a pointer to new data/netconn.
161  
162 +++ Socket API:
163 * LWIP_SO_RCVTIMEO: when accept() or recv() time out, they
164 now set errno to EWOULDBLOCK/EAGAIN, not ETIMEDOUT.
165  
166 * Added a minimal version of posix fctl() to have a
167 standardised way to set O_NONBLOCK for nonblocking sockets.
168  
169 +++ all APIs:
170 * correctly implemented SO(F)_REUSEADDR
171  
172 ++ Port changes
173  
174 +++ new files:
175  
176 * Added 4 new files: def.c, timers.c, timers.h, tcp_impl.h:
177  
178 * Moved stack-internal parts of tcp.h to tcp_impl.h, tcp.h now only contains
179 the actual application programmer's API
180  
181 * Separated timer implementation from sys.h/.c, moved to timers.h/.c;
182 Added timer implementation for NO_SYS==1, set NO_SYS_NO_TIMERS==1 if you
183 still want to use your own timer implementation for NO_SYS==0 (as before).
184  
185 +++ sys layer:
186  
187 * Converted mbox- and semaphore-functions to take pointers to sys_mbox_t/
188 sys_sem_t;
189  
190 * Converted sys_mbox_new/sys_sem_new to take pointers and return err_t;
191  
192 * Added Mutex concept in sys_arch (define LWIP_COMPAT_MUTEX to let sys.h use
193 binary semaphores instead of mutexes - as before)
194  
195 +++ new options:
196  
197 * Don't waste memory when chaining segments, added option TCP_OVERSIZE to
198 prevent creating many small pbufs when calling tcp_write with many small
199 blocks of data. Instead, pbufs are allocated larger than needed and the
200 space is used for later calls to tcp_write.
201  
202 * Added LWIP_NETIF_TX_SINGLE_PBUF to always copy to try to create single pbufs
203 in tcp_write/udp_send.
204  
205 * Added an additional option LWIP_ETHERNET to support ethernet without ARP
206 (necessary for pure PPPoE)
207  
208 * Add MEMP_SEPARATE_POOLS to place memory pools in separate arrays. This may
209 be used to place these pools into user-defined memory by using external
210 declaration.
211  
212 * Added TCP_SNDQUEUELOWAT corresponding to TCP_SNDLOWAT
213  
214 +++ new pools:
215  
216 * Netdb uses a memp pool for allocating memory when getaddrinfo() is called,
217 so MEMP_NUM_NETDB has to be set accordingly.
218  
219 * DNS_LOCAL_HOSTLIST_IS_DYNAMIC uses a memp pool instead of the heap, so
220 MEMP_NUM_LOCALHOSTLIST has to be set accordingly.
221  
222 * Snmp-agent uses a memp pools instead of the heap, so MEMP_NUM_SNMP_* have
223 to be set accordingly.
224  
225 * PPPoE uses a MEMP pool instead of the heap, so MEMP_NUM_PPPOE_INTERFACES
226 has to be set accordingly
227  
228 * Integrated loopif into netif.c - loopif does not have to be created by the
229 port any more, just define LWIP_HAVE_LOOPIF to 1.
230  
231 * Added define LWIP_RAND() for lwip-wide randomization (needs to be defined
232 in cc.h, e.g. used by igmp)
233  
234 * Added printf-formatter X8_F to printf u8_t as hex
235  
236 * The heap now may be moved to user-defined memory by defining
237 LWIP_RAM_HEAP_POINTER as a void pointer to that memory's address
238  
239 * added autoip_set_struct() and dhcp_set_struct() to let autoip and dhcp work
240 with user-allocated structs instead of calling mem_malloc
241  
242 * Added const char* name to mem- and memp-stats for easier debugging.
243  
244 * Calculate the TCP/UDP checksum while copying to only fetch data once:
245 Define LWIP_CHKSUM_COPY to a memcpy-like function that returns the checksum
246  
247 * Added SO_REUSE_RXTOALL to pass received UDP broadcast/multicast packets to
248 more than one pcb.
249  
250 * Changed the semantics of ARP_QUEUEING==0: ARP_QUEUEING now cannot be turned
251 off any more, if this is set to 0, only one packet (the most recent one) is
252 queued (like demanded by RFC 1122).
253  
254  
255 ++ Major bugfixes/improvements
256  
257 * Implemented tcp_shutdown() to only shut down one end of a connection
258 * Implemented shutdown() at socket- and netconn-level
259 * Added errorset support to select() + improved select speed overhead
260 * Merged pppd to v2.3.11 (including some backported bugfixes from 2.4.x)
261 * Added timer implementation for NO_SYS==1 (may be disabled with NO_SYS_NO_TIMERS==1
262 * Use macros defined in ip_addr.h to work with IP addresses
263 * Implemented many nonblocking socket/netconn functions
264 * Fixed ARP input processing: only add a new entry if a request was directed as us
265 * mem_realloc() to mem_trim() to prevent confusion with realloc()
266 * Some improvements for AutoIP (don't route/forward link-local addresses, don't break
267 existing connections when assigning a routable address)
268 * Correctly handle remote side overrunning our rcv_wnd in ooseq case
269 * Removed packing from ip_addr_t, the packed version is now only used in protocol headers
270 * Corrected PBUF_POOL_BUFSIZE for ports where ETH_PAD_SIZE > 0
271 * Added support for static ARP table entries
272  
273 (STABLE-1.3.2)
274  
275 * initial version of this file