modbus: support AppLayerTxData

pull/5169/head
Victor Julien 6 years ago
parent 7d663ed5cf
commit 8cd55124a3

@ -262,36 +262,10 @@ static void *ModbusGetTx(void *alstate, uint64_t tx_id)
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)
@ -1550,9 +1524,8 @@ void RegisterModbusParsers(void)
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);
@ -1563,8 +1536,6 @@ void RegisterModbusParsers(void)
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 {

@ -37,6 +37,7 @@
#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 */
@ -86,7 +87,6 @@ typedef struct ModbusTransaction_ {
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;
@ -114,8 +114,7 @@ typedef struct ModbusTransaction_ {
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;

Loading…
Cancel
Save