From f5ef842752ebc7d547c69bacaf084ec72e10518b Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Wed, 19 Oct 2011 14:10:01 +0200 Subject: [PATCH] Implement a counter for TCP packets with invalid checksums: tcp.invalid_checksum. Bug #311. --- src/stream-tcp.c | 6 +++++- src/stream-tcp.h | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/stream-tcp.c b/src/stream-tcp.c index a86b38bc2e..45c36436df 100644 --- a/src/stream-tcp.c +++ b/src/stream-tcp.c @@ -3704,7 +3704,7 @@ error: * \param p Packet of which checksum has to be validated * \retval 1 if the checksum is valid, otherwise 0 */ -int StreamTcpValidateChecksum(Packet *p) +static inline int StreamTcpValidateChecksum(Packet *p) { int ret = 1; @@ -3744,6 +3744,7 @@ TmEcode StreamTcp (ThreadVars *tv, Packet *p, void *data, PacketQueue *pq, Packe if ((stream_config.flags & STREAMTCP_INIT_FLAG_CHECKSUM_VALIDATION) && (StreamTcpValidateChecksum(p) == 0)) { + SCPerfCounterIncr(stt->counter_tcp_invalid_checksum, tv->sc_perf_pca); return TM_ECODE_OK; } @@ -3779,6 +3780,9 @@ TmEcode StreamTcpThreadInit(ThreadVars *tv, void *initdata, void **data) stt->counter_tcp_pseudo = SCPerfTVRegisterCounter("tcp.pseudo", tv, SC_PERF_TYPE_UINT64, "NULL"); + stt->counter_tcp_invalid_checksum = SCPerfTVRegisterCounter("tcp.invalid_checksum", tv, + SC_PERF_TYPE_UINT64, + "NULL"); /* init reassembly ctx */ stt->ra_ctx = StreamTcpReassembleInitThreadCtx(); diff --git a/src/stream-tcp.h b/src/stream-tcp.h index 78e5cf4568..b9e34a48e7 100644 --- a/src/stream-tcp.h +++ b/src/stream-tcp.h @@ -78,6 +78,8 @@ typedef struct StreamTcpThread_ { uint16_t counter_tcp_ssn_memcap; /** pseudo packets processed */ uint16_t counter_tcp_pseudo; + /** packets rejected because their csum is invalid */ + uint16_t counter_tcp_invalid_checksum; /** tcp reassembly thread data */ TcpReassemblyThreadCtx *ra_ctx;