/// cbindgen:ignore
extern "C" {
- pub fn AppLayerParserStateSetFlag(state: *mut c_void, flag: u16);
pub fn AppLayerParserStateIssetFlag(state: *mut c_void, flag: u16) -> u16;
pub fn AppLayerParserSetStreamDepth(ipproto: u8, alproto: AppProto, stream_depth: u32);
pub fn AppLayerParserConfParserEnabled(ipproto: *const c_char, proto: *const c_char) -> c_int;
use nom7::Err;
use std::ffi::CString;
use std::sync::atomic::{AtomicBool, Ordering};
-use suricata_sys::sys::{AppProto, SCAppLayerProtoDetectConfProtoDetectionEnabled};
+use suricata_sys::sys::{
+ AppLayerParserState_, AppProto, SCAppLayerParserStateSetFlag,
+ SCAppLayerProtoDetectConfProtoDetectionEnabled,
+};
#[repr(C)]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
if flags != 0 {
unsafe {
- AppLayerParserStateSetFlag(pstate, flags);
+ // TODO a later bindgen should prove that this cast is useless
+ SCAppLayerParserStateSetFlag(
+ pstate as *mut AppLayerParserState_,
+ flags,
+ );
}
}
}
default_enabled: bool,
) -> ::std::os::raw::c_int;
}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct AppLayerParserState_ {
+ _unused: [u8; 0],
+}
+pub type AppLayerParserState = AppLayerParserState_;
+extern "C" {
+ pub fn SCAppLayerParserStateSetFlag(pstate: *mut AppLayerParserState, flag: u16);
+}
{
if ((flags & (STREAM_EOF|STREAM_TOSERVER)) == (STREAM_EOF|STREAM_TOSERVER)) {
SCLogDebug("setting APP_LAYER_PARSER_EOF_TS");
- AppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_EOF_TS);
+ SCAppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_EOF_TS);
} else if ((flags & (STREAM_EOF|STREAM_TOCLIENT)) == (STREAM_EOF|STREAM_TOCLIENT)) {
SCLogDebug("setting APP_LAYER_PARSER_EOF_TC");
- AppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_EOF_TC);
+ SCAppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_EOF_TC);
}
}
goto end;
SCLogDebug("setting APP_LAYER_PARSER_EOF_TC and APP_LAYER_PARSER_EOF_TS");
- AppLayerParserStateSetFlag(pstate, (APP_LAYER_PARSER_EOF_TS|APP_LAYER_PARSER_EOF_TC));
+ SCAppLayerParserStateSetFlag(pstate, (APP_LAYER_PARSER_EOF_TS | APP_LAYER_PARSER_EOF_TC));
end:
SCReturn;
ValidateParsers();
}
-
-/* coccinelle: AppLayerParserStateSetFlag():2,2:APP_LAYER_PARSER_ */
-void AppLayerParserStateSetFlag(AppLayerParserState *pstate, uint16_t flag)
+/* coccinelle: SCAppLayerParserStateSetFlag():2,2:APP_LAYER_PARSER_ */
+void SCAppLayerParserStateSetFlag(AppLayerParserState *pstate, uint16_t flag)
{
SCEnter();
pstate->flags |= flag;
typedef struct AppLayerDecoderEvents_ AppLayerDecoderEvents;
typedef struct ThreadVars_ ThreadVars;
typedef struct File_ File;
+typedef enum LoggerId LoggerId;
// Forward declarations from rust
typedef struct StreamSlice StreamSlice;
typedef struct AppLayerResult AppLayerResult;
void AppLayerParserRegisterProtocolParsers(void);
-void AppLayerParserStateSetFlag(AppLayerParserState *pstate, uint16_t flag);
+void SCAppLayerParserStateSetFlag(AppLayerParserState *pstate, uint16_t flag);
uint16_t AppLayerParserStateIssetFlag(AppLayerParserState *pstate, uint16_t flag);
AppLayerParserState *AppLayerParserStateAlloc(void);
(ssl_state->flags & SSL_AL_FLAG_SSL_SERVER_SSN_ENCRYPTED))
{
if (ssl_config.encrypt_mode != SSL_CNF_ENC_HANDLE_FULL) {
- AppLayerParserStateSetFlag(pstate,
- APP_LAYER_PARSER_NO_INSPECTION);
+ SCAppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_NO_INSPECTION);
}
if (ssl_config.encrypt_mode == SSL_CNF_ENC_HANDLE_BYPASS) {
- AppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_NO_REASSEMBLY);
- AppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_BYPASS_READY);
+ SCAppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_NO_REASSEMBLY);
+ SCAppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_BYPASS_READY);
}
SCLogDebug("SSLv2 No reassembly & inspection has been set");
}
if (ssl_config.encrypt_mode != SSL_CNF_ENC_HANDLE_FULL) {
SCLogDebug("setting APP_LAYER_PARSER_NO_INSPECTION_PAYLOAD");
- AppLayerParserStateSetFlag(pstate,
- APP_LAYER_PARSER_NO_INSPECTION_PAYLOAD);
+ SCAppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_NO_INSPECTION_PAYLOAD);
}
/* Encrypted data, reassembly not asked, bypass asked, let's sacrifice
* heartbeat lke inspection to be able to be able to bypass the flow */
if (ssl_config.encrypt_mode == SSL_CNF_ENC_HANDLE_BYPASS) {
SCLogDebug("setting APP_LAYER_PARSER_NO_REASSEMBLY");
- AppLayerParserStateSetFlag(pstate,
- APP_LAYER_PARSER_NO_REASSEMBLY);
- AppLayerParserStateSetFlag(pstate,
- APP_LAYER_PARSER_NO_INSPECTION);
- AppLayerParserStateSetFlag(pstate,
- APP_LAYER_PARSER_BYPASS_READY);
+ SCAppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_NO_REASSEMBLY);
+ SCAppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_NO_INSPECTION);
+ SCAppLayerParserStateSetFlag(pstate, APP_LAYER_PARSER_BYPASS_READY);
}
break;
#include "conf.h"
#include "app-layer-detect-proto.h"
+#include "app-layer-parser.h"
#endif
if (direction == 0) {
if (f->alparser && !STREAM_HAS_SEEN_DATA(&ssn->client)) {
- AppLayerParserStateSetFlag(f->alparser, APP_LAYER_PARSER_EOF_TS);
+ SCAppLayerParserStateSetFlag(f->alparser, APP_LAYER_PARSER_EOF_TS);
}
} else {
if (f->alparser && !STREAM_HAS_SEEN_DATA(&ssn->server)) {
- AppLayerParserStateSetFlag(f->alparser, APP_LAYER_PARSER_EOF_TC);
+ SCAppLayerParserStateSetFlag(f->alparser, APP_LAYER_PARSER_EOF_TC);
}
}
if (setting_nopayload) {
FlowSetNoPayloadInspectionFlag(p->flow);
}
- AppLayerParserStateSetFlag(p->flow->alparser, APP_LAYER_PARSER_EOF_TS);
- AppLayerParserStateSetFlag(p->flow->alparser, APP_LAYER_PARSER_EOF_TC);
+ SCAppLayerParserStateSetFlag(p->flow->alparser, APP_LAYER_PARSER_EOF_TS);
+ SCAppLayerParserStateSetFlag(p->flow->alparser, APP_LAYER_PARSER_EOF_TC);
}
/* Packets here can safely access p->flow as it's locked */
StreamTcpSetStreamFlagAppProtoDetectionCompleted(&ssn->server);
StreamTcpDisableAppLayerReassembly(ssn);
if (f->alparser) {
- AppLayerParserStateSetFlag(f->alparser,
- (APP_LAYER_PARSER_EOF_TS|APP_LAYER_PARSER_EOF_TC));
+ SCAppLayerParserStateSetFlag(
+ f->alparser, (APP_LAYER_PARSER_EOF_TS | APP_LAYER_PARSER_EOF_TC));
}
}
} PacketProfileDetectId;
/** \note update PacketProfileLoggerIdToString if you change anything here */
-typedef enum {
+typedef enum LoggerId {
LOGGER_UNDEFINED,
/* TX loggers first for low logger IDs */