suricata
app-layer-parser.h
Go to the documentation of this file.
1 /* Copyright (C) 2007-2025 Open Information Security Foundation
2  *
3  * You can copy, redistribute or modify this Program under the terms of
4  * the GNU General Public License version 2 as published by the Free
5  * Software Foundation.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * version 2 along with this program; if not, write to the Free Software
14  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
15  * 02110-1301, USA.
16  */
17 
18 /**
19  * \file
20  *
21  * \author Victor Julien <victor@inliniac.net>
22  * \author Anoop Saldanha <anoopsaldanha@gmail.com>
23  */
24 
25 #ifndef SURICATA_APP_LAYER_PARSER_H
26 #define SURICATA_APP_LAYER_PARSER_H
27 
28 #include "app-layer-events.h"
29 #include "util-file.h"
30 #include "rust.h"
31 #include "util-config.h"
32 
33 /* Flags for AppLayerParserState. */
34 // flag available BIT_U16(0)
35 #define APP_LAYER_PARSER_NO_INSPECTION BIT_U16(1)
36 #define APP_LAYER_PARSER_NO_REASSEMBLY BIT_U16(2)
37 #define APP_LAYER_PARSER_NO_INSPECTION_PAYLOAD BIT_U16(3)
38 #define APP_LAYER_PARSER_BYPASS_READY BIT_U16(4)
39 #define APP_LAYER_PARSER_EOF_TS BIT_U16(5)
40 #define APP_LAYER_PARSER_EOF_TC BIT_U16(6)
41 /* 2x vacancy */
42 #define APP_LAYER_PARSER_SFRAME_TS BIT_U16(9)
43 #define APP_LAYER_PARSER_SFRAME_TC BIT_U16(10)
44 
45 /* Flags for AppLayerParserProtoCtx. */
46 #define APP_LAYER_PARSER_OPT_ACCEPT_GAPS BIT_U32(0)
47 
48 #define APP_LAYER_PARSER_INT_STREAM_DEPTH_SET BIT_U32(0)
49 
50 /* for use with the detect_progress_ts|detect_progress_tc fields */
51 
52 /** should inspection be skipped in that direction */
53 #define APP_LAYER_TX_SKIP_INSPECT_TS BIT_U8(0)
54 #define APP_LAYER_TX_SKIP_INSPECT_TC BIT_U8(1)
55 /** is tx fully inspected? */
56 #define APP_LAYER_TX_INSPECTED_TS BIT_U8(2)
57 #define APP_LAYER_TX_INSPECTED_TC BIT_U8(3)
58 
59 /** parser has successfully processed in the input, and has consumed
60  * all of it. */
61 #define APP_LAYER_OK (AppLayerResult) { 0, 0, 0 }
62 
63 /** parser has hit an unrecoverable error. Returning this to the API
64  * leads to no further calls to the parser. */
65 #define APP_LAYER_ERROR (AppLayerResult) { -1, 0, 0 }
66 
67 /** parser needs more data. Through 'c' it will indicate how many
68  * of the input bytes it has consumed. Through 'n' it will indicate
69  * how many more bytes it needs before getting called again.
70  * \note consumed (c) should never be more than the input len
71  * needed (n) + consumed (c) should be more than the input len
72  */
73 #define APP_LAYER_INCOMPLETE(c,n) (AppLayerResult) { 1, (c), (n) }
74 
75 int AppLayerParserProtoIsRegistered(uint8_t ipproto, AppProto alproto);
76 
77 /***** transaction handling *****/
78 
79 int AppLayerParserSetup(void);
82 
84 
85 /**
86  * \brief Gets a new app layer protocol's parser thread context.
87  *
88  * \retval Non-NULL pointer on success.
89  * NULL pointer on failure.
90  */
92 
93 /**
94  * \brief Destroys the app layer parser thread context obtained
95  * using AppLayerParserThreadCtxAlloc().
96  *
97  * \param tctx Pointer to the thread context to be destroyed.
98  */
100 
101 /**
102  * \brief Given a protocol name, checks if the parser is enabled in
103  * the conf file.
104  *
105  * \param alproto_name Name of the app layer protocol.
106  *
107  * \retval 1 If enabled.
108  * \retval 0 If disabled.
109  */
110 int AppLayerParserConfParserEnabled(const char *ipproto,
111  const char *alproto_name);
112 
114 
115 /** \brief Prototype for parsing functions */
116 typedef AppLayerResult (*AppLayerParserFPtr)(Flow *f, void *protocol_state,
117  AppLayerParserState *pstate, StreamSlice stream_slice, void *local_storage);
118 
119 typedef struct AppLayerGetTxIterState {
120  union {
121  void *ptr;
122  uint64_t u64;
123  } un;
125 
126 /** \brief tx iterator prototype */
127 typedef AppLayerGetTxIterTuple (*AppLayerGetTxIteratorFunc)
128  (const uint8_t ipproto, const AppProto alproto,
129  void *alstate, uint64_t min_tx_id, uint64_t max_tx_id,
130  AppLayerGetTxIterState *state);
131 
132 /***** Parser related registration *****/
133 
134 typedef int (*AppLayerParserGetFrameIdByNameFn)(const char *frame_name);
135 typedef const char *(*AppLayerParserGetFrameNameByIdFn)(const uint8_t id);
136 
137 int AppLayerParserPreRegister(void (*Register)(void));
138 /**
139  * \brief Register app layer parser for the protocol.
140  *
141  * \retval 0 On success.
142  * \retval -1 On failure.
143  */
144 int AppLayerParserRegisterParser(uint8_t ipproto, AppProto alproto,
145  uint8_t direction,
146  AppLayerParserFPtr Parser);
148  AppProto alproto,
149  uint8_t direction);
150 void AppLayerParserRegisterOptionFlags(uint8_t ipproto, AppProto alproto,
151  uint32_t flags);
152 void AppLayerParserRegisterStateFuncs(uint8_t ipproto, AppProto alproto,
153  void *(*StateAlloc)(void *, AppProto), void (*StateFree)(void *));
155  void *(*LocalStorageAlloc)(void), void (*LocalStorageFree)(void *));
156 // void AppLayerParserRegisterGetEventsFunc(uint8_t ipproto, AppProto proto,
157 // AppLayerDecoderEvents *(*StateGetEvents)(void *) __attribute__((nonnull)));
159  uint8_t ipproto, AppProto alproto, AppLayerGetFileState (*GetTxFiles)(void *, uint8_t));
160 void AppLayerParserRegisterLogger(uint8_t ipproto, AppProto alproto);
161 void AppLayerParserRegisterLoggerBits(uint8_t ipproto, AppProto alproto, LoggerId bits);
162 void AppLayerParserRegisterGetStateProgressFunc(uint8_t ipproto, AppProto alproto,
163  int (*StateGetStateProgress)(void *alstate, uint8_t direction));
164 void AppLayerParserRegisterTxFreeFunc(uint8_t ipproto, AppProto alproto,
165  void (*StateTransactionFree)(void *, uint64_t));
166 void AppLayerParserRegisterGetTxCnt(uint8_t ipproto, AppProto alproto,
167  uint64_t (*StateGetTxCnt)(void *alstate));
168 void AppLayerParserRegisterGetTx(uint8_t ipproto, AppProto alproto,
169  void *(StateGetTx)(void *alstate, uint64_t tx_id));
170 void AppLayerParserRegisterGetTxIterator(uint8_t ipproto, AppProto alproto,
173  AppProto alproto, const int ts, const int tc);
174 void AppLayerParserRegisterGetEventInfo(uint8_t ipproto, AppProto alproto,
175  int (*StateGetEventInfo)(
176  const char *event_name, uint8_t *event_id, AppLayerEventType *event_type));
177 void AppLayerParserRegisterGetEventInfoById(uint8_t ipproto, AppProto alproto,
178  int (*StateGetEventInfoById)(
179  uint8_t event_id, const char **event_name, AppLayerEventType *event_type));
180 void AppLayerParserRegisterGetFrameFuncs(uint8_t ipproto, AppProto alproto,
181  AppLayerParserGetFrameIdByNameFn GetFrameIdByName,
182  AppLayerParserGetFrameNameByIdFn GetFrameNameById);
183 void AppLayerParserRegisterSetStreamDepthFlag(uint8_t ipproto, AppProto alproto,
184  void (*SetStreamDepthFlag)(void *tx, uint8_t flags));
185 
186 void AppLayerParserRegisterTxDataFunc(uint8_t ipproto, AppProto alproto,
187  AppLayerTxData *(*GetTxData)(void *tx));
188 void AppLayerParserRegisterApplyTxConfigFunc(uint8_t ipproto, AppProto alproto,
189  bool (*ApplyTxConfig)(void *state, void *tx, int mode, AppLayerTxConfig));
191  uint8_t ipproto, AppProto alproto, AppLayerStateData *(*GetStateData)(void *state));
192 
193 /***** Get and transaction functions *****/
194 
196  const AppProto alproto);
197 
198 void *AppLayerParserGetProtocolParserLocalStorage(uint8_t ipproto, AppProto alproto);
199 void AppLayerParserDestroyProtocolParserLocalStorage(uint8_t ipproto, AppProto alproto,
200  void *local_data);
201 
202 
204 void AppLayerParserSetTransactionLogId(AppLayerParserState *pstate, uint64_t tx_id);
205 
206 uint64_t AppLayerParserGetTransactionInspectId(AppLayerParserState *pstate, uint8_t direction);
208  void *alstate, const uint8_t flags, bool tag_txs_as_inspected);
209 
211 AppLayerDecoderEvents *AppLayerParserGetEventsByTx(uint8_t ipproto, AppProto alproto, void *tx);
212 AppLayerGetFileState AppLayerParserGetTxFiles(const Flow *f, void *tx, const uint8_t direction);
213 int AppLayerParserGetStateProgress(uint8_t ipproto, AppProto alproto,
214  void *alstate, uint8_t direction);
215 uint64_t AppLayerParserGetTxCnt(const Flow *, void *alstate);
216 void *AppLayerParserGetTx(uint8_t ipproto, AppProto alproto, void *alstate, uint64_t tx_id);
217 int AppLayerParserGetStateProgressCompletionStatus(AppProto alproto, uint8_t direction);
218 int AppLayerParserGetEventInfo(uint8_t ipproto, AppProto alproto, const char *event_name,
219  uint8_t *event_id, AppLayerEventType *event_type);
220 int AppLayerParserGetEventInfoById(uint8_t ipproto, AppProto alproto, uint8_t event_id,
221  const char **event_name, AppLayerEventType *event_type);
222 
223 uint64_t AppLayerParserGetTransactionActive(const Flow *f, AppLayerParserState *pstate, uint8_t direction);
224 
225 uint8_t AppLayerParserGetFirstDataDir(uint8_t ipproto, AppProto alproto);
226 
227 bool AppLayerParserSupportsFiles(uint8_t ipproto, AppProto alproto);
228 
229 AppLayerTxData *AppLayerParserGetTxData(uint8_t ipproto, AppProto alproto, void *tx);
230 uint8_t AppLayerParserGetTxDetectProgress(AppLayerTxData *txd, const uint8_t dir);
231 AppLayerStateData *AppLayerParserGetStateData(uint8_t ipproto, AppProto alproto, void *state);
232 void AppLayerParserApplyTxConfig(uint8_t ipproto, AppProto alproto,
233  void *state, void *tx, enum ConfigAction mode, AppLayerTxConfig);
234 
235 static inline bool AppLayerParserIsFileTx(const AppLayerTxData *txd)
236 {
237  if (txd->file_tx != 0) {
238  return true;
239  }
240  return false;
241 }
242 
243 static inline bool AppLayerParserIsFileTxInDir(const AppLayerTxData *txd, const uint8_t direction)
244 {
245  if ((txd->file_tx & direction) != 0) {
246  return true;
247  }
248  return false;
249 }
250 
251 /** \brief check if tx (possibly) has files in this tx for the direction */
252 static inline bool AppLayerParserHasFilesInDir(const AppLayerTxData *txd, const uint8_t direction)
253 {
254  return (txd->files_opened && AppLayerParserIsFileTxInDir(txd, direction));
255 }
256 
257 /***** General *****/
258 
260  uint8_t flags, const uint8_t *input, uint32_t input_len);
263 int AppLayerParserProtocolHasLogger(uint8_t ipproto, AppProto alproto);
264 LoggerId AppLayerParserProtocolGetLoggerBits(uint8_t ipproto, AppProto alproto);
265 void AppLayerParserTriggerRawStreamReassembly(Flow *f, int direction);
266 void AppLayerParserSetStreamDepth(uint8_t ipproto, AppProto alproto, uint32_t stream_depth);
267 uint32_t AppLayerParserGetStreamDepth(const Flow *f);
268 void AppLayerParserSetStreamDepthFlag(uint8_t ipproto, AppProto alproto, void *state, uint64_t tx_id, uint8_t flags);
269 int AppLayerParserIsEnabled(AppProto alproto);
270 int AppLayerParserGetFrameIdByName(uint8_t ipproto, AppProto alproto, const char *name);
271 const char *AppLayerParserGetFrameNameById(uint8_t ipproto, AppProto alproto, const uint8_t id);
272 
273 /***** Cleanup *****/
274 
276  uint8_t protomap, AppProto alproto, void *alstate, AppLayerParserState *pstate);
277 void AppLayerParserStateCleanup(const Flow *f, void *alstate, AppLayerParserState *pstate);
278 
280 
281 void AppLayerParserStateSetFlag(AppLayerParserState *pstate, uint16_t flag);
282 uint16_t AppLayerParserStateIssetFlag(AppLayerParserState *pstate, uint16_t flag);
283 
286 
287 void AppLayerParserTransactionsCleanup(Flow *f, const uint8_t pkt_dir);
288 
289 /***** Unittests *****/
290 
291 #ifdef UNITTESTS
292 void AppLayerParserRegisterProtocolUnittests(uint8_t ipproto, AppProto alproto,
293  void (*RegisterUnittests)(void));
295 void UTHAppLayerParserStateGetIds(void *ptr, uint64_t *i1, uint64_t *i2, uint64_t *log, uint64_t *min);
296 #endif
297 
299 void FileApplyTxFlags(const AppLayerTxData *txd, const uint8_t direction, File *file);
300 
301 #endif /* SURICATA_APP_LAYER_PARSER_H */
AppLayerParserGetStateProgress
int AppLayerParserGetStateProgress(uint8_t ipproto, AppProto alproto, void *alstate, uint8_t direction)
get the progress value for a tx/protocol
Definition: app-layer-parser.c:1067
AppLayerParserThreadCtxFree
void AppLayerParserThreadCtxFree(AppLayerParserThreadCtx *tctx)
Destroys the app layer parser thread context obtained using AppLayerParserThreadCtxAlloc().
Definition: app-layer-parser.c:317
AppLayerParserGetTx
void * AppLayerParserGetTx(uint8_t ipproto, AppProto alproto, void *alstate, uint64_t tx_id)
Definition: app-layer-parser.c:1089
AppLayerParserPostStreamSetup
void AppLayerParserPostStreamSetup(void)
Definition: app-layer-parser.c:265
AppLayerParserGetDecoderEvents
AppLayerDecoderEvents * AppLayerParserGetDecoderEvents(AppLayerParserState *pstate)
Definition: app-layer-parser.c:825
AppLayerParserRegisterGetTx
void AppLayerParserRegisterGetTx(uint8_t ipproto, AppProto alproto, void *(StateGetTx)(void *alstate, uint64_t tx_id))
Definition: app-layer-parser.c:510
AppLayerParserRegisterLogger
void AppLayerParserRegisterLogger(uint8_t ipproto, AppProto alproto)
Definition: app-layer-parser.c:471
ts
uint64_t ts
Definition: source-erf-file.c:55
AppLayerParserRegisterLoggerBits
void AppLayerParserRegisterLoggerBits(uint8_t ipproto, AppProto alproto, LoggerId bits)
Definition: app-layer-parser.c:462
AppLayerGetTxIterState::ptr
void * ptr
Definition: app-layer-parser.h:121
AppLayerParserStateAlloc
AppLayerParserState * AppLayerParserStateAlloc(void)
Definition: app-layer-parser.c:229
AppLayerParserSetEOF
void AppLayerParserSetEOF(AppLayerParserState *pstate)
Definition: app-layer-parser.c:1477
AppLayerParserRegisterGetTxCnt
void AppLayerParserRegisterGetTxCnt(uint8_t ipproto, AppProto alproto, uint64_t(*StateGetTxCnt)(void *alstate))
Definition: app-layer-parser.c:500
AppLayerParserRegisterGetFrameFuncs
void AppLayerParserRegisterGetFrameFuncs(uint8_t ipproto, AppProto alproto, AppLayerParserGetFrameIdByNameFn GetFrameIdByName, AppLayerParserGetFrameNameByIdFn GetFrameNameById)
Definition: app-layer-parser.c:555
AppLayerParserGetStreamDepth
uint32_t AppLayerParserGetStreamDepth(const Flow *f)
Definition: app-layer-parser.c:1559
AppProto
uint16_t AppProto
Definition: app-layer-protos.h:85
AppLayerParserRegisterSetStreamDepthFlag
void AppLayerParserRegisterSetStreamDepthFlag(uint8_t ipproto, AppProto alproto, void(*SetStreamDepthFlag)(void *tx, uint8_t flags))
Definition: app-layer-parser.c:606
Flow_
Flow data structure.
Definition: flow.h:354
LoggerId
LoggerId
Definition: suricata-common.h:469
UTHAppLayerParserStateGetIds
void UTHAppLayerParserStateGetIds(void *ptr, uint64_t *i1, uint64_t *i2, uint64_t *log, uint64_t *min)
Definition: app-layer-parser.c:208
AppLayerErrorGetExceptionPolicy
enum ExceptionPolicy AppLayerErrorGetExceptionPolicy(void)
Definition: app-layer-parser.c:156
rust.h
proto
uint8_t proto
Definition: decode-template.h:0
AppLayerParserProtocolGetLoggerBits
LoggerId AppLayerParserProtocolGetLoggerBits(uint8_t ipproto, AppProto alproto)
Definition: app-layer-parser.c:1529
AppLayerParserGetFrameIdByName
int AppLayerParserGetFrameIdByName(uint8_t ipproto, AppProto alproto, const char *name)
Definition: app-layer-parser.c:1578
AppLayerParserRegisterGetEventInfoById
void AppLayerParserRegisterGetEventInfoById(uint8_t ipproto, AppProto alproto, int(*StateGetEventInfoById)(uint8_t event_id, const char **event_name, AppLayerEventType *event_type))
Definition: app-layer-parser.c:543
AppLayerGetTxIterState::u64
uint64_t u64
Definition: app-layer-parser.h:122
AppLayerParserSetup
int AppLayerParserSetup(void)
Definition: app-layer-parser.c:253
AppLayerParserRegisterProtocolUnittests
void AppLayerParserRegisterProtocolUnittests(uint8_t ipproto, AppProto alproto, void(*RegisterUnittests)(void))
Definition: app-layer-parser.c:1801
AppLayerDecoderEvents_
Data structure to store app layer decoder events.
Definition: app-layer-events.h:36
AppLayerParserSetStreamDepth
void AppLayerParserSetStreamDepth(uint8_t ipproto, AppProto alproto, uint32_t stream_depth)
Definition: app-layer-parser.c:1548
AppLayerParserStateIssetFlag
uint16_t AppLayerParserStateIssetFlag(AppLayerParserState *pstate, uint16_t flag)
Definition: app-layer-parser.c:1790
AppLayerParserGetProtocolParserLocalStorage
void * AppLayerParserGetProtocolParserLocalStorage(uint8_t ipproto, AppProto alproto)
Definition: app-layer-parser.c:618
AppLayerParserRegisterGetTxFilesFunc
void AppLayerParserRegisterGetTxFilesFunc(uint8_t ipproto, AppProto alproto, AppLayerGetFileState(*GetTxFiles)(void *, uint8_t))
Definition: app-layer-parser.c:452
AppLayerParserFPtr
AppLayerResult(* AppLayerParserFPtr)(Flow *f, void *protocol_state, AppLayerParserState *pstate, StreamSlice stream_slice, void *local_storage)
Prototype for parsing functions.
Definition: app-layer-parser.h:116
AppLayerParserGetTxDetectProgress
uint8_t AppLayerParserGetTxDetectProgress(AppLayerTxData *txd, const uint8_t dir)
Definition: app-layer-parser.c:713
FileApplyTxFlags
void FileApplyTxFlags(const AppLayerTxData *txd, const uint8_t direction, File *file)
Definition: util-file.c:295
AppLayerParserConfParserEnabled
int AppLayerParserConfParserEnabled(const char *ipproto, const char *alproto_name)
Given a protocol name, checks if the parser is enabled in the conf file.
Definition: app-layer-parser.c:338
AppLayerParserTriggerRawStreamReassembly
void AppLayerParserTriggerRawStreamReassembly(Flow *f, int direction)
Definition: app-layer-parser.c:1537
AppLayerParserState_
Definition: app-layer-parser.c:129
AppLayerParserGetTransactionLogId
uint64_t AppLayerParserGetTransactionLogId(AppLayerParserState *pstate)
Definition: app-layer-parser.c:685
AppLayerParserRegisterLocalStorageFunc
void AppLayerParserRegisterLocalStorageFunc(uint8_t ipproto, AppProto proto, void *(*LocalStorageAlloc)(void), void(*LocalStorageFree)(void *))
Definition: app-layer-parser.c:440
AppLayerParserStateSetFlag
void AppLayerParserStateSetFlag(AppLayerParserState *pstate, uint16_t flag)
Definition: app-layer-parser.c:1782
AppLayerParserRegisterStateProgressCompletionStatus
void AppLayerParserRegisterStateProgressCompletionStatus(AppProto alproto, const int ts, const int tc)
Definition: app-layer-parser.c:528
AppLayerGetTxIterState::un
union AppLayerGetTxIterState::@9 un
AppLayerParserProtoIsRegistered
int AppLayerParserProtoIsRegistered(uint8_t ipproto, AppProto alproto)
Definition: app-layer-parser.c:222
ThreadVars_
Per thread variable structure.
Definition: threadvars.h:58
AppLayerParserRegisterOptionFlags
void AppLayerParserRegisterOptionFlags(uint8_t ipproto, AppProto alproto, uint32_t flags)
Definition: app-layer-parser.c:419
AppLayerParserRegisterStateDataFunc
void AppLayerParserRegisterStateDataFunc(uint8_t ipproto, AppProto alproto, AppLayerStateData *(*GetStateData)(void *state))
Definition: app-layer-parser.c:586
AppLayerParserGetTxData
AppLayerTxData * AppLayerParserGetTxData(uint8_t ipproto, AppProto alproto, void *tx)
Definition: app-layer-parser.c:1163
AppLayerParserRegisterTxDataFunc
void AppLayerParserRegisterTxDataFunc(uint8_t ipproto, AppProto alproto, AppLayerTxData *(*GetTxData)(void *tx))
Definition: app-layer-parser.c:576
AppLayerParserTransactionsCleanup
void AppLayerParserTransactionsCleanup(Flow *f, const uint8_t pkt_dir)
remove obsolete (inspected and logged) transactions
Definition: app-layer-parser.c:879
AppLayerParserDestroyProtocolParserLocalStorage
void AppLayerParserDestroyProtocolParserLocalStorage(uint8_t ipproto, AppProto alproto, void *local_data)
Definition: app-layer-parser.c:630
AppLayerGetTxIterState
Definition: app-layer-parser.h:119
AppLayerParserGetTransactionInspectId
uint64_t AppLayerParserGetTransactionInspectId(AppLayerParserState *pstate, uint8_t direction)
Definition: app-layer-parser.c:702
AppLayerParserHasDecoderEvents
bool AppLayerParserHasDecoderEvents(AppLayerParserState *pstate)
Definition: app-layer-parser.c:1493
AppLayerParserSetTransactionInspectId
void AppLayerParserSetTransactionInspectId(const Flow *f, AppLayerParserState *pstate, void *alstate, const uint8_t flags, bool tag_txs_as_inspected)
Definition: app-layer-parser.c:724
AppLayerParserRegisterGetTxIterator
void AppLayerParserRegisterGetTxIterator(uint8_t ipproto, AppProto alproto, AppLayerGetTxIteratorFunc Func)
Definition: app-layer-parser.c:520
AppLayerGetTxIterator
AppLayerGetTxIteratorFunc AppLayerGetTxIterator(const uint8_t ipproto, const AppProto alproto)
Definition: app-layer-parser.c:677
AppLayerParserGetTxFiles
AppLayerGetFileState AppLayerParserGetTxFiles(const Flow *f, void *tx, const uint8_t direction)
Definition: app-layer-parser.c:849
name
const char * name
Definition: tm-threads.c:2081
AppLayerParserGetEventInfo
int AppLayerParserGetEventInfo(uint8_t ipproto, AppProto alproto, const char *event_name, uint8_t *event_id, AppLayerEventType *event_type)
Definition: app-layer-parser.c:1104
AppLayerGetTxIterState
struct AppLayerGetTxIterState AppLayerGetTxIterState
AppLayerParserRegisterTxFreeFunc
void AppLayerParserRegisterTxFreeFunc(uint8_t ipproto, AppProto alproto, void(*StateTransactionFree)(void *, uint64_t))
Definition: app-layer-parser.c:490
AppLayerParserDeSetup
int AppLayerParserDeSetup(void)
Definition: app-layer-parser.c:278
ConfigAction
ConfigAction
Definition: util-config.h:27
AppLayerParserGetFrameNameById
const char * AppLayerParserGetFrameNameById(uint8_t ipproto, AppProto alproto, const uint8_t id)
Definition: app-layer-parser.c:1587
AppLayerFramesFreeContainer
void AppLayerFramesFreeContainer(Flow *f)
Definition: app-layer-parser.c:170
util-file.h
File_
Definition: util-file.h:79
AppLayerTxData
struct AppLayerTxData AppLayerTxData
Definition: detect.h:1389
AppLayerParserIsEnabled
int AppLayerParserIsEnabled(AppProto alproto)
simple way to globally test if a alproto is registered and fully enabled in the configuration.
Definition: app-layer-parser.c:1511
flags
uint8_t flags
Definition: decode-gre.h:0
AppLayerParserGetFrameNameByIdFn
const char *(* AppLayerParserGetFrameNameByIdFn)(const uint8_t id)
Definition: app-layer-parser.h:135
AppLayerParserGetStateData
AppLayerStateData * AppLayerParserGetStateData(uint8_t ipproto, AppProto alproto, void *state)
Definition: app-layer-parser.c:1170
AppLayerParserApplyTxConfig
void AppLayerParserApplyTxConfig(uint8_t ipproto, AppProto alproto, void *state, void *tx, enum ConfigAction mode, AppLayerTxConfig)
Definition: app-layer-parser.c:1181
AppLayerParserSetTransactionLogId
void AppLayerParserSetTransactionLogId(AppLayerParserState *pstate, uint64_t tx_id)
Definition: app-layer-parser.c:692
AppLayerParserRegisterStateFuncs
void AppLayerParserRegisterStateFuncs(uint8_t ipproto, AppProto alproto, void *(*StateAlloc)(void *, AppProto), void(*StateFree)(void *))
Definition: app-layer-parser.c:429
AppLayerParserRegisterUnittests
void AppLayerParserRegisterUnittests(void)
Definition: app-layer-parser.c:1809
AppLayerParserStateCleanup
void AppLayerParserStateCleanup(const Flow *f, void *alstate, AppLayerParserState *pstate)
Definition: app-layer-parser.c:1615
AppLayerParserRegisterGetStateProgressFunc
void AppLayerParserRegisterGetStateProgressFunc(uint8_t ipproto, AppProto alproto, int(*StateGetStateProgress)(void *alstate, uint8_t direction))
Definition: app-layer-parser.c:480
tv
ThreadVars * tv
Definition: fuzz_decodepcapfile.c:32
app-layer-events.h
AppLayerParserRegisterProtocolParsers
void AppLayerParserRegisterProtocolParsers(void)
Definition: app-layer-parser.c:1721
AppLayerParserGetFirstDataDir
uint8_t AppLayerParserGetFirstDataDir(uint8_t ipproto, AppProto alproto)
Definition: app-layer-parser.c:1129
util-config.h
AppLayerParserGetTxCnt
uint64_t AppLayerParserGetTxCnt(const Flow *, void *alstate)
Definition: app-layer-parser.c:1082
AppLayerParserRegisterParser
int AppLayerParserRegisterParser(uint8_t ipproto, AppProto alproto, uint8_t direction, AppLayerParserFPtr Parser)
Register app layer parser for the protocol.
Definition: app-layer-parser.c:396
AppLayerParserProtocolHasLogger
int AppLayerParserProtocolHasLogger(uint8_t ipproto, AppProto alproto)
Definition: app-layer-parser.c:1521
AppLayerParserThreadCtxAlloc
AppLayerParserThreadCtx * AppLayerParserThreadCtxAlloc(void)
Gets a new app layer protocol's parser thread context.
Definition: app-layer-parser.c:290
AppLayerParserSetStreamDepthFlag
void AppLayerParserSetStreamDepthFlag(uint8_t ipproto, AppProto alproto, void *state, uint64_t tx_id, uint8_t flags)
Definition: app-layer-parser.c:1564
AppLayerGetTxIteratorFunc
AppLayerGetTxIterTuple(* AppLayerGetTxIteratorFunc)(const uint8_t ipproto, const AppProto alproto, void *alstate, uint64_t min_tx_id, uint64_t max_tx_id, AppLayerGetTxIterState *state)
tx iterator prototype
Definition: app-layer-parser.h:128
AppLayerParserPreRegister
int AppLayerParserPreRegister(void(*Register)(void))
Definition: app-layer-parser.c:1705
AppLayerParserThreadCtx_
Definition: app-layer-parser.c:58
AppLayerParserStateFree
void AppLayerParserStateFree(AppLayerParserState *pstate)
Definition: app-layer-parser.c:241
AppLayerParserGetEventsByTx
AppLayerDecoderEvents * AppLayerParserGetEventsByTx(uint8_t ipproto, AppProto alproto, void *tx)
Definition: app-layer-parser.c:833
AppLayerParserRegisterGetEventInfo
void AppLayerParserRegisterGetEventInfo(uint8_t ipproto, AppProto alproto, int(*StateGetEventInfo)(const char *event_name, uint8_t *event_id, AppLayerEventType *event_type))
Definition: app-layer-parser.c:565
ExceptionPolicy
ExceptionPolicy
Definition: util-exception-policy-types.h:25
AppLayerParserRegisterApplyTxConfigFunc
void AppLayerParserRegisterApplyTxConfigFunc(uint8_t ipproto, AppProto alproto, bool(*ApplyTxConfig)(void *state, void *tx, int mode, AppLayerTxConfig))
Definition: app-layer-parser.c:596
AppLayerParserParse
int AppLayerParserParse(ThreadVars *tv, AppLayerParserThreadCtx *tctx, Flow *f, AppProto alproto, uint8_t flags, const uint8_t *input, uint32_t input_len)
Definition: app-layer-parser.c:1271
AppLayerParserGetFrameIdByNameFn
int(* AppLayerParserGetFrameIdByNameFn)(const char *frame_name)
Definition: app-layer-parser.h:134
AppLayerParserSupportsFiles
bool AppLayerParserSupportsFiles(uint8_t ipproto, AppProto alproto)
Definition: app-layer-parser.c:1153
AppLayerParserRegisterParserAcceptableDataDirection
void AppLayerParserRegisterParserAcceptableDataDirection(uint8_t ipproto, AppProto alproto, uint8_t direction)
Definition: app-layer-parser.c:408
AppLayerParserGetStateProgressCompletionStatus
int AppLayerParserGetStateProgressCompletionStatus(AppProto alproto, uint8_t direction)
Definition: app-layer-parser.c:1096
AppLayerParserGetEventInfoById
int AppLayerParserGetEventInfoById(uint8_t ipproto, AppProto alproto, uint8_t event_id, const char **event_name, AppLayerEventType *event_type)
Definition: app-layer-parser.c:1116
AppLayerParserStateProtoCleanup
void AppLayerParserStateProtoCleanup(uint8_t protomap, AppProto alproto, void *alstate, AppLayerParserState *pstate)
Definition: app-layer-parser.c:1598
AppLayerParserGetTransactionActive
uint64_t AppLayerParserGetTransactionActive(const Flow *f, AppLayerParserState *pstate, uint8_t direction)
Definition: app-layer-parser.c:1136