StreamTcpHandleTimestamp(ssn, p);
}
+ ssn->client.next_seq = TCP_GET_SEQ(p) + p->payload_len;
StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
- ssn->client.next_seq = TCP_GET_SEQ(p) + p->payload_len;
SCLogDebug("ssn %p: ACK for missing data: ssn->client.next_seq %u", ssn, ssn->client.next_seq);
ssn->server.window = TCP_GET_WINDOW(p) << ssn->server.wscale;
-
ssn->server.next_win = ssn->server.last_ack + ssn->server.window;
if (ssn->flags & STREAMTCP_FLAG_MIDSTREAM) {
ssn->client.next_seq);
ssn->server.window = TCP_GET_WINDOW(p) << ssn->server.wscale;
- if (p->tcph->th_flags & TH_ACK)
- StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_LT(ssn->server.next_seq, TCP_GET_ACK(p)))
ssn->server.next_seq = TCP_GET_ACK(p);
+ if (p->tcph->th_flags & TH_ACK)
+ StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn, &ssn->client, p, pq);
SCLogDebug("ssn %p: =+ next SEQ %" PRIu32 ", last ACK %" PRIu32 "",
ssn->server.next_seq);
ssn->client.window = TCP_GET_WINDOW(p) << ssn->client.wscale;
- if (p->tcph->th_flags & TH_ACK)
- StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_LT(ssn->client.next_seq, TCP_GET_ACK(p)))
ssn->client.next_seq = TCP_GET_ACK(p);
+ if (p->tcph->th_flags & TH_ACK)
+ StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn, &ssn->server, p, pq);
SCLogDebug("ssn %p: =+ next SEQ %" PRIu32 ", last ACK %" PRIu32 "",
ssn->server.window = TCP_GET_WINDOW(p) << ssn->server.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
StreamTcpUpdateNextSeq(ssn, &ssn->client, (ssn->client.next_seq + p->payload_len));
}
+ StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->client, p, pq);
ssn->client.window = TCP_GET_WINDOW(p) << ssn->client.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
ssn->server.window = TCP_GET_WINDOW(p) << ssn->server.wscale;
}
- if (p->tcph->th_flags & TH_ACK)
- StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
StreamTcpUpdateNextSeq(ssn, &ssn->client, (ssn->client.next_seq + p->payload_len));
}
+ if (p->tcph->th_flags & TH_ACK)
+ StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->client, p, pq);
ssn->client.window = TCP_GET_WINDOW(p) << ssn->client.wscale;
}
- if (p->tcph->th_flags & TH_ACK)
- StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
StreamTcpUpdateNextSeq(ssn, &ssn->server, (ssn->server.next_seq + p->payload_len));
}
+ if (p->tcph->th_flags & TH_ACK)
+ StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->server, p, pq);
}
}
- StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
StreamTcpUpdateNextSeq(ssn, &ssn->client, (ssn->client.next_seq + p->payload_len));
}
+ StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
+
StreamTcpSackUpdatePacket(&ssn->server, p);
/* update next_win */
ssn->client.window = TCP_GET_WINDOW(p) << ssn->client.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
StreamTcpUpdateNextSeq(ssn, &ssn->server, (ssn->server.next_seq + p->payload_len));
}
+ StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
+
StreamTcpSackUpdatePacket(&ssn->client, p);
/* update next_win */
ssn->server.window = TCP_GET_WINDOW(p) << ssn->server.wscale;
}
- if (p->tcph->th_flags & TH_ACK)
- StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_LT(ssn->server.next_seq, TCP_GET_ACK(p)))
ssn->server.next_seq = TCP_GET_ACK(p);
+ if (p->tcph->th_flags & TH_ACK)
+ StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->client, p, pq);
ssn->client.window = TCP_GET_WINDOW(p) << ssn->client.wscale;
}
- if (p->tcph->th_flags & TH_ACK)
- StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_LT(ssn->client.next_seq, TCP_GET_ACK(p)))
ssn->client.next_seq = TCP_GET_ACK(p);
+ if (p->tcph->th_flags & TH_ACK)
+ StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->server, p, pq);
+
SCLogDebug("ssn %p: =+ next SEQ %" PRIu32 ", last ACK "
"%" PRIu32 "", ssn, ssn->server.next_seq,
ssn->client.last_ack);
ssn->server.window = TCP_GET_WINDOW(p) << ssn->server.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
StreamTcpUpdateNextSeq(ssn, &ssn->client, (ssn->client.next_seq + p->payload_len));
}
+ StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
+
StreamTcpSackUpdatePacket(&ssn->server, p);
/* update next_win */
ssn->client.window = TCP_GET_WINDOW(p) << ssn->client.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
StreamTcpUpdateNextSeq(ssn, &ssn->server, (ssn->server.next_seq + p->payload_len));
}
+ StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
+
StreamTcpSackUpdatePacket(&ssn->client, p);
/* update next_win */
ssn->client.window = TCP_GET_WINDOW(p) << ssn->client.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_LT(ssn->server.next_seq, TCP_GET_ACK(p)))
ssn->server.next_seq = TCP_GET_ACK(p);
+ StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->client, p, pq);
+
SCLogDebug("ssn %p: =+ next SEQ %" PRIu32 ", last ACK "
"%" PRIu32 "", ssn, ssn->client.next_seq,
ssn->server.last_ack);
ssn->client.window = TCP_GET_WINDOW(p) << ssn->client.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_LT(ssn->client.next_seq, TCP_GET_ACK(p)))
ssn->client.next_seq = TCP_GET_ACK(p);
+ StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->server, p, pq);
+
SCLogDebug("StreamTcpPacketStateClosing (%p): =+ next SEQ "
"%" PRIu32 ", last ACK %" PRIu32 "", ssn,
ssn->server.next_seq, ssn->client.last_ack);
if (!retransmission)
ssn->server.window = TCP_GET_WINDOW(p) << ssn->server.wscale;
- if (p->tcph->th_flags & TH_ACK)
- StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_LT(ssn->server.next_seq, TCP_GET_ACK(p)))
ssn->server.next_seq = TCP_GET_ACK(p);
+ if (p->tcph->th_flags & TH_ACK)
+ StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->client, p, pq);
+
SCLogDebug("ssn %p: =+ next SEQ %" PRIu32 ", last ACK "
"%" PRIu32 "", ssn, ssn->client.next_seq,
ssn->server.last_ack);
ssn->client.window = TCP_GET_WINDOW(p) << ssn->client.wscale;
}
- if (p->tcph->th_flags & TH_ACK)
- StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_LT(ssn->client.next_seq, TCP_GET_ACK(p)))
ssn->client.next_seq = TCP_GET_ACK(p);
+ if (p->tcph->th_flags & TH_ACK)
+ StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->server, p, pq);
SCLogDebug("ssn %p: =+ next SEQ %" PRIu32 ", last ACK "
ssn->server.window = TCP_GET_WINDOW(p) << ssn->server.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_EQ(TCP_GET_SEQ(p),ssn->client.next_seq))
StreamTcpUpdateNextSeq(ssn, &ssn->client, (ssn->client.next_seq + p->payload_len));
+ StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->client, p, pq);
SCLogDebug("ssn %p: =+ next SEQ %" PRIu32 ", last ACK "
ssn->client.window = TCP_GET_WINDOW(p) << ssn->client.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_EQ(TCP_GET_SEQ(p),ssn->server.next_seq))
StreamTcpUpdateNextSeq(ssn, &ssn->server, (ssn->server.next_seq + p->payload_len));
+ StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->server, p, pq);
SCLogDebug("ssn %p: =+ next SEQ %" PRIu32 ", last ACK "
ssn->server.window = TCP_GET_WINDOW(p) << ssn->server.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_LT(ssn->server.next_seq, TCP_GET_ACK(p)))
ssn->server.next_seq = TCP_GET_ACK(p);
+ StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->client, p, pq);
SCLogDebug("ssn %p: =+ next SEQ %" PRIu32 ", last ACK "
ssn->server.window = TCP_GET_WINDOW(p) << ssn->server.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_LT(ssn->server.next_seq, TCP_GET_ACK(p)))
ssn->server.next_seq = TCP_GET_ACK(p);
+ StreamTcpUpdateLastAck(ssn, &ssn->server, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->client, p, pq);
SCLogDebug("ssn %p: =+ next SEQ %" PRIu32 ", last ACK "
ssn->client.window = TCP_GET_WINDOW(p) << ssn->client.wscale;
}
- StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
-
if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) {
StreamTcpHandleTimestamp(ssn, p);
}
if (SEQ_LT(ssn->client.next_seq, TCP_GET_ACK(p)))
ssn->client.next_seq = TCP_GET_ACK(p);
+ StreamTcpUpdateLastAck(ssn, &ssn->client, TCP_GET_ACK(p));
+
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn,
&ssn->server, p, pq);
SCLogDebug("ssn %p: =+ next SEQ %" PRIu32 ", last ACK "