]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
smtp: support AppLayerTxData
authorVictor Julien <victor@inliniac.net>
Sun, 7 Jun 2020 14:13:46 +0000 (16:13 +0200)
committerVictor Julien <victor@inliniac.net>
Sat, 11 Jul 2020 06:37:40 +0000 (08:37 +0200)
src/app-layer-smtp.c
src/app-layer-smtp.h

index 256c3cd6f6fb2de891078b52c1c5ce8a5259f6af..49685cbddfd8d3b25857b8a3ffa572417d7b7329 100644 (file)
@@ -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);
index 66b28b5e834f2f31238502d5b5aa63b0ee0f8691..473652a57353afd6fc9a7f8a0b9eef1d3e4d7bca 100644 (file)
@@ -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 */