From 7d663ed5cf11cbb2a278afdcc0f29811a23d9ed8 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Sun, 7 Jun 2020 16:20:35 +0200 Subject: [PATCH] enip: support AppLayerTxData --- src/app-layer-enip-common.h | 3 +-- src/app-layer-enip.c | 24 ++++-------------------- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/src/app-layer-enip-common.h b/src/app-layer-enip-common.h index 8d38b9a323..8522f65e1d 100644 --- a/src/app-layer-enip-common.h +++ b/src/app-layer-enip-common.h @@ -208,8 +208,7 @@ typedef struct ENIPTransaction_ TAILQ_ENTRY(ENIPTransaction_) next; DetectEngineState *de_state; - uint64_t detect_flags_ts; - uint64_t detect_flags_tc; + AppLayerTxData tx_data; } ENIPTransaction; /** \brief Per flow ENIP state container */ diff --git a/src/app-layer-enip.c b/src/app-layer-enip.c index af4a1fd000..f6bf450309 100644 --- a/src/app-layer-enip.c +++ b/src/app-layer-enip.c @@ -88,24 +88,10 @@ static int ENIPSetTxDetectState(void *vtx, DetectEngineState *s) return 0; } -static uint64_t ENIPGetTxDetectFlags(void *vtx, uint8_t dir) +static AppLayerTxData *ENIPGetTxData(void *vtx) { ENIPTransaction *tx = (ENIPTransaction *)vtx; - if (dir & STREAM_TOSERVER) { - return tx->detect_flags_ts; - } else { - return tx->detect_flags_tc; - } -} - -static void ENIPSetTxDetectFlags(void *vtx, uint8_t dir, uint64_t flags) -{ - ENIPTransaction *tx = (ENIPTransaction *)vtx; - if (dir &STREAM_TOSERVER) { - tx->detect_flags_ts = flags; - } else { - tx->detect_flags_tc = flags; - } + return &tx->tx_data; } static void *ENIPGetTx(void *alstate, uint64_t tx_id) @@ -478,6 +464,7 @@ void RegisterENIPUDPParsers(void) ENIPGetTxDetectState, ENIPSetTxDetectState); AppLayerParserRegisterGetTx(IPPROTO_UDP, ALPROTO_ENIP, ENIPGetTx); + AppLayerParserRegisterTxDataFunc(IPPROTO_UDP, ALPROTO_ENIP, ENIPGetTxData); AppLayerParserRegisterGetTxCnt(IPPROTO_UDP, ALPROTO_ENIP, ENIPGetTxCnt); AppLayerParserRegisterTxFreeFunc(IPPROTO_UDP, ALPROTO_ENIP, ENIPStateTransactionFree); @@ -489,8 +476,6 @@ void RegisterENIPUDPParsers(void) AppLayerParserRegisterParserAcceptableDataDirection(IPPROTO_UDP, ALPROTO_ENIP, STREAM_TOSERVER | STREAM_TOCLIENT); - AppLayerParserRegisterDetectFlagsFuncs(IPPROTO_UDP, ALPROTO_ENIP, - ENIPGetTxDetectFlags, ENIPSetTxDetectFlags); } else { @@ -558,6 +543,7 @@ void RegisterENIPTCPParsers(void) ENIPGetTxDetectState, ENIPSetTxDetectState); AppLayerParserRegisterGetTx(IPPROTO_TCP, ALPROTO_ENIP, ENIPGetTx); + AppLayerParserRegisterTxDataFunc(IPPROTO_TCP, ALPROTO_ENIP, ENIPGetTxData); AppLayerParserRegisterGetTxCnt(IPPROTO_TCP, ALPROTO_ENIP, ENIPGetTxCnt); AppLayerParserRegisterTxFreeFunc(IPPROTO_TCP, ALPROTO_ENIP, ENIPStateTransactionFree); @@ -572,8 +558,6 @@ void RegisterENIPTCPParsers(void) /* This parser accepts gaps. */ AppLayerParserRegisterOptionFlags(IPPROTO_TCP, ALPROTO_ENIP, APP_LAYER_PARSER_OPT_ACCEPT_GAPS); - AppLayerParserRegisterDetectFlagsFuncs(IPPROTO_TCP, ALPROTO_ENIP, - ENIPGetTxDetectFlags, ENIPSetTxDetectFlags); } else {