xref: /linux/tools/testing/selftests/net/packetdrill/tcp_rfc5961_reject-old-ack.pkt (revision d841cd7513f3d48018175ecb1fb972cfd3c3c10b)
1*d841cd75SInbal Schussheim// SPDX-License-Identifier: GPL-2.0
2*d841cd75SInbal Schussheim
3*d841cd75SInbal Schussheim`./defaults.sh
4*d841cd75SInbal Schussheimsysctl -q net.ipv4.tcp_invalid_ratelimit=0
5*d841cd75SInbal Schussheim`
6*d841cd75SInbal Schussheim
7*d841cd75SInbal Schussheim// Test rejection of data segments carrying excessively old ACKs
8*d841cd75SInbal Schussheim
9*d841cd75SInbal Schussheim0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
10*d841cd75SInbal Schussheim+0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
11*d841cd75SInbal Schussheim+0 bind(3, ..., ...) = 0
12*d841cd75SInbal Schussheim+0 listen(3, 1024) = 0
13*d841cd75SInbal Schussheim
14*d841cd75SInbal Schussheim// ---------------- Handshake ------------------- //
15*d841cd75SInbal Schussheim+0 < S 0:0(0) win 65535
16*d841cd75SInbal Schussheim+0 > S. 0:0(0) ack 1 <...>
17*d841cd75SInbal Schussheim+0 < . 1:1(0) ack 1 win 65535
18*d841cd75SInbal Schussheim+0 accept(3, ..., ...) = 4
19*d841cd75SInbal Schussheim
20*d841cd75SInbal Schussheim// Populate receive memory so the following segment can use
21*d841cd75SInbal Schussheim// header prediction.
22*d841cd75SInbal Schussheim+0 < P. 1:501(500) ack 1 win 65535
23*d841cd75SInbal Schussheim+0 > . 1:1(0) ack 501
24*d841cd75SInbal Schussheim
25*d841cd75SInbal Schussheim// Send an in-sequence data segment carrying an excessively old ACK.
26*d841cd75SInbal Schussheim+0 < P. 501:1501(1000) ack 2794967397 win 65535
27*d841cd75SInbal Schussheim
28*d841cd75SInbal Schussheim// Challenge ACK; RCV.NXT must remain 501.
29*d841cd75SInbal Schussheim+0 > . 1:1(0) ack 501
30