History log of /seL4-camkes-master/projects/lwip/src/core/tcp.c
Revision Date Author Comments
# 98d1cb1c 12-Nov-2018 Simon Goldschmidt <goldsimon@gmx.de>

tcp_recved: fix overflow check

Improved fix instead of patch #9699.

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>


# 1940cae8 12-Nov-2018 Simon Goldschmidt <goldsimon@gmx.de>

Revert "tcp_recved: check for overflow and warn about too big values"

This reverts commit ebb0dc14a7336c793d32c8e9ebde5bd9666f2a65.
It changes the behaviour to assert for applications running good so far.

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>


# 7154e51f 12-Oct-2018 Simon Goldschmidt <goldsimon@gmx.de>

Revert "tcp_abandon: no need to buffer pcb->local_port"

This reverts commit 1570dd8ad1c6afd2438dcb8b18d9eed794f78baa.

Buffering pcb->local_port is needed because TCP_PCB_REMOVE_ACTIVE()
sets it to 0 via tcp_pcb_remove() (comment: "reset the local port
to prevent the pcb from being 'bound'").

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>


# ebb0dc14 10-Oct-2018 Jonas Rabenstein <jonas.rabenstein@studium.uni-erlangen.de>

tcp_recved: check for overflow and warn about too big values


# bc25863d 04-Oct-2018 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Apply patch #9694: Update prev pointer when skipping entries in tcp_slowtmr to prevent hitting assertion


# 258cab1b 23-Jul-2018 Simon Goldschmidt <goldsimon@gmx.de>

fix bug #54315 (IPV6_V6ONLY socket accepts IPV4 connections)

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>


# fd0af07d 02-Jul-2018 Simon Goldschmidt <goldsimon@gmx.de>

tcp/udp bind: small code restructuring for IPv6-only

See bug #54229


# 824ebbe0 19-Jun-2018 Simon Goldschmidt <goldsimon@gmx.de>

tcp: fix RTO timer not working if link is down

... and added some test cases for this situation
See bug #54139

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>


# 1bf323e1 12-Jun-2018 Simon Goldschmidt <goldsimon@gmx.de>

remove 2 NULL checks which are wrong


# e7c06191 12-Jun-2018 Simon Goldschmidt <goldsimon@gmx.de>

fix NULL checks (compiler error, tcp_rst allows pcb==NULL)


# 342d0ead 12-Jun-2018 Matthias Hofmann <matthias.hofmann@diehl.com>

Add null pointer checks for TCP, UDP and netif

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>


# 0e85582b 24-Jan-2018 goldsimon <goldsimon@gmx.de>

tcp: introduce ext_args per pcb

This introduces the concept of ext (external/extended) arguments per
tcp_pcb (also for listening pcbs) to store more data than just one
"void *arg" per pcb. The "arg" is for use to applications, whereas
the ext_args may be used by frameworks and leave "arg" untouched.

In addition to a void pointer, callbacks are added to help frameworks
migrate arguments from listen pcb to connection pcb and to free args
when the pcb is freed.

Signed-off-by: goldsimon <goldsimon@gmx.de>


# ebe782ba 24-Jan-2018 goldsimon <goldsimon@gmx.de>

tcp: centralize freeing tcp pcbs to memp_free

This should make it easier to add debugging messages or other hooks
to the point where tcp pcbs are deallocated.

Signed-off-by: goldsimon <goldsimon@gmx.de>


# 1570dd8a 30-Jan-2018 goldsimon <goldsimon@gmx.de>

tcp_abandon: no need to buffer pcb->local_port


# ad3937df 30-Jan-2018 goldsimon <goldsimon@gmx.de>

tcp: tiny doc update (mention tcp_output)


# f334ac68 02-Jan-2018 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Work on task #14780: Add debug helper asserts to ensure threading/locking requirements are met
Add LWIP_ASSERT_CORE_LOCKED() in several places


# 5500a36b 20-Nov-2017 goldsimon <goldsimon@gmx.de>

... and fix DEBUG string


# 444dfead 20-Nov-2017 goldsimon <goldsimon@gmx.de>

task #14600: tcp_alloc(): kill TF_CLOSEPEND connections before other ESTABLISHED


# d99144ee 17-Nov-2017 Axel Lin <axel.lin@ingics.com>

tcp: Remove superfluous variable in tcp_netif_ip_addr_changed()

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: goldsimon <goldsimon@gmx.de>


# 8c6884b2 17-Nov-2017 goldsimon <goldsimon@gmx.de>

tcp_close_shutdown: always deallocate the pcb if there is unread data on close (see bug #52403)

We preserved the TIME_WAIT handling before, but it seems this is not correct: we want to issue
a RST later again if someone wants to talk to this port. With TIME_WAIT, this might not always
the case.


# fa73f130 17-Nov-2017 goldsimon <goldsimon@gmx.de>

tcp: fix bug #36167 again (fixed in 2014, but when calling shutdown(WR) followed by recv(), this still happened)


# a82054d2 13-Nov-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Follow-up to patch #9472: tcp_kill_prio: Don't kill active connection that has the same priority
Correctly search for connection with lowest prio AND longest inactivity time


# a78dbb25 06-Nov-2017 Joel Cunningham <joel.cunningham@me.com>

docs: small clean ups for last couple of commits:

* Fix typos in LWIP_NO_CTYPE_H comment block
* Update comment around caller of tcp_kill_prio()


# d8b6cdff 05-Nov-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Apply patch #9472: tcp_kill_prio: Don't kill active connection that has the same priority
in a modified, IMHO more readable way.


# b296d2c7 25-Oct-2017 Joel Cunningham <joel.cunningham@me.com>

docs: update tcp_kill_prio same priority comments

tcp_kill_prio will kill the oldest active connection of same/lower
priority. Update all comments so that it's clear the same priority
can be killed


# ddcf9cc7 20-Oct-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Move all rawapi.txt to appropriate doxygen docs


# 84b2a0f5 17-Oct-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Remove raw API TCP/UDP function documentation from rawapi.txt - it is now integrated in doxygen docs.
This avoid having a second description for the same stuff that is "bit-rotting" because noone remembers to update this file.
Also remove outdated and misleading zero-copy TX information.


# d020bfc0 17-Oct-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Improve UDP documentation using rawapi.txt texts


# 001e1f11 16-Oct-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Improve lwIP doxygen documentation by copying several passages from rawapi.txt to the corresponding doxygen places


# 921f601b 16-Oct-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Improve lwIP doxygen documentation by copying several passages from rawapi.txt to the corresponding function documentation


# 931b5e64 17-Sep-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Reformat core code using astylerc


# 1d4ca0bf 28-Aug-2017 goldsimon <goldsimon@gmx.de>

Fix bug #51687 (tcp_close(): is it OK to return ERR_MEM if TF_CLOSEPEND is set?)


# f582c883 03-Aug-2017 Joel Cunningham <joel.cunningham@me.com>

tcp: persist timer re-work (bug #50837)

This re-works the persist timer to have the following behavior:

1) Only start persist timer when a buffered segment doesn't fit within
the current window and there is no in-fligh data. Previously, the
persist timer was always started when the window went to zero even
if there was no buffered data (since timer was managed in receive
pathway rather than transmit pathway)
2) Upon first fire of persist timer, fill the remaining window if
non-zero by splitting the unsent segment. If split segment is sent,
persist timer is stopped, RTO timer is now ensuring reliable window
updates
3) If window is already zero when persist timer fires, send 1 byte probe
4) Persist timer and zero window probe should only be active when the
following are true:
* no in-flight data (pcb->unacked == NULL)
* when there is buffered data (pcb->unsent != NULL)
* when pcb->unsent->len > pcb->snd_wnd


# b8a3cf3a 08-Aug-2017 Joel Cunningham <joel.cunningham@me.com>

tcp: use tcp_set_flags() rather than manually setting flag


# ba7a3204 09-Aug-2017 Joel Cunningham <joel.cunningham@me.com>

tcp: use tcp_ack_now rather than manually setting TF_ACK_NOW


# 90873d6c 08-Aug-2017 goldsimon <goldsimon@gmx.de>

Continue fixing the spirit of bug #51663: don't change pcb state if retransmission can't be done because segments are still queued for transmission

- add a better-documented static function tcp_output_segment_busy
- try to reduce the number of checks
- tcp_rexmit_rto: iterate pcb->unacked only once
- no need to check for ref==1 in tcp_rexmit_fast when tcp_rexmit does
- call tcp_rexmit_fast if dupacks >= 3 (not == 3) and use TF_INFR flag to guard the fast-rexmit case (that way, it's triggered again on the next dupack)


# 79a08c9f 06-Aug-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

tcp.c: Remove side-effects from boolean expressions


# d0219727 11-Jul-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix "no previous prototype" warning when TCP_QUEUE_OOSEQ is disabled


# 44f7a3cb 05-Jul-2017 goldsimon <goldsimon@gmx.de>

work on -Wconversion...


# 2b2fa0ed 04-Jul-2017 goldsimon <goldsimon@gmx.de>

Ensure SACKs are deleted when pbuf_free_ooseq() frees ooseq pbufs (because of memory shortage)


# 6796bcf7 03-Jul-2017 goldsimon <goldsimon@gmx.de>

Cleaned up a bit after merging SACK_OUT support (mostly coding style)


# b1a3c37c 29-Jun-2017 Jakub Schmidtke <jschmidtke@carnegietechnologies.com>

Partial SACK (RFC 2018) support

Adds partial support for selective acknowledgements (RFC 2018).
This change makes lwIP negotiate SACK support, and include SACK
data in outgoing empty ACK packets. It does not include it
in outgoing packets with data payload.
It also does not add support for handling incoming SACKs.

Signed-off-by: goldsimon <goldsimon@gmx.de>


# 41177cfd 30-Jun-2017 goldsimon <goldsimon@gmx.de>

work on -Wconversion...


# 11da4ef0 21-Jun-2017 goldsimon <goldsimon@gmx.de>

Use ip_addr_debug_print_val instead of ip_addr_debug_print where applicable


# fb9fabb8 24-May-2017 Our Air Quality <info@ourairquality.org>

Initialize the tcp listen pcb netif_idx to NETIF_NO_INDEX.

Signed-off-by: goldsimon <goldsimon@gmx.de>


# c03fef9a 03-May-2017 Joel Cunningham <joel.cunningham@me.com>

bug #50837: add zero-window probe timeout

This commit adds a timeout to the zero-window probing (persist timer)
mechanism. LwIP has not historically had a timeout for the persist
timer, leading to unbounded blocking if connection drops during the
zero-window condition

This commit also adds two units test, one to check the RTO timeout
and a second to check the zero-window probe timeout


# 9bbb7412 04-May-2017 Axel Lin <axel.lin@ingics.com>

tcp: Remove unreachable code in tcp_close_shutdown_fin

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Dirk Ziegelmeier <dirk@ziegelmeier.net>


# 72a8db78 03-May-2017 goldsimon <goldsimon@gmx.de>

tcp_fasttmr: adapt comment (to delayed FIN implementation)


# 676dd741 03-May-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Minor cleanup and documentation updates


# e8357078 03-May-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Cleanup and simplify tcp_connect() code


# 5800cf51 03-May-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Work on task #14494: Implement SO_BINDTODEVICE
TCP needs additional netif handling


# 13ffc86a 02-May-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Start working task #14494: Implement SO_BINDTODEVICE
Implement binding TCP, UDP and RAW PCBs to a netif


# de90d03e 12-Apr-2017 Joel Cunningham <joel.cunningham@me.com>

tcp: task #14128 - Appropriate Byte Counting support

This commit adds TCP Appropriate Byte Counting (ABC) support based on
RFC 3465

ABC replaces the previous congestion window growth mechanism and has been
configured with limit of 2 SMSS. See task #14128 for discussion on
defaults, but the goal is to mitigate the performance impact of delayed
ACKs on congestion window growth

This commit also introduces a mechanism to track when the stack is
undergoing a period following an RTO where data is being retransmitted.

Lastly, this adds a unit test to verify RTO period tracking and some
basic ABC cwnd checking


# 540b527c 24-Mar-2017 goldsimon <goldsimon@gmx.de>

remove LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS config option (this is implicitly done via #ifdef LWIP_RAND)


# 7e12240a 22-Mar-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Improve TCP documentation a bit


# c18393b5 22-Mar-2017 goldsimon <goldsimon@gmx.de>

altcp: added 'addrinfo' and 'tcp_state' functions


# 7ffe5bfb 09-Mar-2017 goldsimon <goldsimon@gmx.de>

tcp: watch out for pcb->nrtx overflows and tcp_backoff indexing overflow


# b90a54f9 07-Mar-2017 Joel Cunningham <joel.cunningham@me.com>

bug #50476: initialize ssthresh to TCP_SND_BUF

This commit changes ssthresh to be the largest effective congestion
window (amount of in-flight data). This follows the guidance of RFC
5681 which recommends setting ssthresh arbitrarily high.

LwIP was previously using the receive window value at the end of the
3-way handshake and in the case of an active open where the receiver
used window scaling and/or window auto-tuning, this resulted in a very
small ssthresh value even though the window ramped up once the connection
was established


# f85eed0a 27-Feb-2017 goldsimon <goldsimon@gmx.de>

tcp: fixed bug #50418: LWIP_EVENT_API: fix invalid calbacks for SYN_RCVD pcb


# 0b257f71 13-Feb-2017 Joel Cunningham <joel.cunningham@me.com>

Fix comment typo from bug #47485

tcp_close_shutdown_impl() should be tcp_close_shutdown_fin()


# 239498f3 10-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Implement task #14367: Hooks need a better place to be defined
We now have a #define for a header file name that is #included in every .c file that provides hooks.


# bc07fd9d 10-Feb-2017 goldsimon <goldsimon@gmx.de>

Fixed bug #47485 (tcp_close() should not fail on memory error) by retrying to send FIN from tcp_fasttmr


# d857344a 04-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

patch #9249: tcp: Fix unused parameter 'dest' build warning if !LWIP_IPV6
Apply modified version of Axel Lin's patch, without #ifdef


# 3d80e51b 26-Jan-2017 David van Moolenbroek <david@minix3.org>

tcp: eliminate some redundant route lookups

Now that tcp_connect() always determines the outgoing netif with a
route lookup, we can compute the effective MSS without doing the same
route lookup again. The outgoing netif is already known from one
other location that computes the MSS, so we can eliminate a redundant
route lookup there too. Reduce some macro clutter as a side effect.


# 29ddfd1d 23-Jan-2017 David van Moolenbroek <david@minix3.org>

Add support for IPv6 address scopes

This patch adds full support for IPv6 address scopes, thereby aiming
to be compliant with IPv6 standards in general and RFC 4007 in
particular. The high-level summary is that link-local addresses are
now meaningful only in the context of their own link, guaranteeing
full isolation between links (and their addresses) in this respect.
This isolation even allows multiple interfaces to have the same
link-local addresses locally assigned.

The implementation achieves this by extending the lwIP IPv6 address
structure with a zone field that, for addresses that have a scope,
carries the scope's zone in which that address has meaning. The zone
maps to one or more interfaces. By default, lwIP uses a policy that
provides a 1:1 mapping between links and interfaces, and considers
all other addresses unscoped, corresponding to the default policy
sketched in RFC 4007 Sec. 6. The implementation allows for replacing
the default policy with a custom policy if desired, though.

The lwIP core implementation has been changed to provide somewhat of
a balance between correctness and efficiency on on side, and backward
compatibility on the other. In particular, while the application would
ideally always provide a zone for a scoped address, putting this in as
a requirement would likely break many applications. Instead, the API
accepts both "properly zoned" IPv6 addresses and addresses that, while
scoped, "lack" a zone. lwIP will try to add a zone as soon as possible
for efficiency reasons, in particular from TCP/UDP/RAW PCB bind and
connect calls, but this may fail, and sendto calls may bypass that
anyway. Ultimately, a zone is always added when an IP packet is sent
when needed, because the link-layer lwIP code (and ND6 in particualar)
requires that all addresses be properly zoned for correctness: for
example, to provide isolation between links in the ND6 destination
cache. All this applies to packet output only, because on packet
input, all scoped addresses will be given a zone automatically.

It is also worth remarking that on output, no attempt is made to stop
outgoing packets with addresses for a zone not matching the outgoing
interface. However, unless the application explicitly provides
addresses that will result in such zone violations, the core API
implementation (and the IPv6 routing algorithm in particular) itself
will never take decisions that result in zone violations itself.

This patch adds a new header file, ip6_zone.h, which contains comments
that explain several implementation aspects in a bit more detail.

For now, it is possible to disable scope support by changing the new
LWIP_IPV6_SCOPES configuration option. For users of the core API, it
is important to note that scoped addresses that are locally assigned
to a netif must always have a zone set; the standard netif address
assignment functions always do this on behalf of the caller, though.
Also, core API users will want to enable LWIP_IPV6_SCOPES_DEBUG at
least initially when upgrading, to ensure that all addresses are
properly initialized.


# ff04c204 02-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix bug #50206: UDP Netconn bind to IP6_ADDR_ANY fails
The tests were in to catch user errors, but they seem to get in the way of application programming :-)
The checks in *_send() remain active to catch when PCB source and destination address types do not match


# e8d5499d 01-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Code cleanup: add some parentheses in tcp.c and tcp_out.c


# 1f3c18fc 01-Jan-2017 Axel Lin <axel.lin@ingics.com>

tcp: Make tcp_listen_with_backlog_and_err return NULL if the address/port is already used

The caller of tcp_listen_with_backlog_and_err() usually check if the return
pcb is NULL before checking the err reason. I think the commit adding
tcp_listen_with_backlog_and_err() accidently change the behavior, Fix it.

Fixes: 98fc82fa7128 ("added function tcp_listen_with_backlog_and_err() to get the error reason when listening fails")
Signed-off-by: Axel Lin <axel.lin@ingics.com>


# 98fc82fa 31-Dec-2016 sg <goldsimon@gmx.de>

added function tcp_listen_with_backlog_and_err() to get the error reason when listening fails (bug #49861)


# a8b986bb 26-Oct-2016 David van Moolenbroek <david@minix3.org>

Add hook for TCP Initial Sequence Number generation

lwIP produces a TCP Initial Sequence Number (ISN) for each new TCP
connection. The current algorithm is simple and predictable however.
The result is that lwIP TCP connections may be the target of TCP
spoofing attacks. The problem of such attacks is well known, and a
recommended ISN generation algorithm is standardized in RFC 6528.
This algorithm requires a high-resolution timer and cryptographic
hashing function, though. The implementation (or best-effort
approximation) of both of these aspects is well beyond the scope of
lwIP itself.

For that reason, this patch adds LWIP_HOOK_TCP_ISN, a hook that
allows each platform to implement its own ISN generation using
locally available means. The hook provides full flexibility, in
that the hook may generate anything from a simple random number
(by being set to LWIP_RAND()) to a full RFC 6528 implementation.

Implementation note:

Users of the hook would typically declare the function prototype of
the hook function in arch/cc.h, as this is the last place where such
prototypes can be supplied. However, at that point, the ip_addr_t
type has not yet been defined. For that reason, this patch removes
the leading underscore from "struct _ip_addr", so that a prototype
of the hook function can use "struct ip_addr" instead of "ip_addr_t".

Signed-off-by: sg <goldsimon@gmx.de>


# 80a24c03 16-Nov-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

raw, udp, tcp connect() does NOT need to match exact IP type - when PCB is bound to IPADDR_ANY_TYPE, it is OK to connect to IPv4 or IPv6
This should finally implement task #14187: Dual Stack sendto with socket APIs


# d026a395 16-Nov-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Dual-stack fixes in raw/udp/tcp
bind() may change IP type when previous type is IPADDR_TYPE_ANY
connect() IP type must exactly match bind IP type
Use correct IPADDRx_ANY type when calling ip_route()


# 13fb616b 05-Oct-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Cleanup hton*/ntoh* function handling and platform abstraction
Let lwip use functions/macros prefixed by lwip_ internally to avoid naming clashes with external #includes.
Remove over-complicated #define handling in def.h
Make functions easier to override in cc.h. The following is sufficient now (no more LWIP_PLATFORM_BYTESWAP):
#define lwip_htons(x) <your_htons>
#define lwip_htonl(x) <your_htonl>


# 633696c1 27-Sep-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Implement consistent IPx_ADDR_ANYx macro naming between IPv4 and IPv6
- rename IP4_ADDR_ANY to IP4_ADDR_ANY4
- IP4_ADDR_ANY (= IP_ADDR_ANY) is now IPv4 any address in ip_addr_t format


# 6abcd00f 27-Sep-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Convert IP address type numbers to an enum to improve documentation


# 8cd43a3d 09-Sep-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Documentation: Add one more note PCB is already freed in tcp_err callback.


# 4b45baee 26-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Add some dual-stack notes to documentation


# a2ca85a2 24-Aug-2016 Axel Lin <axel.lin@ingics.com>

tcp: Make tcp_state_str/tcp_backoff/tcp_persist_backoff static

They are only referenced in tcp.c, so make them static.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: goldsimon <goldsimon@gmx.de>


# 4c390ad3 24-Aug-2016 sg <goldsimon@gmx.de>

update netif address change triggers to tpc & udp to work with IPv6, too


# bf5866b2 24-Aug-2016 Axel Lin <axel.lin@ingics.com>

tcp: Prevents a 0 sized (invalid) backlog

commit 44e1a2d8e23f accidently includes below changes in tcp_listen_with_backlog
- tcp_backlog_set(lpcb, backlog);
+ lpcb->backlog = backlog;

Thus pass 0 to the backlog parameter of netconn_listen_with_backlog() fails.

Fixes: 44e1a2d8e23f ("define tcp_backlog_set() as dummy-define when backlog feature is disable")
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: goldsimon <goldsimon@gmx.de>


# 1631307b 08-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

tcp.c: Partly undo Simon's changes from today (repairs doxygen docs)


# 08378b7d 08-Aug-2016 goldsimon <goldsimon@gmx.de>

Improve LWIP_EVENT_API compilation


# fc66fb83 07-Aug-2016 David van Moolenbroek <david@minix3.org>

Fix compilation for LWIP_EVENT_API

Without LWIP_CALLBACK_API, is no error callback function pointer in
the TCP PCB, nor is it needed, so do not attempt to access it.


# f55c0e78 07-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Move rawapi.txt description to main page - this doc really should be found and read by users


# 8d07629b 07-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Some documentation cleanups and include more comments that have been already in code into doxygen docs


# da83946e 02-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Add one more documentation sentence in tcp.c


# eb3261d6 27-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Add some more TCP RAW API functions to documentation


# 9c10daba 26-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Document netif API in doxygen module style


# bd79f6c0 26-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Document DNS, memory pools and PBUFs as modules


# 59295be4 26-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Some more RAW API documentation updates
Improve structure of documentation: PPP is now a module, too


# 10acd830 26-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Start to document public RAW API via doxygen


# 80be1a6b 25-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Add links to new documentation pages in the relevant files


# 98d58ffd 19-Jul-2016 sg <goldsimon@gmx.de>

minor: fixed wrong indentation


# 6c0d78ca 19-Jul-2016 goldsimon <goldsimon@gmx.de>

Fixed trying to send RST for unconnected (but bound) pcb


# 4ec3d291 19-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix bug #48504: tcp_debug_print_pcbs reads nonexisting tcp_pcb fields


# 14ca418a 04-Jul-2016 goldsimon <goldsimon@gmx.de>

minor: coding style fixes


# 40477029 27-Jun-2016 Erik Ekman <erik@kryo.se>

Fix clang warning about unreachable code

Do check with preprocessor instead


# 102f5882 25-Jun-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix several CLANG format string warnings


# afd9ee91 26-Apr-2016 goldsimon <goldsimon@gmx.de>

fixed bug #47743 (Closing listening tcp pcb is not posible without assert)


# 309e0722 06-Apr-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

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


# 27f03798 25-Mar-2016 sg <goldsimon@gmx.de>

Fixed possible problems with tcp_backlog_delayed/tcp_backlog_accepted


# 449fc98a 19-Mar-2016 Axel Lin <axel.lin@ingics.com>

tcp_alloc(): Remove superfluous initialization for pcb->keep_cnt_sent

It's already done by memset(0). This was missed in commit 5794ac2340f2
"tcp_alloc(): remove explicit =0 already done by memset(0)", fix it.

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# dd80759b 22-Mar-2016 sg <goldsimon@gmx.de>

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)


# 5794ac23 18-Mar-2016 sg <goldsimon@gmx.de>

tcp_alloc(): remove explicit =0 already done by memset(0)


# 44e1a2d8 18-Mar-2016 sg <goldsimon@gmx.de>

define tcp_backlog_set() as dummy-define when backlog feature is disable


# 1dea649c 03-Mar-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix comment in tcp.c


# f9ce31f9 02-Mar-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

TCP: Implement dual stack support using new IP_ANY_TYPE introduced at UDP


# 8cb64698 18-Feb-2016 Joel Cunningham <joel.cunningham@me.com>

Allow backlog to be updated

This commit adds support to the sockets and netconn layer to update the
backlog by calling listen when the netconn is already in the listen state.
When backlog is not enabled, the call returns successfully

This commit also introduces a macro for setting the backlog value that
prevents a 0 sized (invalid) backlog


# 953b7bdd 24-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Implement UDP dual-stack PCB support
Create special IP address type "IPADDR_TYPE_ANY" for it.
SNMP uses new feature in non-netconn mode.

TODO: Same for TCP & RAW, adapt NETCONN to use this feature


# c805843e 22-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Change signature of ip_output, ip_output_if, ip_output_if_src, ip_output_hinted, ip_route, ip_netif_get_local_ip, ip_route_get_local_ip and tcp_eff_send_mss not to take an isipv6 parameter. Use the IP version of the destination address instead.


# 880f1008 22-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Together with Simon: Eliminate last instances of isipv6 member in pcbs;
Don't allow NULL pointers (IPv4 ANY) in connect() and sendto() functions as destinations since this does not make sense.


# be9cd800 22-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Review with Simon: Init TCP/UDP/RAW PCBs with correct IP types in _new functions to make my changes work correct


# 339e82d7 21-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Eliminate IP_PCB_IPVER_EQ macro


# 5809b013 20-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Reduce usage of PCB IP version flag in raw and tcp code. Maybe we can figure out a good way for dual-stack UDP when we manage to remove the flag (nearly) entirely from the code.


# 10edba93 19-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix tcp pcb access after it was freed in tcp.c - found by Coverity


# 5056d375 10-Jan-2016 Axel Lin <axel.lin@ingics.com>

tcp_bind/tcp_connect: Omit checking for the same port if no port specified

No port specified means to use a random port.
tcp_new_port() returns a new (free) local TCP port number on success.
So in this case we don't need iterating all lists to test if the port
number is used, tcp_new_port() alreay ensures the port is not used.

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# 91586bc6 20-Nov-2015 Axel Lin <axel.lin@ingics.com>

Drop #if TCP_DEBUG guard around tcp_debug_print_state calls

The #if TCP_DEBUG guard can be removed because tcp_debug_print_state()
print nothing if !TCP_DEBUG.

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# f971fb92 19-Nov-2015 Axel Lin <axel.lin@ingics.com>

Simplify testing minimum priority in tcp_kill_prio()

Simplify the code a bit by setting mprio = LWIP_MIN(TCP_PRIO_MAX, prio)
before the for loop.

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# c730e45f 19-Nov-2015 Axel Lin <axel.lin@ingics.com>

Trivial comment fix about calling tcp_slowtmr

Trivial typo fix.

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# 98b9d31f 16-Nov-2015 goldsimon <goldsimon@gmx.de>

Fixed compiling with LWIP_TCP==0


# 92a241a2 12-Nov-2015 goldsimon <goldsimon@gmx.de>

Fixed bug #46365: tcp_accept_null() should call tcp_abort()


# d38db896 12-Nov-2015 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Export tcp_pcb_lists from tcp.c - can be used in SNMP code to implement MIB2 tcp connection tables


# 3f0b1e2c 12-Nov-2015 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Remove global variable used in macros, it can be declared locally.


# c12fa7b4 09-Oct-2015 sg <goldsimon@gmx.de>

started to move "private" header files containing implementation details to "lwip/priv/" include directory to seperate the API from the implementation.


# b401f425 07-Oct-2015 goldsimon <goldsimon@gmx.de>

minor: fixed coding style (lwip style)


# 2b971400 06-Oct-2015 sg <goldsimon@gmx.de>

minor: coding style


# 22df34fc 06-Oct-2015 sg <goldsimon@gmx.de>

minor/coding style: removed spaces before line ending (from file header)


# 490581a0 06-Oct-2015 sg <goldsimon@gmx.de>

minor/coding style: removed spaces before line ending


# 969fb4c9 30-Sep-2015 goldsimon <goldsimon@gmx.de>

minor: removed some trailing spaces in tcp.c


# c7172310 24-Sep-2015 goldsimon <goldsimon@gmx.de>

Removed ip_2_ip4/6_c const macros again now that ip_2_ip4/6 macros keep the original const'ness


# 262a6413 24-Sep-2015 goldsimon <goldsimon@gmx.de>

eliminate temporary storage when using netif addresses for ip_addr_t* now that they have the correct type (ATTENTION: ip6_select_source_address() and ip4_netif_get_local_ip() now return ip_addr_t*!)


# e00e4a6c 23-Sep-2015 Dirk Ziegelmeier <dirk@ziegelmeier.net>

make netif_ip4_* get accessors return const pointers


# 6f0dceee 17-Sep-2015 sg <goldsimon@gmx.de>

fixed some printf formatters (mainly for window scaling code)


# f62022cd 17-Sep-2015 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Compiler warning fixes (mostly constness in dual-stack configurations)


# 8a0fb03e 08-Sep-2015 goldsimon <goldsimon@gmx.de>

Separate mib2 counter/table callbacks from snmp agent. This both cleans up the code and should allow integration of a 3rd party agent/mib2.


# a01a1b45 30-Aug-2015 sg <goldsimon@gmx.de>

support IPv4 source based routing: define LWIP_HOOK_IP4_ROUTE_SRC to point to a routing function


# b9a8310f 30-Aug-2015 sg <goldsimon@gmx.de>

fixed bug #44023: TCP ssthresh value is unclear: ssthresh is set to the full send window for active open, too, and is updated once after SYN to ensure the correct send window is used


# 43b18b20 28-Aug-2015 goldsimon <goldsimon@gmx.de>

fixed bug #45818: API functions should check if type of ip_addr_t parameter matches the pcb type


# 06d8dba4 28-Aug-2015 goldsimon <goldsimon@gmx.de>

fixed bug #45559: Window scaling casts u32_t to u16_t without checks


# 392ef77b 21-May-2015 goldsimon <goldsimon@gmx.de>

Fixed bug #45161 tcp.c / tcp_abandon / pcb->local_port set to zero but needed later for tcp_rst (introduced some months ago when fixing bug #42299)


# 00a46f10 22-Apr-2015 goldsimon <goldsimon@gmx.de>

changed IP_IS_V6_VAL() to take an instance, not a pointer (to get the _val() functions the same)


# f468c492 22-Apr-2015 goldsimon <goldsimon@gmx.de>

fixed missing casts found with msvc /Wall


# beabd3c6 21-Apr-2015 goldsimon <goldsimon@gmx.de>

Added some macros with extension "_val" that work on actual instances and leave away the "if != NULL" check to get rid of gcc "-Waddress" warnings in the core code at least (I might not have caught all of them, yet)


# ce7e31cd 09-Apr-2015 sg <goldsimon@gmx.de>

task #12722 (improve IPv4/v6 address handling): renamed ip_addr_t to ip4_addr_t, renamed ipX_addr_t to ip_addr_t and added IP version;
ip_addr_t is used for all generic IP addresses for the API, ip(4/6)_addr_t are only used internally or when initializing netifs or when calling version-related functions


# 33d5e646 21-Mar-2015 sg <goldsimon@gmx.de>

fixed bug #41318 (Bad memory ref in tcp_input() after tcp_close())


# 553c4203 06-Mar-2015 sg <goldsimon@gmx.de>

tcp/udp_netif_ipv4_addr_changed(): don't change specific-address of local tcp_listen/udp_pcb to ANY on address change


# 0647533f 26-Feb-2015 sg <goldsimon@gmx.de>

fixed bug #44378 (TCP connections are not aborted on netif remove)


# 0d1606ff 26-Feb-2015 sg <goldsimon@gmx.de>

Fixed last commit: can only check for bound sockets, not for unbound. There's some work to do for IPv6 in TCP...


# a6a92d42 26-Feb-2015 sg <goldsimon@gmx.de>

Fixed bug #41700 (Call to tcp_listen_dual() should not accept IPv4 listen PCB args)


# 9f065c0e 23-Jan-2015 chrysn <chrysn@fsfe.org>

(api break) qualify ip_addr_t as const where feasible

this changes the callback signatures of the ip_output and the
{udp,raw}_recv functions.

changes were made by going through all header files, searching for
occurrences of ip_addr_t, qualifying them as const and if required
modifying the corresponding c files, looking for other uses of ip_addr_t
that would be required.

the following header files were not treated as i'm not using them and
wouldn't see them compiled: api.h api_msg.h dhcp.h dns.h igmp.h
netifapi.h pppapi.h snmp.h snmp_msg.h snmp_structs.h ppp.h pppol2tp.h
test/*

no modifications were done on ip6_addr_t.


# 101f57d5 18-Feb-2015 sg <goldsimon@gmx.de>

tcp_alloc() prefers killing CLOSING/LAST_ACK over active connections (see bug #39565) (tcp_kill_prio(): back to old implementation)


# 5d13b5a2 17-Feb-2015 goldsimon <goldsimon@gmx.de>

fixed bug #37614 "Errors from ipX_output are not processed". Now tcp_output(_segment) checks for the return value of ipX_output and does not try to send more on error. A netif driver can call tcp_txnow() (from tcpip_thread!) to try to send again if TX buffers are available again.


# e926a935 19-Jan-2015 goldsimon <goldsimon@gmx.de>

tcp_kill_prio(): prefer nearly-closed connections (waiting for the last ACK only) over established connections when out of tcp pcbs


# 28476e3b 18-Jan-2015 sg <goldsimon@gmx.de>

Fixed bug #38315 tcp_eff_send_mss_impl() always subtract the difference in IPv6 header size


# 69ee35c9 17-Jan-2015 sg <goldsimon@gmx.de>

tcp_close_shutdown: remove invalid comment on linger: we cannot support linger for the raw API since linger implies blocking


# 7ca4fd81 10-Dec-2014 sg <goldsimon@gmx.de>

- fixed bug #43797 set/getsockopt: SO_SNDTIMEO/SO_RCVTIMEO take int as option but should take timeval (LWIP_SO_SNDRCVTIMEO_STANDARD==0 can be used to revert to the old 'winsock' style behaviour);
- Fixed implementation of SO_ACCEPTCONN to just look at the pcb state;
- cleaned up the SO/SOF defines (only 3 left a ip_pcb level);


# 33237419 18-Sep-2014 Simon Goldschmidt <goldsimon@gmx.de>

Parts of patch #8397 Typos corrected in comments and text outputs


# 39caf630 02-Sep-2014 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #42299 tcp_abort() leaves freed pcb on tcp_bound_pcbs list


# e7f32240 04-Jun-2014 Simon Goldschmidt <goldsimon@gmx.de>

again bug #26069: Documentation of tcp_connect() incorrectly describes handling of errors


# 88a57dc9 08-Apr-2014 Simon Goldschmidt <goldsimon@gmx.de>

Fixed bug #36167 tcp server crash when client closes (maximum window)


# 751deac9 12-Feb-2014 Simon Goldschmidt <goldsimon@gmx.de>

Another fix to window scaling: support queueing more than 64 KByte in ooseq data


# d2a89b42 06-Feb-2014 Simon Goldschmidt <goldsimon@gmx.de>

patch #6537/#7858: TCP window scaling support (OOS queueing still needs special handling)


# 91333c5d 10-Jan-2014 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #39898 tcp_fasttmr() possible lock due to infinte queue process loop


# 2fb5a71e 19-Jun-2013 Simon Goldschmidt <goldsimon@gmx.de>

patch #8030: fixed spelling of "received"


# 97b8abf1 24-Jul-2012 James Smith <jsmith@ecoscentric.com>

Fix bug #36857: tcp_listen_dual_with_backlog() only works with ANY
address

Change-Id: I092a4c9978d88040214fc44a4c4b353be618d76c


# dd245c63 25-Mar-2012 goldsimon <goldsimon@gmx.de>

tcp_abort/tcp_abandon: don't send RST if pcb->state is CLOSED


# 9a95c2ff 11-Feb-2012 goldsimon <goldsimon@gmx.de>

fixed bug #35435: No pcb state check before adding it to time-wait queue while closing


# 13075460 22-Jan-2012 goldsimon <goldsimon@gmx.de>

fixed bug #35305: pcb may be freed too early on shutdown(WR)


# 4c3dfb92 21-Jan-2012 goldsimon <goldsimon@gmx.de>

fixed bug #34636: FIN_WAIT_2 - Incorrect shutdown of TCP pcb: don't let PCBs time out from FIN_WAIT_2 if the RX side wasn't close (by either calling tcp_close or tcp_shutdown(RDWR))


# c8647c03 17-Dec-2011 goldsimon <goldsimon@gmx.de>

implemented API functions to access so_options of IP pcbs (UDP, TCP, RAW) (fixes bug #35061)


# dd872906 25-Nov-2011 goldsimon <goldsimon@gmx.de>

fixed bug #31177: tcp timers can corrupt tcp_active_pcbs in some cases


# 0fb07ba3 23-Oct-2011 goldsimon <goldsimon@gmx.de>

- moved processing of refused_data to an own function (used from tcp_fasttmr and tcp_input);
- improved readability of tcp_slowtmr by using defines to access keepalive variables


# 98274d21 23-Sep-2011 Simon Goldschmidt <goldsimon@gmx.de>

Reverted invalid fix for invalid bug #34360 done yesterday...


# 918470af 23-Sep-2011 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #33871: rejecting TCP_EVENT_RECV() for the last packet including FIN can lose data


# 797f26e4 22-Sep-2011 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #34360 tcp_shutdown: RST on unacked is not send when shutting down both rx AND tx


# 112158b0 10-Sep-2011 Simon Goldschmidt <goldsimon@gmx.de>

Added a config option to randomize initial local TCP/UDP ports (so that different port ranges are used after a reboot; bug #33818; this one added tcp_init/udp_init functions again);
fixed a possible endless loop in tcp_new_port() if the number of active PCBs exceeds the number of available ports;


# 6a4c30fe 26-Jun-2011 goldsimon <goldsimon>

fixed bug #31723 (tcp_kill_prio() kills pcbs with the same prio) by updating its documentation only.


# 4444db29 26-Jun-2011 goldsimon <goldsimon>

Added some more asserts to check that pcb->state != LISTEN


# 2aec3a97 28-May-2011 goldsimon <goldsimon>

use PCB_IS_IPV6(pcb) instead of pcb->isipv6 everywhere


# ccd7dbe0 26-May-2011 goldsimon <goldsimon>

Added ipX versions for routing


# 853d1eac 25-May-2011 goldsimon <goldsimon>

Fixed pointless conversion when checking TCP port range (bug #33398)


# 6865806b 25-May-2011 goldsimon <goldsimon>

Combined IPv4 and IPv6 code where possible, added defines to access IPv4/IPv6 in non-IP code so that the code is more readable.


# 4bfbe7eb 17-May-2011 goldsimon <goldsimon>

... and finally, we got a first working version of a dual-stack lwIP runnin IPv4 and IPv6 in parallel - big thanks to Ivan Delamer! (this is work in progress, so please beware, test a lot and report problems!)


# e4739da9 29-Apr-2011 goldsimon <goldsimon>

Fixed overflow in tcp_new_port() after changing port range to IANA "Dynamic and/or Private Ports" range


# 33d6dcec 13-Apr-2011 goldsimon <goldsimon>

Fixed bug #33048 (Bad range for IP source port numbers) by using ports in the IANA private/dynamic range (49152 through 65535).


# 11b1c9f1 27-Mar-2011 goldsimon <goldsimon>

Fixed bug #32926 (TCP_RMV(&tcp_bound_pcbs) is called on unbound tcp pcbs) by checking if the pcb was bound (local_port != 0).


# 783404d8 27-Mar-2011 goldsimon <goldsimon>

Move tcp_pcb_lists to const section.


# 5b084f4b 13-Mar-2011 goldsimon <goldsimon>

tcp_bind: return ERR_VAL instead of ERR_ISCONN when trying to bind with state!=CLOSED; fixed a typo


# f418782c 21-Nov-2010 goldsimon <goldsimon>

tcp_slowtmr(): change the scope of 'pcb2' to reflect its block-only usage.


# 4cc36b22 10-Aug-2010 goldsimon <goldsimon>

Fixed bug #30728: tcp_new_port() did not check listen pcbs


# cd22a8d8 28-Jul-2010 goldsimon <goldsimon>

Fixed bug #30565 (tcp_connect() check bound list): that check did no harm but never did anything


# 7f7df4ae 28-Jul-2010 goldsimon <goldsimon>

Fixed bug #30447: tcp.c:tcp_bind() - suspicious nested #if


# 194a8538 12-Jul-2010 goldsimon <goldsimon>

patch #7239: make tcp_state_str pointers constant


# 874d1641 15-May-2010 goldsimon <goldsimon>

Fix compilation for LWIP_EVENT_API==1 (unused args)


# 7e5b0a9e 15-May-2010 goldsimon <goldsimon>

SO_REUSE: tcp_listen/tcp_connect: make sure that the 5-tuple is unique


# d0348e0c 12-May-2010 goldsimon <goldsimon>

task #6995: Implement SO_REUSEADDR (correctly)


# 597764e3 10-May-2010 goldsimon <goldsimon>

Minor: source code layout


# 49e8e28c 21-Apr-2010 goldsimon <goldsimon>

Check that tcp_abort/tcp_abandon isn't called for listen-pcbs


# 6fb248c9 21-Mar-2010 goldsimon <goldsimon>

task #10088: Fixed a bug in RST-on-close-when-not-all-data-acked implementation (plus removed some unnecessary casts)


# 124ca0fe 22-Mar-2010 goldsimon <goldsimon>

tcp_listen() did not copy the pcb's prio


# 097e8c8e 12-Mar-2010 goldsimon <goldsimon>

Fixed some issues in the TCP_OVERSIZE code:
- reset tcp_pcb.unsent_oversize when last_unsent is changed;
- added TCP_OVERSIZE_DBGCHECK: check tcp_pcb.unsent_oversize vs. (debug-only) tcp_seg.oversize_left to ensure the pcb counter is correct;
- fixed a memory leak in tcp_write;


# b6542b97 05-Mar-2010 goldsimon <goldsimon>

task #7040 (Work on tcp_enqueue): Don't waste memory when chaining segments, added option TCP_OVERSIZE to prevent creating many small pbufs when calling tcp_write with many small blocks of data. Instead, pbufs are allocated larger than needed and the space is used for later calls to tcp_write.


# 103b5a76 01-Mar-2010 goldsimon <goldsimon>

tcp_connect: send timestamp-option only if (pcb->flags & TF_TIMESTAMP) != NULL (same as for passive open)


# 2b1c3899 01-Mar-2010 goldsimon <goldsimon>

Fixed accessing invalid memory when closing a listening pcb (introduced with tcp_shutdown)


# bcd4b76d 21-Feb-2010 goldsimon <goldsimon>

Moved stack-internal parts of tcp.h to tcp_impl.h, tcp.h now only contains the actual application programmer's API


# d9157a71 20-Feb-2010 goldsimon <goldsimon>

Task #10088: Correctly implement close() vs. shutdown(). Now the application does not get any more recv callbacks after calling tcp_close(). Added tcp_shutdown().


# e131d3e3 20-Feb-2010 goldsimon <goldsimon>

tcp_alloc: set given prio to the new pcb, not TCP_PRIO_NORMAL; minor: changed comments and source code layout


# c637441f 16-Feb-2010 goldsimon <goldsimon>

tcp_seg(s)_free: remove return value, noone uses it


# 96e9689d 13-Feb-2010 goldsimon <goldsimon>

Use new macro ip_addr_copy where applicable


# 8768e448 12-Feb-2010 goldsimon <goldsimon>

patch #6865: use so_options SOF_REUSEADDR instead of flags TF_REUSEADDR (which has ben removed again)


# d3635c5e 12-Feb-2010 goldsimon <goldsimon>

patch #6865 (SO_REUSEADDR for TCP): if tcp_pcb.flags has TF_REUSEADDR set, allow binding to endpoint in TIME_WAIT


# 5d360a67 04-Feb-2010 goldsimon <goldsimon>

Replaced struct ip_addr by typedef ip_addr_t to make changing the actual implementation behind the typedef easier.


# a23b446d 04-Feb-2010 goldsimon <goldsimon>

Use macros defined in ip_addr.h (some of them new) to work with IP addresses (preparation for bug #27352 - Change ip_addr from struct to typedef (u32_t) - and better code).


# 95445fc3 28-Jan-2010 kieranm <kieranm>

Ensure ssthresh >= 2*MSS


# 0644c4c0 27-Jan-2010 goldsimon <goldsimon>

Fixed bug #27871: Calling tcp_abort() in recv callback can lead to accessing unallocated memory. As a consequence, ERR_ABRT means the application has called tcp_abort()!


# e678e1bd 25-Jan-2010 goldsimon <goldsimon>

bug #28659: Missing casts


# dbcce3a4 23-Jan-2010 goldsimon <goldsimon>

bug #26523: Compiler Warnings


# 82318c0e 21-Jan-2010 goldsimon <goldsimon>

Fixed bug #28651 (tcp_connect: no callbacks called if tcp_enqueue fails) both in raw- and netconn-API


# 2d4e7687 14-Jan-2010 goldsimon <goldsimon>

Using typedefs for function prototypes and -pointers throughout the stack for clarity


# 59005b54 13-Jan-2010 goldsimon <goldsimon>

Minor fix: bug #28555: Retransmission timer only stopped if TCP_QUEUE_OOSEQ==1


# 97f6c5b2 10-Jan-2010 goldsimon <goldsimon>

D'Oh!


# f4a9d173 10-Jan-2010 goldsimon <goldsimon>

bug #28127: remove call to tcp_output() from tcp_ack(_now)()


# 802a0483 31-Dec-2009 goldsimon <goldsimon>

Commented 2 variables


# 35d1c33e 22-Nov-2009 goldsimon <goldsimon>

tcp_alloc: prevent increasing stats.err for MEMP_TCP_PCB when reusing time-wait pcb as suggested by Bill 4 months ago


# 6d22c38e 22-Nov-2009 goldsimon <goldsimon>

tcp_recv_null: call tcp_recved() if p != NULL to keep the window correct


# 6bb7f987 22-Nov-2009 goldsimon <goldsimon>

Fixed bug #28049 (Keep Alive timeout frees pcb then uses it, sometimes causing crash error) by calling tcp_rst() instead of tcp_abort() in tcp_slowtmr() when retransmit timer expires.


# b30c6f8b 20-Nov-2009 goldsimon <goldsimon>

Fixed comment: tcp_pcb_remove does *not* deallocate the pcb


# 81f9442a 23-Oct-2009 goldsimon <goldsimon>

Fixed bug #27783: Silly window avoidance for small window sizes


# 68f92050 07-Oct-2009 goldsimon <goldsimon>

Make tcp_debug_state_str() always available, not only in DEBUG mode


# ae7a7a0a 23-Aug-2009 goldsimon <goldsimon>

Added function tcp_debug_state_str() to convert a tcp state to a human-readable string.


# 0b759171 12-Aug-2009 kieranm <kieranm>

BUG27209: handle trimming of segments when out of window or out of
order properly


# 3553efb7 28-Jul-2009 goldsimon <goldsimon>

Added newline to TCP header flags debug print


# c232edb8 25-Jun-2009 kieranm <kieranm>

BUG26301 and BUG26267: correct simultaneous close behaviour, and make
snd_nxt have the same meaning as in the RFCs.


# f1a9f7ea 31-Mar-2009 kieranm <kieranm>

BUG20515: rework way TCP window updates are calculated and sent


# 4b146212 31-Mar-2009 kieranm <kieranm>

TASK9218: add support for TCP timestamp options


# efac1098 26-Mar-2009 kieranm <kieranm>

BUG25622: handle return code of tcp_enqueue in tcp_listen_input()


# d976c8e8 16-Feb-2009 goldsimon <goldsimon>

fixed bug #24440: TCP connection close problem on 64-bit host by moving accept callback function pointer to TCP_PCB_COMMON


# 10c3ce08 10-Feb-2009 goldsimon <goldsimon>

fixed bug #25467: Listen backlog is not reset on timeout in SYN_RCVD: Accepts_pending is decrease on a corresponding listen pcb when a connection in state SYN_RCVD is close.


# c231e95c 30-Sep-2008 jifl <jifl>

* tcp.c: Fix bug #24227, wrong error message in tcp_bind.


# aee9c4c8 26-Mar-2008 goldsimon <goldsimon>

fixed bug #22249: division by zero could occur if a remote host sent a zero mss as TCP option.


# f02c39a4 22-Jan-2008 fbernon <fbernon>

tcp.c, tcp_in.c, tcp.h, opt.h: Rename LWIP_CALCULATE_EFF_SEND_MSS in TCP_CALCULATE_EFF_SEND_MSS to have coherent TCP options names.


# 7518acf6 14-Jan-2008 fbernon <fbernon>

rawapi.txt, api_msg.c, tcp.c, tcp_in.c, tcp.h: changes for task #7675 "Enable to refuse data on a TCP_EVENT_RECV call". Important, behavior changes for the tcp_recv callback (see rawapi.txt).


# 82ddf828 12-Jan-2008 fbernon <fbernon>

Minor change: add comment


# 9c4daa31 04-Jan-2008 fbernon <fbernon>

Minor changes in lwip folder: fix some warnings, coding style, and rename "internal" netconn_alloc function.


# 32005617 04-Jan-2008 fbernon <fbernon>

rawapi.txt, api.h, api_lib.c, api_msg.h, api_msg.c, sockets.c, tcp.h, tcp.c, tcp_in.c, init.c, opt.h: rename backlog options with TCP_ prefix, limit the "backlog" parameter in an u8_t, 0 is interpreted as "smallest queue", add documentation in the rawapi.txt file.


# 99afb15c 31-Dec-2007 kieranm <kieranm>

Add persist timer


# 1ed34774 21-Dec-2007 goldsimon <goldsimon>

tcp.h, opt.h, api.h, api_msg.h, tcp.c, tcp_in.c, api_lib.c, api_msg.c, sockets.c, init.c: task #7252: Implement TCP listen backlog: Warning: raw API applications have to call 'tcp_accepted(pcb)' in their accept callback to keep accepting new connections.


# 1cb47066 20-Dec-2007 kieranm <kieranm>

Whitespace fix.


# 8cc32bc2 20-Dec-2007 kieranm <kieranm>

2007-12-20 Kieran Mansley (based on patch from Per-Henrik Lundbolm)
* tcp.c, tcp_in.c, tcp_out.c, tcp.h: fix bug #20199 (better handling
of silly window avoidance and prevent lwIP from shrinking the window)


# 8d3d08e8 04-Dec-2007 goldsimon <goldsimon>

fix bug #21699 (segment leak in ooseq): add assert that all segment lists are empty in tcp_pcb_remove before setting pcb to CLOSED state; don't directly set CLOSED state from LAST_ACK in tcp_process


# 5743b119 25-Nov-2007 goldsimon <goldsimon>

Check state == CLOSED in tcp_bind and tcp_connect to prevent binding/connecting twice (using LWIP_ERROR: can be disabled)


# 95425552 21-Nov-2007 goldsimon <goldsimon>

Implemented calculating the effective send-mss based on the MTU of the netif used to send. Enabled by default. Disable by setting LWIP_CALCULATE_EFF_SEND_MSS to 0. This fixes bug #21535.


# 2d5908f4 01-Nov-2007 goldsimon <goldsimon>

Fixed bug #21494: The send mss (pcb->mss) is set to 536 (or TCP_MSS if that is smaller) as long as no MSS option is received from the remote host.


# 298d5cf0 01-Nov-2007 goldsimon <goldsimon>

Fixed bug #21491: The MSS option sent (with SYN) is now based on TCP_MSS instead of pcb->mss (on passive open now effectively sending our configured TCP_MSS instead of the one received).


# 7a99d730 28-Oct-2007 goldsimon <goldsimon>

Added some explaining comments.


# 199648ff 09-Oct-2007 goldsimon <goldsimon>

Changed initialization: many init functions are not needed any more since we now rely on the compiler initializing global and static variables to zero!


# 0aa3d891 20-Sep-2007 goldsimon <goldsimon>

Fixed bug #21080 (tcp_bind without check pcbs in TIME_WAIT state) by checking tcp_tw_pcbs also


# e3cd1ac1 07-Sep-2007 fbernon <fbernon>

Minor changes (but in lot of files): add #if/#endif for options where they could miss. #if LWIP_xxx if always put after #include "lwip/opt.h" (note this one indirectly include cc.h). Move others includes inside #if/#endif block.


# 9152d667 09-Aug-2007 fbernon <fbernon>

Comments Fix for Doxygen documentation


# 33054a18 26-Jul-2007 goldsimon <goldsimon>

Added a better comment to explain why tcp_close doesn't care for the return value of tcp_output


# f4036e83 25-Jul-2007 goldsimon <goldsimon>

Another fix for bug #20021: by not returning an error if tcp_output fails in tcp_close, the code in do_close_internal gets simpler (tcp_output is called again later from tcp timers).


# 62c3de30 24-Jul-2007 goldsimon <goldsimon>

Fix bug #20480: Check the pcb passed to tcp_listen() for the correct state (must be CLOSED).


# fa4b7114 02-Jul-2007 goldsimon <goldsimon>

Added some ASSERTS and casts to prevent warnings when assigning to smaller types.


# d228ff0f 01-Jul-2007 goldsimon <goldsimon>

Removed warning when assigning from u32_t to u16_t by casting to u16_t.


# 6784fd64 17-Jun-2007 goldsimon <goldsimon>

Done some work on task #6933: converted some LWIP_ASSERTs to LWIP_ERROR to give back an error return value for LWIP_NOASSERT=1


# 10f46049 16-Jun-2007 goldsimon <goldsimon>

Corrected some copy & paste errors


# d258bc26 08-Jun-2007 goldsimon <goldsimon>

Done some work on task #1549 (function documentation)


# c43ab76b 29-May-2007 goldsimon <goldsimon>

Use TCP_RMV instead of tcp_pcb_remove when removing pcbs from tcp_bound_pcbs list (bug introduced while fixing bug #1895)


# 0aaf6976 22-May-2007 goldsimon <goldsimon>

Fixed bug #1895 (tcp_bind not correct) by introducing a list of bound but unconnected (and non-listening) tcp_pcbs.


# 255d5a74 09-May-2007 goldsimon <goldsimon>

Included patch #5920: Create define to override C-library memcpy. 2 Defines are created: MEMCPY() for normal memcpy, SMEMCPY() for situations where some compilers might inline the copy and save a function call. Also replaced all calls to memcpy() with calls to (S)MEMCPY().


# 79be888b 12-Apr-2007 kieranm <kieranm>

* tcp.c, tcp_in.c, tcp_out.c, tcp.h: Modify way the retransmission
timer is reset to fix bug#19434, with help from Oleg Tyshev.


# 7932bf48 11-Apr-2007 goldsimon <goldsimon>

Ongoing fix to patch #5822: converted more statements like (void)arg; into LWIP_UNUSED_ARG(arg);


# 5c65d473 11-Mar-2007 fbernon <fbernon>

Keepalive values can be configured at run time with LWIP_TCP_KEEPALIVE, but don't change this unless you know what you're doing (default are RFC1122 compliant). Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set in seconds.

Old TCP_KEEPALIVE can always be used, and its only difference with TCP_KEEPIDLE is this last use seconds and not milliseconds with setsockopt.

Some documentation (not perfect, but...):

http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.commtechref/doc/commtrf2/setsockopt.htm


# cdb7557d 18-Aug-2006 christiaans <christiaans>

Added SNMP counters.


# 1dae1023 31-May-2006 curtmcd <curtmcd>

Fix debug print, remove reference to TCP_COARSE_TIMEOUT


# f8663a71 20-Dec-2005 likewise <likewise>

Remove PCBs which stay in LAST_ACK state too long.


# e1b215aa 24-Nov-2005 christiaans <christiaans>

Introduced cc.h formatters and removed SO_REUSE from transport layers.


# 089378ef 07-Dec-2004 christiaans <christiaans>

christiaans: cosmetic change debug formatters as requested by Tom.


# 751557bc 15-Oct-2004 kieranm <kieranm>

16th October 2004 - Kieran Mansley - kjm25@cam.ac.uk
- Add code to tcp_recved() to send an ACK (window update)
immediately, even if one is already pending, if the rcv_wnd is above a
threshold (currently TCP_WND/2)
- This avoids waiting for a timer to expire to send a delayed ACK in
order to open the window if the stack is only receiving data.


# 2ed5bc51 12-Sep-2004 kieranm <kieranm>

Kieran Mansley - kjm25@cam.ac.uk - 12th September 2004

Applied patch from Sam Jansen as detailed in
http://lists.gnu.org/archive/html/lwip-users/2004-07/msg00106.html
to correctly handle retransmission after a retransmission timeout


# 1fa0d66f 27-Jul-2004 softins <softins>

Stop compiler complaining of empty if statement when LWIP_DEBUGF() empty.


# eb690327 23-Jul-2004 kieranm <kieranm>

Kieran Mansley - kjm25@cam.ac.uk - 23rd July 2004

Now handle CLOSED state in tcp_close() explicitely, and free the pcb.
This is for the case that a pcb has been allocated but never used (so
is in the default "CLOSED" state) and needs to be freed.


# 75248938 04-Jul-2004 likewise <likewise>

Dependencies on C library memset() etc., so include <string.h>.


# 8f309a3f 29-Apr-2004 likewise <likewise>

Clean-up source comment documentation for Doxygen.


# fe1696ce 29-Apr-2004 likewise <likewise>

Clean-up source comment documentation for Doxygen.


# d36b7230 25-Mar-2004 jani <jani>

fix SO_REUSE ifdef fixes


# 2c8aa6f6 23-Mar-2004 kieranm <kieranm>

Kieran Mansley - kjm25@cam.ac.uk - 23rd March 2003
- Changed all #ifdef SO_REUSE into #if SO_REUSE


# 6f7c8fb3 22-Mar-2004 likewise <likewise>

Made #ifdef's into #if's for SO_REUSE.


# caf3c168 08-Mar-2004 kieranm <kieranm>

Kieran Mansley, kjm25@cam.ac.uk, 08th Mar 2004
- added a comment to tcp_recved() to clarify reasons for call to tcp_ack()


# 7bfea6ed 16-Feb-2004 likewise <likewise>

Applied Ian Wienand's patches (4-2-2004). Was partly applied earlier.


# e1c4bfad 06-Feb-2004 likewise <likewise>

Merged from DEVEL, except for the API change in etharp.c.


# 1ed40e79 06-Feb-2004 likewise <likewise>

Applied alias.diff by Ian Wienand on lwip-devel on February 4th 2004.
Using union to make explicit either tcp_listen_pcb or tcp_pcb.


# 1b96391c 20-Jan-2004 likewise <likewise>

Merged from DEVEL to main. Two TCP fixes and two NULL reference fixes.


# e4a6d199 14-Nov-2003 likewise <likewise>

Merged from DEVEL into main tree.


# ba786dc4 11-Jun-2003 likewise <likewise>

Applied patch #1596 fixing wrongly cast LWIP_DEBUGF arguments.
(printf expects integers on the var args stack)


# 80145519 10-Jun-2003 kieranm <kieranm>

Changed DEBUGF to LWIP_DEBUGF


# df99ce9d 09-Jun-2003 likewise <likewise>

Replaced all tabs with two spaces (regardless of indentation is correct).


# 6719f100 27-May-2003 jani <jani>

put LWIP_MAX and LWIP_MIN macros in def.h and use these instead of locally declaring them in .c files


# cd65d368 19-May-2003 jani <jani>

patches 1492, 1493 and 1494 from Marc


# 03bc7c86 01-May-2003 likewise <likewise>

Major stylo search/replace for "One space between keyword and opening bracket."


# 9bc16878 16-Apr-2003 likewise <likewise>

Fixed tabs into spaces. Fixed other stylos.


# 9ef5a61b 14-Apr-2003 likewise <likewise>

Prevent compiler warning on unused function arguments.


# 12fc0239 06-Apr-2003 likewise <likewise>

Fixed bug #3112 (faulty behaviour calling tcp_listen() when already listening)


# 09ca7a18 31-Mar-2003 davidhaas <davidhaas>

In keeping with pbuf->ref always having the count of the number of pointers
to the particular buffer (and the last rewrite of pbuf_free), changed most
pbuf_ref_chain() calls back to pbuf_ref(). I think this was causing some pbuf
leaks.


# 6c147709 31-Mar-2003 likewise <likewise>

Documentation changes. Added missing trailing newlines to debug messages.


# fa34d51b 24-Mar-2003 likewise <likewise>

Added documentation and comments.


# 859f06a9 21-Mar-2003 jani <jani>

if LWIP_TCP is 0 do not link in TCP code.putting ugly ifdefs in api and core :(.Also only udp_init if LWIP_UDP is on


# 32d9f25a 19-Mar-2003 davidhaas <davidhaas>

Fixed up and made work a PBUF_REF type. Most of the code uses this now
instead of PBUF_ROM. This addition allows support of copy-on-demand where the
lower layers can call pbuf_unref() which tests for any PBUF_REF buffers and
replaces them with PBUF_POOL buffers. This is now used
everywhere. pbuf_unref() is called in ARP queueing and in the coldfire
driver, which puts frames on a DMA queue and frees them later.

Along with this change pbuf_free() now goes through the entire chain of
buffers and tests all the ref counters, not just the first one. Generally now
pbuf_ref_chain() should be called and not pbuf_ref(). This change was made
because it is possible for the head of the pbuf chain to have a different
count than the payload pbuf which might have been passed by the application.


# 18df3961 21-Feb-2003 jani <jani>

byte-order handling functions are in inet.c now and the uperrcase counterparts are gone. opt.h has all the
configurable items debug does not need to be directly included.


# 8e9aa840 20-Feb-2003 jani <jani>

do not directly include lwipopts.h but lwip/opt.h instead


# dd2fa15e 06-Feb-2003 davidhaas <davidhaas>

Add the following features and bugfixes:

Added select() functionality to sockets library.
Support for errno in sockets library.
Byte ordering fixes.
basic lwip_ioctl(), FIONREAD, get/setsockopt() etc. support

- added additional argument to netif_add to pass state pointer so that the
if_init function has access to context information before
the interface is added, without accessing globals.

- added netif_remove()

- to conserve cpu load the tcpip_tcp_timer should only be active
when tcbs that need it exist.

- pass length of available data to callbacks for NETCONN_EVT_RCV events

- added tcpip_link_input(), a hack to allow processing of PPP
packets in tcpip_thread() context. This saves threads and context
switches.

- renamed incompatible ASSERT() macro to LWIP_ASSERT() to avoid name
collision.

- changed a bunch of %d's to %u's in format strings for unsigned values.

- added ip_frag to lwip_stats.

- changed IP_REASS_MAXAGE and IP_REASS_TMO defaults to more realistic
values.

- added sys_timeout_remove() function to cancel timeouts (needed by PPP
amongst other things).

- tolerate NULL returns from sys_arch_timeouts() since some threads might
not need to use or have timeouts.

- added sys_sem_wait_timeout()

- moved mem_malloc() function to end of mem.c to work around tasking
compiler bug.

- automatically bind to local tcp port if 0.

- allow customization of port ranges for automatic local bindings.

- corrected various typos, spelling errors, etc..

Thanks to Marc Boucher for many of these changes.


# 42309b5d 17-Jan-2003 jani <jani>

put a state field in listen PCBs to since they are often treated as normal pcbs. patch #922, bug #2114


# 4eebbdea 10-Jan-2003 jani <jani>

print correct pcb->rtime value in debug statament.it does not directly depend on tcp_ticks


# e1961089 10-Jan-2003 jani <jani>

fix debug messages in tcp_slowtmr to reflect the correct name of this function


# 5e13d495 08-Jan-2003 likewise <likewise>

Merged patch #927 which fixes "needs modifiable lvalue" compile error in TCP_REG.


# cc4df710 08-Jan-2003 likewise <likewise>

Updated lwIP module copyright years to include 2003. Committers must check theirs.


# 4c1069c3 18-Dec-2002 jani <jani>

use memset and memcpy instead of bzero and bcopy throughout lwIP core code.Archs need to update.Bug #1899


# c0a8ef6f 17-Dec-2002 jani <jani>

Use C style comments.In debug stataments cast various struct pointers to void* to
avoid printf warnings.misc warnings in etharp.


# c7360630 24-Nov-2002 likewise <likewise>

Fixed argument type compiler warnings of the bcopy() call using type casting.


# dfe1ab74 21-Nov-2002 likewise <likewise>

Added debug messages for corner cases of TCP states.


# 43a06e8e 15-Nov-2002 adamdunkels <adamdunkels>

The code that increased the retransmission time was commented out for some reason. This has been fixed. Also removed some old, out-commented, code.


# 131eed41 13-Nov-2002 jani <jani>

Fix function names in DEBUGF stataments.Remove reference to "reclaimed" field in stat.


# 4b9e035a 13-Nov-2002 kieranm <kieranm>

Initialize err in tcp_slowtmr to prevent compiler warning.


# bca526b6 11-Nov-2002 likewise <likewise>

Workaround for compile error on TCP_REG. This workaround is disabled by default.


# f06e9550 18-Oct-2002 likewise <likewise>

Initial revision