Dirk Ziegelmeier
9c10daba93
Document netif API in doxygen module style
2016-07-26 17:53:07 +02:00
Dirk Ziegelmeier
0fea2bc02e
Document netconn API in doxygen module style
2016-07-26 17:40:55 +02:00
Dirk Ziegelmeier
ce19c59bb2
Document ip address function in doxygen module style
2016-07-26 17:11:01 +02:00
Dirk Ziegelmeier
8643782e5d
Document netif and lwIP in doxygen module style
2016-07-26 16:53:27 +02:00
Dirk Ziegelmeier
bd79f6c055
Document DNS, memory pools and PBUFs as modules
2016-07-26 16:40:13 +02:00
goldsimon
e030118750
moved MEM_LIBC_MALLOC code from mem.h to mem.c:
...
- it's not worth littering mem.h just to save some bytes to prevent the additional call;
- MEM_STATS now also work when MEM_LIBC_MALLOC is enabled
2016-07-26 15:02:36 +02:00
Dirk Ziegelmeier
59295be4ef
Some more RAW API documentation updates
...
Improve structure of documentation: PPP is now a module, too
2016-07-26 13:53:59 +02:00
Dirk Ziegelmeier
10acd8303d
Start to document public RAW API via doxygen
2016-07-26 13:38:43 +02:00
goldsimon
168ad22761
fixed custom pools after last memp cleanup
2016-07-26 12:26:52 +02:00
goldsimon
fb75f48751
Make lwip_cyclic_timers[] const
2016-07-26 09:08:29 +02:00
sg
00598b0b46
fix mem stats for MEM_USE_POOLS==1
2016-07-25 22:08:32 +02:00
Dirk Ziegelmeier
80be1a6bf8
Add links to new documentation pages in the relevant files
2016-07-25 08:20:39 +02:00
sg
de9054cb7a
memp: cleaned up MEMP_MEM_MALLOC:
...
- support memp stats when MEMP_MEM_MALLOC==1 (bug #48442 );
- hide MEMP_MEM_MALLOC in memp.c instead of messing up the header file;
- make MEMP_OVERFLOW_CHECK work when MEMP_MEM_MALLOC==1
2016-07-21 22:17:32 +02:00
sg
413eeef5fa
minor: moved sanity check from mem.c to init.c
2016-07-21 22:16:05 +02:00
goldsimon
523b11e664
fixed bug #48543 (TCP sent callback may prematurely report sent data when only part of a segment is acked) and don't include SYN/FIN in snd_buf counter (patch by Ambroz Bizjak)
2016-07-21 13:47:52 +02:00
goldsimon
e8ffac852e
Fixed bug #48551 (autoip_supplied_address() does not work when address is first assigned); fixed AutoIP timeouts
2016-07-20 08:28:16 +02:00
sg
98d58ffd59
minor: fixed wrong indentation
2016-07-19 22:38:34 +02:00
sg
97b8e88e69
netif_set_addr(): when removing an address (setting address to ANY), we have to remove it *before* changing netmask/gw to ensure that tcp RST segment can be sent correctly
2016-07-19 22:34:22 +02:00
sg
24a339a609
autoip: made private things private, use etharp_* shortcuts instead of etharp_raw()
2016-07-19 22:27:20 +02:00
sg
86e419425b
minor: code layout only
2016-07-19 22:06:59 +02:00
sg
d0a79ff085
fixed bug #48477 (ARP input packet might update static entry)
2016-07-19 22:01:42 +02:00
sg
dff46e3816
Fixed bug #48539 (possible crash when packet received in SYN_SENT state)
2016-07-19 21:23:21 +02:00
goldsimon
579fffd2ec
fixed task #14084 : make dhcp_supplied_address() usable in netif change callbacks triggered by changing the netif address assigned by dhcp
2016-07-19 12:58:21 +02:00
Dirk Ziegelmeier
5d4c1432c2
Fix bug #48436 : Naming clash for timers.c (with FreeRTOS)
...
Rename timers.* to timeouts.*
2016-07-19 12:44:12 +02:00
goldsimon
6adeb706a6
change tcp_pcb->acked to be a global variable: used in one call stack only (idea by Ambroz Bizjak)
2016-07-19 10:38:01 +02:00
Dirk Ziegelmeier
72208cddfa
Rename ip_frag.* to ip4_frag.*
2016-07-19 10:12:56 +02:00
Dirk Ziegelmeier
7037b340c1
Move etharp to core/ipv4, which is a more appropriate place for it
2016-07-19 09:29:51 +02:00
Dirk Ziegelmeier
06c7404461
Fix bug #48510 , DHCP requires ARP
...
Use solution 2 proposed by Jens Nielsen
2016-07-19 09:10:21 +02:00
goldsimon
6c0d78caaa
Fixed trying to send RST for unconnected (but bound) pcb
2016-07-19 09:05:48 +02:00
Dirk Ziegelmeier
4ec3d29168
Fix bug #48504 : tcp_debug_print_pcbs reads nonexisting tcp_pcb fields
2016-07-19 08:54:44 +02:00
Dirk Ziegelmeier
4ea1d62d45
Update some doxygen comments
2016-07-16 17:56:29 +02:00
sg
421dab87e8
fixed bug #48476 (TCP sent callback called wrongly due to picking up old pcb->acked
2016-07-11 21:43:39 +02:00
Dirk Ziegelmeier
01e5d6d819
memp.c: No need to init variables located in BSS section
2016-07-08 11:44:28 +02:00
Ambroz Bizjak
18c332ae51
fixed bug #48402 (Bug in skipping over TCP options)
...
Signed-off-by: goldsimon <goldsimon@gmx.de>
2016-07-08 11:27:50 +02:00
goldsimon
6293a835e9
fixed compiling: forgot to move one line :-(
2016-07-08 10:16:46 +02:00
goldsimon
2df636fe77
memp: fixed STATS initialization
2016-07-08 10:06:36 +02:00
goldsimon
959042aa88
memp: fixed compiling various combinations of memp stats (display etc.)
2016-07-08 08:21:57 +02:00
Dirk Ziegelmeier
087ecab891
Add some comments to places where we cast through a void* to get rid of alignment warnings
2016-07-07 21:56:43 +02:00
Dirk Ziegelmeier
212eacd9d6
Fix bug #48356 : private memp pools have no statistic counters
...
Implement struct stats_mem instance for each pool, let lwip_stats.mem[] point to these instances
2016-07-07 21:55:51 +02:00
Dirk Ziegelmeier
b91e47b518
Implement portable and overridable allocation of memory buffers
...
Fixes bug #48300 (Private mempools allocate foreign memory), bug #48354 (Portable alignment defines/include required for static allocation) and bug #47092 (Tag memory buffers like memp_memory_xxx and ram_heap with a macro so that attributes can be attached to their definitions)
Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
2016-07-07 13:35:13 +02:00
goldsimon
811b237bd7
dns: fixed declaration and usage of DNS_LOOKUP_LOCAL_EXTERN()
2016-07-07 13:02:47 +02:00
goldsimon
14ca418ac0
minor: coding style fixes
2016-07-05 07:36:51 +02:00
goldsimon
2fdea8b79b
fixed bug #48398 (dns: entries reused during found-callback could be aborted if ttl==0)
2016-07-04 13:55:20 +02:00
Michael Brown
2e26fc9224
tcp: Avoid 3-second delay for a half-open connection
...
If lwIP encounters a half-open connection (e.g. due to a restarted
application reusing the same port numbers) it will correctly send a
RST but will not resend the SYN until one retransmission timeout later
(approximately three seconds). This can increase the time taken by
lpxelinux.0 to fetch its configuration file from a few milliseconds to
around 30 seconds.
Fix by immediately retransmitting the SYN whenever a half-open
connection is detected.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: goldsimon <goldsimon@gmx.de>
2016-07-04 12:25:22 +02:00
goldsimon
fd83f4fb22
Fix bug #48359 (dns entries are not set to state DONE)
2016-07-04 10:22:20 +02:00
Sylvain Rochet
9d0546839c
init: fix NO_SYS targets build
...
lwip/src/core/init.c:256:32: error: "LWIP_COMPAT_MUTEX" is not defined [-Werror=undef]
#if LWIP_TCPIP_CORE_LOCKING && LWIP_COMPAT_MUTEX && !defined(LWIP_COMPAT_MUTEX_ALLOWED)
^
Setting LWIP_TCPIP_CORE_LOCKING is meaningless for NO_SYS targets,
therefore checking if LWIP_COMPAT_MUTEX is set does not make sense.
Introduced by 42dfa71f97
: Make LWIP_TCPIP_CORE_LOCKING==1 the default
(and warn if LWIP_COMPAT_MUTEX==1 in that case as mutexes are required
to prevent priority inversion on tcpip_thread operations)
2016-07-02 21:53:24 +02:00
sg
42dfa71f97
Make LWIP_TCPIP_CORE_LOCKING==1 the default (and warn if LWIP_COMPAT_MUTEX==1 in that case as mutexes are required to prevent priority inversion on tcpip_thread operations)
2016-06-30 22:37:37 +02:00
goldsimon
e6bc591a1e
fixed bug #48170 (Vulnerable to TCP RST spoofing) (original patch by Fabian Koch)
2016-06-30 08:50:42 +02:00
goldsimon
d31d2ee882
Revert "fixed bug #48170 (patch by Fabian Koch)"
...
This reverts commit 236bc19422
.
The fix introduced bug #48328 -> reverted
2016-06-30 08:41:50 +02:00
Erik Ekman
4047702928
Fix clang warning about unreachable code
...
Do check with preprocessor instead
2016-06-27 22:32:18 +02:00
Dirk Ziegelmeier
5d356c96f5
Minor: cleanup my last commit
2016-06-27 20:57:22 +02:00
Dirk Ziegelmeier
39545d2c6d
Fix clang warning about unreachable code
2016-06-27 20:56:21 +02:00
goldsimon
236bc19422
fixed bug #48170 (patch by Fabian Koch)
2016-06-27 10:31:36 +02:00
Dirk Ziegelmeier
38c0255fa2
Fix a few more CLANG format string warnings (from unix check project)
2016-06-25 13:24:48 +02:00
Dirk Ziegelmeier
102f5882d5
Fix several CLANG format string warnings
2016-06-25 13:06:31 +02:00
Dirk Ziegelmeier
8dc77ef558
doxygen updates - include IPv6 in documentation. Exclude include/netif/ppp/polarssl.
...
Convert TODO -> @todo
2016-06-22 20:18:23 +02:00
Sylvain Rochet
cfe5182380
timers: fix wrong timings for !NO_SYS targets
...
issue 1:
sys_arch_sem_wait() is supposed to return an elapsed time in ms, what could
happen given a > 1 kHz calling rate for high throughput systems is that it
might always returns 0 ms. This is a problem for systems which compute the
elapsed time from a high precision clock source.
This is what is currently happening in the unix port in sys_arch_sem_wait():
start time -> 1000000000; // ns
-- less than a ms before an event arrive --
end time -> 1000xxxxxx; // ns
return value -> (end time - start time)/1000000 -> 0
The return value is used to reduce the next timer interval, if
sys_arch_sem_wait() always return 0 no more timers are fired anymore
issue 2:
The current timer implementation for !NO_SYS targets only count elapsed
time while -waiting- for semaphore and doesn't count at all the time
spent by the stack to process packets. For CPU bound traffic patterns no
more timers are fired anymore.
Both are serious design issues which cannot be easily fixed without reworking
everything. This patch uses the properly implemented timers for NO_SYS targets
for !NO_SYS targets and merge them both into one single timers implementation.
2016-06-20 16:17:55 +02:00
goldsimon
6d95a34971
icmp ping response: fix invalid checksum (and possible assertion failure) when ip header contains options (is it correct that we mirror back all options)
2016-06-17 10:07:49 +02:00
goldsimon
61e067b98a
Check for minimum IPv4 header length in rx packets
2016-06-17 09:36:14 +02:00
goldsimon
fda778f6b6
ip6_reass: don't crash if frag header isn't the first (or not in the first pbuf)
2016-06-16 13:51:38 +02:00
Erik Ekman
d98e25a783
nd6: Handle incorrect ICMP option length in RA
...
Make sure ICMPv6 options have a valid length before
parsing them.
Found with afl-fuzz.
2016-06-14 15:06:49 +02:00
sg
4e241fbf14
some minor improvements to the tcp options checking code
2016-06-13 20:41:58 +02:00
Henrik Persson
b9a2ee8aaa
[PATCH] Drop instead of ASSERT in tcp_input header parsing
...
Since allowing input validation to trip the ASSERT handler is bad,
let's just drop the packets instead if validation fails.
Signed-off-by: sg <goldsimon@gmx.de>
2016-06-13 20:08:43 +02:00
Dirk Ziegelmeier
5e7b343d52
Fix dns_getserver to return a pointer, not a value
2016-06-13 09:00:46 +02:00
Dirk Ziegelmeier
6be7e221a5
Fix a few doxygen warnings
2016-05-24 22:29:18 +02:00
sg
631c458c55
Fixed invalid DEBUGF level SERIOUS when pbuf_header fails (it returns '1': this is not serious!)
2016-05-23 22:06:02 +02:00
Dirk Ziegelmeier
90a656ed78
Fix several doxygen errors all over the code
2016-05-23 21:18:16 +02:00
Jan Breuer
ebd103775d
ipv6_addr: Render last zero in ip6addr_ntoa_r if not in first empty block
2016-05-23 09:54:54 +02:00
goldsimon
bd177ff38f
added comment, fixed coding style
2016-05-23 09:47:14 +02:00
Jan Breuer
ac21a5f370
nd6: add cleanup function
2016-05-23 09:44:27 +02:00
Axel Lin
8c0f620d83
dns: Use LWIP_ARRAYSIZE instead of open coded
...
Signed-off-by: Axel Lin <axel.lin@ingics.com>
2016-05-11 12:20:15 +02:00
Axel Lin
7e9377a9c7
dhcp: Use LWIP_ARRAYSIZE to get the number of array entries
...
dhcp_discover_request_options is u8_t array, so the result is the same.
But use LWIP_ARRAYSIZE to get the number of array entries is better
because it works for all types.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
2016-05-11 12:15:12 +02:00
Sylvain Rochet
1dcd5d31d7
pbuf: fix undefined PBUF_POOL_FREE_OOSEQ if TCP_QUEUE_OOSEQ is disabled
...
lwip/src/core/timers.c: In function ‘sys_check_timeouts’:
lwip/src/core/timers.c:328:5: error: "PBUF_POOL_FREE_OOSEQ" is not defined [-Werror=undef]
#if PBUF_POOL_FREE_OOSEQ
Fix it by declaring an empty PBUF_CHECK_FREE_OOSEQ() function if feature is
not enabled.
2016-05-08 03:09:51 +02:00
Dirk Ziegelmeier
49badf39a1
Fix bug #47805 : dhcp_recv can dereference NULL pointer
2016-04-29 11:16:33 +02:00
Dirk Ziegelmeier
2e05856f90
Fix bug #47641 : lwIP would accept IPv6 source addresses from the network that are mapped IPv4 adresses
2016-04-27 21:35:34 +02:00
goldsimon
c981b726f8
fixed bug #47601 (wrong NS request at DAD)
2016-04-27 10:19:13 +02:00
goldsimon
afd9ee9147
fixed bug #47743 (Closing listening tcp pcb is not posible without assert)
2016-04-26 13:27:17 +02:00
Dirk Ziegelmeier
bb908366a5
More PPP cleanups
2016-04-25 20:08:29 +02:00
Dirk Ziegelmeier
73d8f14ebd
Fix compile when PPP is not enabled
2016-04-25 20:08:29 +02:00
Dirk Ziegelmeier
ffa340a68c
task #13907 : PPP cleanups: Move PPP mempools out of lwIP core to PPP code
2016-04-25 20:08:29 +02:00
Dirk Ziegelmeier
4d1a2e6699
Fix projects without PPP do not compile any more
2016-04-22 06:24:01 +02:00
Sylvain Rochet
15fbfb7363
PPP, remove useless ppp_init function
...
Simon says:
ppp_init() does not seem to be used. The only thing it does is calling
magic_init(), which is not required because it its called again later
from ppp_input().
Also, the time from startup is rather constant, so calling sys_jiffies()
from ppp_init() does not create a random number.
2016-04-21 23:25:48 +02:00
Joel Cunningham
8ac1b4825a
udp: use netif addr as src for multicast sockets
...
Sockets bound to a multicast address could not transmit multicast
packets because the pcb local address did not match the netif address
even if the outgoing netif was resolved correctly.
To correct the issue, pcbs with a multicast local address will use
the outgoing netif address as the source address in IPv4.
2016-04-18 16:36:13 -04:00
Dirk Ziegelmeier
309e072238
Create new IP_IS_V4 macros and use them at instead of !IP_IS_V6 - since we now have an IPADDR_ANY_TYPE, just checking for !V6 does not mean it is V4
2016-04-06 22:31:31 +02:00
sg
ca1b8288de
prepare for overriding current timeout implementation: all stack-internal caclic timers are avaliable in the lwip_cyclic_timers array
2016-04-05 23:01:57 +02:00
sg
8c7f513f4d
patch #8358 : allow more combinations of listening PCB for IPv6
2016-04-05 22:04:19 +02:00
sg
0731eda0b3
make autoip_supplied_address() take a const pointer, too
2016-04-05 20:38:11 +02:00
Dirk Ziegelmeier
12a4cae404
Apply [patch #8969 ] from Freddie Chopin: Constify netif in dhcp_supplied_address()
2016-04-05 13:18:27 +02:00
sg
27f03798b9
Fixed possible problems with tcp_backlog_delayed/tcp_backlog_accepted
2016-03-25 16:19:39 +01:00
goldsimon
5b0a47ca87
removed unused return values of tcp_listen_input & tcp_timewait_input; fixed unused variable warning
2016-03-24 15:06:31 +01:00
sg
7721b20179
call accept-callback with ERR_MEM when allocating a pcb fails on passive open to inform the application about this error; ATTENTION: applications have to handle NULL pcb in accept callback!
2016-03-23 21:57:38 +01:00
sg
c6b742812d
fixed bug #38203 : DHCP options are not recorded in all DHCP ack messages (patch by Florent Matignon)
2016-03-23 21:06:52 +01:00
Axel Lin
449fc98a55
tcp_alloc(): Remove superfluous initialization for pcb->keep_cnt_sent
...
It's already done by memset(0). This was missed in commit 5794ac2340
"tcp_alloc(): remove explicit =0 already done by memset(0)", fix it.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
2016-03-23 14:26:32 +01:00
Dirk Ziegelmeier
f97bf85fd6
udp.c: Allow udp_connect() on a dual-stack UDP PCB (type IPADDR_TYPE_ANY). This may be useful in some applications - no need to keep separate storage for target IP.
2016-03-22 15:12:16 +01:00
sg
dd80759bb9
tcp: changed accept handling to be done internally: the application does not have to call tcp_accepted() any more. Instead, when delaying accept (e.g. sockets do), call tcp_backlog_delayed()/tcp_backlog_accepted() (fixes bug #46696 )
2016-03-22 07:30:44 +01:00
sg
a1c78ea7bf
ignore dns response parsing errors, only abort resolving for correct responses or error responses from correct server (bug #47459 )
2016-03-22 07:22:17 +01:00
sg
5794ac2340
tcp_alloc(): remove explicit =0 already done by memset(0)
2016-03-18 22:05:17 +01:00
sg
44e1a2d8e2
define tcp_backlog_set() as dummy-define when backlog feature is disable
2016-03-18 20:05:04 +01:00
sg
852d5b9c80
Optimize tcp_output runtime by not calling ip_route() for every segment sent
2016-03-16 22:31:33 +01:00
sg
b4d7238eb8
tcp_output_segment: don't count retransmitted segments in mib2.tcpoutsegs by detecting p->payload != tcphdr pointer; don't try to retransmit segments where p->ref != 1 (as it is invalid to mess up p->len/p->payload when we don't have exclusive access to the pbuf)
2016-03-16 22:22:20 +01:00