return NULL;
}
-static void ModbusSetTxLogged(void *alstate, void *vtx, LoggerId logged)
+static AppLayerTxData *ModbusGetTxData(void *vtx)
{
ModbusTransaction *tx = (ModbusTransaction *)vtx;
- tx->logged = logged;
-}
-
-static LoggerId ModbusGetTxLogged(void *alstate, void *vtx)
-{
- ModbusTransaction *tx = (ModbusTransaction *)vtx;
- return tx->logged;
-}
-
-static void ModbusSetTxDetectFlags(void *vtx, uint8_t dir, uint64_t flags)
-{
- ModbusTransaction *tx = (ModbusTransaction *)vtx;
- if (dir & STREAM_TOSERVER) {
- tx->detect_flags_ts = flags;
- } else {
- tx->detect_flags_tc = flags;
- }
-}
-
-static uint64_t ModbusGetTxDetectFlags(void *vtx, uint8_t dir)
-{
- ModbusTransaction *tx = (ModbusTransaction *)vtx;
- if (dir & STREAM_TOSERVER) {
- return tx->detect_flags_ts;
- } else {
- return tx->detect_flags_tc;
- }
+ return &tx->tx_data;
}
static uint64_t ModbusGetTxCnt(void *alstate)
ModbusGetTxDetectState, ModbusSetTxDetectState);
AppLayerParserRegisterGetTx(IPPROTO_TCP, ALPROTO_MODBUS, ModbusGetTx);
+ AppLayerParserRegisterTxDataFunc(IPPROTO_TCP, ALPROTO_MODBUS, ModbusGetTxData);
AppLayerParserRegisterGetTxCnt(IPPROTO_TCP, ALPROTO_MODBUS, ModbusGetTxCnt);
- AppLayerParserRegisterLoggerFuncs(IPPROTO_TCP, ALPROTO_MODBUS, ModbusGetTxLogged,
- ModbusSetTxLogged);
AppLayerParserRegisterTxFreeFunc(IPPROTO_TCP, ALPROTO_MODBUS, ModbusStateTxFree);
AppLayerParserRegisterGetStateProgressFunc(IPPROTO_TCP, ALPROTO_MODBUS, ModbusGetAlstateProgress);
AppLayerParserRegisterGetEventInfoById(IPPROTO_TCP, ALPROTO_MODBUS, ModbusStateGetEventInfoById);
AppLayerParserRegisterParserAcceptableDataDirection(IPPROTO_TCP, ALPROTO_MODBUS, STREAM_TOSERVER);
- AppLayerParserRegisterDetectFlagsFuncs(IPPROTO_TCP, ALPROTO_MODBUS,
- ModbusGetTxDetectFlags, ModbusSetTxDetectFlags);
AppLayerParserSetStreamDepth(IPPROTO_TCP, ALPROTO_MODBUS, stream_depth);
} else {
#include "decode.h"
#include "detect-engine-state.h"
#include "queue.h"
+#include "rust.h"
/* Modbus Application Data Unit (ADU)
* and Protocol Data Unit (PDU) messages */
struct ModbusState_ *modbus;
uint64_t tx_num; /**< internal: id */
- uint32_t logged; /**< flags indicating which loggers have logged */
uint16_t transactionId;
uint16_t length;
uint8_t unit_id;
AppLayerDecoderEvents *decoder_events; /**< per tx events */
DetectEngineState *de_state;
- uint64_t detect_flags_ts;
- uint64_t detect_flags_tc;
+ AppLayerTxData tx_data;
TAILQ_ENTRY(ModbusTransaction_) next;
} ModbusTransaction;