Part of effort to make Packet more compact.
Ticket: #6938.
!(((olen - 2) & 0x1) == 0))) {
ENGINE_SET_EVENT(p,TCP_OPT_INVALID_LEN);
} else {
- if (p->tcpvars.tfo.type != 0) {
+ if (p->tcpvars.tfo_set) {
ENGINE_SET_EVENT(p,TCP_OPT_DUPLICATE);
} else {
- SET_OPTS(p->tcpvars.tfo, tcp_opts[tcp_opt_cnt]);
+ p->tcpvars.tfo_set = true;
}
}
break;
if (olen == 4 || olen == 12) {
uint16_t magic = SCNtohs(*(uint16_t *)tcp_opts[tcp_opt_cnt].data);
if (magic == 0xf989) {
- if (p->tcpvars.tfo.type != 0) {
+ if (p->tcpvars.tfo_set) {
ENGINE_SET_EVENT(p,TCP_OPT_DUPLICATE);
} else {
- SET_OPTS(p->tcpvars.tfo, tcp_opts[tcp_opt_cnt]);
- p->tcpvars.tfo.type = TCP_OPT_TFO; // treat as regular TFO
+ p->tcpvars.tfo_set = true;
}
}
} else {
#define TCP_HAS_SACK(p) ((p)->tcpvars.sack.type == TCP_OPT_SACK)
#define TCP_HAS_TS(p) ((p)->tcpvars.ts_set)
#define TCP_HAS_MSS(p) ((p)->tcpvars.mss_set)
-#define TCP_HAS_TFO(p) ((p)->tcpvars.tfo.type == TCP_OPT_TFO)
+#define TCP_HAS_TFO(p) ((p)->tcpvars.tfo_set)
/** macro for getting the wscale from the packet. */
#define TCP_GET_WSCALE(p) (TCP_HAS_WSCALE((p)) ? \
bool ts_set;
bool sack_ok;
bool mss_set;
+ bool tfo_set;
uint16_t mss; /**< MSS value in host byte order */
uint32_t ts_val; /* host-order */
uint32_t ts_ecr; /* host-order */
uint16_t stream_pkt_flags;
TCPOpt sack;
TCPOpt ws;
- TCPOpt tfo; /* tcp fast open */
} TCPVars;
#define CLEAR_TCP_PACKET(p) \
ssn->flags |= STREAMTCP_FLAG_TCP_FAST_OPEN;
if (p->payload_len) {
StreamTcpUpdateNextSeq(ssn, &ssn->client, (ssn->client.next_seq + p->payload_len));
- SCLogDebug("ssn: %p (TFO) [len: %d] isn %u base_seq %u next_seq %u payload len %u",
- ssn, p->tcpvars.tfo.len, ssn->client.isn, ssn->client.base_seq, ssn->client.next_seq, p->payload_len);
+ SCLogDebug("ssn: %p (TFO) isn %u base_seq %u next_seq %u payload len %u", ssn,
+ ssn->client.isn, ssn->client.base_seq, ssn->client.next_seq,
+ p->payload_len);
StreamTcpReassembleHandleSegment(tv, stt->ra_ctx, ssn, &ssn->client, p);
}
}