History log of /seL4-camkes-master/projects/lwip/test/unit/tcp/test_tcp.c
Revision Date Author Comments
# b7bee87f 12-Oct-2018 Simon Goldschmidt <goldsimon@gmx.de>

Add a unit test for bug #54833 (tcp_abort with wrong ports)

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


# 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>


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

adapt unit tests to additional NULL checks


# 7b6d2870 11-Feb-2018 goldsimon <goldsimon@gmx.de>

test: add a unit test for TCP_CHECKSUM_ON_COPY with retransmissions

This triggers bug #50914 (TCP_CHECKSUM_ON_COPY when adding data to
retransmission) when data is added to an already transmitted segment
with an uneven length of tcp data.


# 50a5d85f 14-Dec-2017 Joel Cunningham <joel.cunningham@me.com>

tcp: handle segmentation oversize during segment split (bug #52676)

This fixes a bug in tcp_split_unsent_seg where oversized segments were not
handled during the split, leading to pcb->unsent_oversized and
useg->oversize_left getting out of sync with the split segment

This would result in over-writing the pbuf if another call to tcp_write()
happened after the split, but before the remainder of the split was sent in
tcp_output

Now pcb->unsent_oversized is explicitly cleared (because the remainder at
the tail is never oversized) and useg->oversized_left is cleared after it is
trimmed

This also updates the test_tcp_persist_split unit test to explicitly check for
this case


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

tcp unit test: fix some endless loops for TCP_WND == 0xFFFF


# a8acca59 06-Nov-2017 Axel Lin <axel.lin@ingics.com>

Trivial typo fix

s/chekc/check/g

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


# de531131 07-Oct-2017 Joel Cunningham <joel.cunningham@me.com>

Fix compiler warnings seen with clang 8.1.0 on MacOS

This fixes the following warnings:

test_tcp.c:266:5: error: code will never be executed [-Werror,-Wunreachable-code]
    pbuf_free(p);
    ^~~~~~~~~
- The check API 'fail' aborts the test, thus pbuf_free(p) will never be executed

pbuf.c:783:111: error: format specifies type 'unsigned short' but the argument has type 'u8_t' (aka 'unsigned char') [-Werror,-Wformat]
      LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: %p has ref %"U16_F", ending here.\n", (void *)p, ref));
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
- LWIP_PBUF_REF_T is u8_t by default and doesn't match U16_F, so cast to u16_t. The cast and formatter will need to be changed
if ref is larger than 16 bits

ethernet.c:105:16: error: format specifies type 'unsigned char' but the argument has type 'unsigned int' [-Werror,-Wformat]
               (unsigned)ethhdr->dest.addr[0], (unsigned)ethhdr->dest.addr[1], (unsigned)ethhdr->dest.addr[2],
~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- addr[] is type u8_t, formatter is X8_F which should be 8 bits. 'unsigned' is an int, so cast to unsighed char instead


# 630c4a3d 11-Sep-2017 goldsimon <goldsimon@gmx.de>

try to fix building unit test on gcc/clang


# cf651e7e 05-Sep-2017 goldsimon <goldsimon@gmx.de>

add test case that shows what's wrong for bug #51937 (Leaking tcp_pcbs on passive close with unacked data)


# fca38fda 05-Sep-2017 goldsimon <goldsimon@gmx.de>

remove unnecessary lines from last added test case


# 8c040093 05-Sep-2017 goldsimon <goldsimon@gmx.de>

add unit test case for passive open & (invalid) bug #51941


# 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


# 22ee3395 21-Aug-2017 goldsimon <goldsimon@gmx.de>

TCP: added a unit test for trimming left side of rx segment


# 4cec2023 03-Aug-2017 goldsimon <goldsimon@gmx.de>

Ensure that unit tests leave the stack in a clean state


# 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


# 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


# 6fe66771 23-Mar-2017 Joel Cunningham <joel.cunningham@me.com>

test_tcp: de-duplicate test IP addresses, netmask, and ports

This creates a single version of test IP addresses, netmasks, and ports.
All tests were using the same values, but duplicated in each test

This also adds const to some functions so we can use a const version
of addresses


# 648b2b6f 23-Mar-2017 Joel Cunningham <joel.cunningham@me.com>

test_tcp: remove unnecessary memsets

test_tcp_init_netif() memsets both netif and txcounters, so no need to manually do it


# 34c9e302 23-Mar-2017 Joel Cunningham <joel.cunningham@me.com>

test_tcp: de-duplicate seqno checking defines

This commit moves common defines and senqo array so they can be
re-used in mulptiple places for sequence number checking rather
than duplicated

Currently they are used in two places, but I'm anticipating needing
them in future TCP unit tests


# a42d1678 17-Mar-2017 goldsimon <goldsimon@gmx.de>

tcp unit tests: don't break later tests relying on loopif


# 8bf402fd 09-Mar-2017 Joel Cunningham <joel.cunningham@me.com>

Fix unit test with assumed congestion avoidance

test_tcp_fast_rexmit_wraparound correctness relied on the congestion
window being in congestion avoidance so that only a single TCP_MSS
segment is sent upon ACKing the first segment.

It's not known whether the test was relying tcp_alloc() to set ssthresh
to 0 and thus start in congestion avoidance or if the test was working by
accident until changes in b90a54f989d0edafa36b29bb0c346d1b30e1bf8f

This fixes the test by enforcing the requirement of starting in
congestion avoidance

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


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

tcp unit tests: fixed that tcp_teardown() could lead to accessing a netif pointer that is not valid any more (netif added in test function stored on stack)


# 1884c7e8 31-Dec-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix TCP unit tests after changes from "Add hook for TCP Initial Sequence Number generation" commit
(pcb->lastack and friends are not initialized during allocation any more, but by connect() / bind() call)


# 7f319f5e 18-Dec-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix compile of test_tcp.c unit test after introduction of tcp_next_iss hook


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

Fix clang address sanitizer errors in unit tests (buffers too small)


# 288fc8ed 08-Jul-2016 goldsimon <goldsimon@gmx.de>

fixed unit tests after changing memp stats


# 8dc77ef5 22-Jun-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

doxygen updates - include IPv6 in documentation. Exclude include/netif/ppp/polarssl.
Convert TODO -> @todo


# b9a2ee8a 13-Jun-2016 Henrik Persson <henrik.persson@verisure.com>

[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>


# 37bb0b89 10-Oct-2015 Sylvain Rochet <gradator@gradator.net>

all: trivial include changes related to the new "lwip/priv/" include directory


# cf180b65 10-Apr-2015 goldsimon <goldsimon@gmx.de>

fixed unit tests after changing ip_addr_t


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

Unit test patch by Erik Ekman: use macro to store correct testcase name


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

TCP unit tests: fix that ip.rterr stats are increased (some unit tests had no netif set)


# 86766f4e 22-Feb-2012 goldsimon <goldsimon@gmx.de>

Minor: cosmetic source code layout changes


# 0333e816 13-Oct-2011 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #34517 (persist timer is started although no zero window is received) by starting the persist timer when a zero window is received, not when we have more data queued for sending than fits into the window


# ab51f3be 11-Oct-2011 Simon Goldschmidt <goldsimon@gmx.de>

added unit test cases for seqno wraparound on fast-rexmit and rto-rexmit (unsent/unacked lists must be correctly sorted)


# ce98df59 10-Oct-2011 Simon Goldschmidt <goldsimon@gmx.de>

Added unit test case for persist timer / zero window probes


# bcfe3dac 26-Sep-2011 Simon Goldschmidt <goldsimon@gmx.de>

fixed unit tests (one TCP test failed, removed comma at the end of array initializers)


# 33a587d9 14-May-2011 goldsimon <goldsimon>

Added a test for fast-rexmit


# 791505ab 30-Mar-2011 goldsimon <goldsimon>

Fixed tcp unit tests after introducing ip_addr_p_t and letting tcp_input check for broadcasts by using current_iphdr_dest.


# 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


# 3f8e6c42 09-Feb-2010 goldsimon <goldsimon>

Fixed unit tests after changing struct ip_addr to ip_addr_t


# 902ad897 27-Nov-2009 goldsimon <goldsimon>

Initial check-in of some unit tests