Syntax::
modbus: access <read | write>
- modbus: access <read | write> <discretes | coils | input | holding>
- modbus: access <read | write> <discretes | coils | input | holding>, address <value>
- modbus: access <read | write> <discretes | coils | input | holding>, address <value>, value <value>
+ modbus: access read <discretes | coils | input | holding>
+ modbus: access read <discretes | coils | input | holding>, address <value>
+ modbus: access write < coils | holding>
+ modbus: access write < coils | holding>, address <value>
+ modbus: access write < coils | holding>, address <value>, value <value>
With _<value>_ setting matches on the address or value as it is being
accessed or written as follows::
}
/* We have a correct address option */
+ if (modbus->type == MODBUS_TYP_READ)
+ /* Value access is only possible in write access. */
+ goto error;
+
modbus->data = (DetectModbusValue *) SCCalloc(1, sizeof(DetectModbusValue));
if (unlikely(modbus->data == NULL))
goto error;
DetectAppLayerInspectEngineRegister("modbus",
ALPROTO_MODBUS, SIG_FLAG_TOSERVER, 0,
DetectEngineInspectModbus);
- DetectAppLayerInspectEngineRegister("modbus",
- ALPROTO_MODBUS, SIG_FLAG_TOCLIENT, 0,
- DetectEngineInspectModbus);
g_modbus_buffer_id = DetectBufferTypeGetByName("modbus");
}