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

index c83e858849006b1433149f227e3bd559d5cae76a..0a9a0cbadc43b6ebd7e4aa9f2ba6a5b275b76ae9 100644 (file)
@@ -1551,16 +1551,10 @@ static int DNP3SetTxDetectState(void *vtx, DetectEngineState *s)
     return 0;
 }
 
-static void DNP3SetTxLogged(void *alstate, void *vtx, LoggerId logged)
+static AppLayerTxData *DNP3GetTxData(void *vtx)
 {
     DNP3Transaction *tx = (DNP3Transaction *)vtx;
-    tx->logged = logged;
-}
-
-static LoggerId DNP3GetTxLogged(void *alstate, void *vtx)
-{
-    DNP3Transaction *tx = (DNP3Transaction *)vtx;
-    return tx->logged;
+    return &tx->tx_data;
 }
 
 /**
@@ -1581,27 +1575,6 @@ int DNP3PrefixIsSize(uint8_t prefix_code)
     }
 }
 
-static uint64_t DNP3GetTxDetectFlags(void *vtx, uint8_t dir)
-{
-    DNP3Transaction *tx = (DNP3Transaction *)vtx;
-    if (dir & STREAM_TOSERVER) {
-        return tx->detect_flags_ts;
-    } else {
-        return tx->detect_flags_tc;
-    }
-}
-
-static void DNP3SetTxDetectFlags(void *vtx, uint8_t dir, uint64_t detect_flags)
-{
-    DNP3Transaction *tx = (DNP3Transaction *)vtx;
-    if (dir & STREAM_TOSERVER) {
-        tx->detect_flags_ts = detect_flags;
-    } else {
-        tx->detect_flags_tc = detect_flags;
-    }
-    return;
-}
-
 /**
  * \brief Register the DNP3 application protocol parser.
  */
@@ -1650,8 +1623,6 @@ void RegisterDNP3Parsers(void)
             DNP3GetEvents);
         AppLayerParserRegisterDetectStateFuncs(IPPROTO_TCP, ALPROTO_DNP3,
             DNP3GetTxDetectState, DNP3SetTxDetectState);
-        AppLayerParserRegisterDetectFlagsFuncs(IPPROTO_TCP, ALPROTO_DNP3,
-            DNP3GetTxDetectFlags, DNP3SetTxDetectFlags);
 
         AppLayerParserRegisterGetTx(IPPROTO_TCP, ALPROTO_DNP3, DNP3GetTx);
         AppLayerParserRegisterGetTxCnt(IPPROTO_TCP, ALPROTO_DNP3, DNP3GetTxCnt);
@@ -1668,8 +1639,8 @@ void RegisterDNP3Parsers(void)
         AppLayerParserRegisterGetEventInfoById(IPPROTO_TCP, ALPROTO_DNP3,
             DNP3StateGetEventInfoById);
 
-        AppLayerParserRegisterLoggerFuncs(IPPROTO_TCP, ALPROTO_DNP3,
-            DNP3GetTxLogged, DNP3SetTxLogged);
+        AppLayerParserRegisterTxDataFunc(IPPROTO_TCP, ALPROTO_DNP3,
+            DNP3GetTxData);
     }
     else {
         SCLogConfig("Parser disabled for protocol %s. "
index 7519b92ff898edf113d17a2247ef3962671d56a6..818ef5ecece34a7d1e21861c375a7cc1b1b56d42 100644 (file)
@@ -21,6 +21,7 @@
 #include "detect-engine-state.h"
 #include "util-hashlist.h"
 #include "util-byte.h"
+#include "rust.h"
 
 /**
  * The maximum size of a DNP3 link PDU.
@@ -207,12 +208,9 @@ typedef TAILQ_HEAD(DNP3ObjectList_, DNP3Object_) DNP3ObjectList;
  * \brief DNP3 transaction.
  */
 typedef struct DNP3Transaction_ {
-    /** detection engine flags */
-    uint64_t detect_flags_ts;
-    uint64_t detect_flags_tc;
+    AppLayerTxData         tx_data;
 
     uint64_t tx_num; /**< Internal transaction ID. */
-    uint32_t logged; /**< Flags indicating which loggers have logged this tx. */
 
     struct DNP3State_ *dnp3;