if ((ssn->flags & STREAMTCP_FLAG_ASYNC) == 0 &&
SEQ_GT(ssn->server.last_ack, ssn->server.next_seq)) {
STREAM_PKT_FLAG_SET(p, STREAM_PKT_FLAG_ACK_UNSEEN_DATA);
+ StatsIncr(tv, stt->counter_tcp_ack_unseen_data);
}
}
if ((ssn->flags & STREAMTCP_FLAG_ASYNC) == 0 &&
SEQ_GT(ssn->client.last_ack, ssn->client.next_seq)) {
STREAM_PKT_FLAG_SET(p, STREAM_PKT_FLAG_ACK_UNSEEN_DATA);
+ StatsIncr(tv, stt->counter_tcp_ack_unseen_data);
}
}
stt->counter_tcp_rst = StatsRegisterCounter("tcp.rst", tv);
stt->counter_tcp_midstream_pickups = StatsRegisterCounter("tcp.midstream_pickups", tv);
stt->counter_tcp_wrong_thread = StatsRegisterCounter("tcp.pkt_on_wrong_thread", tv);
+ stt->counter_tcp_ack_unseen_data = StatsRegisterCounter("tcp.ack_unseen_data", tv);
/* init reassembly ctx */
stt->ra_ctx = StreamTcpReassembleInitThreadCtx(tv);
uint16_t counter_tcp_midstream_pickups;
/** wrong thread */
uint16_t counter_tcp_wrong_thread;
+ /** ack for unseed data */
+ uint16_t counter_tcp_ack_unseen_data;
/** tcp reassembly thread data */
TcpReassemblyThreadCtx *ra_ctx;