From bc11a1c23e02a534a02784d62fb86d6ba598043d Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Sun, 7 Jun 2020 16:13:46 +0200 Subject: [PATCH] smtp: support AppLayerTxData --- src/app-layer-smtp.c | 36 +++--------------------------------- src/app-layer-smtp.h | 6 ++---- 2 files changed, 5 insertions(+), 37 deletions(-) diff --git a/src/app-layer-smtp.c b/src/app-layer-smtp.c index 256c3cd6f6..49685cbddf 100644 --- a/src/app-layer-smtp.c +++ b/src/app-layer-smtp.c @@ -1713,18 +1713,6 @@ static void *SMTPStateGetTx(void *state, uint64_t id) } -static void SMTPStateSetTxLogged(void *state, void *vtx, LoggerId logged) -{ - SMTPTransaction *tx = vtx; - tx->logged = logged; -} - -static LoggerId SMTPStateGetTxLogged(void *state, void *vtx) -{ - SMTPTransaction *tx = vtx; - return tx->logged; -} - static int SMTPStateGetAlstateProgressCompletionStatus(uint8_t direction) { return 1; } @@ -1780,24 +1768,10 @@ static int SMTPSetTxDetectState(void *vtx, DetectEngineState *s) return 0; } -static uint64_t SMTPGetTxDetectFlags(void *vtx, uint8_t dir) +static AppLayerTxData *SMTPGetTxData(void *vtx) { SMTPTransaction *tx = (SMTPTransaction *)vtx; - if (dir & STREAM_TOSERVER) { - return tx->detect_flags_ts; - } else { - return tx->detect_flags_tc; - } -} - -static void SMTPSetTxDetectFlags(void *vtx, uint8_t dir, uint64_t flags) -{ - SMTPTransaction *tx = (SMTPTransaction *)vtx; - if (dir & STREAM_TOSERVER) { - tx->detect_flags_ts = flags; - } else { - tx->detect_flags_tc = flags; - } + return &tx->tx_data; } /** @@ -1830,9 +1804,6 @@ void RegisterSMTPParsers(void) AppLayerParserRegisterGetEventsFunc(IPPROTO_TCP, ALPROTO_SMTP, SMTPGetEvents); AppLayerParserRegisterDetectStateFuncs(IPPROTO_TCP, ALPROTO_SMTP, SMTPGetTxDetectState, SMTPSetTxDetectState); - AppLayerParserRegisterDetectFlagsFuncs(IPPROTO_TCP, ALPROTO_SMTP, - SMTPGetTxDetectFlags, SMTPSetTxDetectFlags); - AppLayerParserRegisterLocalStorageFunc(IPPROTO_TCP, ALPROTO_SMTP, SMTPLocalStorageAlloc, SMTPLocalStorageFree); @@ -1842,8 +1813,7 @@ void RegisterSMTPParsers(void) AppLayerParserRegisterGetStateProgressFunc(IPPROTO_TCP, ALPROTO_SMTP, SMTPStateGetAlstateProgress); AppLayerParserRegisterGetTxCnt(IPPROTO_TCP, ALPROTO_SMTP, SMTPStateGetTxCnt); AppLayerParserRegisterGetTx(IPPROTO_TCP, ALPROTO_SMTP, SMTPStateGetTx); - AppLayerParserRegisterLoggerFuncs(IPPROTO_TCP, ALPROTO_SMTP, SMTPStateGetTxLogged, - SMTPStateSetTxLogged); + AppLayerParserRegisterTxDataFunc(IPPROTO_TCP, ALPROTO_SMTP, SMTPGetTxData); AppLayerParserRegisterGetStateProgressCompletionStatus(ALPROTO_SMTP, SMTPStateGetAlstateProgressCompletionStatus); AppLayerParserRegisterTruncateFunc(IPPROTO_TCP, ALPROTO_SMTP, SMTPStateTruncate); diff --git a/src/app-layer-smtp.h b/src/app-layer-smtp.h index 66b28b5e83..473652a573 100644 --- a/src/app-layer-smtp.h +++ b/src/app-layer-smtp.h @@ -28,6 +28,7 @@ #include "util-decode-mime.h" #include "queue.h" #include "util-streaming-buffer.h" +#include "rust.h" enum { SMTP_DECODER_EVENT_INVALID_REPLY, @@ -68,12 +69,9 @@ typedef struct SMTPTransaction_ { /** id of this tx, starting at 0 */ uint64_t tx_id; - uint64_t detect_flags_ts; - uint64_t detect_flags_tc; + AppLayerTxData tx_data; int done; - /** indicates loggers done logging */ - uint32_t logged; /** the first message contained in the session */ MimeDecEntity *msg_head; /** the last message contained in the session */