Go to the documentation of this file.
53 static SCJsonBuilder *CreateEveHeaderFromNetFlow(
57 char srcip[46] = {0}, dstip[46] = {0};
60 SCJsonBuilder *js = SCJbNewObject();
73 PrintInet(AF_INET, (
const void *)&(f->
src.addr_data32[0]), srcip,
sizeof(srcip));
74 PrintInet(AF_INET, (
const void *)&(f->
dst.addr_data32[0]), dstip,
sizeof(dstip));
76 PrintInet(AF_INET, (
const void *)&(f->
dst.addr_data32[0]), srcip,
sizeof(srcip));
77 PrintInet(AF_INET, (
const void *)&(f->
src.addr_data32[0]), dstip,
sizeof(dstip));
102 SCJbSetString(js,
"timestamp", timebuf);
109 json_object_set_new(js,
"sensor_id", json_integer(sensor_id));
115 SCJbSetString(js,
"in_iface", dev->
dev);
122 SCJbOpenArray(js,
"vlan");
123 SCJbAppendUint(js, f->
vlan_id[0]);
125 SCJbAppendUint(js, f->
vlan_id[1]);
128 SCJbAppendUint(js, f->
vlan_id[2]);
134 SCJbSetString(js,
"src_ip", srcip);
141 SCJbSetUint(js,
"src_port", sp);
144 SCJbSetString(js,
"dest_ip", dstip);
151 SCJbSetUint(js,
"dest_port", dp);
160 SCJbSetString(js,
"proto",
proto);
165 case IPPROTO_ICMPV6: {
167 uint8_t code = f->
icmp_s.code;
173 SCJbSetUint(js,
"icmp_type",
type);
174 SCJbSetUint(js,
"icmp_code", code);
178 SCJbSetUint(js,
"spi", f->
esp.spi);
185 static void NetFlowLogEveToServer(SCJsonBuilder *js,
Flow *f)
189 SCJbOpenObject(js,
"netflow");
194 char timebuf1[64], timebuf2[64];
199 SCJbSetString(js,
"start", timebuf1);
200 SCJbSetString(js,
"end", timebuf2);
203 SCJbSetUint(js,
"age", age);
211 SCJbSetUint(js,
"tx_cnt", tx_id);
219 if (f->
proto == IPPROTO_TCP) {
220 SCJbOpenObject(js,
"tcp");
225 snprintf(hexflags,
sizeof(hexflags),
"%02x",
227 SCJbSetString(js,
"tcp_flags", hexflags);
235 static void NetFlowLogEveToClient(SCJsonBuilder *js,
Flow *f)
239 SCJbOpenObject(js,
"netflow");
244 char timebuf1[64], timebuf2[64];
249 SCJbSetString(js,
"start", timebuf1);
250 SCJbSetString(js,
"end", timebuf2);
253 SCJbSetUint(js,
"age", age);
264 SCJbSetUint(js,
"tx_cnt", tx_id);
272 if (f->
proto == IPPROTO_TCP) {
273 SCJbOpenObject(js,
"tcp");
278 snprintf(hexflags,
sizeof(hexflags),
"%02x",
280 SCJbSetString(js,
"tcp_flags", hexflags);
293 SCJsonBuilder *jb = CreateEveHeaderFromNetFlow(f, 0, &jhl->
ctx->
cfg);
296 NetFlowLogEveToServer(jb, f);
303 jb = CreateEveHeaderFromNetFlow(f, 1, &jhl->
ctx->
cfg);
306 NetFlowLogEveToClient(jb, f);
void CreateIsoTimeString(const SCTime_t ts, char *str, size_t size)
OutputJsonCommonSettings cfg
struct Flow_::@121::@128 esp
TmEcode JsonLogThreadInit(ThreadVars *t, const void *initdata, void **data)
const char * PrintInetIPv6(const void *src, char *dst, socklen_t size, bool compress_ipv6)
const char * AppProtoToString(AppProto alproto)
Maps the ALPROTO_*, to its string equivalent.
LiveDevice * LiveDeviceGetById(const int id)
bool SCProtoNameValid(uint16_t proto)
Function to check if the received protocol number is valid and do we have corresponding name entry fo...
void EveTcpFlags(const uint8_t flags, SCJsonBuilder *js)
jsonify tcp flags field Only add 'true' fields in an attempt to keep things reasonably compact.
const char * known_proto[256]
void OutputJsonBuilderBuffer(ThreadVars *tv, const Packet *p, Flow *f, SCJsonBuilder *js, OutputJsonThreadCtx *ctx)
void CreateEveFlowId(SCJsonBuilder *js, const Flow *f)
OutputInitResult OutputJsonLogInitSub(SCConfNode *conf, OutputCtx *parent_ctx)
void OutputRegisterFlowSubModule(LoggerId id, const char *parent_name, const char *name, const char *conf_name, OutputInitSubFunc InitFunc, FlowLogger FlowLogFunc, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
Register a flow output sub-module.
#define JB_SET_STRING(jb, key, val)
void EveAddCommonOptions(const OutputJsonCommonSettings *cfg, const Packet *p, const Flow *f, SCJsonBuilder *js, enum SCOutputJsonLogDirection dir)
Per thread variable structure.
const char * PrintInet(int af, const void *src, char *dst, socklen_t size)
struct Flow_::@123::@129 icmp_d
union FlowAddress_::@120 address
uint16_t vlan_id[VLAN_MAX_LAYERS]
struct Flow_::@121::@127 icmp_s
TmEcode JsonLogThreadDeinit(ThreadVars *t, void *data)
AppProto alproto
application level protocol
#define FLOW_DIR_REVERSED
uint64_t AppLayerParserGetTxCnt(const Flow *f, void *alstate)
void JsonNetFlowLogRegister(void)