Skip to content

Commit 298573e

Browse files
author
fpr
committed
LwIP source files added from STM32Cube_FW_F4_V1.16.0
Signed-off-by: fpr <[email protected]>
1 parent 214a0e0 commit 298573e

File tree

1,476 files changed

+267478
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,476 files changed

+267478
-0
lines changed

CHANGELOG

+4,130
Large diffs are not rendered by default.

COPYING

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without modification,
6+
* are permitted provided that the following conditions are met:
7+
*
8+
* 1. Redistributions of source code must retain the above copyright notice,
9+
* this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright notice,
11+
* this list of conditions and the following disclaimer in the documentation
12+
* and/or other materials provided with the distribution.
13+
* 3. The name of the author may not be used to endorse or promote products
14+
* derived from this software without specific prior written permission.
15+
*
16+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17+
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18+
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19+
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
21+
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24+
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
25+
* OF SUCH DAMAGE.
26+
*
27+
* This file is part of the lwIP TCP/IP stack.
28+
*
29+
* Author: Adam Dunkels <[email protected]>
30+
*
31+
*/
32+
33+

FILES

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
src/ - The source code for the lwIP TCP/IP stack.
2+
doc/ - The documentation for lwIP.
3+
test/ - Some code to test whether the sources do what they should.
4+
5+
See also the FILES file in each subdirectory.

README

+100
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
INTRODUCTION
2+
3+
lwIP is a small independent implementation of the TCP/IP protocol
4+
suite that has been developed by Adam Dunkels at the Computer and
5+
Networks Architectures (CNA) lab at the Swedish Institute of Computer
6+
Science (SICS).
7+
8+
The focus of the lwIP TCP/IP implementation is to reduce the RAM usage
9+
while still having a full scale TCP. This making lwIP suitable for use
10+
in embedded systems with tens of kilobytes of free RAM and room for
11+
around 40 kilobytes of code ROM.
12+
13+
14+
FEATURES
15+
16+
* IP (Internet Protocol, IPv4 and IPv6) including packet forwarding over
17+
multiple network interfaces
18+
* ICMP (Internet Control Message Protocol) for network maintenance and debugging
19+
* IGMP (Internet Group Management Protocol) for multicast traffic management
20+
* MLD (Multicast listener discovery for IPv6). Aims to be compliant with
21+
RFC 2710. No support for MLDv2
22+
* ND (Neighbor discovery and stateless address autoconfiguration for IPv6).
23+
Aims to be compliant with RFC 4861 (Neighbor discovery) and RFC 4862
24+
(Address autoconfiguration)
25+
* UDP (User Datagram Protocol) including experimental UDP-lite extensions
26+
* TCP (Transmission Control Protocol) with congestion control, RTT estimation
27+
and fast recovery/fast retransmit
28+
* raw/native API for enhanced performance
29+
* Optional Berkeley-like socket API
30+
* DNS (Domain names resolver)
31+
32+
33+
APPLICATIONS
34+
35+
* HTTP server with SSI and CGI
36+
* SNMPv2c agent with MIB compiler (Simple Network Management Protocol)
37+
* SNTP (Simple network time protocol)
38+
* NetBIOS name service responder
39+
* MDNS (Multicast DNS) responder
40+
* iPerf server implementation
41+
42+
43+
LICENSE
44+
45+
lwIP is freely available under a BSD license.
46+
47+
48+
DEVELOPMENT
49+
50+
lwIP has grown into an excellent TCP/IP stack for embedded devices,
51+
and developers using the stack often submit bug fixes, improvements,
52+
and additions to the stack to further increase its usefulness.
53+
54+
Development of lwIP is hosted on Savannah, a central point for
55+
software development, maintenance and distribution. Everyone can
56+
help improve lwIP by use of Savannah's interface, Git and the
57+
mailing list. A core team of developers will commit changes to the
58+
Git source tree.
59+
60+
The lwIP TCP/IP stack is maintained in the 'lwip' Git module and
61+
contributions (such as platform ports) are in the 'contrib' Git module.
62+
63+
See doc/savannah.txt for details on Git server access for users and
64+
developers.
65+
66+
The current Git trees are web-browsable:
67+
http://git.savannah.gnu.org/cgit/lwip.git
68+
http://git.savannah.gnu.org/cgit/lwip/lwip-contrib.git
69+
70+
Submit patches and bugs via the lwIP project page:
71+
http://savannah.nongnu.org/projects/lwip/
72+
73+
Continuous integration builds (GCC, clang):
74+
https://travis-ci.org/yarrick/lwip-merged
75+
76+
77+
DOCUMENTATION
78+
79+
Self documentation of the source code is regularly extracted from the current
80+
Git sources and is available from this web page:
81+
http://www.nongnu.org/lwip/
82+
83+
There is now a constantly growing wiki about lwIP at
84+
http://lwip.wikia.com/wiki/LwIP_Wiki
85+
86+
Also, there are mailing lists you can subscribe at
87+
http://savannah.nongnu.org/mail/?group=lwip
88+
plus searchable archives:
89+
http://lists.nongnu.org/archive/html/lwip-users/
90+
http://lists.nongnu.org/archive/html/lwip-devel/
91+
92+
lwIP was originally written by Adam Dunkels:
93+
http://dunkels.com/adam/
94+
95+
Reading Adam's papers, the files in docs/, browsing the source code
96+
documentation and browsing the mailing list archives is a good way to
97+
become familiar with the design of lwIP.
98+
99+
Adam Dunkels <[email protected]>
100+
Leon Woestenberg <[email protected]>

UPGRADING

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

doc/FILES

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
doxygen/ - Configuration files and scripts to create the lwIP doxygen source
2+
documentation (found at http://www.nongnu.org/lwip/)
3+
4+
savannah.txt - How to obtain the current development source code.
5+
contrib.txt - How to contribute to lwIP as a developer.
6+
rawapi.txt - The documentation for the core API of lwIP.
7+
Also provides an overview about the other APIs and multithreading.
8+
sys_arch.txt - The documentation for a system abstraction layer of lwIP.
9+
ppp.txt - Documentation of the PPP interface for lwIP.

0 commit comments

Comments
 (0)