decode/tcp: reduce space needed for MSS tracking

Part of effort to make Packet more compact.

Ticket: #6938.
pull/10971/head
Victor Julien 11 months ago committed by Victor Julien
parent 9632c2f570
commit 6a23fafa5f

@ -100,10 +100,11 @@ static void DecodeTCPOptions(Packet *p, const uint8_t *pkt, uint16_t pktlen)
if (olen != TCP_OPT_MSS_LEN) {
ENGINE_SET_EVENT(p,TCP_OPT_INVALID_LEN);
} else {
if (p->tcpvars.mss.type != 0) {
if (p->tcpvars.mss_set) {
ENGINE_SET_EVENT(p,TCP_OPT_DUPLICATE);
} else {
SET_OPTS(p->tcpvars.mss, tcp_opts[tcp_opt_cnt]);
p->tcpvars.mss_set = true;
p->tcpvars.mss = SCNtohs(*(uint16_t *)(tcp_opts[tcp_opt_cnt].data));
}
}
break;

@ -93,7 +93,7 @@
#define TCP_HAS_WSCALE(p) ((p)->tcpvars.ws.type == TCP_OPT_WS)
#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.type == TCP_OPT_MSS)
#define TCP_HAS_MSS(p) ((p)->tcpvars.mss_set)
#define TCP_HAS_TFO(p) ((p)->tcpvars.tfo.type == TCP_OPT_TFO)
/** macro for getting the wscale from the packet. */
@ -104,7 +104,7 @@
#define TCP_GET_SACKOK(p) (p)->tcpvars.sack_ok
#define TCP_GET_SACK_PTR(p) TCP_HAS_SACK((p)) ? (p)->tcpvars.sack.data : NULL
#define TCP_GET_SACK_CNT(p) (TCP_HAS_SACK((p)) ? (((p)->tcpvars.sack.len - 2) / 8) : 0)
#define TCP_GET_MSS(p) SCNtohs(*(uint16_t *)((p)->tcpvars.mss.data))
#define TCP_GET_MSS(p) (p)->tcpvars.mss
#define TCP_GET_OFFSET(p) TCP_GET_RAW_OFFSET((p)->tcph)
#define TCP_GET_X2(p) TCP_GET_RAW_X2((p)->tcph)
@ -158,12 +158,13 @@ typedef struct TCPVars_
bool ao_option_present;
bool ts_set;
bool sack_ok;
bool mss_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 mss;
TCPOpt tfo; /* tcp fast open */
} TCPVars;

Loading…
Cancel
Save