Go to the documentation of this file.
47 return SCLLMNRLogJson(txptr, js);
51 void *alstate,
void *txptr, uint64_t tx_id)
61 if (SCLLMNRLogJson(txptr, jb)) {
69 static TmEcode SCLLMNRLogThreadInit(
ThreadVars *t,
const void *initdata,
void **data)
75 if (initdata == NULL) {
76 SCLogDebug(
"Error getting context for EveLogLLMNR. \"initdata\" argument NULL");
110 static void SCLLMNRLogDeInitCtxSub(
OutputCtx *output_ctx)
112 SCLogDebug(
"cleaning up sub output_ctx %p", output_ctx);
130 if (
unlikely(llmnrlog_ctx == NULL)) {
135 llmnrlog_ctx->
flags = ~0ULL;
143 output_ctx->
data = llmnrlog_ctx;
144 output_ctx->
DeInit = SCLLMNRLogDeInitCtxSub;
146 SCLogDebug(
"LLMNR log sub-module initialized");
151 result.
ctx = output_ctx;
159 JsonLLMNRLogInitCtxSub,
ALPROTO_LLMNR, JsonLLMNRLogger, SCLLMNRLogThreadInit,
160 SCLLMNRLogThreadDeinit);
int SCConfValIsTrue(const char *val)
Check if a value is true.
void JsonLLMNRLogRegister(void)
void FreeEveThreadCtx(OutputJsonThreadCtx *ctx)
SCJsonBuilder * CreateEveHeader(const Packet *p, enum SCOutputJsonLogDirection dir, const char *event_type, JsonAddrInfo *addr, OutputJsonCtx *eve_ctx)
OutputJsonThreadCtx * CreateEveThreadCtx(ThreadVars *t, OutputJsonCtx *ctx)
void OutputRegisterTxSubModule(LoggerId id, const char *parent_name, const char *name, const char *conf_name, OutputInitSubFunc InitFunc, AppProto alproto, TxLogger TxLogFunc, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
void OutputJsonBuilderBuffer(ThreadVars *tv, const Packet *p, Flow *f, SCJsonBuilder *js, OutputJsonThreadCtx *ctx)
const char * SCConfNodeLookupChildValue(const SCConfNode *node, const char *name)
Lookup the value of a child configuration node by name.
SCLLMNRLogFileCtx * llmnrlog_ctx
void SCAppLayerParserRegisterLogger(uint8_t ipproto, AppProto alproto)
Per thread variable structure.
OutputJsonThreadCtx * ctx
struct SCLLMNRLogFileCtx_ SCLLMNRLogFileCtx
bool AlertJsonLLMNR(void *txptr, SCJsonBuilder *js)
void(* DeInit)(struct OutputCtx_ *)
struct LogLLMNRLogThread_ SCLLMNRLogThread