From: Victor Julien Date: Wed, 27 Mar 2024 08:24:39 +0000 (+0100) Subject: decode/tcp: reduce space needed for MSS tracking X-Git-Tag: suricata-8.0.0-beta1~1399 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a23fafa5f04ad65ba0a23a174aa3727dccad326;p=thirdparty%2Fsuricata.git decode/tcp: reduce space needed for MSS tracking Part of effort to make Packet more compact. Ticket: #6938. --- diff --git a/src/decode-tcp.c b/src/decode-tcp.c index 14acc3f4ba..9d2193836b 100644 --- a/src/decode-tcp.c +++ b/src/decode-tcp.c @@ -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; diff --git a/src/decode-tcp.h b/src/decode-tcp.h index 46bfee771f..cb3fb73734 100644 --- a/src/decode-tcp.h +++ b/src/decode-tcp.h @@ -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;