From: Mats Klepsland Date: Wed, 4 May 2016 11:25:03 +0000 (+0200) Subject: modbus: register logger functions X-Git-Tag: suricata-3.1RC1~162 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=593f81527ac902f320136a6080a85a21648d55a6;p=thirdparty%2Fsuricata.git modbus: register logger functions --- diff --git a/src/app-layer-modbus.c b/src/app-layer-modbus.c index 77a735da87..c3502f2e59 100644 --- a/src/app-layer-modbus.c +++ b/src/app-layer-modbus.c @@ -249,6 +249,21 @@ void *ModbusGetTx(void *alstate, uint64_t tx_id) { return NULL; } +void ModbusSetTxLogged(void *alstate, void *vtx, uint32_t logger) +{ + ModbusTransaction *tx = (ModbusTransaction *)vtx; + tx->logged |= logger; +} + +int ModbusGetTxLogged(void *alstate, void *vtx, uint32_t logger) +{ + ModbusTransaction *tx = (ModbusTransaction *)vtx; + if (tx->logged & logger) + return 1; + + return 0; +} + uint64_t ModbusGetTxCnt(void *alstate) { return ((uint64_t) ((ModbusState *) alstate)->transaction_max); } @@ -1480,6 +1495,8 @@ void RegisterModbusParsers(void) AppLayerParserRegisterGetTx(IPPROTO_TCP, ALPROTO_MODBUS, ModbusGetTx); 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); diff --git a/src/app-layer-modbus.h b/src/app-layer-modbus.h index 25ac519afd..a8545dfbdc 100644 --- a/src/app-layer-modbus.h +++ b/src/app-layer-modbus.h @@ -83,6 +83,7 @@ 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 function;