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