From: Jason Ish Date: Wed, 2 Apr 2025 04:38:27 +0000 (-0600) Subject: jsonbuilder: prefix C API with SC X-Git-Tag: suricata-8.0.0-beta1~79 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=155706f96bd206965ad4b2c3dc982394eefc32a4;p=thirdparty%2Fsuricata.git jsonbuilder: prefix C API with SC --- diff --git a/plugins/ndpi/ndpi.c b/plugins/ndpi/ndpi.c index 2adddfaa1e..958a1cd0c1 100644 --- a/plugins/ndpi/ndpi.c +++ b/plugins/ndpi/ndpi.c @@ -437,7 +437,7 @@ static void DetectnDPIRiskFree(DetectEngineCtx *de_ctx, void *ptr) SCFree(ptr); } -static void EveCallback(ThreadVars *tv, const Packet *p, Flow *f, JsonBuilder *jb, void *data) +static void EveCallback(ThreadVars *tv, const Packet *p, Flow *f, SCJsonBuilder *jb, void *data) { /* Adding ndpi info to EVE requires a flow. */ if (f == NULL) { @@ -460,7 +460,7 @@ static void EveCallback(ThreadVars *tv, const Packet *p, Flow *f, JsonBuilder *j buffer = ndpi_serializer_get_buffer(&serializer, &buffer_len); /* Inject the nDPI JSON to the JsonBuilder */ - jb_set_formatted(jb, buffer); + SCJbSetFormatted(jb, buffer); ndpi_term_serializer(&serializer); } diff --git a/rust/cbindgen.toml b/rust/cbindgen.toml index b8b88676e6..bca938c83c 100644 --- a/rust/cbindgen.toml +++ b/rust/cbindgen.toml @@ -142,6 +142,8 @@ item_types = ["enums","structs","opaque","functions","constants"] [export.rename] "JsonT" = "json_t" "CLuaState" = "lua_State" +"JsonBuilder" = "SCJsonBuilder" +"JsonBuilderMark" = "SCJsonBuilderMark" # # You get the following results: diff --git a/rust/src/jsonbuilder.rs b/rust/src/jsonbuilder.rs index 86d7bf51c1..abdf329a10 100644 --- a/rust/src/jsonbuilder.rs +++ b/rust/src/jsonbuilder.rs @@ -839,7 +839,7 @@ fn try_string_from_bytes(input: &[u8]) -> Result { } #[no_mangle] -pub extern "C" fn jb_new_object() -> *mut JsonBuilder { +pub extern "C" fn SCJbNewObject() -> *mut JsonBuilder { match JsonBuilder::try_new_object() { Ok(js) => { let boxed = Box::new(js); @@ -850,7 +850,7 @@ pub extern "C" fn jb_new_object() -> *mut JsonBuilder { } #[no_mangle] -pub extern "C" fn jb_new_array() -> *mut JsonBuilder { +pub extern "C" fn SCJbNewArray() -> *mut JsonBuilder { match JsonBuilder::try_new_array() { Ok(js) => { let boxed = Box::new(js); @@ -861,28 +861,28 @@ pub extern "C" fn jb_new_array() -> *mut JsonBuilder { } #[no_mangle] -pub extern "C" fn jb_clone(js: &mut JsonBuilder) -> *mut JsonBuilder { +pub extern "C" fn SCJbClone(js: &mut JsonBuilder) -> *mut JsonBuilder { let clone = Box::new(js.clone()); Box::into_raw(clone) } #[no_mangle] -pub unsafe extern "C" fn jb_free(js: &mut JsonBuilder) { +pub unsafe extern "C" fn SCJbFree(js: &mut JsonBuilder) { let _ = Box::from_raw(js); } #[no_mangle] -pub extern "C" fn jb_capacity(jb: &mut JsonBuilder) -> usize { +pub extern "C" fn SCJbCapacity(jb: &mut JsonBuilder) -> usize { jb.capacity() } #[no_mangle] -pub extern "C" fn jb_reset(jb: &mut JsonBuilder) { +pub extern "C" fn SCJbReset(jb: &mut JsonBuilder) { jb.reset(); } #[no_mangle] -pub unsafe extern "C" fn jb_open_object(js: &mut JsonBuilder, key: *const c_char) -> bool { +pub unsafe extern "C" fn SCJbOpenObject(js: &mut JsonBuilder, key: *const c_char) -> bool { if let Ok(s) = CStr::from_ptr(key).to_str() { js.open_object(s).is_ok() } else { @@ -891,12 +891,12 @@ pub unsafe extern "C" fn jb_open_object(js: &mut JsonBuilder, key: *const c_char } #[no_mangle] -pub unsafe extern "C" fn jb_start_object(js: &mut JsonBuilder) -> bool { +pub unsafe extern "C" fn SCJbStartObject(js: &mut JsonBuilder) -> bool { js.start_object().is_ok() } #[no_mangle] -pub unsafe extern "C" fn jb_open_array(js: &mut JsonBuilder, key: *const c_char) -> bool { +pub unsafe extern "C" fn SCJbOpenArray(js: &mut JsonBuilder, key: *const c_char) -> bool { if let Ok(s) = CStr::from_ptr(key).to_str() { js.open_array(s).is_ok() } else { @@ -905,7 +905,7 @@ pub unsafe extern "C" fn jb_open_array(js: &mut JsonBuilder, key: *const c_char) } #[no_mangle] -pub unsafe extern "C" fn jb_set_string( +pub unsafe extern "C" fn SCJbSetString( js: &mut JsonBuilder, key: *const c_char, val: *const c_char, ) -> bool { if val.is_null() { @@ -920,7 +920,7 @@ pub unsafe extern "C" fn jb_set_string( } #[no_mangle] -pub unsafe extern "C" fn jb_set_string_from_bytes( +pub unsafe extern "C" fn SCJbSetStringFromBytes( js: &mut JsonBuilder, key: *const c_char, bytes: *const u8, len: u32, ) -> bool { if bytes.is_null() || len == 0 { @@ -934,7 +934,7 @@ pub unsafe extern "C" fn jb_set_string_from_bytes( } #[no_mangle] -pub unsafe extern "C" fn jb_set_base64( +pub unsafe extern "C" fn SCJbSetBase64( js: &mut JsonBuilder, key: *const c_char, bytes: *const u8, len: u32, ) -> bool { if bytes.is_null() || len == 0 { @@ -948,7 +948,7 @@ pub unsafe extern "C" fn jb_set_base64( } #[no_mangle] -pub unsafe extern "C" fn jb_set_hex( +pub unsafe extern "C" fn SCJbSetHex( js: &mut JsonBuilder, key: *const c_char, bytes: *const u8, len: u32, ) -> bool { if bytes.is_null() || len == 0 { @@ -962,7 +962,7 @@ pub unsafe extern "C" fn jb_set_hex( } #[no_mangle] -pub unsafe extern "C" fn jb_set_formatted(js: &mut JsonBuilder, formatted: *const c_char) -> bool { +pub unsafe extern "C" fn SCJbSetFormatted(js: &mut JsonBuilder, formatted: *const c_char) -> bool { if let Ok(formatted) = CStr::from_ptr(formatted).to_str() { return js.set_formatted(formatted).is_ok(); } @@ -970,12 +970,12 @@ pub unsafe extern "C" fn jb_set_formatted(js: &mut JsonBuilder, formatted: *cons } #[no_mangle] -pub unsafe extern "C" fn jb_append_object(jb: &mut JsonBuilder, obj: &JsonBuilder) -> bool { +pub unsafe extern "C" fn SCJbAppendObject(jb: &mut JsonBuilder, obj: &JsonBuilder) -> bool { jb.append_object(obj).is_ok() } #[no_mangle] -pub unsafe extern "C" fn jb_set_object( +pub unsafe extern "C" fn SCJbSetObject( js: &mut JsonBuilder, key: *const c_char, val: &mut JsonBuilder, ) -> bool { if let Ok(key) = CStr::from_ptr(key).to_str() { @@ -985,7 +985,7 @@ pub unsafe extern "C" fn jb_set_object( } #[no_mangle] -pub unsafe extern "C" fn jb_append_string(js: &mut JsonBuilder, val: *const c_char) -> bool { +pub unsafe extern "C" fn SCJbAppendString(js: &mut JsonBuilder, val: *const c_char) -> bool { if val.is_null() { return false; } @@ -996,7 +996,7 @@ pub unsafe extern "C" fn jb_append_string(js: &mut JsonBuilder, val: *const c_ch } #[no_mangle] -pub unsafe extern "C" fn jb_append_string_from_bytes( +pub unsafe extern "C" fn SCJbAppendStringFromBytes( js: &mut JsonBuilder, bytes: *const u8, len: u32, ) -> bool { if bytes.is_null() || len == 0 { @@ -1007,7 +1007,7 @@ pub unsafe extern "C" fn jb_append_string_from_bytes( } #[no_mangle] -pub unsafe extern "C" fn jb_append_base64( +pub unsafe extern "C" fn SCJbAppendBase64( js: &mut JsonBuilder, bytes: *const u8, len: u32, ) -> bool { if bytes.is_null() || len == 0 { @@ -1018,17 +1018,17 @@ pub unsafe extern "C" fn jb_append_base64( } #[no_mangle] -pub unsafe extern "C" fn jb_append_uint(js: &mut JsonBuilder, val: u64) -> bool { +pub unsafe extern "C" fn SCJbAppendUint(js: &mut JsonBuilder, val: u64) -> bool { return js.append_uint(val).is_ok(); } #[no_mangle] -pub unsafe extern "C" fn jb_append_float(js: &mut JsonBuilder, val: f64) -> bool { +pub unsafe extern "C" fn SCJbAppendFloat(js: &mut JsonBuilder, val: f64) -> bool { return js.append_float(val).is_ok(); } #[no_mangle] -pub unsafe extern "C" fn jb_set_uint(js: &mut JsonBuilder, key: *const c_char, val: u64) -> bool { +pub unsafe extern "C" fn SCJbSetUint(js: &mut JsonBuilder, key: *const c_char, val: u64) -> bool { if let Ok(key) = CStr::from_ptr(key).to_str() { return js.set_uint(key, val).is_ok(); } @@ -1036,7 +1036,7 @@ pub unsafe extern "C" fn jb_set_uint(js: &mut JsonBuilder, key: *const c_char, v } #[no_mangle] -pub unsafe extern "C" fn jb_set_int(js: &mut JsonBuilder, key: *const c_char, val: i64) -> bool { +pub unsafe extern "C" fn SCJbSetInt(js: &mut JsonBuilder, key: *const c_char, val: i64) -> bool { if let Ok(key) = CStr::from_ptr(key).to_str() { return js.set_int(key, val).is_ok(); } @@ -1044,7 +1044,7 @@ pub unsafe extern "C" fn jb_set_int(js: &mut JsonBuilder, key: *const c_char, va } #[no_mangle] -pub unsafe extern "C" fn jb_set_float(js: &mut JsonBuilder, key: *const c_char, val: f64) -> bool { +pub unsafe extern "C" fn SCJbSetFloat(js: &mut JsonBuilder, key: *const c_char, val: f64) -> bool { if let Ok(key) = CStr::from_ptr(key).to_str() { return js.set_float(key, val).is_ok(); } @@ -1052,7 +1052,7 @@ pub unsafe extern "C" fn jb_set_float(js: &mut JsonBuilder, key: *const c_char, } #[no_mangle] -pub unsafe extern "C" fn jb_set_bool(js: &mut JsonBuilder, key: *const c_char, val: bool) -> bool { +pub unsafe extern "C" fn SCJbSetBool(js: &mut JsonBuilder, key: *const c_char, val: bool) -> bool { if let Ok(key) = CStr::from_ptr(key).to_str() { return js.set_bool(key, val).is_ok(); } @@ -1060,22 +1060,22 @@ pub unsafe extern "C" fn jb_set_bool(js: &mut JsonBuilder, key: *const c_char, v } #[no_mangle] -pub unsafe extern "C" fn jb_close(js: &mut JsonBuilder) -> bool { +pub unsafe extern "C" fn SCJbClose(js: &mut JsonBuilder) -> bool { js.close().is_ok() } #[no_mangle] -pub unsafe extern "C" fn jb_len(js: &JsonBuilder) -> usize { +pub unsafe extern "C" fn SCJbLen(js: &JsonBuilder) -> usize { js.buf.len() } #[no_mangle] -pub unsafe extern "C" fn jb_ptr(js: &mut JsonBuilder) -> *const u8 { +pub unsafe extern "C" fn SCJbPtr(js: &mut JsonBuilder) -> *const u8 { js.buf.as_ptr() } #[no_mangle] -pub unsafe extern "C" fn jb_get_mark(js: &mut JsonBuilder, mark: &mut JsonBuilderMark) { +pub unsafe extern "C" fn SCJbGetMark(js: &mut JsonBuilder, mark: &mut JsonBuilderMark) { let m = js.get_mark(); mark.position = m.position; mark.state_index = m.state_index; @@ -1083,7 +1083,7 @@ pub unsafe extern "C" fn jb_get_mark(js: &mut JsonBuilder, mark: &mut JsonBuilde } #[no_mangle] -pub unsafe extern "C" fn jb_restore_mark(js: &mut JsonBuilder, mark: &mut JsonBuilderMark) -> bool { +pub unsafe extern "C" fn SCJbRestoreMark(js: &mut JsonBuilder, mark: &mut JsonBuilderMark) -> bool { js.restore_mark(mark).is_ok() } diff --git a/scripts/dnp3-gen/dnp3-gen.py b/scripts/dnp3-gen/dnp3-gen.py index 420dfb1409..8008120436 100755 --- a/scripts/dnp3-gen/dnp3-gen.py +++ b/scripts/dnp3-gen/dnp3-gen.py @@ -162,23 +162,23 @@ void OutputJsonDNP3SetItem(JsonBuilder *js, DNP3Object *object, DNP3ObjectG{{object.group}}V{{object.variation}} *data = point->data; {% for field in object.fields %} {% if is_integer_type(field.type) %} - jb_set_uint(js, "{{field.name}}", data->{{field.name}}); + SCJbSetUint(js, "{{field.name}}", data->{{field.name}}); {% elif field.type in ["flt32", "flt64"] %} - jb_set_float(js, "{{field.name}}", data->{{field.name}}); + SCJbSetFloat(js, "{{field.name}}", data->{{field.name}}); {% elif field.type == "bytearray" %} - jb_set_base64(js, "data->{{field.name}}", data->{{field.name}}, data->{{field.len_field}}); + SCJbSetBase64(js, "data->{{field.name}}", data->{{field.name}}, data->{{field.len_field}}); {% elif field.type == "vstr4" %} - jb_set_string(js, "data->{{field.name}}", data->{{field.name}}); + SCJbSetString(js, "data->{{field.name}}", data->{{field.name}}); {% elif field.type == "chararray" %} if (data->{{field.len_field}} > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "{{field.name}}", (const uint8_t *)data->{{field.name}}, data->{{field.len_field}}); } else { - jb_set_string(js, "{{field.name}}", ""); + SCJbSetString(js, "{{field.name}}", ""); } {% elif field.type == "bstr8" %} {% for field in field.fields %} - jb_set_uint(js, "{{field.name}}", data->{{field.name}}); + SCJbSetUint(js, "{{field.name}}", data->{{field.name}}); {% endfor %} {% else %} {{ raise("Unhandled datatype: %s" % (field.type)) }} diff --git a/src/app-layer-ftp.c b/src/app-layer-ftp.c index 4c173297c1..707a8d5b01 100644 --- a/src/app-layer-ftp.c +++ b/src/app-layer-ftp.c @@ -1365,13 +1365,13 @@ uint16_t JsonGetNextLineFromBuffer(const char *buffer, const uint16_t len) return c == NULL ? len : (uint16_t)(c - buffer + 1); } -bool EveFTPDataAddMetadata(void *vtx, JsonBuilder *jb) +bool EveFTPDataAddMetadata(void *vtx, SCJsonBuilder *jb) { const FtpDataState *ftp_state = (FtpDataState *)vtx; - jb_open_object(jb, "ftp_data"); + SCJbOpenObject(jb, "ftp_data"); if (ftp_state->file_name) { - jb_set_string_from_bytes(jb, "filename", ftp_state->file_name, ftp_state->file_len); + SCJbSetStringFromBytes(jb, "filename", ftp_state->file_name, ftp_state->file_len); } switch (ftp_state->command) { case FTP_COMMAND_STOR: @@ -1383,7 +1383,7 @@ bool EveFTPDataAddMetadata(void *vtx, JsonBuilder *jb) default: break; } - jb_close(jb); + SCJbClose(jb); return true; } diff --git a/src/app-layer-ftp.h b/src/app-layer-ftp.h index 99d42b8b97..7c704c1949 100644 --- a/src/app-layer-ftp.h +++ b/src/app-layer-ftp.h @@ -129,6 +129,6 @@ uint64_t FTPMemuseGlobalCounter(void); uint64_t FTPMemcapGlobalCounter(void); uint16_t JsonGetNextLineFromBuffer(const char *buffer, const uint16_t len); -bool EveFTPDataAddMetadata(void *vtx, JsonBuilder *jb); +bool EveFTPDataAddMetadata(void *vtx, SCJsonBuilder *jb); #endif /* SURICATA_APP_LAYER_FTP_H */ diff --git a/src/detect-engine-analyzer.c b/src/detect-engine-analyzer.c index aff29b43e1..3fb0ee219a 100644 --- a/src/detect-engine-analyzer.c +++ b/src/detect-engine-analyzer.c @@ -631,10 +631,10 @@ void EngineAnalysisRulesFailure( } typedef struct RuleAnalyzer { - JsonBuilder *js; /* document root */ + SCJsonBuilder *js; /* document root */ - JsonBuilder *js_warnings; - JsonBuilder *js_notes; + SCJsonBuilder *js_warnings; + SCJsonBuilder *js_notes; } RuleAnalyzer; static void ATTR_FMT_PRINTF(2, 3) AnalyzerNote(RuleAnalyzer *ctx, char *fmt, ...) @@ -647,9 +647,9 @@ static void ATTR_FMT_PRINTF(2, 3) AnalyzerNote(RuleAnalyzer *ctx, char *fmt, ... va_end(ap); if (!ctx->js_notes) - ctx->js_notes = jb_new_array(); + ctx->js_notes = SCJbNewArray(); if (ctx->js_notes) - jb_append_string(ctx->js_notes, str); + SCJbAppendString(ctx->js_notes, str); } static void ATTR_FMT_PRINTF(2, 3) AnalyzerWarning(RuleAnalyzer *ctx, char *fmt, ...) @@ -662,9 +662,9 @@ static void ATTR_FMT_PRINTF(2, 3) AnalyzerWarning(RuleAnalyzer *ctx, char *fmt, va_end(ap); if (!ctx->js_warnings) - ctx->js_warnings = jb_new_array(); + ctx->js_warnings = SCJbNewArray(); if (ctx->js_warnings) - jb_append_string(ctx->js_warnings, str); + SCJbAppendString(ctx->js_warnings, str); } #define CHECK(pat) if (strlen((pat)) <= len && memcmp((pat), buf, MIN(len, strlen((pat)))) == 0) return true; @@ -685,59 +685,59 @@ static bool LooksLikeHTTPUA(const uint8_t *buf, uint16_t len) return false; } -static void DumpContent(JsonBuilder *js, const DetectContentData *cd) +static void DumpContent(SCJsonBuilder *js, const DetectContentData *cd) { char pattern_str[1024] = ""; DetectContentPatternPrettyPrint(cd, pattern_str, sizeof(pattern_str)); - jb_set_string(js, "pattern", pattern_str); - jb_set_uint(js, "length", cd->content_len); - jb_set_bool(js, "nocase", cd->flags & DETECT_CONTENT_NOCASE); - jb_set_bool(js, "negated", cd->flags & DETECT_CONTENT_NEGATED); - jb_set_bool(js, "starts_with", cd->flags & DETECT_CONTENT_STARTS_WITH); - jb_set_bool(js, "ends_with", cd->flags & DETECT_CONTENT_ENDS_WITH); - jb_set_bool(js, "is_mpm", cd->flags & DETECT_CONTENT_MPM); - jb_set_bool(js, "no_double_inspect", cd->flags & DETECT_CONTENT_NO_DOUBLE_INSPECTION_REQUIRED); + SCJbSetString(js, "pattern", pattern_str); + SCJbSetUint(js, "length", cd->content_len); + SCJbSetBool(js, "nocase", cd->flags & DETECT_CONTENT_NOCASE); + SCJbSetBool(js, "negated", cd->flags & DETECT_CONTENT_NEGATED); + SCJbSetBool(js, "starts_with", cd->flags & DETECT_CONTENT_STARTS_WITH); + SCJbSetBool(js, "ends_with", cd->flags & DETECT_CONTENT_ENDS_WITH); + SCJbSetBool(js, "is_mpm", cd->flags & DETECT_CONTENT_MPM); + SCJbSetBool(js, "no_double_inspect", cd->flags & DETECT_CONTENT_NO_DOUBLE_INSPECTION_REQUIRED); if (cd->flags & DETECT_CONTENT_OFFSET) { - jb_set_uint(js, "offset", cd->offset); + SCJbSetUint(js, "offset", cd->offset); } if (cd->flags & DETECT_CONTENT_DEPTH) { - jb_set_uint(js, "depth", cd->depth); + SCJbSetUint(js, "depth", cd->depth); } if (cd->flags & DETECT_CONTENT_DISTANCE) { - jb_set_int(js, "distance", cd->distance); + SCJbSetInt(js, "distance", cd->distance); } if (cd->flags & DETECT_CONTENT_WITHIN) { - jb_set_int(js, "within", cd->within); + SCJbSetInt(js, "within", cd->within); } - jb_set_bool(js, "fast_pattern", cd->flags & DETECT_CONTENT_FAST_PATTERN); - jb_set_bool(js, "relative_next", cd->flags & DETECT_CONTENT_RELATIVE_NEXT); + SCJbSetBool(js, "fast_pattern", cd->flags & DETECT_CONTENT_FAST_PATTERN); + SCJbSetBool(js, "relative_next", cd->flags & DETECT_CONTENT_RELATIVE_NEXT); } -static void DumpPcre(JsonBuilder *js, const DetectPcreData *cd) +static void DumpPcre(SCJsonBuilder *js, const DetectPcreData *cd) { - jb_set_bool(js, "relative", cd->flags & DETECT_PCRE_RELATIVE); - jb_set_bool(js, "relative_next", cd->flags & DETECT_PCRE_RELATIVE_NEXT); - jb_set_bool(js, "nocase", cd->flags & DETECT_PCRE_CASELESS); - jb_set_bool(js, "negated", cd->flags & DETECT_PCRE_NEGATE); + SCJbSetBool(js, "relative", cd->flags & DETECT_PCRE_RELATIVE); + SCJbSetBool(js, "relative_next", cd->flags & DETECT_PCRE_RELATIVE_NEXT); + SCJbSetBool(js, "nocase", cd->flags & DETECT_PCRE_CASELESS); + SCJbSetBool(js, "negated", cd->flags & DETECT_PCRE_NEGATE); } -static void DumpMatches(RuleAnalyzer *ctx, JsonBuilder *js, const SigMatchData *smd) +static void DumpMatches(RuleAnalyzer *ctx, SCJsonBuilder *js, const SigMatchData *smd) { if (smd == NULL) return; - jb_open_array(js, "matches"); + SCJbOpenArray(js, "matches"); do { - jb_start_object(js); + SCJbStartObject(js); const char *mname = sigmatch_table[smd->type].name; - jb_set_string(js, "name", mname); + SCJbSetString(js, "name", mname); switch (smd->type) { case DETECT_CONTENT: { const DetectContentData *cd = (const DetectContentData *)smd->ctx; - jb_open_object(js, "content"); + SCJbOpenObject(js, "content"); DumpContent(js, cd); if (cd->flags & DETECT_CONTENT_FAST_PATTERN_ONLY) { AnalyzerNote(ctx, (char *)"'fast_pattern:only' option is silently ignored and " @@ -761,15 +761,15 @@ static void DumpMatches(RuleAnalyzer *ctx, JsonBuilder *js, const SigMatchData * AnalyzerNote(ctx, (char *)"'distance' option for pattern w/o previous content " "was converted to 'offset'"); } - jb_close(js); + SCJbClose(js); break; } case DETECT_PCRE: { const DetectPcreData *cd = (const DetectPcreData *)smd->ctx; - jb_open_object(js, "pcre"); + SCJbOpenObject(js, "pcre"); DumpPcre(js, cd); - jb_close(js); + SCJbClose(js); if (cd->flags & DETECT_PCRE_RAWBYTES) { AnalyzerNote(ctx, (char *)"'/B' (rawbytes) option is a no-op and is silently ignored"); @@ -779,192 +779,192 @@ static void DumpMatches(RuleAnalyzer *ctx, JsonBuilder *js, const SigMatchData * case DETECT_BYTEJUMP: { const DetectBytejumpData *cd = (const DetectBytejumpData *)smd->ctx; - jb_open_object(js, "byte_jump"); - jb_set_uint(js, "nbytes", cd->nbytes); - jb_set_int(js, "offset", cd->offset); - jb_set_uint(js, "multiplier", cd->multiplier); - jb_set_int(js, "post_offset", cd->post_offset); + SCJbOpenObject(js, "byte_jump"); + SCJbSetUint(js, "nbytes", cd->nbytes); + SCJbSetInt(js, "offset", cd->offset); + SCJbSetUint(js, "multiplier", cd->multiplier); + SCJbSetInt(js, "post_offset", cd->post_offset); switch (cd->base) { case DETECT_BYTEJUMP_BASE_UNSET: - jb_set_string(js, "base", "unset"); + SCJbSetString(js, "base", "unset"); break; case DETECT_BYTEJUMP_BASE_OCT: - jb_set_string(js, "base", "oct"); + SCJbSetString(js, "base", "oct"); break; case DETECT_BYTEJUMP_BASE_DEC: - jb_set_string(js, "base", "dec"); + SCJbSetString(js, "base", "dec"); break; case DETECT_BYTEJUMP_BASE_HEX: - jb_set_string(js, "base", "hex"); + SCJbSetString(js, "base", "hex"); break; } - jb_open_array(js, "flags"); + SCJbOpenArray(js, "flags"); if (cd->flags & DETECT_BYTEJUMP_BEGIN) - jb_append_string(js, "from_beginning"); + SCJbAppendString(js, "from_beginning"); if (cd->flags & DETECT_BYTEJUMP_LITTLE) - jb_append_string(js, "little_endian"); + SCJbAppendString(js, "little_endian"); if (cd->flags & DETECT_BYTEJUMP_BIG) - jb_append_string(js, "big_endian"); + SCJbAppendString(js, "big_endian"); if (cd->flags & DETECT_BYTEJUMP_STRING) - jb_append_string(js, "string"); + SCJbAppendString(js, "string"); if (cd->flags & DETECT_BYTEJUMP_RELATIVE) - jb_append_string(js, "relative"); + SCJbAppendString(js, "relative"); if (cd->flags & DETECT_BYTEJUMP_ALIGN) - jb_append_string(js, "align"); + SCJbAppendString(js, "align"); if (cd->flags & DETECT_BYTEJUMP_DCE) - jb_append_string(js, "dce"); + SCJbAppendString(js, "dce"); if (cd->flags & DETECT_BYTEJUMP_OFFSET_BE) - jb_append_string(js, "offset_be"); + SCJbAppendString(js, "offset_be"); if (cd->flags & DETECT_BYTEJUMP_END) - jb_append_string(js, "from_end"); - jb_close(js); - jb_close(js); + SCJbAppendString(js, "from_end"); + SCJbClose(js); + SCJbClose(js); break; } case DETECT_BYTETEST: { const DetectBytetestData *cd = (const DetectBytetestData *)smd->ctx; - jb_open_object(js, "byte_test"); - jb_set_uint(js, "nbytes", cd->nbytes); - jb_set_int(js, "offset", cd->offset); + SCJbOpenObject(js, "byte_test"); + SCJbSetUint(js, "nbytes", cd->nbytes); + SCJbSetInt(js, "offset", cd->offset); switch (cd->base) { case DETECT_BYTETEST_BASE_UNSET: - jb_set_string(js, "base", "unset"); + SCJbSetString(js, "base", "unset"); break; case DETECT_BYTETEST_BASE_OCT: - jb_set_string(js, "base", "oct"); + SCJbSetString(js, "base", "oct"); break; case DETECT_BYTETEST_BASE_DEC: - jb_set_string(js, "base", "dec"); + SCJbSetString(js, "base", "dec"); break; case DETECT_BYTETEST_BASE_HEX: - jb_set_string(js, "base", "hex"); + SCJbSetString(js, "base", "hex"); break; } - jb_open_array(js, "flags"); + SCJbOpenArray(js, "flags"); if (cd->flags & DETECT_BYTETEST_LITTLE) - jb_append_string(js, "little_endian"); + SCJbAppendString(js, "little_endian"); if (cd->flags & DETECT_BYTETEST_BIG) - jb_append_string(js, "big_endian"); + SCJbAppendString(js, "big_endian"); if (cd->flags & DETECT_BYTETEST_STRING) - jb_append_string(js, "string"); + SCJbAppendString(js, "string"); if (cd->flags & DETECT_BYTETEST_RELATIVE) - jb_append_string(js, "relative"); + SCJbAppendString(js, "relative"); if (cd->flags & DETECT_BYTETEST_DCE) - jb_append_string(js, "dce"); - jb_close(js); - jb_close(js); + SCJbAppendString(js, "dce"); + SCJbClose(js); + SCJbClose(js); break; } case DETECT_ABSENT: { const DetectAbsentData *dad = (const DetectAbsentData *)smd->ctx; - jb_open_object(js, "absent"); - jb_set_bool(js, "or_else", dad->or_else); - jb_close(js); + SCJbOpenObject(js, "absent"); + SCJbSetBool(js, "or_else", dad->or_else); + SCJbClose(js); break; } case DETECT_IPOPTS: { const DetectIpOptsData *cd = (const DetectIpOptsData *)smd->ctx; - jb_open_object(js, "ipopts"); + SCJbOpenObject(js, "ipopts"); const char *flag = IpOptsFlagToString(cd->ipopt); - jb_set_string(js, "option", flag); - jb_close(js); + SCJbSetString(js, "option", flag); + SCJbClose(js); break; } case DETECT_FLOWBITS: { const DetectFlowbitsData *cd = (const DetectFlowbitsData *)smd->ctx; - jb_open_object(js, "flowbits"); + SCJbOpenObject(js, "flowbits"); switch (cd->cmd) { case DETECT_FLOWBITS_CMD_ISSET: - jb_set_string(js, "cmd", "isset"); + SCJbSetString(js, "cmd", "isset"); break; case DETECT_FLOWBITS_CMD_ISNOTSET: - jb_set_string(js, "cmd", "isnotset"); + SCJbSetString(js, "cmd", "isnotset"); break; case DETECT_FLOWBITS_CMD_SET: - jb_set_string(js, "cmd", "set"); + SCJbSetString(js, "cmd", "set"); break; case DETECT_FLOWBITS_CMD_UNSET: - jb_set_string(js, "cmd", "unset"); + SCJbSetString(js, "cmd", "unset"); break; case DETECT_FLOWBITS_CMD_TOGGLE: - jb_set_string(js, "cmd", "toggle"); + SCJbSetString(js, "cmd", "toggle"); break; } bool is_or = false; - jb_open_array(js, "names"); + SCJbOpenArray(js, "names"); if (cd->or_list_size == 0) { - jb_append_string(js, VarNameStoreSetupLookup(cd->idx, VAR_TYPE_FLOW_BIT)); + SCJbAppendString(js, VarNameStoreSetupLookup(cd->idx, VAR_TYPE_FLOW_BIT)); } else if (cd->or_list_size > 0) { is_or = true; for (uint8_t i = 0; i < cd->or_list_size; i++) { const char *varname = VarNameStoreSetupLookup(cd->or_list[i], VAR_TYPE_FLOW_BIT); - jb_append_string(js, varname); + SCJbAppendString(js, varname); } } - jb_close(js); // array + SCJbClose(js); // array if (is_or) { - jb_set_string(js, "operator", "or"); + SCJbSetString(js, "operator", "or"); } - jb_close(js); // object + SCJbClose(js); // object break; } case DETECT_ACK: { const DetectAckData *cd = (const DetectAckData *)smd->ctx; - jb_open_object(js, "ack"); - jb_set_uint(js, "number", cd->ack); - jb_close(js); + SCJbOpenObject(js, "ack"); + SCJbSetUint(js, "number", cd->ack); + SCJbClose(js); break; } case DETECT_SEQ: { const DetectSeqData *cd = (const DetectSeqData *)smd->ctx; - jb_open_object(js, "seq"); - jb_set_uint(js, "number", cd->seq); - jb_close(js); + SCJbOpenObject(js, "seq"); + SCJbSetUint(js, "number", cd->seq); + SCJbClose(js); break; } case DETECT_TCPMSS: { const DetectU16Data *cd = (const DetectU16Data *)smd->ctx; - jb_open_object(js, "tcp_mss"); + SCJbOpenObject(js, "tcp_mss"); SCDetectU16ToJson(js, cd); - jb_close(js); + SCJbClose(js); break; } case DETECT_ICMP_ID: { const DetectIcmpIdData *cd = (const DetectIcmpIdData *)smd->ctx; - jb_open_object(js, "id"); - jb_set_uint(js, "number", SCNtohs(cd->id)); - jb_close(js); + SCJbOpenObject(js, "id"); + SCJbSetUint(js, "number", SCNtohs(cd->id)); + SCJbClose(js); break; } case DETECT_WINDOW: { const DetectWindowData *wd = (const DetectWindowData *)smd->ctx; - jb_open_object(js, "window"); - jb_set_uint(js, "size", wd->size); - jb_set_bool(js, "negated", wd->negated); - jb_close(js); + SCJbOpenObject(js, "window"); + SCJbSetUint(js, "size", wd->size); + SCJbSetBool(js, "negated", wd->negated); + SCJbClose(js); break; } case DETECT_FLOW_AGE: { const DetectU32Data *cd = (const DetectU32Data *)smd->ctx; - jb_open_object(js, "flow_age"); + SCJbOpenObject(js, "flow_age"); SCDetectU32ToJson(js, cd); - jb_close(js); + SCJbClose(js); break; } } - jb_close(js); + SCJbClose(js); if (smd->is_last) break; smd++; } while (1); - jb_close(js); + SCJbClose(js); } SCMutex g_rules_analyzer_write_m = SCMUTEX_INITIALIZER; @@ -974,212 +974,212 @@ void EngineAnalysisRules2(const DetectEngineCtx *de_ctx, const Signature *s) RuleAnalyzer ctx = { NULL, NULL, NULL }; - ctx.js = jb_new_object(); + ctx.js = SCJbNewObject(); if (ctx.js == NULL) SCReturn; - jb_set_string(ctx.js, "raw", s->sig_str); - jb_set_uint(ctx.js, "id", s->id); - jb_set_uint(ctx.js, "gid", s->gid); - jb_set_uint(ctx.js, "rev", s->rev); - jb_set_string(ctx.js, "msg", s->msg); + SCJbSetString(ctx.js, "raw", s->sig_str); + SCJbSetUint(ctx.js, "id", s->id); + SCJbSetUint(ctx.js, "gid", s->gid); + SCJbSetUint(ctx.js, "rev", s->rev); + SCJbSetString(ctx.js, "msg", s->msg); const char *alproto = AppProtoToString(s->alproto); - jb_set_string(ctx.js, "app_proto", alproto); + SCJbSetString(ctx.js, "app_proto", alproto); - jb_open_array(ctx.js, "requirements"); + SCJbOpenArray(ctx.js, "requirements"); if (s->mask & SIG_MASK_REQUIRE_PAYLOAD) { - jb_append_string(ctx.js, "payload"); + SCJbAppendString(ctx.js, "payload"); } if (s->mask & SIG_MASK_REQUIRE_NO_PAYLOAD) { - jb_append_string(ctx.js, "no_payload"); + SCJbAppendString(ctx.js, "no_payload"); } if (s->mask & SIG_MASK_REQUIRE_FLOW) { - jb_append_string(ctx.js, "flow"); + SCJbAppendString(ctx.js, "flow"); } if (s->mask & SIG_MASK_REQUIRE_FLAGS_INITDEINIT) { - jb_append_string(ctx.js, "tcp_flags_init_deinit"); + SCJbAppendString(ctx.js, "tcp_flags_init_deinit"); } if (s->mask & SIG_MASK_REQUIRE_FLAGS_UNUSUAL) { - jb_append_string(ctx.js, "tcp_flags_unusual"); + SCJbAppendString(ctx.js, "tcp_flags_unusual"); } if (s->mask & SIG_MASK_REQUIRE_ENGINE_EVENT) { - jb_append_string(ctx.js, "engine_event"); + SCJbAppendString(ctx.js, "engine_event"); } if (s->mask & SIG_MASK_REQUIRE_REAL_PKT) { - jb_append_string(ctx.js, "real_pkt"); + SCJbAppendString(ctx.js, "real_pkt"); } - jb_close(ctx.js); + SCJbClose(ctx.js); - jb_open_object(ctx.js, "match_policy"); - jb_open_array(ctx.js, "actions"); + SCJbOpenObject(ctx.js, "match_policy"); + SCJbOpenArray(ctx.js, "actions"); if (s->action & ACTION_ALERT) { - jb_append_string(ctx.js, "alert"); + SCJbAppendString(ctx.js, "alert"); } if (s->action & ACTION_DROP) { - jb_append_string(ctx.js, "drop"); + SCJbAppendString(ctx.js, "drop"); } if (s->action & ACTION_REJECT) { - jb_append_string(ctx.js, "reject"); + SCJbAppendString(ctx.js, "reject"); } if (s->action & ACTION_REJECT_DST) { - jb_append_string(ctx.js, "reject_dst"); + SCJbAppendString(ctx.js, "reject_dst"); } if (s->action & ACTION_REJECT_BOTH) { - jb_append_string(ctx.js, "reject_both"); + SCJbAppendString(ctx.js, "reject_both"); } if (s->action & ACTION_CONFIG) { - jb_append_string(ctx.js, "config"); + SCJbAppendString(ctx.js, "config"); } if (s->action & ACTION_PASS) { - jb_append_string(ctx.js, "pass"); + SCJbAppendString(ctx.js, "pass"); } - jb_close(ctx.js); + SCJbClose(ctx.js); enum SignaturePropertyFlowAction flow_action = signature_properties[s->type].flow_action; switch (flow_action) { case SIG_PROP_FLOW_ACTION_PACKET: - jb_set_string(ctx.js, "scope", "packet"); + SCJbSetString(ctx.js, "scope", "packet"); break; case SIG_PROP_FLOW_ACTION_FLOW: - jb_set_string(ctx.js, "scope", "flow"); + SCJbSetString(ctx.js, "scope", "flow"); break; case SIG_PROP_FLOW_ACTION_FLOW_IF_STATEFUL: - jb_set_string(ctx.js, "scope", "flow_if_stateful"); + SCJbSetString(ctx.js, "scope", "flow_if_stateful"); break; } - jb_close(ctx.js); + SCJbClose(ctx.js); switch (s->type) { case SIG_TYPE_NOT_SET: - jb_set_string(ctx.js, "type", "unset"); + SCJbSetString(ctx.js, "type", "unset"); break; case SIG_TYPE_IPONLY: - jb_set_string(ctx.js, "type", "ip_only"); + SCJbSetString(ctx.js, "type", "ip_only"); break; case SIG_TYPE_LIKE_IPONLY: - jb_set_string(ctx.js, "type", "like_ip_only"); + SCJbSetString(ctx.js, "type", "like_ip_only"); break; case SIG_TYPE_PDONLY: - jb_set_string(ctx.js, "type", "pd_only"); + SCJbSetString(ctx.js, "type", "pd_only"); break; case SIG_TYPE_DEONLY: - jb_set_string(ctx.js, "type", "de_only"); + SCJbSetString(ctx.js, "type", "de_only"); break; case SIG_TYPE_PKT: - jb_set_string(ctx.js, "type", "pkt"); + SCJbSetString(ctx.js, "type", "pkt"); break; case SIG_TYPE_PKT_STREAM: - jb_set_string(ctx.js, "type", "pkt_stream"); + SCJbSetString(ctx.js, "type", "pkt_stream"); break; case SIG_TYPE_STREAM: - jb_set_string(ctx.js, "type", "stream"); + SCJbSetString(ctx.js, "type", "stream"); break; case SIG_TYPE_APPLAYER: - jb_set_string(ctx.js, "type", "app_layer"); + SCJbSetString(ctx.js, "type", "app_layer"); break; case SIG_TYPE_APP_TX: - jb_set_string(ctx.js, "type", "app_tx"); + SCJbSetString(ctx.js, "type", "app_tx"); break; case SIG_TYPE_MAX: - jb_set_string(ctx.js, "type", "error"); + SCJbSetString(ctx.js, "type", "error"); break; } // dependencies object and its subfields only logged if we have values if (s->init_data->is_rule_state_dependant) { - jb_open_object(ctx.js, "dependencies"); - jb_open_object(ctx.js, "flowbits"); - jb_open_object(ctx.js, "upstream"); + SCJbOpenObject(ctx.js, "dependencies"); + SCJbOpenObject(ctx.js, "flowbits"); + SCJbOpenObject(ctx.js, "upstream"); if (s->init_data->rule_state_dependant_sids_size > 0) { - jb_open_object(ctx.js, "state_modifying_rules"); - jb_open_array(ctx.js, "sids"); + SCJbOpenObject(ctx.js, "state_modifying_rules"); + SCJbOpenArray(ctx.js, "sids"); for (uint32_t i = 0; i < s->init_data->rule_state_dependant_sids_idx; i++) { - jb_append_uint(ctx.js, s->init_data->rule_state_dependant_sids_array[i]); + SCJbAppendUint(ctx.js, s->init_data->rule_state_dependant_sids_array[i]); } - jb_close(ctx.js); // sids - jb_open_array(ctx.js, "names"); + SCJbClose(ctx.js); // sids + SCJbOpenArray(ctx.js, "names"); for (uint32_t i = 0; i < s->init_data->rule_state_flowbits_ids_size - 1; i++) { if (s->init_data->rule_state_flowbits_ids_array[i] != 0) { - jb_append_string(ctx.js, + SCJbAppendString(ctx.js, VarNameStoreSetupLookup(s->init_data->rule_state_flowbits_ids_array[i], VAR_TYPE_FLOW_BIT)); } } - jb_close(ctx.js); // names - jb_close(ctx.js); // state_modifying_rules + SCJbClose(ctx.js); // names + SCJbClose(ctx.js); // state_modifying_rules } - jb_close(ctx.js); // upstream - jb_close(ctx.js); // flowbits - jb_close(ctx.js); // dependencies + SCJbClose(ctx.js); // upstream + SCJbClose(ctx.js); // flowbits + SCJbClose(ctx.js); // dependencies } - jb_open_array(ctx.js, "flags"); + SCJbOpenArray(ctx.js, "flags"); if (s->flags & SIG_FLAG_SRC_ANY) { - jb_append_string(ctx.js, "src_any"); + SCJbAppendString(ctx.js, "src_any"); } if (s->flags & SIG_FLAG_DST_ANY) { - jb_append_string(ctx.js, "dst_any"); + SCJbAppendString(ctx.js, "dst_any"); } if (s->flags & SIG_FLAG_SP_ANY) { - jb_append_string(ctx.js, "sp_any"); + SCJbAppendString(ctx.js, "sp_any"); } if (s->flags & SIG_FLAG_DP_ANY) { - jb_append_string(ctx.js, "dp_any"); + SCJbAppendString(ctx.js, "dp_any"); } if ((s->action & ACTION_ALERT) == 0) { - jb_append_string(ctx.js, "noalert"); + SCJbAppendString(ctx.js, "noalert"); } if (s->flags & SIG_FLAG_DSIZE) { - jb_append_string(ctx.js, "dsize"); + SCJbAppendString(ctx.js, "dsize"); } if (s->flags & SIG_FLAG_APPLAYER) { - jb_append_string(ctx.js, "applayer"); + SCJbAppendString(ctx.js, "applayer"); } if (s->flags & SIG_FLAG_REQUIRE_PACKET) { - jb_append_string(ctx.js, "need_packet"); + SCJbAppendString(ctx.js, "need_packet"); } if (s->flags & SIG_FLAG_REQUIRE_STREAM) { - jb_append_string(ctx.js, "need_stream"); + SCJbAppendString(ctx.js, "need_stream"); } if (s->flags & SIG_FLAG_MPM_NEG) { - jb_append_string(ctx.js, "negated_mpm"); + SCJbAppendString(ctx.js, "negated_mpm"); } if (s->flags & SIG_FLAG_FLUSH) { - jb_append_string(ctx.js, "flush"); + SCJbAppendString(ctx.js, "flush"); } if (s->flags & SIG_FLAG_REQUIRE_FLOWVAR) { - jb_append_string(ctx.js, "need_flowvar"); + SCJbAppendString(ctx.js, "need_flowvar"); } if (s->flags & SIG_FLAG_FILESTORE) { - jb_append_string(ctx.js, "filestore"); + SCJbAppendString(ctx.js, "filestore"); } if (s->flags & SIG_FLAG_TOSERVER) { - jb_append_string(ctx.js, "toserver"); + SCJbAppendString(ctx.js, "toserver"); } if (s->flags & SIG_FLAG_TOCLIENT) { - jb_append_string(ctx.js, "toclient"); + SCJbAppendString(ctx.js, "toclient"); } if (s->flags & SIG_FLAG_TLSSTORE) { - jb_append_string(ctx.js, "tlsstore"); + SCJbAppendString(ctx.js, "tlsstore"); } if (s->flags & SIG_FLAG_BYPASS) { - jb_append_string(ctx.js, "bypass"); + SCJbAppendString(ctx.js, "bypass"); } if (s->flags & SIG_FLAG_PREFILTER) { - jb_append_string(ctx.js, "prefilter"); + SCJbAppendString(ctx.js, "prefilter"); } if (s->flags & SIG_FLAG_SRC_IS_TARGET) { - jb_append_string(ctx.js, "src_is_target"); + SCJbAppendString(ctx.js, "src_is_target"); } if (s->flags & SIG_FLAG_DEST_IS_TARGET) { - jb_append_string(ctx.js, "dst_is_target"); + SCJbAppendString(ctx.js, "dst_is_target"); } - jb_close(ctx.js); + SCJbClose(ctx.js); const DetectEnginePktInspectionEngine *pkt_mpm = NULL; const DetectEngineAppInspectionEngine *app_mpm = NULL; - jb_open_array(ctx.js, "pkt_engines"); + SCJbOpenArray(ctx.js, "pkt_engines"); const DetectEnginePktInspectionEngine *pkt = s->pkt_inspect; for ( ; pkt != NULL; pkt = pkt->next) { const char *name = DetectEngineBufferTypeGetNameById(de_ctx, pkt->sm_list); @@ -1196,54 +1196,54 @@ void EngineAnalysisRules2(const DetectEngineCtx *de_ctx, const Signature *s) break; } } - jb_start_object(ctx.js); - jb_set_string(ctx.js, "name", name); - jb_set_bool(ctx.js, "is_mpm", pkt->mpm); + SCJbStartObject(ctx.js); + SCJbSetString(ctx.js, "name", name); + SCJbSetBool(ctx.js, "is_mpm", pkt->mpm); if (pkt->v1.transforms != NULL) { - jb_open_array(ctx.js, "transforms"); + SCJbOpenArray(ctx.js, "transforms"); for (int t = 0; t < pkt->v1.transforms->cnt; t++) { - jb_start_object(ctx.js); - jb_set_string(ctx.js, "name", + SCJbStartObject(ctx.js); + SCJbSetString(ctx.js, "name", sigmatch_table[pkt->v1.transforms->transforms[t].transform].name); - jb_close(ctx.js); + SCJbClose(ctx.js); } - jb_close(ctx.js); + SCJbClose(ctx.js); } DumpMatches(&ctx, ctx.js, pkt->smd); - jb_close(ctx.js); + SCJbClose(ctx.js); if (pkt->mpm) { pkt_mpm = pkt; } } - jb_close(ctx.js); - jb_open_array(ctx.js, "frame_engines"); + SCJbClose(ctx.js); + SCJbOpenArray(ctx.js, "frame_engines"); const DetectEngineFrameInspectionEngine *frame = s->frame_inspect; for (; frame != NULL; frame = frame->next) { const char *name = DetectEngineBufferTypeGetNameById(de_ctx, frame->sm_list); - jb_start_object(ctx.js); - jb_set_string(ctx.js, "name", name); - jb_set_bool(ctx.js, "is_mpm", frame->mpm); + SCJbStartObject(ctx.js); + SCJbSetString(ctx.js, "name", name); + SCJbSetBool(ctx.js, "is_mpm", frame->mpm); if (frame->v1.transforms != NULL) { - jb_open_array(ctx.js, "transforms"); + SCJbOpenArray(ctx.js, "transforms"); for (int t = 0; t < frame->v1.transforms->cnt; t++) { - jb_start_object(ctx.js); - jb_set_string(ctx.js, "name", + SCJbStartObject(ctx.js); + SCJbSetString(ctx.js, "name", sigmatch_table[frame->v1.transforms->transforms[t].transform].name); - jb_close(ctx.js); + SCJbClose(ctx.js); } - jb_close(ctx.js); + SCJbClose(ctx.js); } DumpMatches(&ctx, ctx.js, frame->smd); - jb_close(ctx.js); + SCJbClose(ctx.js); } - jb_close(ctx.js); + SCJbClose(ctx.js); if (s->init_data->init_flags & SIG_FLAG_INIT_STATE_MATCH) { bool has_stream = false; bool has_client_body_mpm = false; bool has_file_data_mpm = false; - jb_open_array(ctx.js, "engines"); + SCJbOpenArray(ctx.js, "engines"); const DetectEngineAppInspectionEngine *app = s->app_inspect; for ( ; app != NULL; app = app->next) { const char *name = DetectEngineBufferTypeGetNameById(de_ctx, app->sm_list); @@ -1266,31 +1266,31 @@ void EngineAnalysisRules2(const DetectEngineCtx *de_ctx, const Signature *s) has_file_data_mpm = true; } - jb_start_object(ctx.js); - jb_set_string(ctx.js, "name", name); + SCJbStartObject(ctx.js); + SCJbSetString(ctx.js, "name", name); const char *direction = app->dir == 0 ? "toserver" : "toclient"; - jb_set_string(ctx.js, "direction", direction); - jb_set_bool(ctx.js, "is_mpm", app->mpm); - jb_set_string(ctx.js, "app_proto", AppProtoToString(app->alproto)); - jb_set_uint(ctx.js, "progress", app->progress); + SCJbSetString(ctx.js, "direction", direction); + SCJbSetBool(ctx.js, "is_mpm", app->mpm); + SCJbSetString(ctx.js, "app_proto", AppProtoToString(app->alproto)); + SCJbSetUint(ctx.js, "progress", app->progress); if (app->v2.transforms != NULL) { - jb_open_array(ctx.js, "transforms"); + SCJbOpenArray(ctx.js, "transforms"); for (int t = 0; t < app->v2.transforms->cnt; t++) { - jb_start_object(ctx.js); - jb_set_string(ctx.js, "name", + SCJbStartObject(ctx.js); + SCJbSetString(ctx.js, "name", sigmatch_table[app->v2.transforms->transforms[t].transform].name); - jb_close(ctx.js); + SCJbClose(ctx.js); } - jb_close(ctx.js); + SCJbClose(ctx.js); } DumpMatches(&ctx, ctx.js, app->smd); - jb_close(ctx.js); + SCJbClose(ctx.js); if (app->mpm) { app_mpm = app; } } - jb_close(ctx.js); + SCJbClose(ctx.js); if (has_stream && has_client_body_mpm) AnalyzerNote(&ctx, (char *)"mpm in http_client_body combined with stream match leads to stream buffering"); @@ -1298,18 +1298,18 @@ void EngineAnalysisRules2(const DetectEngineCtx *de_ctx, const Signature *s) AnalyzerNote(&ctx, (char *)"mpm in file_data combined with stream match leads to stream buffering"); } - jb_open_object(ctx.js, "lists"); + SCJbOpenObject(ctx.js, "lists"); for (int i = 0; i < DETECT_SM_LIST_MAX; i++) { if (s->sm_arrays[i] != NULL) { - jb_open_object(ctx.js, DetectListToHumanString(i)); + SCJbOpenObject(ctx.js, DetectListToHumanString(i)); DumpMatches(&ctx, ctx.js, s->sm_arrays[i]); - jb_close(ctx.js); + SCJbClose(ctx.js); } } - jb_close(ctx.js); + SCJbClose(ctx.js); if (pkt_mpm || app_mpm) { - jb_open_object(ctx.js, "mpm"); + SCJbOpenObject(ctx.js, "mpm"); int mpm_list = pkt_mpm ? DETECT_SM_LIST_PMATCH : app_mpm->sm_list; const char *name; @@ -1317,7 +1317,7 @@ void EngineAnalysisRules2(const DetectEngineCtx *de_ctx, const Signature *s) name = DetectListToHumanString(mpm_list); else name = DetectEngineBufferTypeGetNameById(de_ctx, mpm_list); - jb_set_string(ctx.js, "buffer", name); + SCJbSetString(ctx.js, "buffer", name); SigMatchData *smd = pkt_mpm ? pkt_mpm->smd : app_mpm->smd; if (smd == NULL && mpm_list == DETECT_SM_LIST_PMATCH) { @@ -1338,34 +1338,34 @@ void EngineAnalysisRules2(const DetectEngineCtx *de_ctx, const Signature *s) break; smd++; } while (1); - jb_close(ctx.js); + SCJbClose(ctx.js); } else if (s->init_data->prefilter_sm) { - jb_open_object(ctx.js, "prefilter"); + SCJbOpenObject(ctx.js, "prefilter"); int prefilter_list = SigMatchListSMBelongsTo(s, s->init_data->prefilter_sm); const char *name; if (prefilter_list < DETECT_SM_LIST_DYNAMIC_START) name = DetectListToHumanString(prefilter_list); else name = DetectEngineBufferTypeGetNameById(de_ctx, prefilter_list); - jb_set_string(ctx.js, "buffer", name); + SCJbSetString(ctx.js, "buffer", name); const char *mname = sigmatch_table[s->init_data->prefilter_sm->type].name; - jb_set_string(ctx.js, "name", mname); - jb_close(ctx.js); + SCJbSetString(ctx.js, "name", mname); + SCJbClose(ctx.js); } if (ctx.js_warnings) { - jb_close(ctx.js_warnings); - jb_set_object(ctx.js, "warnings", ctx.js_warnings); - jb_free(ctx.js_warnings); + SCJbClose(ctx.js_warnings); + SCJbSetObject(ctx.js, "warnings", ctx.js_warnings); + SCJbFree(ctx.js_warnings); ctx.js_warnings = NULL; } if (ctx.js_notes) { - jb_close(ctx.js_notes); - jb_set_object(ctx.js, "notes", ctx.js_notes); - jb_free(ctx.js_notes); + SCJbClose(ctx.js_notes); + SCJbSetObject(ctx.js, "notes", ctx.js_notes); + SCJbFree(ctx.js_notes); ctx.js_notes = NULL; } - jb_close(ctx.js); + SCJbClose(ctx.js); const char *filename = "rules.json"; const char *log_dir = SCConfigGetLogDirectory(); @@ -1376,12 +1376,12 @@ void EngineAnalysisRules2(const DetectEngineCtx *de_ctx, const Signature *s) SCMutexLock(&g_rules_analyzer_write_m); FILE *fp = fopen(json_path, "a"); if (fp != NULL) { - fwrite(jb_ptr(ctx.js), jb_len(ctx.js), 1, fp); + fwrite(SCJbPtr(ctx.js), SCJbLen(ctx.js), 1, fp); fprintf(fp, "\n"); fclose(fp); } SCMutexUnlock(&g_rules_analyzer_write_m); - jb_free(ctx.js); + SCJbFree(ctx.js); SCReturn; } @@ -1390,11 +1390,11 @@ void DumpPatterns(DetectEngineCtx *de_ctx) if (de_ctx->pattern_hash_table == NULL) return; - JsonBuilder *root_jb = jb_new_object(); - JsonBuilder *arrays[de_ctx->buffer_type_id]; - memset(&arrays, 0, sizeof(JsonBuilder *) * de_ctx->buffer_type_id); + SCJsonBuilder *root_jb = SCJbNewObject(); + SCJsonBuilder *arrays[de_ctx->buffer_type_id]; + memset(&arrays, 0, sizeof(SCJsonBuilder *) * de_ctx->buffer_type_id); - jb_open_array(root_jb, "buffers"); + SCJbOpenArray(root_jb, "buffers"); for (HashListTableBucket *htb = HashListTableGetListHead(de_ctx->pattern_hash_table); htb != NULL; htb = HashListTableGetListNext(htb)) { @@ -1402,48 +1402,48 @@ void DumpPatterns(DetectEngineCtx *de_ctx) DetectPatternTracker *p = HashListTableGetListData(htb); DetectContentPatternPrettyPrint(p->cd, str, sizeof(str)); - JsonBuilder *jb = arrays[p->sm_list]; + SCJsonBuilder *jb = arrays[p->sm_list]; if (arrays[p->sm_list] == NULL) { - jb = arrays[p->sm_list] = jb_new_object(); + jb = arrays[p->sm_list] = SCJbNewObject(); const char *name; if (p->sm_list < DETECT_SM_LIST_DYNAMIC_START) name = DetectListToHumanString(p->sm_list); else name = DetectEngineBufferTypeGetNameById(de_ctx, p->sm_list); - jb_set_string(jb, "name", name); - jb_set_uint(jb, "list_id", p->sm_list); + SCJbSetString(jb, "name", name); + SCJbSetUint(jb, "list_id", p->sm_list); - jb_open_array(jb, "patterns"); + SCJbOpenArray(jb, "patterns"); } - jb_start_object(jb); - jb_set_string(jb, "pattern", str); - jb_set_uint(jb, "patlen", p->cd->content_len); - jb_set_uint(jb, "cnt", p->cnt); - jb_set_uint(jb, "mpm", p->mpm); - jb_open_object(jb, "flags"); - jb_set_bool(jb, "nocase", p->cd->flags & DETECT_CONTENT_NOCASE); - jb_set_bool(jb, "negated", p->cd->flags & DETECT_CONTENT_NEGATED); - jb_set_bool(jb, "depth", p->cd->flags & DETECT_CONTENT_DEPTH); - jb_set_bool(jb, "offset", p->cd->flags & DETECT_CONTENT_OFFSET); - jb_set_bool(jb, "endswith", p->cd->flags & DETECT_CONTENT_ENDS_WITH); - jb_close(jb); - jb_close(jb); + SCJbStartObject(jb); + SCJbSetString(jb, "pattern", str); + SCJbSetUint(jb, "patlen", p->cd->content_len); + SCJbSetUint(jb, "cnt", p->cnt); + SCJbSetUint(jb, "mpm", p->mpm); + SCJbOpenObject(jb, "flags"); + SCJbSetBool(jb, "nocase", p->cd->flags & DETECT_CONTENT_NOCASE); + SCJbSetBool(jb, "negated", p->cd->flags & DETECT_CONTENT_NEGATED); + SCJbSetBool(jb, "depth", p->cd->flags & DETECT_CONTENT_DEPTH); + SCJbSetBool(jb, "offset", p->cd->flags & DETECT_CONTENT_OFFSET); + SCJbSetBool(jb, "endswith", p->cd->flags & DETECT_CONTENT_ENDS_WITH); + SCJbClose(jb); + SCJbClose(jb); } for (uint32_t i = 0; i < de_ctx->buffer_type_id; i++) { - JsonBuilder *jb = arrays[i]; + SCJsonBuilder *jb = arrays[i]; if (jb == NULL) continue; - jb_close(jb); // array - jb_close(jb); // object + SCJbClose(jb); // array + SCJbClose(jb); // object - jb_append_object(root_jb, jb); - jb_free(jb); + SCJbAppendObject(root_jb, jb); + SCJbFree(jb); } - jb_close(root_jb); - jb_close(root_jb); + SCJbClose(root_jb); + SCJbClose(root_jb); const char *filename = "patterns.json"; const char *log_dir = SCConfigGetLogDirectory(); @@ -1454,12 +1454,12 @@ void DumpPatterns(DetectEngineCtx *de_ctx) SCMutexLock(&g_rules_analyzer_write_m); FILE *fp = fopen(json_path, "a"); if (fp != NULL) { - fwrite(jb_ptr(root_jb), jb_len(root_jb), 1, fp); + fwrite(SCJbPtr(root_jb), SCJbLen(root_jb), 1, fp); fprintf(fp, "\n"); fclose(fp); } SCMutexUnlock(&g_rules_analyzer_write_m); - jb_free(root_jb); + SCJbFree(root_jb); HashListTableFree(de_ctx->pattern_hash_table); de_ctx->pattern_hash_table = NULL; diff --git a/src/detect-engine-build.c b/src/detect-engine-build.c index 6c515812eb..3d03e216ba 100644 --- a/src/detect-engine-build.c +++ b/src/detect-engine-build.c @@ -599,8 +599,8 @@ static bool RuleMpmIsNegated(const Signature *s) return (cd->flags & DETECT_CONTENT_NEGATED) ? true : false; } -static JsonBuilder *RulesGroupPrintSghStats(const DetectEngineCtx *de_ctx, const SigGroupHead *sgh, - const int add_rules, const int add_mpm_stats) +static SCJsonBuilder *RulesGroupPrintSghStats(const DetectEngineCtx *de_ctx, + const SigGroupHead *sgh, const int add_rules, const int add_mpm_stats) { uint32_t prefilter_cnt = 0; uint32_t mpm_cnt = 0; @@ -636,13 +636,13 @@ static JsonBuilder *RulesGroupPrintSghStats(const DetectEngineCtx *de_ctx, const if (sgh->init == NULL) return NULL; - JsonBuilder *js = jb_new_object(); + SCJsonBuilder *js = SCJbNewObject(); if (unlikely(js == NULL)) return NULL; - jb_set_uint(js, "id", sgh->id); + SCJbSetUint(js, "id", sgh->id); - jb_open_array(js, "rules"); + SCJbOpenArray(js, "rules"); for (uint32_t x = 0; x < sgh->init->sig_cnt; x++) { const Signature *s = sgh->init->match_array[x]; if (s == NULL) @@ -765,37 +765,37 @@ static JsonBuilder *RulesGroupPrintSghStats(const DetectEngineCtx *de_ctx, const alstats[s->alproto]++; if (add_rules) { - JsonBuilder *e = jb_new_object(); + SCJsonBuilder *e = SCJbNewObject(); if (e != NULL) { - jb_set_uint(e, "sig_id", s->id); - jb_close(e); - jb_append_object(js, e); - jb_free(e); + SCJbSetUint(e, "sig_id", s->id); + SCJbClose(e); + SCJbAppendObject(js, e); + SCJbFree(e); } } } - jb_close(js); + SCJbClose(js); - jb_open_object(js, "stats"); - jb_set_uint(js, "total", sgh->init->sig_cnt); + SCJbOpenObject(js, "stats"); + SCJbSetUint(js, "total", sgh->init->sig_cnt); - jb_open_object(js, "types"); - jb_set_uint(js, "mpm", mpm_cnt); - jb_set_uint(js, "non_mpm", nonmpm_cnt); - jb_set_uint(js, "mpm_depth", mpm_depth_cnt); - jb_set_uint(js, "mpm_endswith", mpm_endswith_cnt); - jb_set_uint(js, "negated_mpm", negmpm_cnt); - jb_set_uint(js, "payload_but_no_mpm", payload_no_mpm_cnt); - jb_set_uint(js, "prefilter", prefilter_cnt); - jb_set_uint(js, "syn", syn_cnt); - jb_set_uint(js, "any5", any5_cnt); - jb_close(js); + SCJbOpenObject(js, "types"); + SCJbSetUint(js, "mpm", mpm_cnt); + SCJbSetUint(js, "non_mpm", nonmpm_cnt); + SCJbSetUint(js, "mpm_depth", mpm_depth_cnt); + SCJbSetUint(js, "mpm_endswith", mpm_endswith_cnt); + SCJbSetUint(js, "negated_mpm", negmpm_cnt); + SCJbSetUint(js, "payload_but_no_mpm", payload_no_mpm_cnt); + SCJbSetUint(js, "prefilter", prefilter_cnt); + SCJbSetUint(js, "syn", syn_cnt); + SCJbSetUint(js, "any5", any5_cnt); + SCJbClose(js); for (AppProto i = 0; i < g_alproto_max; i++) { if (alstats[i] > 0) { const char *proto_name = (i == ALPROTO_UNKNOWN) ? "payload" : AppProtoToString(i); - jb_open_object(js, proto_name); - jb_set_uint(js, "total", alstats[i]); + SCJbOpenObject(js, proto_name); + SCJbSetUint(js, "total", alstats[i]); for (int y = 0; y < max_buffer_type_id; y++) { if (alproto_mpm_bufs[i][y] == 0) @@ -807,14 +807,14 @@ static JsonBuilder *RulesGroupPrintSghStats(const DetectEngineCtx *de_ctx, const else name = DetectEngineBufferTypeGetNameById(de_ctx, y); - jb_set_uint(js, name, alproto_mpm_bufs[i][y]); + SCJbSetUint(js, name, alproto_mpm_bufs[i][y]); } - jb_close(js); + SCJbClose(js); } } if (add_mpm_stats) { - jb_open_object(js, "mpm"); + SCJbOpenObject(js, "mpm"); for (int i = 0; i < max_buffer_type_id; i++) { if (mpm_stats[i].cnt > 0) { @@ -824,42 +824,42 @@ static JsonBuilder *RulesGroupPrintSghStats(const DetectEngineCtx *de_ctx, const else name = DetectEngineBufferTypeGetNameById(de_ctx, i); - jb_open_array(js, name); + SCJbOpenArray(js, name); for (int y = 0; y < 256; y++) { if (mpm_sizes[i][y] == 0) continue; - JsonBuilder *e = jb_new_object(); + SCJsonBuilder *e = SCJbNewObject(); if (e != NULL) { - jb_set_uint(e, "size", y); - jb_set_uint(e, "count", mpm_sizes[i][y]); - jb_close(e); - jb_append_object(js, e); - jb_free(e); + SCJbSetUint(e, "size", y); + SCJbSetUint(e, "count", mpm_sizes[i][y]); + SCJbClose(e); + SCJbAppendObject(js, e); + SCJbFree(e); } } - JsonBuilder *e = jb_new_object(); + SCJsonBuilder *e = SCJbNewObject(); if (e != NULL) { - jb_set_uint(e, "total", mpm_stats[i].cnt); - jb_set_uint(e, "avg_strength", mpm_stats[i].total / mpm_stats[i].cnt); - jb_set_uint(e, "min_strength", mpm_stats[i].min); - jb_set_uint(e, "max_strength", mpm_stats[i].max); - jb_close(e); - jb_append_object(js, e); - jb_free(e); + SCJbSetUint(e, "total", mpm_stats[i].cnt); + SCJbSetUint(e, "avg_strength", mpm_stats[i].total / mpm_stats[i].cnt); + SCJbSetUint(e, "min_strength", mpm_stats[i].min); + SCJbSetUint(e, "max_strength", mpm_stats[i].max); + SCJbClose(e); + SCJbAppendObject(js, e); + SCJbFree(e); } - jb_close(js); + SCJbClose(js); } } - jb_close(js); + SCJbClose(js); } - jb_close(js); + SCJbClose(js); - jb_set_uint(js, "score", sgh->init->score); - jb_close(js); + SCJbSetUint(js, "score", sgh->init->score); + SCJbClose(js); return js; } @@ -867,7 +867,7 @@ static JsonBuilder *RulesGroupPrintSghStats(const DetectEngineCtx *de_ctx, const static void RulesDumpGrouping(const DetectEngineCtx *de_ctx, const int add_rules, const int add_mpm_stats) { - JsonBuilder *js = jb_new_object(); + SCJsonBuilder *js = SCJbNewObject(); if (unlikely(js == NULL)) return; @@ -875,70 +875,70 @@ static void RulesDumpGrouping(const DetectEngineCtx *de_ctx, if (p == IPPROTO_TCP || p == IPPROTO_UDP) { const char *name = (p == IPPROTO_TCP) ? "tcp" : "udp"; - jb_open_object(js, name); - jb_open_array(js, "toserver"); + SCJbOpenObject(js, name); + SCJbOpenArray(js, "toserver"); const DetectPort *list = (p == IPPROTO_TCP) ? de_ctx->flow_gh[1].tcp : de_ctx->flow_gh[1].udp; while (list != NULL) { - JsonBuilder *port = jb_new_object(); - jb_set_uint(port, "port", list->port); - jb_set_uint(port, "port2", list->port2); + SCJsonBuilder *port = SCJbNewObject(); + SCJbSetUint(port, "port", list->port); + SCJbSetUint(port, "port2", list->port2); - JsonBuilder *stats = + SCJsonBuilder *stats = RulesGroupPrintSghStats(de_ctx, list->sh, add_rules, add_mpm_stats); - jb_set_object(port, "rulegroup", stats); - jb_free(stats); - jb_close(port); - jb_append_object(js, port); - jb_free(port); + SCJbSetObject(port, "rulegroup", stats); + SCJbFree(stats); + SCJbClose(port); + SCJbAppendObject(js, port); + SCJbFree(port); list = list->next; } - jb_close(js); // toserver array + SCJbClose(js); // toserver array - jb_open_array(js, "toclient"); + SCJbOpenArray(js, "toclient"); list = (p == IPPROTO_TCP) ? de_ctx->flow_gh[0].tcp : de_ctx->flow_gh[0].udp; while (list != NULL) { - JsonBuilder *port = jb_new_object(); - jb_set_uint(port, "port", list->port); - jb_set_uint(port, "port2", list->port2); + SCJsonBuilder *port = SCJbNewObject(); + SCJbSetUint(port, "port", list->port); + SCJbSetUint(port, "port2", list->port2); - JsonBuilder *stats = + SCJsonBuilder *stats = RulesGroupPrintSghStats(de_ctx, list->sh, add_rules, add_mpm_stats); - jb_set_object(port, "rulegroup", stats); - jb_free(stats); - jb_close(port); - jb_append_object(js, port); - jb_free(port); + SCJbSetObject(port, "rulegroup", stats); + SCJbFree(stats); + SCJbClose(port); + SCJbAppendObject(js, port); + SCJbFree(port); list = list->next; } - jb_close(js); // toclient array - jb_close(js); + SCJbClose(js); // toclient array + SCJbClose(js); } else if (p == IPPROTO_ICMP || p == IPPROTO_ICMPV6) { const char *name = (p == IPPROTO_ICMP) ? "icmpv4" : "icmpv6"; - jb_open_object(js, name); + SCJbOpenObject(js, name); if (de_ctx->flow_gh[1].sgh[p]) { - jb_open_object(js, "toserver"); - JsonBuilder *stats = RulesGroupPrintSghStats( + SCJbOpenObject(js, "toserver"); + SCJsonBuilder *stats = RulesGroupPrintSghStats( de_ctx, de_ctx->flow_gh[1].sgh[p], add_rules, add_mpm_stats); - jb_set_object(js, "rulegroup", stats); - jb_free(stats); - jb_close(js); + SCJbSetObject(js, "rulegroup", stats); + SCJbFree(stats); + SCJbClose(js); } if (de_ctx->flow_gh[0].sgh[p]) { - jb_open_object(js, "toclient"); - JsonBuilder *stats = RulesGroupPrintSghStats( + SCJbOpenObject(js, "toclient"); + SCJsonBuilder *stats = RulesGroupPrintSghStats( de_ctx, de_ctx->flow_gh[0].sgh[p], add_rules, add_mpm_stats); - jb_set_object(js, "rulegroup", stats); - jb_free(stats); - jb_close(js); + SCJbSetObject(js, "rulegroup", stats); + SCJbFree(stats); + SCJbClose(js); } - jb_close(js); + SCJbClose(js); } } - jb_close(js); + SCJbClose(js); const char *filename = "rule_group.json"; const char *log_dir = SCConfigGetLogDirectory(); @@ -947,10 +947,10 @@ static void RulesDumpGrouping(const DetectEngineCtx *de_ctx, FILE *fp = fopen(log_path, "w"); if (fp != NULL) { - fwrite(jb_ptr(js), jb_len(js), 1, fp); + fwrite(SCJbPtr(js), SCJbLen(js), 1, fp); (void)fclose(fp); } - jb_free(js); + SCJbFree(js); } static int RulesGroupByIPProto(DetectEngineCtx *de_ctx) diff --git a/src/detect-engine-profile.c b/src/detect-engine-profile.c index a20b78c466..d7e1cba353 100644 --- a/src/detect-engine-profile.c +++ b/src/detect-engine-profile.c @@ -35,31 +35,31 @@ void RulesDumpTxMatchArray(const DetectEngineThreadCtx *det_ctx, const SigGroupH const Packet *p, const uint64_t tx_id, const uint32_t rule_cnt, const uint32_t pkt_prefilter_cnt) { - JsonBuilder *js = + SCJsonBuilder *js = CreateEveHeaderWithTxId(p, LOG_DIR_PACKET, "inspectedrules", NULL, tx_id, NULL); if (js == NULL) return; - jb_set_string(js, "app_proto", AppProtoToString(p->flow->alproto)); + SCJbSetString(js, "app_proto", AppProtoToString(p->flow->alproto)); - jb_open_object(js, "inspectedrules"); - jb_set_string(js, "inspect_type", "tx"); - jb_set_uint(js, "rule_group_id", sgh->id); - jb_set_uint(js, "rule_cnt", rule_cnt); - jb_set_uint(js, "pkt_rule_cnt", pkt_prefilter_cnt); - jb_set_uint(js, "non_pf_rule_cnt", det_ctx->non_pf_store_cnt); + SCJbOpenObject(js, "inspectedrules"); + SCJbSetString(js, "inspect_type", "tx"); + SCJbSetUint(js, "rule_group_id", sgh->id); + SCJbSetUint(js, "rule_cnt", rule_cnt); + SCJbSetUint(js, "pkt_rule_cnt", pkt_prefilter_cnt); + SCJbSetUint(js, "non_pf_rule_cnt", det_ctx->non_pf_store_cnt); - jb_open_array(js, "rules"); + SCJbOpenArray(js, "rules"); for (uint32_t x = 0; x < rule_cnt; x++) { SigIntId iid = det_ctx->tx_candidates[x].id; const Signature *s = det_ctx->de_ctx->sig_array[iid]; if (s == NULL) continue; - jb_append_uint(js, s->id); + SCJbAppendUint(js, s->id); } - jb_close(js); // close array - jb_close(js); // close inspectedrules object - jb_close(js); // final close + SCJbClose(js); // close array + SCJbClose(js); // close inspectedrules object + SCJbClose(js); // final close const char *filename = "packet_inspected_rules.json"; const char *log_dir = SCConfigGetLogDirectory(); @@ -69,41 +69,40 @@ void RulesDumpTxMatchArray(const DetectEngineThreadCtx *det_ctx, const SigGroupH SCMutexLock(&g_rule_dump_write_m); FILE *fp = fopen(log_path, "a"); if (fp != NULL) { - fwrite(jb_ptr(js), jb_len(js), 1, fp); + fwrite(SCJbPtr(js), SCJbLen(js), 1, fp); fclose(fp); } SCMutexUnlock(&g_rule_dump_write_m); - jb_free(js); + SCJbFree(js); } void RulesDumpMatchArray(const DetectEngineThreadCtx *det_ctx, const SigGroupHead *sgh, const Packet *p) { - JsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "inspectedrules", NULL, NULL); + SCJsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "inspectedrules", NULL, NULL); if (js == NULL) return; if (p->flow) { - jb_set_string(js, "app_proto", AppProtoToString(p->flow->alproto)); + SCJbSetString(js, "app_proto", AppProtoToString(p->flow->alproto)); } - jb_open_object(js, "inspectedrules"); - jb_set_string(js, "inspect_type", "packet"); - jb_set_uint(js, "rule_group_id", sgh->id); - jb_set_uint(js, "rule_cnt", det_ctx->match_array_cnt); - jb_set_uint(js, "non_pf_rule_cnt", det_ctx->non_pf_store_cnt); + SCJbOpenObject(js, "inspectedrules"); + SCJbSetString(js, "inspect_type", "packet"); + SCJbSetUint(js, "rule_group_id", sgh->id); + SCJbSetUint(js, "rule_cnt", det_ctx->match_array_cnt); + SCJbSetUint(js, "non_pf_rule_cnt", det_ctx->non_pf_store_cnt); - jb_open_array(js, "rules"); + SCJbOpenArray(js, "rules"); for (uint32_t x = 0; x < det_ctx->match_array_cnt; x++) { const Signature *s = det_ctx->match_array[x]; if (s == NULL) continue; - jb_append_uint(js, s->id); - + SCJbAppendUint(js, s->id); } - jb_close(js); // close array - jb_close(js); // close inspectedrules object - jb_close(js); // final close + SCJbClose(js); // close array + SCJbClose(js); // close inspectedrules object + SCJbClose(js); // final close const char *filename = "packet_inspected_rules.json"; const char *log_dir = SCConfigGetLogDirectory(); @@ -113,10 +112,10 @@ void RulesDumpMatchArray(const DetectEngineThreadCtx *det_ctx, SCMutexLock(&g_rule_dump_write_m); FILE *fp = fopen(log_path, "a"); if (fp != NULL) { - fwrite(jb_ptr(js), jb_len(js), 1, fp); + fwrite(SCJbPtr(js), SCJbLen(js), 1, fp); fclose(fp); } SCMutexUnlock(&g_rule_dump_write_m); - jb_free(js); + SCJbFree(js); } #endif /* PROFILING */ diff --git a/src/detect-flowbits.c b/src/detect-flowbits.c index 0d4295ceb4..face78c902 100644 --- a/src/detect-flowbits.c +++ b/src/detect-flowbits.c @@ -812,11 +812,11 @@ SCMutex g_flowbits_dump_write_m = SCMUTEX_INITIALIZER; static void DetectFlowbitsAnalyzeDump(const DetectEngineCtx *de_ctx, struct FBAnalyze *array, uint32_t elements) { - JsonBuilder *js = jb_new_object(); + SCJsonBuilder *js = SCJbNewObject(); if (js == NULL) return; - jb_open_array(js, "flowbits"); + SCJbOpenArray(js, "flowbits"); for (uint32_t x = 0; x < elements; x++) { const char *varname = VarNameStoreSetupLookup(x, VAR_TYPE_FLOW_BIT); if (varname == NULL) @@ -824,64 +824,64 @@ static void DetectFlowbitsAnalyzeDump(const DetectEngineCtx *de_ctx, const struct FBAnalyze *e = &array[x]; - jb_start_object(js); - jb_set_string(js, "name", varname); - jb_set_uint(js, "internal_id", x); - jb_set_uint(js, "set_cnt", e->cnts[DETECT_FLOWBITS_CMD_SET]); - jb_set_uint(js, "unset_cnt", e->cnts[DETECT_FLOWBITS_CMD_UNSET]); - jb_set_uint(js, "toggle_cnt", e->cnts[DETECT_FLOWBITS_CMD_TOGGLE]); - jb_set_uint(js, "isset_cnt", e->cnts[DETECT_FLOWBITS_CMD_ISSET]); - jb_set_uint(js, "isnotset_cnt", e->cnts[DETECT_FLOWBITS_CMD_ISNOTSET]); + SCJbStartObject(js); + SCJbSetString(js, "name", varname); + SCJbSetUint(js, "internal_id", x); + SCJbSetUint(js, "set_cnt", e->cnts[DETECT_FLOWBITS_CMD_SET]); + SCJbSetUint(js, "unset_cnt", e->cnts[DETECT_FLOWBITS_CMD_UNSET]); + SCJbSetUint(js, "toggle_cnt", e->cnts[DETECT_FLOWBITS_CMD_TOGGLE]); + SCJbSetUint(js, "isset_cnt", e->cnts[DETECT_FLOWBITS_CMD_ISSET]); + SCJbSetUint(js, "isnotset_cnt", e->cnts[DETECT_FLOWBITS_CMD_ISNOTSET]); // sets if (e->cnts[DETECT_FLOWBITS_CMD_SET]) { - jb_open_array(js, "sets"); + SCJbOpenArray(js, "sets"); for (uint32_t i = 0; i < e->set_sids_idx; i++) { const Signature *s = de_ctx->sig_array[e->set_sids[i]]; - jb_append_uint(js, s->id); + SCJbAppendUint(js, s->id); } - jb_close(js); + SCJbClose(js); } // gets if (e->cnts[DETECT_FLOWBITS_CMD_ISSET]) { - jb_open_array(js, "isset"); + SCJbOpenArray(js, "isset"); for (uint32_t i = 0; i < e->isset_sids_idx; i++) { const Signature *s = de_ctx->sig_array[e->isset_sids[i]]; - jb_append_uint(js, s->id); + SCJbAppendUint(js, s->id); } - jb_close(js); + SCJbClose(js); } // isnotset if (e->cnts[DETECT_FLOWBITS_CMD_ISNOTSET]) { - jb_open_array(js, "isnotset"); + SCJbOpenArray(js, "isnotset"); for (uint32_t i = 0; i < e->isnotset_sids_idx; i++) { const Signature *s = de_ctx->sig_array[e->isnotset_sids[i]]; - jb_append_uint(js, s->id); + SCJbAppendUint(js, s->id); } - jb_close(js); + SCJbClose(js); } // unset if (e->cnts[DETECT_FLOWBITS_CMD_UNSET]) { - jb_open_array(js, "unset"); + SCJbOpenArray(js, "unset"); for (uint32_t i = 0; i < e->unset_sids_idx; i++) { const Signature *s = de_ctx->sig_array[e->unset_sids[i]]; - jb_append_uint(js, s->id); + SCJbAppendUint(js, s->id); } - jb_close(js); + SCJbClose(js); } // toggle if (e->cnts[DETECT_FLOWBITS_CMD_TOGGLE]) { - jb_open_array(js, "toggle"); + SCJbOpenArray(js, "toggle"); for (uint32_t i = 0; i < e->toggle_sids_idx; i++) { const Signature *s = de_ctx->sig_array[e->toggle_sids[i]]; - jb_append_uint(js, s->id); + SCJbAppendUint(js, s->id); } - jb_close(js); + SCJbClose(js); } - jb_close(js); + SCJbClose(js); } - jb_close(js); // array - jb_close(js); // object + SCJbClose(js); // array + SCJbClose(js); // object const char *filename = "flowbits.json"; const char *log_dir = SCConfigGetLogDirectory(); @@ -891,13 +891,13 @@ static void DetectFlowbitsAnalyzeDump(const DetectEngineCtx *de_ctx, SCMutexLock(&g_flowbits_dump_write_m); FILE *fp = fopen(log_path, "w"); if (fp != NULL) { - fwrite(jb_ptr(js), jb_len(js), 1, fp); + fwrite(SCJbPtr(js), SCJbLen(js), 1, fp); fprintf(fp, "\n"); fclose(fp); } SCMutexUnlock(&g_flowbits_dump_write_m); - jb_free(js); + SCJbFree(js); } static bool PrefilterFlowbitIsPrefilterable(const Signature *s) diff --git a/src/detect-metadata.c b/src/detect-metadata.c index 6c6c8de7ff..34e531c4f7 100644 --- a/src/detect-metadata.c +++ b/src/detect-metadata.c @@ -129,7 +129,7 @@ static char *CraftPreformattedJSON(const DetectMetadata *head) BUG_ON(i != cnt); qsort(array, cnt, sizeof(DetectMetadata *), SortHelper); - JsonBuilder *js = jb_new_object(); + SCJsonBuilder *js = SCJbNewObject(); if (js == NULL) return NULL; @@ -143,38 +143,38 @@ static char *CraftPreformattedJSON(const DetectMetadata *head) if (nm && strcasecmp(m->key, nm->key) == 0) { if (!array_open) { - jb_open_array(js, m->key); + SCJbOpenArray(js, m->key); array_open = true; } - jb_append_string(js, m->value); + SCJbAppendString(js, m->value); } else { if (!array_open) { - jb_open_array(js, m->key); + SCJbOpenArray(js, m->key); } - jb_append_string(js, m->value); - jb_close(js); + SCJbAppendString(js, m->value); + SCJbClose(js); array_open = false; } } - jb_close(js); + SCJbClose(js); /* we have a complete json builder. Now store it as a C string */ - const size_t len = jb_len(js); + const size_t len = SCJbLen(js); #define MD_STR "\"metadata\":" #define MD_STR_LEN (sizeof(MD_STR) - 1) char *str = SCMalloc(len + MD_STR_LEN + 1); if (str == NULL) { - jb_free(js); + SCJbFree(js); return NULL; } char *ptr = str; memcpy(ptr, MD_STR, MD_STR_LEN); ptr += MD_STR_LEN; - memcpy(ptr, jb_ptr(js), len); + memcpy(ptr, SCJbPtr(js), len); ptr += len; *ptr = '\0'; #undef MD_STR #undef MD_STR_LEN - jb_free(js); + SCJbFree(js); return str; } diff --git a/src/output-eve-stream.c b/src/output-eve-stream.c index cfca4fdb43..88d8bf50b9 100644 --- a/src/output-eve-stream.c +++ b/src/output-eve-stream.c @@ -174,107 +174,107 @@ static OutputInitResult EveStreamLogInitCtxSub(SCConfNode *conf, OutputCtx *pare return result; } -void EveAddFlowTcpStreamFlags(const TcpStream *stream, const char *name, JsonBuilder *jb) +void EveAddFlowTcpStreamFlags(const TcpStream *stream, const char *name, SCJsonBuilder *jb) { - jb_open_array(jb, name); + SCJbOpenArray(jb, name); if (stream->flags & STREAMTCP_STREAM_FLAG_HAS_GAP) - jb_append_string(jb, "has_gap"); + SCJbAppendString(jb, "has_gap"); if (stream->flags & STREAMTCP_STREAM_FLAG_NOREASSEMBLY) - jb_append_string(jb, "noreassembly"); + SCJbAppendString(jb, "noreassembly"); if (stream->flags & STREAMTCP_STREAM_FLAG_KEEPALIVE) - jb_append_string(jb, "keepalive"); + SCJbAppendString(jb, "keepalive"); if (stream->flags & STREAMTCP_STREAM_FLAG_DEPTH_REACHED) - jb_append_string(jb, "depth_reached"); + SCJbAppendString(jb, "depth_reached"); if (stream->flags & STREAMTCP_STREAM_FLAG_TRIGGER_RAW) - jb_append_string(jb, "trigger_raw"); + SCJbAppendString(jb, "trigger_raw"); if (stream->flags & STREAMTCP_STREAM_FLAG_TIMESTAMP) - jb_append_string(jb, "timestamp"); + SCJbAppendString(jb, "timestamp"); if (stream->flags & STREAMTCP_STREAM_FLAG_ZERO_TIMESTAMP) - jb_append_string(jb, "zero_timestamp"); + SCJbAppendString(jb, "zero_timestamp"); if (stream->flags & STREAMTCP_STREAM_FLAG_APPPROTO_DETECTION_COMPLETED) - jb_append_string(jb, "appproto_detection_completed"); + SCJbAppendString(jb, "appproto_detection_completed"); if (stream->flags & STREAMTCP_STREAM_FLAG_APPPROTO_DETECTION_SKIPPED) - jb_append_string(jb, "appproto_detection_skipped"); + SCJbAppendString(jb, "appproto_detection_skipped"); if (stream->flags & STREAMTCP_STREAM_FLAG_NEW_RAW_DISABLED) - jb_append_string(jb, "new_raw_disabled"); + SCJbAppendString(jb, "new_raw_disabled"); if (stream->flags & STREAMTCP_STREAM_FLAG_DISABLE_RAW) - jb_append_string(jb, "disable_raw"); + SCJbAppendString(jb, "disable_raw"); if (stream->flags & STREAMTCP_STREAM_FLAG_RST_RECV) - jb_append_string(jb, "rst_recv"); - jb_close(jb); + SCJbAppendString(jb, "rst_recv"); + SCJbClose(jb); } -void EveAddFlowTcpFlags(const TcpSession *ssn, const char *name, JsonBuilder *jb) +void EveAddFlowTcpFlags(const TcpSession *ssn, const char *name, SCJsonBuilder *jb) { - jb_open_object(jb, "flags"); + SCJbOpenObject(jb, "flags"); - jb_open_array(jb, name); + SCJbOpenArray(jb, name); if (ssn->flags & STREAMTCP_FLAG_MIDSTREAM) { - jb_append_string(jb, "midstream"); + SCJbAppendString(jb, "midstream"); } if (ssn->flags & STREAMTCP_FLAG_MIDSTREAM_ESTABLISHED) { - jb_append_string(jb, "midstream_established"); + SCJbAppendString(jb, "midstream_established"); } if (ssn->flags & STREAMTCP_FLAG_MIDSTREAM_SYNACK) { - jb_append_string(jb, "midstream_synack"); + SCJbAppendString(jb, "midstream_synack"); } if (ssn->flags & STREAMTCP_FLAG_TIMESTAMP) { - jb_append_string(jb, "timestamp"); + SCJbAppendString(jb, "timestamp"); } if (ssn->flags & STREAMTCP_FLAG_SERVER_WSCALE) { - jb_append_string(jb, "server_wscale"); + SCJbAppendString(jb, "server_wscale"); } if (ssn->flags & STREAMTCP_FLAG_CLOSED_BY_RST) { - jb_append_string(jb, "closed_by_rst"); + SCJbAppendString(jb, "closed_by_rst"); } if (ssn->flags & STREAMTCP_FLAG_4WHS) { - jb_append_string(jb, "4whs"); + SCJbAppendString(jb, "4whs"); } if (ssn->flags & STREAMTCP_FLAG_DETECTION_EVASION_ATTEMPT) { - jb_append_string(jb, "detect_evasion_attempt"); + SCJbAppendString(jb, "detect_evasion_attempt"); } if (ssn->flags & STREAMTCP_FLAG_CLIENT_SACKOK) { - jb_append_string(jb, "client_sackok"); + SCJbAppendString(jb, "client_sackok"); } if (ssn->flags & STREAMTCP_FLAG_CLIENT_SACKOK) { - jb_append_string(jb, "sackok"); + SCJbAppendString(jb, "sackok"); } if (ssn->flags & STREAMTCP_FLAG_3WHS_CONFIRMED) { - jb_append_string(jb, "3whs_confirmed"); + SCJbAppendString(jb, "3whs_confirmed"); } if (ssn->flags & STREAMTCP_FLAG_APP_LAYER_DISABLED) { - jb_append_string(jb, "app_layer_disabled"); + SCJbAppendString(jb, "app_layer_disabled"); } if (ssn->flags & STREAMTCP_FLAG_BYPASS) { - jb_append_string(jb, "bypass"); + SCJbAppendString(jb, "bypass"); } if (ssn->flags & STREAMTCP_FLAG_TCP_FAST_OPEN) { - jb_append_string(jb, "tcp_fast_open"); + SCJbAppendString(jb, "tcp_fast_open"); } if (ssn->flags & STREAMTCP_FLAG_TFO_DATA_IGNORED) { - jb_append_string(jb, "tfo_data_ignored"); + SCJbAppendString(jb, "tfo_data_ignored"); } - jb_close(jb); - jb_close(jb); + SCJbClose(jb); + SCJbClose(jb); } -static void LogStreamSB(const StreamingBuffer *sb, JsonBuilder *js) +static void LogStreamSB(const StreamingBuffer *sb, SCJsonBuilder *js) { - jb_set_uint(js, "sb_region_size", sb->region.buf_size); + SCJbSetUint(js, "sb_region_size", sb->region.buf_size); } -static void LogStream(const TcpStream *stream, JsonBuilder *js) +static void LogStream(const TcpStream *stream, SCJsonBuilder *js) { - jb_set_uint(js, "isn", stream->isn); - jb_set_uint(js, "next_seq", stream->next_seq); - jb_set_uint(js, "last_ack", stream->last_ack); - jb_set_uint(js, "next_win", stream->next_win); + SCJbSetUint(js, "isn", stream->isn); + SCJbSetUint(js, "next_seq", stream->next_seq); + SCJbSetUint(js, "last_ack", stream->last_ack); + SCJbSetUint(js, "next_win", stream->next_win); if (!(stream->flags & STREAMTCP_STREAM_FLAG_NOREASSEMBLY)) { - jb_set_uint(js, "base_seq", stream->base_seq); - jb_set_uint(js, "segs_right_edge", stream->segs_right_edge); + SCJbSetUint(js, "base_seq", stream->base_seq); + SCJbSetUint(js, "segs_right_edge", stream->segs_right_edge); } - jb_set_uint(js, "window", stream->window); - jb_set_uint(js, "wscale", stream->wscale); + SCJbSetUint(js, "window", stream->window); + SCJbSetUint(js, "wscale", stream->wscale); EveAddFlowTcpStreamFlags(stream, "flags", js); @@ -284,7 +284,7 @@ static void LogStream(const TcpStream *stream, JsonBuilder *js) { segs++; } - jb_set_uint(js, "seg_cnt", segs); + SCJbSetUint(js, "seg_cnt", segs); LogStreamSB(&stream->sb, js); } @@ -305,104 +305,104 @@ static int EveStreamLogger(ThreadVars *tv, void *thread_data, const Packet *p) JsonAddrInfo addr = json_addr_info_zero; JsonAddrInfoInit(p, LOG_DIR_PACKET, &addr); - JsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "stream_tcp", &addr, ctx->eve_ctx); + SCJsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "stream_tcp", &addr, ctx->eve_ctx); if (unlikely(js == NULL)) return TM_ECODE_OK; if (p->flow != NULL) { if (p->flowflags & FLOW_PKT_TOSERVER) { - jb_set_string(js, "direction", "to_server"); + SCJbSetString(js, "direction", "to_server"); } else { - jb_set_string(js, "direction", "to_client"); + SCJbSetString(js, "direction", "to_client"); } } - jb_open_object(js, "stream_tcp"); - jb_open_object(js, "packet"); + SCJbOpenObject(js, "stream_tcp"); + SCJbOpenObject(js, "packet"); if (PacketIsIPv4(p)) { const IPV4Hdr *ip4h = PacketGetIPv4(p); - jb_set_uint(js, "len", IPV4_GET_RAW_IPLEN(ip4h)); - jb_set_uint(js, "tos", IPV4_GET_RAW_IPTOS(ip4h)); - jb_set_uint(js, "ttl", IPV4_GET_RAW_IPTTL(ip4h)); - jb_set_uint(js, "ipid", IPV4_GET_RAW_IPID(ip4h)); + SCJbSetUint(js, "len", IPV4_GET_RAW_IPLEN(ip4h)); + SCJbSetUint(js, "tos", IPV4_GET_RAW_IPTOS(ip4h)); + SCJbSetUint(js, "ttl", IPV4_GET_RAW_IPTTL(ip4h)); + SCJbSetUint(js, "ipid", IPV4_GET_RAW_IPID(ip4h)); } else if (PacketIsIPv6(p)) { const IPV6Hdr *ip6h = PacketGetIPv6(p); - jb_set_uint(js, "len", IPV6_GET_RAW_PLEN(ip6h)); - jb_set_uint(js, "tc", IPV6_GET_RAW_CLASS(ip6h)); - jb_set_uint(js, "hoplimit", IPV6_GET_RAW_HLIM(ip6h)); - jb_set_uint(js, "flowlbl", IPV6_GET_RAW_FLOW(ip6h)); + SCJbSetUint(js, "len", IPV6_GET_RAW_PLEN(ip6h)); + SCJbSetUint(js, "tc", IPV6_GET_RAW_CLASS(ip6h)); + SCJbSetUint(js, "hoplimit", IPV6_GET_RAW_HLIM(ip6h)); + SCJbSetUint(js, "flowlbl", IPV6_GET_RAW_FLOW(ip6h)); } if (PacketIsTCP(p)) { const TCPHdr *tcph = PacketGetTCP(p); - jb_set_uint(js, "tcpseq", TCP_GET_RAW_SEQ(tcph)); - jb_set_uint(js, "tcpack", TCP_GET_RAW_ACK(tcph)); - jb_set_uint(js, "tcpwin", TCP_GET_RAW_WINDOW(tcph)); - jb_set_bool(js, "syn", TCP_ISSET_FLAG_RAW_SYN(tcph) ? true : false); - jb_set_bool(js, "ack", TCP_ISSET_FLAG_RAW_ACK(tcph) ? true : false); - jb_set_bool(js, "psh", TCP_ISSET_FLAG_RAW_PUSH(tcph) ? true : false); - jb_set_bool(js, "rst", TCP_ISSET_FLAG_RAW_RST(tcph) ? true : false); - jb_set_bool(js, "urg", TCP_ISSET_FLAG_RAW_URG(tcph) ? true : false); - jb_set_bool(js, "fin", TCP_ISSET_FLAG_RAW_FIN(tcph) ? true : false); - jb_set_uint(js, "tcpres", TCP_GET_RAW_X2(tcph)); - jb_set_uint(js, "tcpurgp", TCP_GET_RAW_URG_POINTER(tcph)); - - jb_open_array(js, "flags"); + SCJbSetUint(js, "tcpseq", TCP_GET_RAW_SEQ(tcph)); + SCJbSetUint(js, "tcpack", TCP_GET_RAW_ACK(tcph)); + SCJbSetUint(js, "tcpwin", TCP_GET_RAW_WINDOW(tcph)); + SCJbSetBool(js, "syn", TCP_ISSET_FLAG_RAW_SYN(tcph) ? true : false); + SCJbSetBool(js, "ack", TCP_ISSET_FLAG_RAW_ACK(tcph) ? true : false); + SCJbSetBool(js, "psh", TCP_ISSET_FLAG_RAW_PUSH(tcph) ? true : false); + SCJbSetBool(js, "rst", TCP_ISSET_FLAG_RAW_RST(tcph) ? true : false); + SCJbSetBool(js, "urg", TCP_ISSET_FLAG_RAW_URG(tcph) ? true : false); + SCJbSetBool(js, "fin", TCP_ISSET_FLAG_RAW_FIN(tcph) ? true : false); + SCJbSetUint(js, "tcpres", TCP_GET_RAW_X2(tcph)); + SCJbSetUint(js, "tcpurgp", TCP_GET_RAW_URG_POINTER(tcph)); + + SCJbOpenArray(js, "flags"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_RETRANSMISSION) - jb_append_string(js, "retransmission"); + SCJbAppendString(js, "retransmission"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_SPURIOUS_RETRANSMISSION) - jb_append_string(js, "spurious_retransmission"); + SCJbAppendString(js, "spurious_retransmission"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_KEEPALIVE) - jb_append_string(js, "keepalive"); + SCJbAppendString(js, "keepalive"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_KEEPALIVEACK) - jb_append_string(js, "keepalive_ack"); + SCJbAppendString(js, "keepalive_ack"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_WINDOWUPDATE) - jb_append_string(js, "window_update"); + SCJbAppendString(js, "window_update"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_EVENTSET) - jb_append_string(js, "event_set"); + SCJbAppendString(js, "event_set"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_STATE_UPDATE) - jb_append_string(js, "state_update"); + SCJbAppendString(js, "state_update"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_DUP_ACK) - jb_append_string(js, "dup_ack"); + SCJbAppendString(js, "dup_ack"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_DSACK) - jb_append_string(js, "dsack"); + SCJbAppendString(js, "dsack"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_ACK_UNSEEN_DATA) - jb_append_string(js, "ack_unseen_data"); + SCJbAppendString(js, "ack_unseen_data"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_TCP_SESSION_REUSE) - jb_append_string(js, "tcp_session_reuse"); + SCJbAppendString(js, "tcp_session_reuse"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_TCP_ZERO_WIN_PROBE) - jb_append_string(js, "zero_window_probe"); + SCJbAppendString(js, "zero_window_probe"); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_TCP_ZERO_WIN_PROBE_ACK) - jb_append_string(js, "zero_window_probe_ack"); - jb_close(js); + SCJbAppendString(js, "zero_window_probe_ack"); + SCJbClose(js); } - jb_close(js); + SCJbClose(js); - jb_open_object(js, "session"); + SCJbOpenObject(js, "session"); if (p->flow != NULL && p->flow->protoctx != NULL) { const TcpSession *ssn = p->flow->protoctx; const char *tcp_state = StreamTcpStateAsString(ssn->state); if (tcp_state != NULL) - jb_set_string(js, "state", tcp_state); + SCJbSetString(js, "state", tcp_state); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_STATE_UPDATE) { const char *tcp_pstate = StreamTcpStateAsString(ssn->pstate); if (tcp_pstate != NULL) - jb_set_string(js, "pstate", tcp_pstate); + SCJbSetString(js, "pstate", tcp_pstate); } EveAddFlowTcpFlags(ssn, "flags", js); - jb_open_object(js, "client"); + SCJbOpenObject(js, "client"); LogStream(&ssn->client, js); - jb_close(js); - jb_open_object(js, "server"); + SCJbClose(js); + SCJbOpenObject(js, "server"); LogStream(&ssn->server, js); - jb_close(js); + SCJbClose(js); } - jb_close(js); + SCJbClose(js); if (p->l4.vars.tcp.stream_pkt_flags & STREAM_PKT_FLAG_EVENTSET) { - jb_open_array(js, "events"); + SCJbOpenArray(js, "events"); for (int i = 0; i < p->events.cnt; i++) { uint8_t event_code = p->events.events[i]; bool is_decode = EVENT_IS_DECODER_PACKET_ERROR(event_code); @@ -413,21 +413,21 @@ static int EveStreamLogger(ThreadVars *tv, void *thread_data, const Packet *p) const char *event = DEvents[event_code].event_name; if (event == NULL) continue; - jb_append_string(js, event); + SCJbAppendString(js, event); } - jb_close(js); + SCJbClose(js); } if (p->drop_reason != 0) { const char *str = PacketDropReasonToString(p->drop_reason); - jb_set_string(js, "reason", str); + SCJbSetString(js, "reason", str); } /* Close stream. */ - jb_close(js); + SCJbClose(js); OutputJsonBuilderBuffer(tv, p, p->flow, js, td->ctx); - jb_free(js); + SCJbFree(js); return TM_ECODE_OK; } diff --git a/src/output-eve-stream.h b/src/output-eve-stream.h index 02de059d25..d09f3a3325 100644 --- a/src/output-eve-stream.h +++ b/src/output-eve-stream.h @@ -25,7 +25,7 @@ #include "stream-tcp.h" void EveStreamLogRegister(void); -void EveAddFlowTcpStreamFlags(const TcpStream *stream, const char *name, JsonBuilder *jb); -void EveAddFlowTcpFlags(const TcpSession *ssn, const char *name, JsonBuilder *jb); +void EveAddFlowTcpStreamFlags(const TcpStream *stream, const char *name, SCJsonBuilder *jb); +void EveAddFlowTcpFlags(const TcpSession *ssn, const char *name, SCJsonBuilder *jb); #endif /* SURICATA_OUTPUT_EVE_STREAM_H */ diff --git a/src/output-eve.c b/src/output-eve.c index 2c67f3b6c3..e39be19569 100644 --- a/src/output-eve.c +++ b/src/output-eve.c @@ -50,7 +50,7 @@ bool SCEveRegisterCallback(SCEveUserCallbackFn fn, void *user) return true; } -void SCEveRunCallbacks(ThreadVars *tv, const Packet *p, Flow *f, JsonBuilder *jb) +void SCEveRunCallbacks(ThreadVars *tv, const Packet *p, Flow *f, SCJsonBuilder *jb) { EveUserCallback *cb = eve_user_callbacks; while (cb != NULL) { diff --git a/src/output-eve.h b/src/output-eve.h index 0f3ffe43f6..09fd196a09 100644 --- a/src/output-eve.h +++ b/src/output-eve.h @@ -178,9 +178,9 @@ SCEveFileType *SCEveFindFileType(const char *name); * * The function type for callbacks registered with * SCEveRegisterCallback. This function will be called with the - * JsonBuilder just prior to the top-level object being closed. New + * SCJsonBuilder just prior to the top-level object being closed. New * fields maybe added, however there is no way to alter existing - * objects already added to the JsonBuilder. + * objects already added to the SCJsonBuilder. * * \param tv The ThreadVars for the thread performing the logging. * \param p Packet if available. @@ -188,12 +188,12 @@ SCEveFileType *SCEveFindFileType(const char *name); * \param user User data provided during callback registration. */ typedef void (*SCEveUserCallbackFn)( - ThreadVars *tv, const Packet *p, Flow *f, JsonBuilder *jb, void *user); + ThreadVars *tv, const Packet *p, Flow *f, SCJsonBuilder *jb, void *user); /** \brief Register a callback for adding extra information to EVE logs. * * Allow users to register a callback for each EVE log. The callback - * is called just before the root object on the JsonBuilder is to be + * is called just before the root object on the SCJsonBuilder is to be * closed. * * New objects and fields can be append, but exist entries cannot be modified. @@ -202,7 +202,7 @@ typedef void (*SCEveUserCallbackFn)( * NULL. * * Limitations: At this time the callbacks will only be called for EVE - * loggers that use JsonBuilder, notably this means it won't be called + * loggers that use SCJsonBuilder, notably this means it won't be called * for stats records at this time. * * \returns true if callback is registered, false is not due to memory @@ -214,6 +214,6 @@ bool SCEveRegisterCallback(SCEveUserCallbackFn fn, void *user); * * Run EVE callbacks. */ -void SCEveRunCallbacks(ThreadVars *tv, const Packet *p, Flow *f, JsonBuilder *jb); +void SCEveRunCallbacks(ThreadVars *tv, const Packet *p, Flow *f, SCJsonBuilder *jb); #endif diff --git a/src/output-filestore.c b/src/output-filestore.c index 2a7894c468..809f4c8bca 100644 --- a/src/output-filestore.c +++ b/src/output-filestore.c @@ -166,17 +166,17 @@ static void OutputFilestoreFinalizeFiles(ThreadVars *tv, const OutputFilestoreLo ff->file_store_id) == (int)sizeof(js_metadata_filename)) { WARN_ONCE(WOT_SNPRINTF, "Failed to write file info record. Output filename truncated."); } else { - JsonBuilder *js_fileinfo = + SCJsonBuilder *js_fileinfo = JsonBuildFileInfoRecord(p, ff, tx, tx_id, true, dir, ctx->xff_cfg, NULL); if (likely(js_fileinfo != NULL)) { - jb_close(js_fileinfo); + SCJbClose(js_fileinfo); FILE *out = fopen(js_metadata_filename, "w"); if (out != NULL) { - size_t js_len = jb_len(js_fileinfo); - fwrite(jb_ptr(js_fileinfo), js_len, 1, out); + size_t js_len = SCJbLen(js_fileinfo); + fwrite(SCJbPtr(js_fileinfo), js_len, 1, out); fclose(out); } - jb_free(js_fileinfo); + SCJbFree(js_fileinfo); } } } diff --git a/src/output-json-alert.c b/src/output-json-alert.c index 44835670dc..232e6174c2 100644 --- a/src/output-json-alert.c +++ b/src/output-json-alert.c @@ -111,12 +111,12 @@ typedef struct JsonAlertLogThread_ { OutputJsonThreadCtx *ctx; } JsonAlertLogThread; -static void AlertJsonSourceTarget(const Packet *p, const PacketAlert *pa, - JsonBuilder *js, JsonAddrInfo *addr) +static void AlertJsonSourceTarget( + const Packet *p, const PacketAlert *pa, SCJsonBuilder *js, JsonAddrInfo *addr) { - jb_open_object(js, "source"); + SCJbOpenObject(js, "source"); if (pa->s->flags & SIG_FLAG_DEST_IS_TARGET) { - jb_set_string(js, "ip", addr->src_ip); + SCJbSetString(js, "ip", addr->src_ip); switch (p->proto) { case IPPROTO_ICMP: case IPPROTO_ICMPV6: @@ -124,11 +124,11 @@ static void AlertJsonSourceTarget(const Packet *p, const PacketAlert *pa, case IPPROTO_UDP: case IPPROTO_TCP: case IPPROTO_SCTP: - jb_set_uint(js, "port", addr->sp); + SCJbSetUint(js, "port", addr->sp); break; } } else if (pa->s->flags & SIG_FLAG_SRC_IS_TARGET) { - jb_set_string(js, "ip", addr->dst_ip); + SCJbSetString(js, "ip", addr->dst_ip); switch (p->proto) { case IPPROTO_ICMP: case IPPROTO_ICMPV6: @@ -136,15 +136,15 @@ static void AlertJsonSourceTarget(const Packet *p, const PacketAlert *pa, case IPPROTO_UDP: case IPPROTO_TCP: case IPPROTO_SCTP: - jb_set_uint(js, "port", addr->dp); + SCJbSetUint(js, "port", addr->dp); break; } } - jb_close(js); + SCJbClose(js); - jb_open_object(js, "target"); + SCJbOpenObject(js, "target"); if (pa->s->flags & SIG_FLAG_DEST_IS_TARGET) { - jb_set_string(js, "ip", addr->dst_ip); + SCJbSetString(js, "ip", addr->dst_ip); switch (p->proto) { case IPPROTO_ICMP: case IPPROTO_ICMPV6: @@ -152,11 +152,11 @@ static void AlertJsonSourceTarget(const Packet *p, const PacketAlert *pa, case IPPROTO_UDP: case IPPROTO_TCP: case IPPROTO_SCTP: - jb_set_uint(js, "port", addr->dp); + SCJbSetUint(js, "port", addr->dp); break; } } else if (pa->s->flags & SIG_FLAG_SRC_IS_TARGET) { - jb_set_string(js, "ip", addr->src_ip); + SCJbSetString(js, "ip", addr->src_ip); switch (p->proto) { case IPPROTO_ICMP: case IPPROTO_ICMPV6: @@ -164,21 +164,21 @@ static void AlertJsonSourceTarget(const Packet *p, const PacketAlert *pa, case IPPROTO_UDP: case IPPROTO_TCP: case IPPROTO_SCTP: - jb_set_uint(js, "port", addr->sp); + SCJbSetUint(js, "port", addr->sp); break; } } - jb_close(js); + SCJbClose(js); } -static void AlertJsonReference(const PacketAlert *pa, JsonBuilder *jb) +static void AlertJsonReference(const PacketAlert *pa, SCJsonBuilder *jb) { if (!pa->s->references) { return; } const DetectReference *kv = pa->s->references; - jb_open_array(jb, "references"); + SCJbOpenArray(jb, "references"); while (kv) { /* Note that the key and reference sizes have been bound * checked during parsing @@ -186,20 +186,20 @@ static void AlertJsonReference(const PacketAlert *pa, JsonBuilder *jb) const size_t size_needed = kv->key_len + kv->reference_len + 1; char kv_store[size_needed]; snprintf(kv_store, size_needed, "%s%s", kv->key, kv->reference); - jb_append_string(jb, kv_store); + SCJbAppendString(jb, kv_store); kv = kv->next; } - jb_close(jb); + SCJbClose(jb); } -static void AlertJsonMetadata(const PacketAlert *pa, JsonBuilder *js) +static void AlertJsonMetadata(const PacketAlert *pa, SCJsonBuilder *js) { if (pa->s->metadata && pa->s->metadata->json_str) { - jb_set_formatted(js, pa->s->metadata->json_str); + SCJbSetFormatted(js, pa->s->metadata->json_str); } } -void AlertJsonHeader(const Packet *p, const PacketAlert *pa, JsonBuilder *js, uint16_t flags, +void AlertJsonHeader(const Packet *p, const PacketAlert *pa, SCJsonBuilder *js, uint16_t flags, JsonAddrInfo *addr, char *xff_buffer) { const char *action = "allowed"; @@ -219,26 +219,26 @@ void AlertJsonHeader(const Packet *p, const PacketAlert *pa, JsonBuilder *js, ui /* Add tx_id to root element for correlation with other events. */ /* json_object_del(js, "tx_id"); */ if (pa->flags & PACKET_ALERT_FLAG_TX) { - jb_set_uint(js, "tx_id", pa->tx_id); + SCJbSetUint(js, "tx_id", pa->tx_id); } if (pa->flags & PACKET_ALERT_FLAG_TX_GUESSED) { - jb_set_bool(js, "tx_guessed", true); + SCJbSetBool(js, "tx_guessed", true); } - jb_open_object(js, "alert"); + SCJbOpenObject(js, "alert"); - jb_set_string(js, "action", action); - jb_set_uint(js, "gid", pa->s->gid); - jb_set_uint(js, "signature_id", pa->s->id); - jb_set_uint(js, "rev", pa->s->rev); - /* TODO: JsonBuilder should handle unprintable characters like + SCJbSetString(js, "action", action); + SCJbSetUint(js, "gid", pa->s->gid); + SCJbSetUint(js, "signature_id", pa->s->id); + SCJbSetUint(js, "rev", pa->s->rev); + /* TODO: SCJsonBuilder should handle unprintable characters like * SCJsonString. */ - jb_set_string(js, "signature", pa->s->msg ? pa->s->msg: ""); - jb_set_string(js, "category", pa->s->class_msg ? pa->s->class_msg: ""); - jb_set_uint(js, "severity", pa->s->prio); + SCJbSetString(js, "signature", pa->s->msg ? pa->s->msg : ""); + SCJbSetString(js, "category", pa->s->class_msg ? pa->s->class_msg : ""); + SCJbSetUint(js, "severity", pa->s->prio); if (p->tenant_id > 0) { - jb_set_uint(js, "tenant_id", p->tenant_id); + SCJbSetUint(js, "tenant_id", p->tenant_id); } if (addr && pa->s->flags & SIG_FLAG_HAS_TARGET) { @@ -254,22 +254,22 @@ void AlertJsonHeader(const Packet *p, const PacketAlert *pa, JsonBuilder *js, ui } if (flags & LOG_JSON_RULE) { - jb_set_string(js, "rule", pa->s->sig_str); + SCJbSetString(js, "rule", pa->s->sig_str); } if (xff_buffer && xff_buffer[0]) { - jb_set_string(js, "xff", xff_buffer); + SCJbSetString(js, "xff", xff_buffer); } - jb_close(js); + SCJbClose(js); } -static void AlertJsonTunnel(const Packet *p, JsonBuilder *js) +static void AlertJsonTunnel(const Packet *p, SCJsonBuilder *js) { if (p->root == NULL) { return; } - jb_open_object(js, "tunnel"); + SCJbOpenObject(js, "tunnel"); enum PktSrcEnum pkt_src; uint64_t pcap_cnt; @@ -278,27 +278,27 @@ static void AlertJsonTunnel(const Packet *p, JsonBuilder *js) pcap_cnt = p->root->pcap_cnt; pkt_src = p->root->pkt_src; - jb_set_string(js, "src_ip", addr.src_ip); - jb_set_uint(js, "src_port", addr.sp); - jb_set_string(js, "dest_ip", addr.dst_ip); - jb_set_uint(js, "dest_port", addr.dp); - jb_set_string(js, "proto", addr.proto); + SCJbSetString(js, "src_ip", addr.src_ip); + SCJbSetUint(js, "src_port", addr.sp); + SCJbSetString(js, "dest_ip", addr.dst_ip); + SCJbSetUint(js, "dest_port", addr.dp); + SCJbSetString(js, "proto", addr.proto); - jb_set_uint(js, "depth", p->recursion_level); + SCJbSetUint(js, "depth", p->recursion_level); if (pcap_cnt != 0) { - jb_set_uint(js, "pcap_cnt", pcap_cnt); + SCJbSetUint(js, "pcap_cnt", pcap_cnt); } - jb_set_string(js, "pkt_src", PktSrcToString(pkt_src)); - jb_close(js); + SCJbSetString(js, "pkt_src", PktSrcToString(pkt_src)); + SCJbClose(js); } -static void AlertAddPayload(AlertJsonOutputCtx *json_output_ctx, JsonBuilder *js, const Packet *p) +static void AlertAddPayload(AlertJsonOutputCtx *json_output_ctx, SCJsonBuilder *js, const Packet *p) { if (json_output_ctx->flags & LOG_JSON_PAYLOAD_BASE64) { - jb_set_base64(js, "payload", p->payload, p->payload_len); + SCJbSetBase64(js, "payload", p->payload, p->payload_len); } if (json_output_ctx->flags & LOG_JSON_PAYLOAD_LENGTH) { - jb_set_uint(js, "payload_length", p->payload_len); + SCJbSetUint(js, "payload_length", p->payload_len); } if (json_output_ctx->flags & LOG_JSON_PAYLOAD) { @@ -308,22 +308,22 @@ static void AlertAddPayload(AlertJsonOutputCtx *json_output_ctx, JsonBuilder *js p->payload_len + 1, p->payload, p->payload_len); printable_buf[p->payload_len] = '\0'; - jb_set_string(js, "payload_printable", (char *)printable_buf); + SCJbSetString(js, "payload_printable", (char *)printable_buf); } } -static void AlertAddAppLayer(const Packet *p, JsonBuilder *jb, - const uint64_t tx_id, const uint16_t option_flags) +static void AlertAddAppLayer( + const Packet *p, SCJsonBuilder *jb, const uint64_t tx_id, const uint16_t option_flags) { const AppProto proto = FlowGetAppProtocol(p->flow); EveJsonSimpleAppLayerLogger *al = SCEveJsonSimpleGetLogger(proto); - JsonBuilderMark mark = { 0, 0, 0 }; + SCJsonBuilderMark mark = { 0, 0, 0 }; if (al && al->LogTx) { void *state = FlowGetAppState(p->flow); if (state) { void *tx = AppLayerParserGetTx(p->flow->proto, proto, state, tx_id); if (tx) { - jb_get_mark(jb, &mark); + SCJbGetMark(jb, &mark); switch (proto) { // first check some protocols need special options for alerts logging case ALPROTO_WEBSOCKET: @@ -332,14 +332,14 @@ static void AlertAddAppLayer(const Packet *p, JsonBuilder *jb, bool pp = (option_flags & LOG_JSON_WEBSOCKET_PAYLOAD) != 0; bool pb64 = (option_flags & LOG_JSON_WEBSOCKET_PAYLOAD_BASE64) != 0; if (!SCWebSocketLogDetails(tx, jb, pp, pb64)) { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } // nothing more to log or do return; } } if (!al->LogTx(tx, jb)) { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } } } @@ -348,7 +348,7 @@ static void AlertAddAppLayer(const Packet *p, JsonBuilder *jb, switch (proto) { case ALPROTO_HTTP1: // TODO: Could result in an empty http object being logged. - jb_open_object(jb, "http"); + SCJbOpenObject(jb, "http"); if (EveHttpAddMetadata(p->flow, tx_id, jb)) { if (option_flags & LOG_JSON_HTTP_BODY) { EveHttpLogJSONBodyPrintable(jb, p->flow, tx_id); @@ -357,55 +357,55 @@ static void AlertAddAppLayer(const Packet *p, JsonBuilder *jb, EveHttpLogJSONBodyBase64(jb, p->flow, tx_id); } } - jb_close(jb); + SCJbClose(jb); break; case ALPROTO_SMTP: - jb_get_mark(jb, &mark); - jb_open_object(jb, "smtp"); + SCJbGetMark(jb, &mark); + SCJbOpenObject(jb, "smtp"); if (EveSMTPAddMetadata(p->flow, tx_id, jb)) { - jb_close(jb); + SCJbClose(jb); } else { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } - jb_get_mark(jb, &mark); - jb_open_object(jb, "email"); + SCJbGetMark(jb, &mark); + SCJbOpenObject(jb, "email"); if (EveEmailAddMetadata(p->flow, tx_id, jb)) { - jb_close(jb); + SCJbClose(jb); } else { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } break; case ALPROTO_NFS: /* rpc */ - jb_get_mark(jb, &mark); - jb_open_object(jb, "rpc"); + SCJbGetMark(jb, &mark); + SCJbOpenObject(jb, "rpc"); if (EveNFSAddMetadataRPC(p->flow, tx_id, jb)) { - jb_close(jb); + SCJbClose(jb); } else { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } /* nfs */ - jb_get_mark(jb, &mark); - jb_open_object(jb, "nfs"); + SCJbGetMark(jb, &mark); + SCJbOpenObject(jb, "nfs"); if (EveNFSAddMetadata(p->flow, tx_id, jb)) { - jb_close(jb); + SCJbClose(jb); } else { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } break; case ALPROTO_SMB: - jb_get_mark(jb, &mark); - jb_open_object(jb, "smb"); + SCJbGetMark(jb, &mark); + SCJbOpenObject(jb, "smb"); if (EveSMBAddMetadata(p->flow, tx_id, jb)) { - jb_close(jb); + SCJbClose(jb); } else { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } break; case ALPROTO_IKE: - jb_get_mark(jb, &mark); + SCJbGetMark(jb, &mark); if (!EveIKEAddMetadata(p->flow, tx_id, jb)) { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } break; case ALPROTO_DCERPC: { @@ -413,18 +413,18 @@ static void AlertAddAppLayer(const Packet *p, JsonBuilder *jb, if (state) { void *tx = AppLayerParserGetTx(p->flow->proto, proto, state, tx_id); if (tx) { - jb_get_mark(jb, &mark); - jb_open_object(jb, "dcerpc"); + SCJbGetMark(jb, &mark); + SCJbOpenObject(jb, "dcerpc"); if (p->proto == IPPROTO_TCP) { if (!SCDcerpcLogJsonRecordTcp(state, tx, jb)) { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } } else { if (!SCDcerpcLogJsonRecordUdp(state, tx, jb)) { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } } - jb_close(jb); + SCJbClose(jb); } } break; @@ -434,7 +434,7 @@ static void AlertAddAppLayer(const Packet *p, JsonBuilder *jb, } } -static void AlertAddFiles(const Packet *p, JsonBuilder *jb, const uint64_t tx_id) +static void AlertAddFiles(const Packet *p, SCJsonBuilder *jb, const uint64_t tx_id) { const uint8_t direction = (p->flowflags & FLOW_PKT_TOSERVER) ? STREAM_TOSERVER : STREAM_TOCLIENT; @@ -452,21 +452,21 @@ static void AlertAddFiles(const Packet *p, JsonBuilder *jb, const uint64_t tx_id while (file) { if (!isopen) { isopen = true; - jb_open_array(jb, "files"); + SCJbOpenArray(jb, "files"); } - jb_start_object(jb); + SCJbStartObject(jb); EveFileInfo(jb, file, tx_id, file->flags); - jb_close(jb); + SCJbClose(jb); file = file->next; } if (isopen) { - jb_close(jb); + SCJbClose(jb); } } } static void AlertAddFrame( - const Packet *p, const int64_t frame_id, JsonBuilder *jb, MemBuffer *buffer) + const Packet *p, const int64_t frame_id, SCJsonBuilder *jb, MemBuffer *buffer) { if (p->flow == NULL || (p->proto == IPPROTO_TCP && p->flow->protoctx == NULL)) return; @@ -509,9 +509,9 @@ static void AlertAddFrame( * \param p Pointer to Packet current being logged * */ -void EveAddVerdict(JsonBuilder *jb, const Packet *p) +void EveAddVerdict(SCJsonBuilder *jb, const Packet *p) { - jb_open_object(jb, "verdict"); + SCJbOpenObject(jb, "verdict"); /* add verdict info */ if (PacketCheckAction(p, ACTION_REJECT_ANY)) { @@ -528,18 +528,18 @@ void EveAddVerdict(JsonBuilder *jb, const Packet *p) } else if (PacketCheckAction(p, ACTION_REJECT_BOTH)) { JB_SET_STRING(jb, "reject-target", "both"); } - jb_open_array(jb, "reject"); + SCJbOpenArray(jb, "reject"); switch (p->proto) { case IPPROTO_UDP: case IPPROTO_ICMP: case IPPROTO_ICMPV6: - jb_append_string(jb, "icmp-prohib"); + SCJbAppendString(jb, "icmp-prohib"); break; case IPPROTO_TCP: - jb_append_string(jb, "tcp-reset"); + SCJbAppendString(jb, "tcp-reset"); break; } - jb_close(jb); + SCJbClose(jb); } else if (PacketCheckAction(p, ACTION_DROP) && EngineModeIsIPS()) { JB_SET_STRING(jb, "action", "drop"); @@ -551,7 +551,7 @@ void EveAddVerdict(JsonBuilder *jb, const Packet *p) } /* Close verdict */ - jb_close(jb); + SCJbClose(jb); } struct AlertJsonStreamDataCallbackData { @@ -582,7 +582,7 @@ static int AlertJsonStreamDataCallback( * \retval false stream data not logged */ static bool AlertJsonStreamData(const AlertJsonOutputCtx *json_output_ctx, JsonAlertLogThread *aft, - Flow *f, const Packet *p, JsonBuilder *jb) + Flow *f, const Packet *p, SCJsonBuilder *jb) { TcpSession *ssn = f->protoctx; TcpStream *stream = (PKT_IS_TOSERVER(p)) ? &ssn->client : &ssn->server; @@ -595,10 +595,10 @@ static bool AlertJsonStreamData(const AlertJsonOutputCtx *json_output_ctx, JsonA &unused, false); if (cbd.payload->offset) { if (json_output_ctx->flags & LOG_JSON_PAYLOAD_BASE64) { - jb_set_base64(jb, "payload", cbd.payload->buffer, cbd.payload->offset); + SCJbSetBase64(jb, "payload", cbd.payload->buffer, cbd.payload->offset); } if (json_output_ctx->flags & LOG_JSON_PAYLOAD_LENGTH) { - jb_set_uint(jb, "payload_length", cbd.payload->offset); + SCJbSetUint(jb, "payload_length", cbd.payload->offset); } if (json_output_ctx->flags & LOG_JSON_PAYLOAD) { @@ -606,7 +606,7 @@ static bool AlertJsonStreamData(const AlertJsonOutputCtx *json_output_ctx, JsonA uint32_t offset = 0; PrintStringsToBuffer(printable_buf, &offset, cbd.payload->offset + 1, cbd.payload->buffer, cbd.payload->offset); - jb_set_string(jb, "payload_printable", (char *)printable_buf); + SCJbSetString(jb, "payload_printable", (char *)printable_buf); } return true; } @@ -663,7 +663,7 @@ static int AlertJson(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p) } } - JsonBuilder *jb = + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_PACKET, "alert", &addr, json_output_ctx->eve_ctx); if (unlikely(jb == NULL)) return TM_ECODE_OK; @@ -690,30 +690,30 @@ static int AlertJson(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p) EveAddAppProto(p->flow, jb); if (p->flowflags & FLOW_PKT_TOSERVER) { - jb_set_string(jb, "direction", "to_server"); + SCJbSetString(jb, "direction", "to_server"); } else { - jb_set_string(jb, "direction", "to_client"); + SCJbSetString(jb, "direction", "to_client"); } if (json_output_ctx->flags & LOG_JSON_FLOW) { - jb_open_object(jb, "flow"); + SCJbOpenObject(jb, "flow"); EveAddFlow(p->flow, jb); if (p->flowflags & FLOW_PKT_TOCLIENT) { - jb_set_string(jb, "src_ip", addr.dst_ip); - jb_set_string(jb, "dest_ip", addr.src_ip); + SCJbSetString(jb, "src_ip", addr.dst_ip); + SCJbSetString(jb, "dest_ip", addr.src_ip); if (addr.sp > 0) { - jb_set_uint(jb, "src_port", addr.dp); - jb_set_uint(jb, "dest_port", addr.sp); + SCJbSetUint(jb, "src_port", addr.dp); + SCJbSetUint(jb, "dest_port", addr.sp); } } else { - jb_set_string(jb, "src_ip", addr.src_ip); - jb_set_string(jb, "dest_ip", addr.dst_ip); + SCJbSetString(jb, "src_ip", addr.src_ip); + SCJbSetString(jb, "dest_ip", addr.dst_ip); if (addr.sp > 0) { - jb_set_uint(jb, "src_port", addr.sp); - jb_set_uint(jb, "dest_port", addr.dp); + SCJbSetUint(jb, "src_port", addr.sp); + SCJbSetUint(jb, "dest_port", addr.dp); } } - jb_close(jb); + SCJbClose(jb); } } @@ -739,7 +739,7 @@ static int AlertJson(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p) AlertAddPayload(json_output_ctx, jb, p); } - jb_set_uint(jb, "stream", stream); + SCJbSetUint(jb, "stream", stream); } if (pa->flags & PACKET_ALERT_FLAG_FRAME) { @@ -753,7 +753,7 @@ static int AlertJson(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p) char *pcap_filename = PcapLogGetFilename(); if (pcap_filename != NULL) { - jb_set_string(jb, "capture_file", pcap_filename); + SCJbSetString(jb, "capture_file", pcap_filename); } if (json_output_ctx->flags & LOG_JSON_VERDICT) { @@ -761,17 +761,17 @@ static int AlertJson(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p) } OutputJsonBuilderBuffer(tv, p, p->flow, jb, aft->ctx); - jb_free(jb); + SCJbFree(jb); } if ((p->flags & PKT_HAS_TAG) && (json_output_ctx->flags & LOG_JSON_TAGGED_PACKETS)) { - JsonBuilder *packetjs = + SCJsonBuilder *packetjs = CreateEveHeader(p, LOG_DIR_PACKET, "packet", NULL, json_output_ctx->eve_ctx); if (unlikely(packetjs != NULL)) { EvePacket(p, packetjs, 0); OutputJsonBuilderBuffer(tv, p, p->flow, packetjs, aft->ctx); - jb_free(packetjs); + SCJbFree(packetjs); } } @@ -791,7 +791,7 @@ static int AlertJsonDecoderEvent(ThreadVars *tv, JsonAlertLogThread *aft, const continue; } - JsonBuilder *jb = + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_PACKET, "alert", NULL, json_output_ctx->eve_ctx); if (unlikely(jb == NULL)) return TM_ECODE_OK; @@ -809,7 +809,7 @@ static int AlertJsonDecoderEvent(ThreadVars *tv, JsonAlertLogThread *aft, const char *pcap_filename = PcapLogGetFilename(); if (pcap_filename != NULL) { - jb_set_string(jb, "capture_file", pcap_filename); + SCJbSetString(jb, "capture_file", pcap_filename); } if (json_output_ctx->flags & LOG_JSON_VERDICT) { @@ -817,7 +817,7 @@ static int AlertJsonDecoderEvent(ThreadVars *tv, JsonAlertLogThread *aft, const } OutputJsonBuilderBuffer(tv, p, p->flow, jb, aft->ctx); - jb_free(jb); + SCJbFree(jb); } return TM_ECODE_OK; diff --git a/src/output-json-alert.h b/src/output-json-alert.h index 790ffcfab9..d8595714b9 100644 --- a/src/output-json-alert.h +++ b/src/output-json-alert.h @@ -28,8 +28,8 @@ #define SURICATA_OUTPUT_JSON_ALERT_H void JsonAlertLogRegister(void); -void AlertJsonHeader(const Packet *p, const PacketAlert *pa, JsonBuilder *js, uint16_t flags, +void AlertJsonHeader(const Packet *p, const PacketAlert *pa, SCJsonBuilder *js, uint16_t flags, JsonAddrInfo *addr, char *xff_buffer); -void EveAddVerdict(JsonBuilder *jb, const Packet *p); +void EveAddVerdict(SCJsonBuilder *jb, const Packet *p); #endif /* SURICATA_OUTPUT_JSON_ALERT_H */ diff --git a/src/output-json-anomaly.c b/src/output-json-anomaly.c index 937dff96f2..5c8551df43 100644 --- a/src/output-json-anomaly.c +++ b/src/output-json-anomaly.c @@ -115,13 +115,13 @@ static int AnomalyDecodeEventJson(ThreadVars *tv, JsonAnomalyLogThread *aft, if (!is_decode && !log_stream) continue; - JsonBuilder *js = CreateEveHeader( + SCJsonBuilder *js = CreateEveHeader( p, LOG_DIR_PACKET, ANOMALY_EVENT_TYPE, NULL, aft->json_output_ctx->eve_ctx); if (unlikely(js == NULL)) { return TM_ECODE_OK; } - jb_open_object(js, ANOMALY_EVENT_TYPE); + SCJbOpenObject(js, ANOMALY_EVENT_TYPE); if (event_code < DECODE_EVENT_MAX) { const char *event = DEvents[event_code].event_name; @@ -130,21 +130,21 @@ static int AnomalyDecodeEventJson(ThreadVars *tv, JsonAnomalyLogThread *aft, } else { JB_SET_STRING(js, "type", "stream"); } - jb_set_string(js, "event", event); + SCJbSetString(js, "event", event); } else { JB_SET_STRING(js, "type", "unknown"); - jb_set_uint(js, "code", event_code); + SCJbSetUint(js, "code", event_code); } /* Close anomaly object. */ - jb_close(js); + SCJbClose(js); if (aft->json_output_ctx->flags & LOG_JSON_PACKETHDR) { EvePacket(p, js, GET_PKT_LEN(p) < 32 ? GET_PKT_LEN(p) : 32); } OutputJsonBuilderBuffer(tv, p, p->flow, js, aft->ctx); - jb_free(js); + SCJbFree(js); } return TM_ECODE_OK; @@ -162,7 +162,7 @@ static int AnomalyAppLayerDecoderEventJson(ThreadVars *tv, JsonAnomalyLogThread tx_id != TX_ID_UNUSED ? "tx" : "no-tx"); for (int i = decoder_events->event_last_logged; i < decoder_events->cnt; i++) { - JsonBuilder *js; + SCJsonBuilder *js; if (tx_id != TX_ID_UNUSED) { js = CreateEveHeaderWithTxId(p, LOG_DIR_PACKET, ANOMALY_EVENT_TYPE, NULL, tx_id, aft->json_output_ctx->eve_ctx); @@ -174,10 +174,9 @@ static int AnomalyAppLayerDecoderEventJson(ThreadVars *tv, JsonAnomalyLogThread return TM_ECODE_OK; } + SCJbOpenObject(js, ANOMALY_EVENT_TYPE); - jb_open_object(js, ANOMALY_EVENT_TYPE); - - jb_set_string(js, "app_proto", alprotoname); + SCJbSetString(js, "app_proto", alprotoname); const char *event_name = NULL; uint8_t event_code = decoder_events->events[i]; @@ -191,18 +190,18 @@ static int AnomalyAppLayerDecoderEventJson(ThreadVars *tv, JsonAnomalyLogThread } if (r == 0) { JB_SET_STRING(js, "type", "applayer"); - jb_set_string(js, "event", event_name); + SCJbSetString(js, "event", event_name); } else { JB_SET_STRING(js, "type", "unknown"); - jb_set_uint(js, "code", event_code); + SCJbSetUint(js, "code", event_code); } - jb_set_string(js, "layer", layer); + SCJbSetString(js, "layer", layer); /* anomaly */ - jb_close(js); + SCJbClose(js); OutputJsonBuilderBuffer(tv, p, p->flow, js, aft->ctx); - jb_free(js); + SCJbFree(js); /* Current implementation assumes a single owner for this value */ decoder_events->event_last_logged++; diff --git a/src/output-json-arp.c b/src/output-json-arp.c index 804e355135..6b1414dbc0 100644 --- a/src/output-json-arp.c +++ b/src/output-json-arp.c @@ -73,7 +73,7 @@ static int JsonArpLogger(ThreadVars *tv, void *thread_data, const Packet *p) char dstip[JSON_ADDR_LEN] = ""; const ARPHdr *arph = PacketGetARP(p); - JsonBuilder *jb = CreateEveHeader(p, LOG_DIR_PACKET, "arp", NULL, thread->ctx); + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_PACKET, "arp", NULL, thread->ctx); if (unlikely(jb == NULL)) { return TM_ECODE_OK; } @@ -81,17 +81,17 @@ static int JsonArpLogger(ThreadVars *tv, void *thread_data, const Packet *p) PrintInet(AF_INET, arph->source_ip, srcip, sizeof(srcip)); PrintInet(AF_INET, arph->dest_ip, dstip, sizeof(dstip)); - jb_open_object(jb, "arp"); + SCJbOpenObject(jb, "arp"); JB_SET_STRING(jb, "hw_type", "ethernet"); JB_SET_STRING(jb, "proto_type", "ipv4"); - jb_set_string(jb, "opcode", OpcodeToString(ntohs(arph->opcode))); + SCJbSetString(jb, "opcode", OpcodeToString(ntohs(arph->opcode))); JSONFormatAndAddMACAddr(jb, "src_mac", arph->source_mac, false); - jb_set_string(jb, "src_ip", srcip); + SCJbSetString(jb, "src_ip", srcip); JSONFormatAndAddMACAddr(jb, "dest_mac", arph->dest_mac, false); - jb_set_string(jb, "dest_ip", dstip); - jb_close(jb); /* arp */ + SCJbSetString(jb, "dest_ip", dstip); + SCJbClose(jb); /* arp */ OutputJsonBuilderBuffer(tv, p, p->flow, jb, thread); - jb_free(jb); + SCJbFree(jb); return TM_ECODE_OK; } diff --git a/src/output-json-dcerpc.c b/src/output-json-dcerpc.c index 25ae0f0c38..2bae5f7e1b 100644 --- a/src/output-json-dcerpc.c +++ b/src/output-json-dcerpc.c @@ -29,12 +29,12 @@ static int JsonDCERPCLogger(ThreadVars *tv, void *thread_data, { OutputJsonThreadCtx *thread = thread_data; - JsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "dcerpc", NULL, thread->ctx); + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "dcerpc", NULL, thread->ctx); if (unlikely(jb == NULL)) { return TM_ECODE_FAILED; } - jb_open_object(jb, "dcerpc"); + SCJbOpenObject(jb, "dcerpc"); if (p->proto == IPPROTO_TCP) { if (!SCDcerpcLogJsonRecordTcp(state, tx, jb)) { goto error; @@ -44,16 +44,16 @@ static int JsonDCERPCLogger(ThreadVars *tv, void *thread_data, goto error; } } - jb_close(jb); + SCJbClose(jb); MemBufferReset(thread->buffer); OutputJsonBuilderBuffer(tv, p, p->flow, jb, thread); - jb_free(jb); + SCJbFree(jb); return TM_ECODE_OK; error: - jb_free(jb); + SCJbFree(jb); return TM_ECODE_FAILED; } diff --git a/src/output-json-dhcp.c b/src/output-json-dhcp.c index fd92931099..208f2e3162 100644 --- a/src/output-json-dhcp.c +++ b/src/output-json-dhcp.c @@ -65,7 +65,7 @@ static int JsonDHCPLogger(ThreadVars *tv, void *thread_data, return TM_ECODE_OK; } - JsonBuilder *js = CreateEveHeader((Packet *)p, 0, "dhcp", NULL, ctx->eve_ctx); + SCJsonBuilder *js = CreateEveHeader((Packet *)p, 0, "dhcp", NULL, ctx->eve_ctx); if (unlikely(js == NULL)) { return TM_ECODE_FAILED; } @@ -73,7 +73,7 @@ static int JsonDHCPLogger(ThreadVars *tv, void *thread_data, SCDhcpLoggerLog(ctx->rs_logger, tx, js); OutputJsonBuilderBuffer(tv, p, p->flow, js, thread->thread); - jb_free(js); + SCJbFree(js); return TM_ECODE_OK; } diff --git a/src/output-json-dnp3-objects.c b/src/output-json-dnp3-objects.c index ce499213cb..aa8848a737 100644 --- a/src/output-json-dnp3-objects.c +++ b/src/output-json-dnp3-objects.c @@ -30,1631 +30,1631 @@ #include "output-json.h" // clang-format off -void OutputJsonDNP3SetItem(JsonBuilder *js, DNP3Object *object, +void OutputJsonDNP3SetItem(SCJsonBuilder *js, DNP3Object *object, DNP3Point *point) { switch (DNP3_OBJECT_CODE(object->group, object->variation)) { case DNP3_OBJECT_CODE(1, 1): { DNP3ObjectG1V1 *data = point->data; - jb_set_uint(js, "state", data->state); + SCJbSetUint(js, "state", data->state); break; } case DNP3_OBJECT_CODE(1, 2): { DNP3ObjectG1V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "chatter_filter", data->chatter_filter); - jb_set_uint(js, "reserved", data->reserved); - jb_set_uint(js, "state", data->state); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "chatter_filter", data->chatter_filter); + SCJbSetUint(js, "reserved", data->reserved); + SCJbSetUint(js, "state", data->state); break; } case DNP3_OBJECT_CODE(2, 1): { DNP3ObjectG2V1 *data = point->data; - jb_set_uint(js, "state", data->state); + SCJbSetUint(js, "state", data->state); break; } case DNP3_OBJECT_CODE(2, 2): { DNP3ObjectG2V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "chatter_filter", data->chatter_filter); - jb_set_uint(js, "reserved", data->reserved); - jb_set_uint(js, "state", data->state); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "chatter_filter", data->chatter_filter); + SCJbSetUint(js, "reserved", data->reserved); + SCJbSetUint(js, "state", data->state); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(2, 3): { DNP3ObjectG2V3 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "chatter_filter", data->chatter_filter); - jb_set_uint(js, "reserved", data->reserved); - jb_set_uint(js, "state", data->state); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "chatter_filter", data->chatter_filter); + SCJbSetUint(js, "reserved", data->reserved); + SCJbSetUint(js, "state", data->state); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(3, 1): { DNP3ObjectG3V1 *data = point->data; - jb_set_uint(js, "state", data->state); + SCJbSetUint(js, "state", data->state); break; } case DNP3_OBJECT_CODE(3, 2): { DNP3ObjectG3V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "chatter_filter", data->chatter_filter); - jb_set_uint(js, "state", data->state); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "chatter_filter", data->chatter_filter); + SCJbSetUint(js, "state", data->state); break; } case DNP3_OBJECT_CODE(4, 1): { DNP3ObjectG4V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "chatter_filter", data->chatter_filter); - jb_set_uint(js, "state", data->state); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "chatter_filter", data->chatter_filter); + SCJbSetUint(js, "state", data->state); break; } case DNP3_OBJECT_CODE(4, 2): { DNP3ObjectG4V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "chatter_filter", data->chatter_filter); - jb_set_uint(js, "state", data->state); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "chatter_filter", data->chatter_filter); + SCJbSetUint(js, "state", data->state); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(4, 3): { DNP3ObjectG4V3 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "chatter_filter", data->chatter_filter); - jb_set_uint(js, "state", data->state); - jb_set_uint(js, "relative_time_ms", data->relative_time_ms); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "chatter_filter", data->chatter_filter); + SCJbSetUint(js, "state", data->state); + SCJbSetUint(js, "relative_time_ms", data->relative_time_ms); break; } case DNP3_OBJECT_CODE(10, 1): { DNP3ObjectG10V1 *data = point->data; - jb_set_uint(js, "state", data->state); + SCJbSetUint(js, "state", data->state); break; } case DNP3_OBJECT_CODE(10, 2): { DNP3ObjectG10V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "state", data->state); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "state", data->state); break; } case DNP3_OBJECT_CODE(11, 1): { DNP3ObjectG11V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "state", data->state); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "state", data->state); break; } case DNP3_OBJECT_CODE(11, 2): { DNP3ObjectG11V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "state", data->state); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "state", data->state); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(12, 1): { DNP3ObjectG12V1 *data = point->data; - jb_set_uint(js, "op_type", data->op_type); - jb_set_uint(js, "qu", data->qu); - jb_set_uint(js, "cr", data->cr); - jb_set_uint(js, "tcc", data->tcc); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "ontime", data->ontime); - jb_set_uint(js, "offtime", data->offtime); - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "reserved", data->reserved); + SCJbSetUint(js, "op_type", data->op_type); + SCJbSetUint(js, "qu", data->qu); + SCJbSetUint(js, "cr", data->cr); + SCJbSetUint(js, "tcc", data->tcc); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "ontime", data->ontime); + SCJbSetUint(js, "offtime", data->offtime); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "reserved", data->reserved); break; } case DNP3_OBJECT_CODE(12, 2): { DNP3ObjectG12V2 *data = point->data; - jb_set_uint(js, "op_type", data->op_type); - jb_set_uint(js, "qu", data->qu); - jb_set_uint(js, "cr", data->cr); - jb_set_uint(js, "tcc", data->tcc); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "ontime", data->ontime); - jb_set_uint(js, "offtime", data->offtime); - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "reserved", data->reserved); + SCJbSetUint(js, "op_type", data->op_type); + SCJbSetUint(js, "qu", data->qu); + SCJbSetUint(js, "cr", data->cr); + SCJbSetUint(js, "tcc", data->tcc); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "ontime", data->ontime); + SCJbSetUint(js, "offtime", data->offtime); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "reserved", data->reserved); break; } case DNP3_OBJECT_CODE(12, 3): { DNP3ObjectG12V3 *data = point->data; - jb_set_uint(js, "point", data->point); + SCJbSetUint(js, "point", data->point); break; } case DNP3_OBJECT_CODE(13, 1): { DNP3ObjectG13V1 *data = point->data; - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "commanded_state", data->commanded_state); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "commanded_state", data->commanded_state); break; } case DNP3_OBJECT_CODE(13, 2): { DNP3ObjectG13V2 *data = point->data; - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "commanded_state", data->commanded_state); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "commanded_state", data->commanded_state); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(20, 1): { DNP3ObjectG20V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(20, 2): { DNP3ObjectG20V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(20, 3): { DNP3ObjectG20V3 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(20, 4): { DNP3ObjectG20V4 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(20, 5): { DNP3ObjectG20V5 *data = point->data; - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(20, 6): { DNP3ObjectG20V6 *data = point->data; - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(20, 7): { DNP3ObjectG20V7 *data = point->data; - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(20, 8): { DNP3ObjectG20V8 *data = point->data; - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(21, 1): { DNP3ObjectG21V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(21, 2): { DNP3ObjectG21V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(21, 3): { DNP3ObjectG21V3 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(21, 4): { DNP3ObjectG21V4 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(21, 5): { DNP3ObjectG21V5 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(21, 6): { DNP3ObjectG21V6 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(21, 7): { DNP3ObjectG21V7 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(21, 8): { DNP3ObjectG21V8 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(21, 9): { DNP3ObjectG21V9 *data = point->data; - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(21, 10): { DNP3ObjectG21V10 *data = point->data; - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(21, 11): { DNP3ObjectG21V11 *data = point->data; - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(21, 12): { DNP3ObjectG21V12 *data = point->data; - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(22, 1): { DNP3ObjectG22V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(22, 2): { DNP3ObjectG22V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(22, 3): { DNP3ObjectG22V3 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(22, 4): { DNP3ObjectG22V4 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(22, 5): { DNP3ObjectG22V5 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(22, 6): { DNP3ObjectG22V6 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(22, 7): { DNP3ObjectG22V7 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(22, 8): { DNP3ObjectG22V8 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(23, 1): { DNP3ObjectG23V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(23, 2): { DNP3ObjectG23V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(23, 3): { DNP3ObjectG23V3 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(23, 4): { DNP3ObjectG23V4 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); break; } case DNP3_OBJECT_CODE(23, 5): { DNP3ObjectG23V5 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(23, 6): { DNP3ObjectG23V6 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(23, 7): { DNP3ObjectG23V7 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(23, 8): { DNP3ObjectG23V8 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "rollover", data->rollover); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "count", data->count); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "rollover", data->rollover); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "count", data->count); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(30, 1): { DNP3ObjectG30V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(30, 2): { DNP3ObjectG30V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(30, 3): { DNP3ObjectG30V3 *data = point->data; - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(30, 4): { DNP3ObjectG30V4 *data = point->data; - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(30, 5): { DNP3ObjectG30V5 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(30, 6): { DNP3ObjectG30V6 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(31, 1): { DNP3ObjectG31V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(31, 2): { DNP3ObjectG31V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(31, 3): { DNP3ObjectG31V3 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(31, 4): { DNP3ObjectG31V4 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(31, 5): { DNP3ObjectG31V5 *data = point->data; - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(31, 6): { DNP3ObjectG31V6 *data = point->data; - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(31, 7): { DNP3ObjectG31V7 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(31, 8): { DNP3ObjectG31V8 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(32, 1): { DNP3ObjectG32V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(32, 2): { DNP3ObjectG32V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(32, 3): { DNP3ObjectG32V3 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(32, 4): { DNP3ObjectG32V4 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(32, 5): { DNP3ObjectG32V5 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(32, 6): { DNP3ObjectG32V6 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(32, 7): { DNP3ObjectG32V7 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(32, 8): { DNP3ObjectG32V8 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(33, 1): { DNP3ObjectG33V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(33, 2): { DNP3ObjectG33V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(33, 3): { DNP3ObjectG33V3 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(33, 4): { DNP3ObjectG33V4 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(33, 5): { DNP3ObjectG33V5 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(33, 6): { DNP3ObjectG33V6 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(33, 7): { DNP3ObjectG33V7 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(33, 8): { DNP3ObjectG33V8 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(34, 1): { DNP3ObjectG34V1 *data = point->data; - jb_set_uint(js, "deadband_value", data->deadband_value); + SCJbSetUint(js, "deadband_value", data->deadband_value); break; } case DNP3_OBJECT_CODE(34, 2): { DNP3ObjectG34V2 *data = point->data; - jb_set_uint(js, "deadband_value", data->deadband_value); + SCJbSetUint(js, "deadband_value", data->deadband_value); break; } case DNP3_OBJECT_CODE(34, 3): { DNP3ObjectG34V3 *data = point->data; - jb_set_float(js, "deadband_value", data->deadband_value); + SCJbSetFloat(js, "deadband_value", data->deadband_value); break; } case DNP3_OBJECT_CODE(40, 1): { DNP3ObjectG40V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(40, 2): { DNP3ObjectG40V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(40, 3): { DNP3ObjectG40V3 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(40, 4): { DNP3ObjectG40V4 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(41, 1): { DNP3ObjectG41V1 *data = point->data; - jb_set_uint(js, "value", data->value); - jb_set_uint(js, "control_status", data->control_status); + SCJbSetUint(js, "value", data->value); + SCJbSetUint(js, "control_status", data->control_status); break; } case DNP3_OBJECT_CODE(41, 2): { DNP3ObjectG41V2 *data = point->data; - jb_set_uint(js, "value", data->value); - jb_set_uint(js, "control_status", data->control_status); + SCJbSetUint(js, "value", data->value); + SCJbSetUint(js, "control_status", data->control_status); break; } case DNP3_OBJECT_CODE(41, 3): { DNP3ObjectG41V3 *data = point->data; - jb_set_float(js, "value", data->value); - jb_set_uint(js, "control_status", data->control_status); + SCJbSetFloat(js, "value", data->value); + SCJbSetUint(js, "control_status", data->control_status); break; } case DNP3_OBJECT_CODE(41, 4): { DNP3ObjectG41V4 *data = point->data; - jb_set_float(js, "value", data->value); - jb_set_uint(js, "control_status", data->control_status); + SCJbSetFloat(js, "value", data->value); + SCJbSetUint(js, "control_status", data->control_status); break; } case DNP3_OBJECT_CODE(42, 1): { DNP3ObjectG42V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(42, 2): { DNP3ObjectG42V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(42, 3): { DNP3ObjectG42V3 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(42, 4): { DNP3ObjectG42V4 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(42, 5): { DNP3ObjectG42V5 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(42, 6): { DNP3ObjectG42V6 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); break; } case DNP3_OBJECT_CODE(42, 7): { DNP3ObjectG42V7 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(42, 8): { DNP3ObjectG42V8 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "over_range", data->over_range); - jb_set_uint(js, "reference_err", data->reference_err); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "value", data->value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "over_range", data->over_range); + SCJbSetUint(js, "reference_err", data->reference_err); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "value", data->value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(43, 1): { DNP3ObjectG43V1 *data = point->data; - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "commanded_value", data->commanded_value); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "commanded_value", data->commanded_value); break; } case DNP3_OBJECT_CODE(43, 2): { DNP3ObjectG43V2 *data = point->data; - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "commanded_value", data->commanded_value); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "commanded_value", data->commanded_value); break; } case DNP3_OBJECT_CODE(43, 3): { DNP3ObjectG43V3 *data = point->data; - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "commanded_value", data->commanded_value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "commanded_value", data->commanded_value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(43, 4): { DNP3ObjectG43V4 *data = point->data; - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "commanded_value", data->commanded_value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "commanded_value", data->commanded_value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(43, 5): { DNP3ObjectG43V5 *data = point->data; - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "commanded_value", data->commanded_value); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "commanded_value", data->commanded_value); break; } case DNP3_OBJECT_CODE(43, 6): { DNP3ObjectG43V6 *data = point->data; - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "commanded_value", data->commanded_value); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "commanded_value", data->commanded_value); break; } case DNP3_OBJECT_CODE(43, 7): { DNP3ObjectG43V7 *data = point->data; - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "commanded_value", data->commanded_value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "commanded_value", data->commanded_value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(43, 8): { DNP3ObjectG43V8 *data = point->data; - jb_set_uint(js, "status_code", data->status_code); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_float(js, "commanded_value", data->commanded_value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "status_code", data->status_code); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetFloat(js, "commanded_value", data->commanded_value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(50, 1): { DNP3ObjectG50V1 *data = point->data; - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(50, 2): { DNP3ObjectG50V2 *data = point->data; - jb_set_uint(js, "timestamp", data->timestamp); - jb_set_uint(js, "interval", data->interval); + SCJbSetUint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "interval", data->interval); break; } case DNP3_OBJECT_CODE(50, 3): { DNP3ObjectG50V3 *data = point->data; - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(50, 4): { DNP3ObjectG50V4 *data = point->data; - jb_set_uint(js, "timestamp", data->timestamp); - jb_set_uint(js, "interval_count", data->interval_count); - jb_set_uint(js, "interval_units", data->interval_units); + SCJbSetUint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "interval_count", data->interval_count); + SCJbSetUint(js, "interval_units", data->interval_units); break; } case DNP3_OBJECT_CODE(51, 1): { DNP3ObjectG51V1 *data = point->data; - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(51, 2): { DNP3ObjectG51V2 *data = point->data; - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "timestamp", data->timestamp); break; } case DNP3_OBJECT_CODE(52, 1): { DNP3ObjectG52V1 *data = point->data; - jb_set_uint(js, "delay_secs", data->delay_secs); + SCJbSetUint(js, "delay_secs", data->delay_secs); break; } case DNP3_OBJECT_CODE(52, 2): { DNP3ObjectG52V2 *data = point->data; - jb_set_uint(js, "delay_ms", data->delay_ms); + SCJbSetUint(js, "delay_ms", data->delay_ms); break; } case DNP3_OBJECT_CODE(70, 1): { DNP3ObjectG70V1 *data = point->data; - jb_set_uint(js, "filename_size", data->filename_size); - jb_set_uint(js, "filetype_code", data->filetype_code); - jb_set_uint(js, "attribute_code", data->attribute_code); - jb_set_uint(js, "start_record", data->start_record); - jb_set_uint(js, "end_record", data->end_record); - jb_set_uint(js, "file_size", data->file_size); - jb_set_uint(js, "created_timestamp", data->created_timestamp); - jb_set_uint(js, "permission", data->permission); - jb_set_uint(js, "file_id", data->file_id); - jb_set_uint(js, "owner_id", data->owner_id); - jb_set_uint(js, "group_id", data->group_id); - jb_set_uint(js, "file_function_code", data->file_function_code); - jb_set_uint(js, "status_code", data->status_code); + SCJbSetUint(js, "filename_size", data->filename_size); + SCJbSetUint(js, "filetype_code", data->filetype_code); + SCJbSetUint(js, "attribute_code", data->attribute_code); + SCJbSetUint(js, "start_record", data->start_record); + SCJbSetUint(js, "end_record", data->end_record); + SCJbSetUint(js, "file_size", data->file_size); + SCJbSetUint(js, "created_timestamp", data->created_timestamp); + SCJbSetUint(js, "permission", data->permission); + SCJbSetUint(js, "file_id", data->file_id); + SCJbSetUint(js, "owner_id", data->owner_id); + SCJbSetUint(js, "group_id", data->group_id); + SCJbSetUint(js, "file_function_code", data->file_function_code); + SCJbSetUint(js, "status_code", data->status_code); if (data->filename_size > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "filename", (const uint8_t *)data->filename, data->filename_size); } else { - jb_set_string(js, "filename", ""); + SCJbSetString(js, "filename", ""); } - jb_set_uint(js, "data_size", data->data_size); + SCJbSetUint(js, "data_size", data->data_size); if (data->data_size > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "data", (const uint8_t *)data->data, data->data_size); } else { - jb_set_string(js, "data", ""); + SCJbSetString(js, "data", ""); } break; } case DNP3_OBJECT_CODE(70, 2): { DNP3ObjectG70V2 *data = point->data; - jb_set_uint(js, "username_offset", data->username_offset); - jb_set_uint(js, "username_size", data->username_size); - jb_set_uint(js, "password_offset", data->password_offset); - jb_set_uint(js, "password_size", data->password_size); - jb_set_uint(js, "authentication_key", data->authentication_key); + SCJbSetUint(js, "username_offset", data->username_offset); + SCJbSetUint(js, "username_size", data->username_size); + SCJbSetUint(js, "password_offset", data->password_offset); + SCJbSetUint(js, "password_size", data->password_size); + SCJbSetUint(js, "authentication_key", data->authentication_key); if (data->username_size > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "username", (const uint8_t *)data->username, data->username_size); } else { - jb_set_string(js, "username", ""); + SCJbSetString(js, "username", ""); } if (data->password_size > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "password", (const uint8_t *)data->password, data->password_size); } else { - jb_set_string(js, "password", ""); + SCJbSetString(js, "password", ""); } break; } case DNP3_OBJECT_CODE(70, 3): { DNP3ObjectG70V3 *data = point->data; - jb_set_uint(js, "filename_offset", data->filename_offset); - jb_set_uint(js, "filename_size", data->filename_size); - jb_set_uint(js, "created", data->created); - jb_set_uint(js, "permissions", data->permissions); - jb_set_uint(js, "authentication_key", data->authentication_key); - jb_set_uint(js, "file_size", data->file_size); - jb_set_uint(js, "operational_mode", data->operational_mode); - jb_set_uint(js, "maximum_block_size", data->maximum_block_size); - jb_set_uint(js, "request_id", data->request_id); + SCJbSetUint(js, "filename_offset", data->filename_offset); + SCJbSetUint(js, "filename_size", data->filename_size); + SCJbSetUint(js, "created", data->created); + SCJbSetUint(js, "permissions", data->permissions); + SCJbSetUint(js, "authentication_key", data->authentication_key); + SCJbSetUint(js, "file_size", data->file_size); + SCJbSetUint(js, "operational_mode", data->operational_mode); + SCJbSetUint(js, "maximum_block_size", data->maximum_block_size); + SCJbSetUint(js, "request_id", data->request_id); if (data->filename_size > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "filename", (const uint8_t *)data->filename, data->filename_size); } else { - jb_set_string(js, "filename", ""); + SCJbSetString(js, "filename", ""); } break; } case DNP3_OBJECT_CODE(70, 4): { DNP3ObjectG70V4 *data = point->data; - jb_set_uint(js, "file_handle", data->file_handle); - jb_set_uint(js, "file_size", data->file_size); - jb_set_uint(js, "maximum_block_size", data->maximum_block_size); - jb_set_uint(js, "request_id", data->request_id); - jb_set_uint(js, "status_code", data->status_code); + SCJbSetUint(js, "file_handle", data->file_handle); + SCJbSetUint(js, "file_size", data->file_size); + SCJbSetUint(js, "maximum_block_size", data->maximum_block_size); + SCJbSetUint(js, "request_id", data->request_id); + SCJbSetUint(js, "status_code", data->status_code); if (data->optional_text_len > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "optional_text", (const uint8_t *)data->optional_text, data->optional_text_len); } else { - jb_set_string(js, "optional_text", ""); + SCJbSetString(js, "optional_text", ""); } break; } case DNP3_OBJECT_CODE(70, 5): { DNP3ObjectG70V5 *data = point->data; - jb_set_uint(js, "file_handle", data->file_handle); - jb_set_uint(js, "block_number", data->block_number); + SCJbSetUint(js, "file_handle", data->file_handle); + SCJbSetUint(js, "block_number", data->block_number); if (data->file_data_len > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "file_data", (const uint8_t *)data->file_data, data->file_data_len); } else { - jb_set_string(js, "file_data", ""); + SCJbSetString(js, "file_data", ""); } break; } case DNP3_OBJECT_CODE(70, 6): { DNP3ObjectG70V6 *data = point->data; - jb_set_uint(js, "file_handle", data->file_handle); - jb_set_uint(js, "block_number", data->block_number); - jb_set_uint(js, "status_code", data->status_code); + SCJbSetUint(js, "file_handle", data->file_handle); + SCJbSetUint(js, "block_number", data->block_number); + SCJbSetUint(js, "status_code", data->status_code); if (data->optional_text_len > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "optional_text", (const uint8_t *)data->optional_text, data->optional_text_len); } else { - jb_set_string(js, "optional_text", ""); + SCJbSetString(js, "optional_text", ""); } break; } case DNP3_OBJECT_CODE(70, 7): { DNP3ObjectG70V7 *data = point->data; - jb_set_uint(js, "filename_offset", data->filename_offset); - jb_set_uint(js, "filename_size", data->filename_size); - jb_set_uint(js, "file_type", data->file_type); - jb_set_uint(js, "file_size", data->file_size); - jb_set_uint(js, "created_timestamp", data->created_timestamp); - jb_set_uint(js, "permissions", data->permissions); - jb_set_uint(js, "request_id", data->request_id); + SCJbSetUint(js, "filename_offset", data->filename_offset); + SCJbSetUint(js, "filename_size", data->filename_size); + SCJbSetUint(js, "file_type", data->file_type); + SCJbSetUint(js, "file_size", data->file_size); + SCJbSetUint(js, "created_timestamp", data->created_timestamp); + SCJbSetUint(js, "permissions", data->permissions); + SCJbSetUint(js, "request_id", data->request_id); if (data->filename_size > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "filename", (const uint8_t *)data->filename, data->filename_size); } else { - jb_set_string(js, "filename", ""); + SCJbSetString(js, "filename", ""); } break; } case DNP3_OBJECT_CODE(70, 8): { DNP3ObjectG70V8 *data = point->data; if (data->file_specification_len > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "file_specification", (const uint8_t *)data->file_specification, data->file_specification_len); } else { - jb_set_string(js, "file_specification", ""); + SCJbSetString(js, "file_specification", ""); } break; } case DNP3_OBJECT_CODE(80, 1): { DNP3ObjectG80V1 *data = point->data; - jb_set_uint(js, "state", data->state); + SCJbSetUint(js, "state", data->state); break; } case DNP3_OBJECT_CODE(81, 1): { DNP3ObjectG81V1 *data = point->data; - jb_set_uint(js, "fill_percentage", data->fill_percentage); - jb_set_uint(js, "overflow_state", data->overflow_state); - jb_set_uint(js, "group", data->group); - jb_set_uint(js, "variation", data->variation); + SCJbSetUint(js, "fill_percentage", data->fill_percentage); + SCJbSetUint(js, "overflow_state", data->overflow_state); + SCJbSetUint(js, "group", data->group); + SCJbSetUint(js, "variation", data->variation); break; } case DNP3_OBJECT_CODE(83, 1): { DNP3ObjectG83V1 *data = point->data; - jb_set_string(js, "data->vendor_code", data->vendor_code); - jb_set_uint(js, "object_id", data->object_id); - jb_set_uint(js, "length", data->length); - jb_set_base64(js, "data->data_objects", data->data_objects, data->length); + SCJbSetString(js, "data->vendor_code", data->vendor_code); + SCJbSetUint(js, "object_id", data->object_id); + SCJbSetUint(js, "length", data->length); + SCJbSetBase64(js, "data->data_objects", data->data_objects, data->length); break; } case DNP3_OBJECT_CODE(86, 2): { DNP3ObjectG86V2 *data = point->data; - jb_set_uint(js, "rd", data->rd); - jb_set_uint(js, "wr", data->wr); - jb_set_uint(js, "st", data->st); - jb_set_uint(js, "ev", data->ev); - jb_set_uint(js, "df", data->df); - jb_set_uint(js, "padding0", data->padding0); - jb_set_uint(js, "padding1", data->padding1); - jb_set_uint(js, "padding2", data->padding2); + SCJbSetUint(js, "rd", data->rd); + SCJbSetUint(js, "wr", data->wr); + SCJbSetUint(js, "st", data->st); + SCJbSetUint(js, "ev", data->ev); + SCJbSetUint(js, "df", data->df); + SCJbSetUint(js, "padding0", data->padding0); + SCJbSetUint(js, "padding1", data->padding1); + SCJbSetUint(js, "padding2", data->padding2); break; } case DNP3_OBJECT_CODE(102, 1): { DNP3ObjectG102V1 *data = point->data; - jb_set_uint(js, "value", data->value); + SCJbSetUint(js, "value", data->value); break; } case DNP3_OBJECT_CODE(120, 1): { DNP3ObjectG120V1 *data = point->data; - jb_set_uint(js, "csq", data->csq); - jb_set_uint(js, "usr", data->usr); - jb_set_uint(js, "mal", data->mal); - jb_set_uint(js, "reason", data->reason); - jb_set_base64(js, "data->challenge_data", data->challenge_data, data->challenge_data_len); + SCJbSetUint(js, "csq", data->csq); + SCJbSetUint(js, "usr", data->usr); + SCJbSetUint(js, "mal", data->mal); + SCJbSetUint(js, "reason", data->reason); + SCJbSetBase64(js, "data->challenge_data", data->challenge_data, data->challenge_data_len); break; } case DNP3_OBJECT_CODE(120, 2): { DNP3ObjectG120V2 *data = point->data; - jb_set_uint(js, "csq", data->csq); - jb_set_uint(js, "usr", data->usr); - jb_set_base64(js, "data->mac_value", data->mac_value, data->mac_value_len); + SCJbSetUint(js, "csq", data->csq); + SCJbSetUint(js, "usr", data->usr); + SCJbSetBase64(js, "data->mac_value", data->mac_value, data->mac_value_len); break; } case DNP3_OBJECT_CODE(120, 3): { DNP3ObjectG120V3 *data = point->data; - jb_set_uint(js, "csq", data->csq); - jb_set_uint(js, "user_number", data->user_number); + SCJbSetUint(js, "csq", data->csq); + SCJbSetUint(js, "user_number", data->user_number); break; } case DNP3_OBJECT_CODE(120, 4): { DNP3ObjectG120V4 *data = point->data; - jb_set_uint(js, "user_number", data->user_number); + SCJbSetUint(js, "user_number", data->user_number); break; } case DNP3_OBJECT_CODE(120, 5): { DNP3ObjectG120V5 *data = point->data; - jb_set_uint(js, "ksq", data->ksq); - jb_set_uint(js, "user_number", data->user_number); - jb_set_uint(js, "key_wrap_alg", data->key_wrap_alg); - jb_set_uint(js, "key_status", data->key_status); - jb_set_uint(js, "mal", data->mal); - jb_set_uint(js, "challenge_data_len", data->challenge_data_len); - jb_set_base64(js, "data->challenge_data", data->challenge_data, data->challenge_data_len); - jb_set_base64(js, "data->mac_value", data->mac_value, data->mac_value_len); + SCJbSetUint(js, "ksq", data->ksq); + SCJbSetUint(js, "user_number", data->user_number); + SCJbSetUint(js, "key_wrap_alg", data->key_wrap_alg); + SCJbSetUint(js, "key_status", data->key_status); + SCJbSetUint(js, "mal", data->mal); + SCJbSetUint(js, "challenge_data_len", data->challenge_data_len); + SCJbSetBase64(js, "data->challenge_data", data->challenge_data, data->challenge_data_len); + SCJbSetBase64(js, "data->mac_value", data->mac_value, data->mac_value_len); break; } case DNP3_OBJECT_CODE(120, 6): { DNP3ObjectG120V6 *data = point->data; - jb_set_uint(js, "ksq", data->ksq); - jb_set_uint(js, "usr", data->usr); - jb_set_base64(js, "data->wrapped_key_data", data->wrapped_key_data, data->wrapped_key_data_len); + SCJbSetUint(js, "ksq", data->ksq); + SCJbSetUint(js, "usr", data->usr); + SCJbSetBase64(js, "data->wrapped_key_data", data->wrapped_key_data, data->wrapped_key_data_len); break; } case DNP3_OBJECT_CODE(120, 7): { DNP3ObjectG120V7 *data = point->data; - jb_set_uint(js, "sequence_number", data->sequence_number); - jb_set_uint(js, "usr", data->usr); - jb_set_uint(js, "association_id", data->association_id); - jb_set_uint(js, "error_code", data->error_code); - jb_set_uint(js, "time_of_error", data->time_of_error); + SCJbSetUint(js, "sequence_number", data->sequence_number); + SCJbSetUint(js, "usr", data->usr); + SCJbSetUint(js, "association_id", data->association_id); + SCJbSetUint(js, "error_code", data->error_code); + SCJbSetUint(js, "time_of_error", data->time_of_error); if (data->error_text_len > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "error_text", (const uint8_t *)data->error_text, data->error_text_len); } else { - jb_set_string(js, "error_text", ""); + SCJbSetString(js, "error_text", ""); } break; } case DNP3_OBJECT_CODE(120, 8): { DNP3ObjectG120V8 *data = point->data; - jb_set_uint(js, "key_change_method", data->key_change_method); - jb_set_uint(js, "certificate_type", data->certificate_type); - jb_set_base64(js, "data->certificate", data->certificate, data->certificate_len); + SCJbSetUint(js, "key_change_method", data->key_change_method); + SCJbSetUint(js, "certificate_type", data->certificate_type); + SCJbSetBase64(js, "data->certificate", data->certificate, data->certificate_len); break; } case DNP3_OBJECT_CODE(120, 9): { DNP3ObjectG120V9 *data = point->data; - jb_set_base64(js, "data->mac_value", data->mac_value, data->mac_value_len); + SCJbSetBase64(js, "data->mac_value", data->mac_value, data->mac_value_len); break; } case DNP3_OBJECT_CODE(120, 10): { DNP3ObjectG120V10 *data = point->data; - jb_set_uint(js, "key_change_method", data->key_change_method); - jb_set_uint(js, "operation", data->operation); - jb_set_uint(js, "scs", data->scs); - jb_set_uint(js, "user_role", data->user_role); - jb_set_uint(js, "user_role_expiry_interval", data->user_role_expiry_interval); - jb_set_uint(js, "username_len", data->username_len); - jb_set_uint(js, "user_public_key_len", data->user_public_key_len); - jb_set_uint(js, "certification_data_len", data->certification_data_len); + SCJbSetUint(js, "key_change_method", data->key_change_method); + SCJbSetUint(js, "operation", data->operation); + SCJbSetUint(js, "scs", data->scs); + SCJbSetUint(js, "user_role", data->user_role); + SCJbSetUint(js, "user_role_expiry_interval", data->user_role_expiry_interval); + SCJbSetUint(js, "username_len", data->username_len); + SCJbSetUint(js, "user_public_key_len", data->user_public_key_len); + SCJbSetUint(js, "certification_data_len", data->certification_data_len); if (data->username_len > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "username", (const uint8_t *)data->username, data->username_len); } else { - jb_set_string(js, "username", ""); + SCJbSetString(js, "username", ""); } - jb_set_base64(js, "data->user_public_key", data->user_public_key, data->user_public_key_len); - jb_set_base64(js, "data->certification_data", data->certification_data, data->certification_data_len); + SCJbSetBase64(js, "data->user_public_key", data->user_public_key, data->user_public_key_len); + SCJbSetBase64(js, "data->certification_data", data->certification_data, data->certification_data_len); break; } case DNP3_OBJECT_CODE(120, 11): { DNP3ObjectG120V11 *data = point->data; - jb_set_uint(js, "key_change_method", data->key_change_method); - jb_set_uint(js, "username_len", data->username_len); - jb_set_uint(js, "master_challenge_data_len", data->master_challenge_data_len); + SCJbSetUint(js, "key_change_method", data->key_change_method); + SCJbSetUint(js, "username_len", data->username_len); + SCJbSetUint(js, "master_challenge_data_len", data->master_challenge_data_len); if (data->username_len > 0) { - jb_set_string_from_bytes( + SCJbSetStringFromBytes( js, "username", (const uint8_t *)data->username, data->username_len); } else { - jb_set_string(js, "username", ""); + SCJbSetString(js, "username", ""); } - jb_set_base64(js, "data->master_challenge_data", data->master_challenge_data, data->master_challenge_data_len); + SCJbSetBase64(js, "data->master_challenge_data", data->master_challenge_data, data->master_challenge_data_len); break; } case DNP3_OBJECT_CODE(120, 12): { DNP3ObjectG120V12 *data = point->data; - jb_set_uint(js, "ksq", data->ksq); - jb_set_uint(js, "user_number", data->user_number); - jb_set_uint(js, "challenge_data_len", data->challenge_data_len); - jb_set_base64(js, "data->challenge_data", data->challenge_data, data->challenge_data_len); + SCJbSetUint(js, "ksq", data->ksq); + SCJbSetUint(js, "user_number", data->user_number); + SCJbSetUint(js, "challenge_data_len", data->challenge_data_len); + SCJbSetBase64(js, "data->challenge_data", data->challenge_data, data->challenge_data_len); break; } case DNP3_OBJECT_CODE(120, 13): { DNP3ObjectG120V13 *data = point->data; - jb_set_uint(js, "ksq", data->ksq); - jb_set_uint(js, "user_number", data->user_number); - jb_set_uint(js, "encrypted_update_key_len", data->encrypted_update_key_len); - jb_set_base64(js, "data->encrypted_update_key_data", data->encrypted_update_key_data, data->encrypted_update_key_len); + SCJbSetUint(js, "ksq", data->ksq); + SCJbSetUint(js, "user_number", data->user_number); + SCJbSetUint(js, "encrypted_update_key_len", data->encrypted_update_key_len); + SCJbSetBase64(js, "data->encrypted_update_key_data", data->encrypted_update_key_data, data->encrypted_update_key_len); break; } case DNP3_OBJECT_CODE(120, 14): { DNP3ObjectG120V14 *data = point->data; - jb_set_base64(js, "data->digital_signature", data->digital_signature, data->digital_signature_len); + SCJbSetBase64(js, "data->digital_signature", data->digital_signature, data->digital_signature_len); break; } case DNP3_OBJECT_CODE(120, 15): { DNP3ObjectG120V15 *data = point->data; - jb_set_base64(js, "data->mac", data->mac, data->mac_len); + SCJbSetBase64(js, "data->mac", data->mac, data->mac_len); break; } case DNP3_OBJECT_CODE(121, 1): { DNP3ObjectG121V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "association_id", data->association_id); - jb_set_uint(js, "count_value", data->count_value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "association_id", data->association_id); + SCJbSetUint(js, "count_value", data->count_value); break; } case DNP3_OBJECT_CODE(122, 1): { DNP3ObjectG122V1 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "association_id", data->association_id); - jb_set_uint(js, "count_value", data->count_value); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "association_id", data->association_id); + SCJbSetUint(js, "count_value", data->count_value); break; } case DNP3_OBJECT_CODE(122, 2): { DNP3ObjectG122V2 *data = point->data; - jb_set_uint(js, "online", data->online); - jb_set_uint(js, "restart", data->restart); - jb_set_uint(js, "comm_lost", data->comm_lost); - jb_set_uint(js, "remote_forced", data->remote_forced); - jb_set_uint(js, "local_forced", data->local_forced); - jb_set_uint(js, "reserved0", data->reserved0); - jb_set_uint(js, "discontinuity", data->discontinuity); - jb_set_uint(js, "reserved1", data->reserved1); - jb_set_uint(js, "association_id", data->association_id); - jb_set_uint(js, "count_value", data->count_value); - jb_set_uint(js, "timestamp", data->timestamp); + SCJbSetUint(js, "online", data->online); + SCJbSetUint(js, "restart", data->restart); + SCJbSetUint(js, "comm_lost", data->comm_lost); + SCJbSetUint(js, "remote_forced", data->remote_forced); + SCJbSetUint(js, "local_forced", data->local_forced); + SCJbSetUint(js, "reserved0", data->reserved0); + SCJbSetUint(js, "discontinuity", data->discontinuity); + SCJbSetUint(js, "reserved1", data->reserved1); + SCJbSetUint(js, "association_id", data->association_id); + SCJbSetUint(js, "count_value", data->count_value); + SCJbSetUint(js, "timestamp", data->timestamp); break; } default: diff --git a/src/output-json-dnp3-objects.h b/src/output-json-dnp3-objects.h index fd668d3504..54683bf485 100644 --- a/src/output-json-dnp3-objects.h +++ b/src/output-json-dnp3-objects.h @@ -20,7 +20,6 @@ #include "rust-bindings.h" -void OutputJsonDNP3SetItem(JsonBuilder *js, DNP3Object *object, - DNP3Point *item); +void OutputJsonDNP3SetItem(SCJsonBuilder *js, DNP3Object *object, DNP3Point *item); #endif /* SURICATA_OUTPUT_JSON_DNP3_OBJECTS_H */ diff --git a/src/output-json-dnp3.c b/src/output-json-dnp3.c index 32a70bd66c..05659d5bf9 100644 --- a/src/output-json-dnp3.c +++ b/src/output-json-dnp3.c @@ -52,38 +52,38 @@ typedef struct LogDNP3LogThread_ { OutputJsonThreadCtx *ctx; } LogDNP3LogThread; -static void JsonDNP3LogLinkControl(JsonBuilder *js, uint8_t lc) +static void JsonDNP3LogLinkControl(SCJsonBuilder *js, uint8_t lc) { - jb_set_bool(js, "dir", DNP3_LINK_DIR(lc)); - jb_set_bool(js, "pri", DNP3_LINK_PRI(lc)); - jb_set_bool(js, "fcb", DNP3_LINK_FCB(lc)); - jb_set_bool(js, "fcv", DNP3_LINK_FCV(lc)); - jb_set_uint(js, "function_code", DNP3_LINK_FC(lc)); + SCJbSetBool(js, "dir", DNP3_LINK_DIR(lc)); + SCJbSetBool(js, "pri", DNP3_LINK_PRI(lc)); + SCJbSetBool(js, "fcb", DNP3_LINK_FCB(lc)); + SCJbSetBool(js, "fcv", DNP3_LINK_FCV(lc)); + SCJbSetUint(js, "function_code", DNP3_LINK_FC(lc)); } -static void JsonDNP3LogIin(JsonBuilder *js, uint16_t iin) +static void JsonDNP3LogIin(SCJsonBuilder *js, uint16_t iin) { if (iin) { - jb_open_array(js, "indicators"); + SCJbOpenArray(js, "indicators"); int mapping = 0; do { if (iin & DNP3IndicatorsMap[mapping].value) { - jb_append_string(js, DNP3IndicatorsMap[mapping].name); + SCJbAppendString(js, DNP3IndicatorsMap[mapping].name); } mapping++; } while (DNP3IndicatorsMap[mapping].name != NULL); - jb_close(js); + SCJbClose(js); } } -static void JsonDNP3LogApplicationControl(JsonBuilder *js, uint8_t ac) +static void JsonDNP3LogApplicationControl(SCJsonBuilder *js, uint8_t ac) { - jb_set_bool(js, "fir", DNP3_APP_FIR(ac)); - jb_set_bool(js, "fin", DNP3_APP_FIN(ac)); - jb_set_bool(js, "con", DNP3_APP_CON(ac)); - jb_set_bool(js, "uns", DNP3_APP_UNS(ac)); - jb_set_uint(js, "sequence", DNP3_APP_SEQ(ac)); + SCJbSetBool(js, "fir", DNP3_APP_FIR(ac)); + SCJbSetBool(js, "fin", DNP3_APP_FIN(ac)); + SCJbSetBool(js, "con", DNP3_APP_CON(ac)); + SCJbSetBool(js, "uns", DNP3_APP_UNS(ac)); + SCJbSetUint(js, "sequence", DNP3_APP_SEQ(ac)); } /** @@ -91,21 +91,21 @@ static void JsonDNP3LogApplicationControl(JsonBuilder *js, uint8_t ac) * * TODO: Autogenerate this function based on object definitions. */ -static void JsonDNP3LogObjectItems(JsonBuilder *js, DNP3Object *object) +static void JsonDNP3LogObjectItems(SCJsonBuilder *js, DNP3Object *object) { DNP3Point *item; TAILQ_FOREACH(item, object->points, next) { - jb_start_object(js); + SCJbStartObject(js); - jb_set_uint(js, "prefix", item->prefix); - jb_set_uint(js, "index", item->index); + SCJbSetUint(js, "prefix", item->prefix); + SCJbSetUint(js, "index", item->index); if (DNP3PrefixIsSize(object->prefix_code)) { - jb_set_uint(js, "size", item->size); + SCJbSetUint(js, "size", item->size); } OutputJsonDNP3SetItem(js, object, item); - jb_close(js); + SCJbClose(js); } } @@ -113,65 +113,65 @@ static void JsonDNP3LogObjectItems(JsonBuilder *js, DNP3Object *object) * \brief Log the application layer objects. * * \param objects A list of DNP3 objects. - * \param jb A JsonBuilder instance with an open array. + * \param jb A SCJsonBuilder instance with an open array. */ -static void JsonDNP3LogObjects(JsonBuilder *js, DNP3ObjectList *objects) +static void JsonDNP3LogObjects(SCJsonBuilder *js, DNP3ObjectList *objects) { DNP3Object *object; TAILQ_FOREACH(object, objects, next) { - jb_start_object(js); - jb_set_uint(js, "group", object->group); - jb_set_uint(js, "variation", object->variation); - jb_set_uint(js, "qualifier", object->qualifier); - jb_set_uint(js, "prefix_code", object->prefix_code); - jb_set_uint(js, "range_code", object->range_code); - jb_set_uint(js, "start", object->start); - jb_set_uint(js, "stop", object->stop); - jb_set_uint(js, "count", object->count); + SCJbStartObject(js); + SCJbSetUint(js, "group", object->group); + SCJbSetUint(js, "variation", object->variation); + SCJbSetUint(js, "qualifier", object->qualifier); + SCJbSetUint(js, "prefix_code", object->prefix_code); + SCJbSetUint(js, "range_code", object->range_code); + SCJbSetUint(js, "start", object->start); + SCJbSetUint(js, "stop", object->stop); + SCJbSetUint(js, "count", object->count); if (object->points != NULL && !TAILQ_EMPTY(object->points)) { - jb_open_array(js, "points"); + SCJbOpenArray(js, "points"); JsonDNP3LogObjectItems(js, object); - jb_close(js); + SCJbClose(js); } - jb_close(js); + SCJbClose(js); } } -static void JsonDNP3LogRequest(JsonBuilder *js, DNP3Transaction *dnp3tx) +static void JsonDNP3LogRequest(SCJsonBuilder *js, DNP3Transaction *dnp3tx) { JB_SET_STRING(js, "type", "request"); - jb_open_object(js, "control"); + SCJbOpenObject(js, "control"); JsonDNP3LogLinkControl(js, dnp3tx->lh.control); - jb_close(js); + SCJbClose(js); - jb_set_uint(js, "src", DNP3_SWAP16(dnp3tx->lh.src)); - jb_set_uint(js, "dst", DNP3_SWAP16(dnp3tx->lh.dst)); + SCJbSetUint(js, "src", DNP3_SWAP16(dnp3tx->lh.src)); + SCJbSetUint(js, "dst", DNP3_SWAP16(dnp3tx->lh.dst)); - jb_open_object(js, "application"); + SCJbOpenObject(js, "application"); - jb_open_object(js, "control"); + SCJbOpenObject(js, "control"); JsonDNP3LogApplicationControl(js, dnp3tx->ah.control); - jb_close(js); + SCJbClose(js); - jb_set_uint(js, "function_code", dnp3tx->ah.function_code); + SCJbSetUint(js, "function_code", dnp3tx->ah.function_code); if (!TAILQ_EMPTY(&dnp3tx->objects)) { - jb_open_array(js, "objects"); + SCJbOpenArray(js, "objects"); JsonDNP3LogObjects(js, &dnp3tx->objects); - jb_close(js); + SCJbClose(js); } - jb_set_bool(js, "complete", dnp3tx->complete); + SCJbSetBool(js, "complete", dnp3tx->complete); /* Close application. */ - jb_close(js); + SCJbClose(js); } -static void JsonDNP3LogResponse(JsonBuilder *js, DNP3Transaction *dnp3tx) +static void JsonDNP3LogResponse(SCJsonBuilder *js, DNP3Transaction *dnp3tx) { if (dnp3tx->ah.function_code == DNP3_APP_FC_UNSOLICITED_RESP) { JB_SET_STRING(js, "type", "unsolicited_response"); @@ -179,55 +179,55 @@ static void JsonDNP3LogResponse(JsonBuilder *js, DNP3Transaction *dnp3tx) JB_SET_STRING(js, "type", "response"); } - jb_open_object(js, "control"); + SCJbOpenObject(js, "control"); JsonDNP3LogLinkControl(js, dnp3tx->lh.control); - jb_close(js); + SCJbClose(js); - jb_set_uint(js, "src", DNP3_SWAP16(dnp3tx->lh.src)); - jb_set_uint(js, "dst", DNP3_SWAP16(dnp3tx->lh.dst)); + SCJbSetUint(js, "src", DNP3_SWAP16(dnp3tx->lh.src)); + SCJbSetUint(js, "dst", DNP3_SWAP16(dnp3tx->lh.dst)); - jb_open_object(js, "application"); + SCJbOpenObject(js, "application"); - jb_open_object(js, "control"); + SCJbOpenObject(js, "control"); JsonDNP3LogApplicationControl(js, dnp3tx->ah.control); - jb_close(js); + SCJbClose(js); - jb_set_uint(js, "function_code", dnp3tx->ah.function_code); + SCJbSetUint(js, "function_code", dnp3tx->ah.function_code); if (!TAILQ_EMPTY(&dnp3tx->objects)) { - jb_open_array(js, "objects"); + SCJbOpenArray(js, "objects"); JsonDNP3LogObjects(js, &dnp3tx->objects); - jb_close(js); + SCJbClose(js); } - jb_set_bool(js, "complete", dnp3tx->complete); + SCJbSetBool(js, "complete", dnp3tx->complete); /* Close application. */ - jb_close(js); + SCJbClose(js); - jb_open_object(js, "iin"); + SCJbOpenObject(js, "iin"); JsonDNP3LogIin(js, (uint16_t)(dnp3tx->iin.iin1 << 8 | dnp3tx->iin.iin2)); - jb_close(js); + SCJbClose(js); } -bool AlertJsonDnp3(void *vtx, JsonBuilder *js) +bool AlertJsonDnp3(void *vtx, SCJsonBuilder *js) { DNP3Transaction *tx = (DNP3Transaction *)vtx; bool logged = false; - jb_open_object(js, "dnp3"); + SCJbOpenObject(js, "dnp3"); if (tx->is_request && tx->done) { - jb_open_object(js, "request"); + SCJbOpenObject(js, "request"); JsonDNP3LogRequest(js, tx); - jb_close(js); + SCJbClose(js); logged = true; } if (!tx->is_request && tx->done) { - jb_open_object(js, "response"); + SCJbOpenObject(js, "response"); JsonDNP3LogResponse(js, tx); - jb_close(js); + SCJbClose(js); logged = true; } - jb_close(js); + SCJbClose(js); return logged; } @@ -238,16 +238,17 @@ static int JsonDNP3LoggerToServer(ThreadVars *tv, void *thread_data, LogDNP3LogThread *thread = (LogDNP3LogThread *)thread_data; DNP3Transaction *tx = vtx; - JsonBuilder *js = CreateEveHeader(p, LOG_DIR_FLOW, "dnp3", NULL, thread->dnp3log_ctx->eve_ctx); + SCJsonBuilder *js = + CreateEveHeader(p, LOG_DIR_FLOW, "dnp3", NULL, thread->dnp3log_ctx->eve_ctx); if (unlikely(js == NULL)) { return TM_ECODE_OK; } - jb_open_object(js, "dnp3"); + SCJbOpenObject(js, "dnp3"); JsonDNP3LogRequest(js, tx); - jb_close(js); + SCJbClose(js); OutputJsonBuilderBuffer(tv, p, p->flow, js, thread->ctx); - jb_free(js); + SCJbFree(js); SCReturnInt(TM_ECODE_OK); } @@ -259,16 +260,17 @@ static int JsonDNP3LoggerToClient(ThreadVars *tv, void *thread_data, LogDNP3LogThread *thread = (LogDNP3LogThread *)thread_data; DNP3Transaction *tx = vtx; - JsonBuilder *js = CreateEveHeader(p, LOG_DIR_FLOW, "dnp3", NULL, thread->dnp3log_ctx->eve_ctx); + SCJsonBuilder *js = + CreateEveHeader(p, LOG_DIR_FLOW, "dnp3", NULL, thread->dnp3log_ctx->eve_ctx); if (unlikely(js == NULL)) { return TM_ECODE_OK; } - jb_open_object(js, "dnp3"); + SCJbOpenObject(js, "dnp3"); JsonDNP3LogResponse(js, tx); - jb_close(js); + SCJbClose(js); OutputJsonBuilderBuffer(tv, p, p->flow, js, thread->ctx); - jb_free(js); + SCJbFree(js); SCReturnInt(TM_ECODE_OK); } diff --git a/src/output-json-dnp3.h b/src/output-json-dnp3.h index 5abc2774b4..96472c0c5b 100644 --- a/src/output-json-dnp3.h +++ b/src/output-json-dnp3.h @@ -21,6 +21,6 @@ #include "app-layer-dnp3.h" void JsonDNP3LogRegister(void); -bool AlertJsonDnp3(void *vtx, JsonBuilder *js); +bool AlertJsonDnp3(void *vtx, SCJsonBuilder *js); #endif /* SURICATA_OUTPUT_JSON_DNP3_H */ diff --git a/src/output-json-dns.c b/src/output-json-dns.c index 87d2f87cb5..77d51760ec 100644 --- a/src/output-json-dns.c +++ b/src/output-json-dns.c @@ -248,21 +248,21 @@ typedef struct LogDnsLogThread_ { OutputJsonThreadCtx *ctx; } LogDnsLogThread; -bool AlertJsonDns(void *txptr, JsonBuilder *js) +bool AlertJsonDns(void *txptr, SCJsonBuilder *js) { return SCDnsLogJson( txptr, LOG_FORMAT_DETAILED | LOG_QUERIES | LOG_ANSWERS | LOG_ALL_RRTYPES, js); } -bool AlertJsonDoh2(void *txptr, JsonBuilder *js) +bool AlertJsonDoh2(void *txptr, SCJsonBuilder *js) { - JsonBuilderMark mark = { 0, 0, 0 }; + SCJsonBuilderMark mark = { 0, 0, 0 }; - jb_get_mark(js, &mark); + SCJbGetMark(js, &mark); // first log HTTP2 part bool r = rs_http2_log_json(txptr, js); if (!r) { - jb_restore_mark(js, &mark); + SCJbRestoreMark(js, &mark); } // then log one DNS tx if any, preferring the answer void *tx_dns = DetectGetInnerTx(txptr, ALPROTO_DOH2, ALPROTO_DNS, STREAM_TOCLIENT); @@ -271,10 +271,10 @@ bool AlertJsonDoh2(void *txptr, JsonBuilder *js) } bool r2 = false; if (tx_dns) { - jb_get_mark(js, &mark); + SCJbGetMark(js, &mark); r2 = AlertJsonDns(tx_dns, js); if (!r2) { - jb_restore_mark(js, &mark); + SCJbRestoreMark(js, &mark); } } return r || r2; @@ -286,19 +286,19 @@ static int JsonDoh2Logger(ThreadVars *tv, void *thread_data, const Packet *p, Fl LogDnsLogThread *td = (LogDnsLogThread *)thread_data; LogDnsFileCtx *dnslog_ctx = td->dnslog_ctx; - JsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "dns", NULL, dnslog_ctx->eve_ctx); + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "dns", NULL, dnslog_ctx->eve_ctx); if (unlikely(jb == NULL)) { return TM_ECODE_OK; } - JsonBuilderMark mark = { 0, 0, 0 }; + SCJsonBuilderMark mark = { 0, 0, 0 }; - jb_get_mark(jb, &mark); + SCJbGetMark(jb, &mark); // first log HTTP2 part bool r = rs_http2_log_json(txptr, jb); if (!r) { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } void *tx_dns = DetectGetInnerTx(txptr, ALPROTO_DOH2, ALPROTO_DNS, STREAM_TOCLIENT); @@ -322,18 +322,18 @@ static int JsonDoh2Logger(ThreadVars *tv, void *thread_data, const Packet *p, Fl goto out; } - jb_get_mark(jb, &mark); + SCJbGetMark(jb, &mark); // log DOH2 with DNS config r2 = SCDnsLogJson(tx_dns, td->dnslog_ctx->flags, jb); if (!r2) { - jb_restore_mark(jb, &mark); + SCJbRestoreMark(jb, &mark); } } out: if (r || r2) { OutputJsonBuilderBuffer(tv, p, p->flow, jb, td->ctx); } - jb_free(jb); + SCJbFree(jb); return TM_ECODE_OK; } @@ -350,21 +350,21 @@ static int JsonDnsLoggerToServer(ThreadVars *tv, void *thread_data, } for (uint16_t i = 0; i < 0xffff; i++) { - JsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "dns", NULL, dnslog_ctx->eve_ctx); + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "dns", NULL, dnslog_ctx->eve_ctx); if (unlikely(jb == NULL)) { return TM_ECODE_OK; } - jb_open_object(jb, "dns"); - jb_set_int(jb, "version", 2); + SCJbOpenObject(jb, "dns"); + SCJbSetInt(jb, "version", 2); if (!SCDnsLogJsonQuery(txptr, i, td->dnslog_ctx->flags, jb)) { - jb_free(jb); + SCJbFree(jb); break; } - jb_close(jb); + SCJbClose(jb); OutputJsonBuilderBuffer(tv, p, p->flow, jb, td->ctx); - jb_free(jb); + SCJbFree(jb); } SCReturnInt(TM_ECODE_OK); @@ -383,17 +383,17 @@ static int JsonDnsLoggerToClient(ThreadVars *tv, void *thread_data, } if (SCDnsLogAnswerEnabled(txptr, td->dnslog_ctx->flags)) { - JsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "dns", NULL, dnslog_ctx->eve_ctx); + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "dns", NULL, dnslog_ctx->eve_ctx); if (unlikely(jb == NULL)) { return TM_ECODE_OK; } - jb_open_object(jb, "dns"); - jb_set_int(jb, "version", 2); + SCJbOpenObject(jb, "dns"); + SCJbSetInt(jb, "version", 2); SCDnsLogJsonAnswer(txptr, td->dnslog_ctx->flags, jb); - jb_close(jb); + SCJbClose(jb); OutputJsonBuilderBuffer(tv, p, p->flow, jb, td->ctx); - jb_free(jb); + SCJbFree(jb); } SCReturnInt(TM_ECODE_OK); @@ -426,7 +426,7 @@ static int JsonDnsLogger(ThreadVars *tv, void *thread_data, const Packet *p, Flo return TM_ECODE_OK; } - JsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "dns", NULL, dnslog_ctx->eve_ctx); + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "dns", NULL, dnslog_ctx->eve_ctx); if (unlikely(jb == NULL)) { return TM_ECODE_OK; } @@ -434,7 +434,7 @@ static int JsonDnsLogger(ThreadVars *tv, void *thread_data, const Packet *p, Flo if (SCDnsLogJson(txptr, td->dnslog_ctx->flags, jb)) { OutputJsonBuilderBuffer(tv, p, p->flow, jb, td->ctx); } - jb_free(jb); + SCJbFree(jb); } return TM_ECODE_OK; } diff --git a/src/output-json-dns.h b/src/output-json-dns.h index e5f07bcea9..c15b80cd27 100644 --- a/src/output-json-dns.h +++ b/src/output-json-dns.h @@ -27,7 +27,7 @@ void JsonDnsLogRegister(void); void JsonDoh2LogRegister(void); -bool AlertJsonDns(void *vtx, JsonBuilder *js); -bool AlertJsonDoh2(void *vtx, JsonBuilder *js); +bool AlertJsonDns(void *vtx, SCJsonBuilder *js); +bool AlertJsonDoh2(void *vtx, SCJsonBuilder *js); #endif /* SURICATA_OUTPUT_JSON_DNS_H */ diff --git a/src/output-json-drop.c b/src/output-json-drop.c index a464ceabfb..ae18ac9918 100644 --- a/src/output-json-drop.c +++ b/src/output-json-drop.c @@ -92,76 +92,76 @@ static int DropLogJSON(ThreadVars *tv, JsonDropLogThread *aft, const Packet *p) JsonAddrInfo addr = json_addr_info_zero; JsonAddrInfoInit(p, LOG_DIR_PACKET, &addr); - JsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "drop", &addr, drop_ctx->eve_ctx); + SCJsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "drop", &addr, drop_ctx->eve_ctx); if (unlikely(js == NULL)) return TM_ECODE_OK; if (p->flow != NULL) { if (p->flowflags & FLOW_PKT_TOSERVER) { - jb_set_string(js, "direction", "to_server"); + SCJbSetString(js, "direction", "to_server"); } else { - jb_set_string(js, "direction", "to_client"); + SCJbSetString(js, "direction", "to_client"); } } - jb_open_object(js, "drop"); + SCJbOpenObject(js, "drop"); uint16_t proto = 0; if (PacketIsIPv4(p)) { const IPV4Hdr *ip4h = PacketGetIPv4(p); - jb_set_uint(js, "len", IPV4_GET_RAW_IPLEN(ip4h)); - jb_set_uint(js, "tos", IPV4_GET_RAW_IPTOS(ip4h)); - jb_set_uint(js, "ttl", IPV4_GET_RAW_IPTTL(ip4h)); - jb_set_uint(js, "ipid", IPV4_GET_RAW_IPID(ip4h)); + SCJbSetUint(js, "len", IPV4_GET_RAW_IPLEN(ip4h)); + SCJbSetUint(js, "tos", IPV4_GET_RAW_IPTOS(ip4h)); + SCJbSetUint(js, "ttl", IPV4_GET_RAW_IPTTL(ip4h)); + SCJbSetUint(js, "ipid", IPV4_GET_RAW_IPID(ip4h)); proto = IPV4_GET_RAW_IPPROTO(ip4h); } else if (PacketIsIPv6(p)) { const IPV6Hdr *ip6h = PacketGetIPv6(p); - jb_set_uint(js, "len", IPV6_GET_RAW_PLEN(ip6h)); - jb_set_uint(js, "tc", IPV6_GET_RAW_CLASS(ip6h)); - jb_set_uint(js, "hoplimit", IPV6_GET_RAW_HLIM(ip6h)); - jb_set_uint(js, "flowlbl", IPV6_GET_RAW_FLOW(ip6h)); + SCJbSetUint(js, "len", IPV6_GET_RAW_PLEN(ip6h)); + SCJbSetUint(js, "tc", IPV6_GET_RAW_CLASS(ip6h)); + SCJbSetUint(js, "hoplimit", IPV6_GET_RAW_HLIM(ip6h)); + SCJbSetUint(js, "flowlbl", IPV6_GET_RAW_FLOW(ip6h)); proto = IPV6_GET_L4PROTO(p); } switch (proto) { case IPPROTO_TCP: if (PacketIsTCP(p)) { const TCPHdr *tcph = PacketGetTCP(p); - jb_set_uint(js, "tcpseq", TCP_GET_RAW_SEQ(tcph)); - jb_set_uint(js, "tcpack", TCP_GET_RAW_ACK(tcph)); - jb_set_uint(js, "tcpwin", TCP_GET_RAW_WINDOW(tcph)); - jb_set_bool(js, "syn", TCP_ISSET_FLAG_RAW_SYN(tcph) ? true : false); - jb_set_bool(js, "ack", TCP_ISSET_FLAG_RAW_ACK(tcph) ? true : false); - jb_set_bool(js, "psh", TCP_ISSET_FLAG_RAW_PUSH(tcph) ? true : false); - jb_set_bool(js, "rst", TCP_ISSET_FLAG_RAW_RST(tcph) ? true : false); - jb_set_bool(js, "urg", TCP_ISSET_FLAG_RAW_URG(tcph) ? true : false); - jb_set_bool(js, "fin", TCP_ISSET_FLAG_RAW_FIN(tcph) ? true : false); - jb_set_uint(js, "tcpres", TCP_GET_RAW_X2(tcph)); - jb_set_uint(js, "tcpurgp", TCP_GET_RAW_URG_POINTER(tcph)); + SCJbSetUint(js, "tcpseq", TCP_GET_RAW_SEQ(tcph)); + SCJbSetUint(js, "tcpack", TCP_GET_RAW_ACK(tcph)); + SCJbSetUint(js, "tcpwin", TCP_GET_RAW_WINDOW(tcph)); + SCJbSetBool(js, "syn", TCP_ISSET_FLAG_RAW_SYN(tcph) ? true : false); + SCJbSetBool(js, "ack", TCP_ISSET_FLAG_RAW_ACK(tcph) ? true : false); + SCJbSetBool(js, "psh", TCP_ISSET_FLAG_RAW_PUSH(tcph) ? true : false); + SCJbSetBool(js, "rst", TCP_ISSET_FLAG_RAW_RST(tcph) ? true : false); + SCJbSetBool(js, "urg", TCP_ISSET_FLAG_RAW_URG(tcph) ? true : false); + SCJbSetBool(js, "fin", TCP_ISSET_FLAG_RAW_FIN(tcph) ? true : false); + SCJbSetUint(js, "tcpres", TCP_GET_RAW_X2(tcph)); + SCJbSetUint(js, "tcpurgp", TCP_GET_RAW_URG_POINTER(tcph)); } break; case IPPROTO_UDP: if (PacketIsUDP(p)) { const UDPHdr *udph = PacketGetUDP(p); - jb_set_uint(js, "udplen", UDP_GET_RAW_LEN(udph)); + SCJbSetUint(js, "udplen", UDP_GET_RAW_LEN(udph)); } break; case IPPROTO_ICMP: if (PacketIsICMPv4(p)) { - jb_set_uint(js, "icmp_id", ICMPV4_GET_ID(p)); - jb_set_uint(js, "icmp_seq", ICMPV4_GET_SEQ(p)); + SCJbSetUint(js, "icmp_id", ICMPV4_GET_ID(p)); + SCJbSetUint(js, "icmp_seq", ICMPV4_GET_SEQ(p)); } else if (PacketIsICMPv6(p)) { - jb_set_uint(js, "icmp_id", ICMPV6_GET_ID(p)); - jb_set_uint(js, "icmp_seq", ICMPV6_GET_SEQ(p)); + SCJbSetUint(js, "icmp_id", ICMPV6_GET_ID(p)); + SCJbSetUint(js, "icmp_seq", ICMPV6_GET_SEQ(p)); } break; } if (p->drop_reason != 0) { const char *str = PacketDropReasonToString(p->drop_reason); - jb_set_string(js, "reason", str); + SCJbSetString(js, "reason", str); } /* Close drop. */ - jb_close(js); + SCJbClose(js); if (aft->drop_ctx->flags & LOG_DROP_VERDICT) { EveAddVerdict(js, p); @@ -192,7 +192,7 @@ static int DropLogJSON(ThreadVars *tv, JsonDropLogThread *aft, const Packet *p) } OutputJsonBuilderBuffer(tv, p, p->flow, js, aft->ctx); - jb_free(js); + SCJbFree(js); return TM_ECODE_OK; } diff --git a/src/output-json-email-common.c b/src/output-json-email-common.c index 80aab4651e..9be14d63dc 100644 --- a/src/output-json-email-common.c +++ b/src/output-json-email-common.c @@ -83,7 +83,8 @@ struct { { NULL, NULL, LOG_EMAIL_DEFAULT}, }; -static void EveEmailLogJSONMd5(OutputJsonEmailCtx *email_ctx, JsonBuilder *js, SMTPTransaction *tx) +static void EveEmailLogJSONMd5( + OutputJsonEmailCtx *email_ctx, SCJsonBuilder *js, SMTPTransaction *tx) { if (email_ctx->flags & LOG_EMAIL_SUBJECT_MD5) { MimeStateSMTP *entity = tx->mime_state; @@ -102,7 +103,8 @@ static void EveEmailLogJSONMd5(OutputJsonEmailCtx *email_ctx, JsonBuilder *js, S } } -static void EveEmailLogJSONCustom(OutputJsonEmailCtx *email_ctx, JsonBuilder *js, SMTPTransaction *tx) +static void EveEmailLogJSONCustom( + OutputJsonEmailCtx *email_ctx, SCJsonBuilder *js, SMTPTransaction *tx) { int f = 0; MimeStateSMTP *entity = tx->mime_state; @@ -132,7 +134,8 @@ static void EveEmailLogJSONCustom(OutputJsonEmailCtx *email_ctx, JsonBuilder *js } /* JSON format logging */ -static bool EveEmailLogJsonData(const Flow *f, void *state, void *vtx, uint64_t tx_id, JsonBuilder *sjs) +static bool EveEmailLogJsonData( + const Flow *f, void *state, void *vtx, uint64_t tx_id, SCJsonBuilder *sjs) { SMTPState *smtp_state; MimeStateSMTP *mime_state; @@ -144,8 +147,8 @@ static bool EveEmailLogJsonData(const Flow *f, void *state, void *vtx, uint64_t smtp_state = (SMTPState *)state; if (smtp_state == NULL) { SCLogDebug("no smtp state, so no request logging"); - jb_free(sjs); - SCReturnPtr(NULL, "JsonBuilder"); + SCJbFree(sjs); + SCReturnPtr(NULL, "SCJsonBuilder"); } SMTPTransaction *tx = vtx; mime_state = tx->mime_state; @@ -164,16 +167,17 @@ static bool EveEmailLogJsonData(const Flow *f, void *state, void *vtx, uint64_t } /* JSON format logging */ -TmEcode EveEmailLogJson(JsonEmailLogThread *aft, JsonBuilder *js, const Packet *p, Flow *f, void *state, void *vtx, uint64_t tx_id) +TmEcode EveEmailLogJson(JsonEmailLogThread *aft, SCJsonBuilder *js, const Packet *p, Flow *f, + void *state, void *vtx, uint64_t tx_id) { OutputJsonEmailCtx *email_ctx = aft->emaillog_ctx; SMTPTransaction *tx = (SMTPTransaction *) vtx; - JsonBuilderMark mark = { 0, 0, 0 }; + SCJsonBuilderMark mark = { 0, 0, 0 }; - jb_get_mark(js, &mark); - jb_open_object(js, "email"); + SCJbGetMark(js, &mark); + SCJbOpenObject(js, "email"); if (!EveEmailLogJsonData(f, state, vtx, tx_id, js)) { - jb_restore_mark(js, &mark); + SCJbRestoreMark(js, &mark); SCReturnInt(TM_ECODE_FAILED); } @@ -184,11 +188,11 @@ TmEcode EveEmailLogJson(JsonEmailLogThread *aft, JsonBuilder *js, const Packet * EveEmailLogJSONMd5(email_ctx, js, tx); } - jb_close(js); + SCJbClose(js); SCReturnInt(TM_ECODE_OK); } -bool EveEmailAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *js) +bool EveEmailAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *js) { SMTPState *smtp_state = (SMTPState *)FlowGetAppState(f); if (smtp_state) { diff --git a/src/output-json-email-common.h b/src/output-json-email-common.h index 0c48150244..850960bf02 100644 --- a/src/output-json-email-common.h +++ b/src/output-json-email-common.h @@ -35,8 +35,9 @@ typedef struct JsonEmailLogThread_ { OutputJsonThreadCtx *ctx; } JsonEmailLogThread; -TmEcode EveEmailLogJson(JsonEmailLogThread *aft, JsonBuilder *js, const Packet *p, Flow *f, void *state, void *vtx, uint64_t tx_id); -bool EveEmailAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *js); +TmEcode EveEmailLogJson(JsonEmailLogThread *aft, SCJsonBuilder *js, const Packet *p, Flow *f, + void *state, void *vtx, uint64_t tx_id); +bool EveEmailAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *js); void OutputEmailInitConf(SCConfNode *conf, OutputJsonEmailCtx *email_ctx); diff --git a/src/output-json-file.c b/src/output-json-file.c index 351b5dddfd..c58f227653 100644 --- a/src/output-json-file.c +++ b/src/output-json-file.c @@ -79,7 +79,7 @@ typedef struct JsonFileLogThread_ { OutputJsonThreadCtx *ctx; } JsonFileLogThread; -JsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff, void *tx, +SCJsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff, void *tx, const uint64_t tx_id, const bool stored, uint8_t dir, HttpXFFCfg *xff_cfg, OutputJsonCtx *eve_ctx) { @@ -117,59 +117,59 @@ JsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff, void *tx, } } - JsonBuilder *js = CreateEveHeader(p, fdir, "fileinfo", &addr, eve_ctx); + SCJsonBuilder *js = CreateEveHeader(p, fdir, "fileinfo", &addr, eve_ctx); if (unlikely(js == NULL)) return NULL; - JsonBuilderMark mark = { 0, 0, 0 }; + SCJsonBuilderMark mark = { 0, 0, 0 }; EveJsonSimpleAppLayerLogger *al; switch (p->flow->alproto) { case ALPROTO_HTTP1: - jb_open_object(js, "http"); + SCJbOpenObject(js, "http"); EveHttpAddMetadata(p->flow, tx_id, js); - jb_close(js); + SCJbClose(js); break; case ALPROTO_SMTP: - jb_get_mark(js, &mark); - jb_open_object(js, "smtp"); + SCJbGetMark(js, &mark); + SCJbOpenObject(js, "smtp"); if (EveSMTPAddMetadata(p->flow, tx_id, js)) { - jb_close(js); + SCJbClose(js); } else { - jb_restore_mark(js, &mark); + SCJbRestoreMark(js, &mark); } - jb_get_mark(js, &mark); - jb_open_object(js, "email"); + SCJbGetMark(js, &mark); + SCJbOpenObject(js, "email"); if (EveEmailAddMetadata(p->flow, tx_id, js)) { - jb_close(js); + SCJbClose(js); } else { - jb_restore_mark(js, &mark); + SCJbRestoreMark(js, &mark); } break; case ALPROTO_NFS: /* rpc */ - jb_get_mark(js, &mark); - jb_open_object(js, "rpc"); + SCJbGetMark(js, &mark); + SCJbOpenObject(js, "rpc"); if (EveNFSAddMetadataRPC(p->flow, tx_id, js)) { - jb_close(js); + SCJbClose(js); } else { - jb_restore_mark(js, &mark); + SCJbRestoreMark(js, &mark); } /* nfs */ - jb_get_mark(js, &mark); - jb_open_object(js, "nfs"); + SCJbGetMark(js, &mark); + SCJbOpenObject(js, "nfs"); if (EveNFSAddMetadata(p->flow, tx_id, js)) { - jb_close(js); + SCJbClose(js); } else { - jb_restore_mark(js, &mark); + SCJbRestoreMark(js, &mark); } break; case ALPROTO_SMB: - jb_get_mark(js, &mark); - jb_open_object(js, "smb"); + SCJbGetMark(js, &mark); + SCJbOpenObject(js, "smb"); if (EveSMBAddMetadata(p->flow, tx_id, js)) { - jb_close(js); + SCJbClose(js); } else { - jb_restore_mark(js, &mark); + SCJbRestoreMark(js, &mark); } break; default: @@ -179,9 +179,9 @@ JsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff, void *tx, if (state) { tx = AppLayerParserGetTx(p->flow->proto, p->flow->alproto, state, tx_id); if (tx) { - jb_get_mark(js, &mark); + SCJbGetMark(js, &mark); if (!al->LogTx(tx, js)) { - jb_restore_mark(js, &mark); + SCJbRestoreMark(js, &mark); } } } @@ -189,9 +189,9 @@ JsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff, void *tx, break; } - jb_set_string(js, "app_proto", AppProtoToString(p->flow->alproto)); + SCJbSetString(js, "app_proto", AppProtoToString(p->flow->alproto)); - jb_open_object(js, "fileinfo"); + SCJbOpenObject(js, "fileinfo"); if (stored) { // the file has just been stored on disk cf OUTPUT_FILEDATA_FLAG_CLOSE // but the flag is not set until the loggers have been called @@ -199,11 +199,11 @@ JsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff, void *tx, } else { EveFileInfo(js, ff, tx_id, ff->flags); } - jb_close(js); + SCJbClose(js); /* xff header */ if (have_xff_ip && xff_cfg->flags & XFF_EXTRADATA) { - jb_set_string(js, "xff", xff_buffer); + SCJbSetString(js, "xff", xff_buffer); } return js; @@ -218,13 +218,13 @@ static void FileWriteJsonRecord(ThreadVars *tv, JsonFileLogThread *aft, const Pa { HttpXFFCfg *xff_cfg = aft->filelog_ctx->xff_cfg != NULL ? aft->filelog_ctx->xff_cfg : aft->filelog_ctx->parent_xff_cfg; - JsonBuilder *js = JsonBuildFileInfoRecord(p, ff, tx, tx_id, false, dir, xff_cfg, eve_ctx); + SCJsonBuilder *js = JsonBuildFileInfoRecord(p, ff, tx, tx_id, false, dir, xff_cfg, eve_ctx); if (unlikely(js == NULL)) { return; } OutputJsonBuilderBuffer(tv, p, p->flow, js, aft->ctx); - jb_free(js); + SCJbFree(js); } static int JsonFileLogger(ThreadVars *tv, void *thread_data, const Packet *p, const File *ff, diff --git a/src/output-json-file.h b/src/output-json-file.h index e2eeeccb2f..c7c8ed630c 100644 --- a/src/output-json-file.h +++ b/src/output-json-file.h @@ -29,7 +29,7 @@ typedef struct OutputJsonCtx_ OutputJsonCtx; void JsonFileLogRegister(void); -JsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff, void *tx, +SCJsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff, void *tx, const uint64_t tx_id, const bool stored, uint8_t dir, HttpXFFCfg *xff_cfg, OutputJsonCtx *eve_ctx); diff --git a/src/output-json-flow.c b/src/output-json-flow.c index eb7c554c06..1c4f1dcc3d 100644 --- a/src/output-json-flow.c +++ b/src/output-json-flow.c @@ -52,13 +52,13 @@ #include "flow-storage.h" #include "util-exception-policy.h" -static JsonBuilder *CreateEveHeaderFromFlow(const Flow *f) +static SCJsonBuilder *CreateEveHeaderFromFlow(const Flow *f) { char timebuf[64]; char srcip[46] = {0}, dstip[46] = {0}; Port sp, dp; - JsonBuilder *jb = jb_new_object(); + SCJsonBuilder *jb = SCJbNewObject(); if (unlikely(jb == NULL)) { return NULL; } @@ -90,7 +90,7 @@ static JsonBuilder *CreateEveHeaderFromFlow(const Flow *f) } /* time */ - jb_set_string(jb, "timestamp", timebuf); + SCJbSetString(jb, "timestamp", timebuf); CreateEveFlowId(jb, (const Flow *)f); @@ -102,191 +102,190 @@ static JsonBuilder *CreateEveHeaderFromFlow(const Flow *f) /* input interface */ if (f->livedev) { - jb_set_string(jb, "in_iface", f->livedev->dev); + SCJbSetString(jb, "in_iface", f->livedev->dev); } JB_SET_STRING(jb, "event_type", "flow"); /* vlan */ if (f->vlan_idx > 0) { - jb_open_array(jb, "vlan"); - jb_append_uint(jb, f->vlan_id[0]); + SCJbOpenArray(jb, "vlan"); + SCJbAppendUint(jb, f->vlan_id[0]); if (f->vlan_idx > 1) { - jb_append_uint(jb, f->vlan_id[1]); + SCJbAppendUint(jb, f->vlan_id[1]); } if (f->vlan_idx > 2) { - jb_append_uint(jb, f->vlan_id[2]); + SCJbAppendUint(jb, f->vlan_id[2]); } - jb_close(jb); + SCJbClose(jb); } /* tuple */ - jb_set_string(jb, "src_ip", srcip); + SCJbSetString(jb, "src_ip", srcip); switch(f->proto) { case IPPROTO_ICMP: break; case IPPROTO_UDP: case IPPROTO_TCP: case IPPROTO_SCTP: - jb_set_uint(jb, "src_port", sp); + SCJbSetUint(jb, "src_port", sp); break; } - jb_set_string(jb, "dest_ip", dstip); + SCJbSetString(jb, "dest_ip", dstip); switch(f->proto) { case IPPROTO_ICMP: break; case IPPROTO_UDP: case IPPROTO_TCP: case IPPROTO_SCTP: - jb_set_uint(jb, "dest_port", dp); + SCJbSetUint(jb, "dest_port", dp); break; } if (SCProtoNameValid(f->proto)) { - jb_set_string(jb, "proto", known_proto[f->proto]); + SCJbSetString(jb, "proto", known_proto[f->proto]); } else { char proto[4]; snprintf(proto, sizeof(proto), "%"PRIu8"", f->proto); - jb_set_string(jb, "proto", proto); + SCJbSetString(jb, "proto", proto); } switch (f->proto) { case IPPROTO_ICMP: case IPPROTO_ICMPV6: - jb_set_uint(jb, "icmp_type", f->icmp_s.type); - jb_set_uint(jb, "icmp_code", f->icmp_s.code); + SCJbSetUint(jb, "icmp_type", f->icmp_s.type); + SCJbSetUint(jb, "icmp_code", f->icmp_s.code); if (f->tosrcpktcnt) { - jb_set_uint(jb, "response_icmp_type", f->icmp_d.type); - jb_set_uint(jb, "response_icmp_code", f->icmp_d.code); + SCJbSetUint(jb, "response_icmp_type", f->icmp_d.type); + SCJbSetUint(jb, "response_icmp_code", f->icmp_d.code); } break; case IPPROTO_ESP: - jb_set_uint(jb, "spi", f->esp.spi); + SCJbSetUint(jb, "spi", f->esp.spi); break; } return jb; } -void EveAddAppProto(Flow *f, JsonBuilder *js) +void EveAddAppProto(Flow *f, SCJsonBuilder *js) { if (f->alproto) { - jb_set_string(js, "app_proto", AppProtoToString(f->alproto)); + SCJbSetString(js, "app_proto", AppProtoToString(f->alproto)); } if (f->alproto_ts && f->alproto_ts != f->alproto) { - jb_set_string(js, "app_proto_ts", AppProtoToString(f->alproto_ts)); + SCJbSetString(js, "app_proto_ts", AppProtoToString(f->alproto_ts)); } if (f->alproto_tc && f->alproto_tc != f->alproto) { - jb_set_string(js, "app_proto_tc", AppProtoToString(f->alproto_tc)); + SCJbSetString(js, "app_proto_tc", AppProtoToString(f->alproto_tc)); } if (f->alproto_orig != f->alproto && f->alproto_orig != ALPROTO_UNKNOWN) { - jb_set_string(js, "app_proto_orig", AppProtoToString(f->alproto_orig)); + SCJbSetString(js, "app_proto_orig", AppProtoToString(f->alproto_orig)); } if (f->alproto_expect != f->alproto && f->alproto_expect != ALPROTO_UNKNOWN) { - jb_set_string(js, "app_proto_expected", - AppProtoToString(f->alproto_expect)); + SCJbSetString(js, "app_proto_expected", AppProtoToString(f->alproto_expect)); } } -void EveAddFlow(Flow *f, JsonBuilder *js) +void EveAddFlow(Flow *f, SCJsonBuilder *js) { FlowBypassInfo *fc = FlowGetStorageById(f, GetFlowBypassInfoID()); if (fc) { - jb_set_uint(js, "pkts_toserver", f->todstpktcnt + fc->todstpktcnt); - jb_set_uint(js, "pkts_toclient", f->tosrcpktcnt + fc->tosrcpktcnt); - jb_set_uint(js, "bytes_toserver", f->todstbytecnt + fc->todstbytecnt); - jb_set_uint(js, "bytes_toclient", f->tosrcbytecnt + fc->tosrcbytecnt); - - jb_open_object(js, "bypassed"); - jb_set_uint(js, "pkts_toserver", fc->todstpktcnt); - jb_set_uint(js, "pkts_toclient", fc->tosrcpktcnt); - jb_set_uint(js, "bytes_toserver", fc->todstbytecnt); - jb_set_uint(js, "bytes_toclient", fc->tosrcbytecnt); - jb_close(js); + SCJbSetUint(js, "pkts_toserver", f->todstpktcnt + fc->todstpktcnt); + SCJbSetUint(js, "pkts_toclient", f->tosrcpktcnt + fc->tosrcpktcnt); + SCJbSetUint(js, "bytes_toserver", f->todstbytecnt + fc->todstbytecnt); + SCJbSetUint(js, "bytes_toclient", f->tosrcbytecnt + fc->tosrcbytecnt); + + SCJbOpenObject(js, "bypassed"); + SCJbSetUint(js, "pkts_toserver", fc->todstpktcnt); + SCJbSetUint(js, "pkts_toclient", fc->tosrcpktcnt); + SCJbSetUint(js, "bytes_toserver", fc->todstbytecnt); + SCJbSetUint(js, "bytes_toclient", fc->tosrcbytecnt); + SCJbClose(js); } else { - jb_set_uint(js, "pkts_toserver", f->todstpktcnt); - jb_set_uint(js, "pkts_toclient", f->tosrcpktcnt); - jb_set_uint(js, "bytes_toserver", f->todstbytecnt); - jb_set_uint(js, "bytes_toclient", f->tosrcbytecnt); + SCJbSetUint(js, "pkts_toserver", f->todstpktcnt); + SCJbSetUint(js, "pkts_toclient", f->tosrcpktcnt); + SCJbSetUint(js, "bytes_toserver", f->todstbytecnt); + SCJbSetUint(js, "bytes_toclient", f->tosrcbytecnt); } char timebuf1[64]; CreateIsoTimeString(f->startts, timebuf1, sizeof(timebuf1)); - jb_set_string(js, "start", timebuf1); + SCJbSetString(js, "start", timebuf1); } -static void EveExceptionPolicyLog(JsonBuilder *js, uint16_t flag) +static void EveExceptionPolicyLog(SCJsonBuilder *js, uint16_t flag) { if (flag & EXCEPTION_TARGET_FLAG_DEFRAG_MEMCAP) { - jb_start_object(js); - jb_set_string(js, "target", + SCJbStartObject(js); + SCJbSetString(js, "target", ExceptionPolicyTargetFlagToString(EXCEPTION_TARGET_FLAG_DEFRAG_MEMCAP)); - jb_set_string(js, "policy", + SCJbSetString(js, "policy", ExceptionPolicyEnumToString( ExceptionPolicyTargetPolicy(EXCEPTION_TARGET_FLAG_DEFRAG_MEMCAP), true)); - jb_close(js); + SCJbClose(js); } if (flag & EXCEPTION_TARGET_FLAG_SESSION_MEMCAP) { - jb_start_object(js); - jb_set_string(js, "target", + SCJbStartObject(js); + SCJbSetString(js, "target", ExceptionPolicyTargetFlagToString(EXCEPTION_TARGET_FLAG_SESSION_MEMCAP)); - jb_set_string(js, "policy", + SCJbSetString(js, "policy", ExceptionPolicyEnumToString( ExceptionPolicyTargetPolicy(EXCEPTION_TARGET_FLAG_SESSION_MEMCAP), true)); - jb_close(js); + SCJbClose(js); } if (flag & EXCEPTION_TARGET_FLAG_REASSEMBLY_MEMCAP) { - jb_start_object(js); - jb_set_string(js, "target", + SCJbStartObject(js); + SCJbSetString(js, "target", ExceptionPolicyTargetFlagToString(EXCEPTION_TARGET_FLAG_REASSEMBLY_MEMCAP)); - jb_set_string(js, "policy", + SCJbSetString(js, "policy", ExceptionPolicyEnumToString( ExceptionPolicyTargetPolicy(EXCEPTION_TARGET_FLAG_REASSEMBLY_MEMCAP), true)); - jb_close(js); + SCJbClose(js); } if (flag & EXCEPTION_TARGET_FLAG_FLOW_MEMCAP) { - jb_start_object(js); - jb_set_string( + SCJbStartObject(js); + SCJbSetString( js, "target", ExceptionPolicyTargetFlagToString(EXCEPTION_TARGET_FLAG_FLOW_MEMCAP)); - jb_set_string(js, "policy", + SCJbSetString(js, "policy", ExceptionPolicyEnumToString( ExceptionPolicyTargetPolicy(EXCEPTION_TARGET_FLAG_FLOW_MEMCAP), true)); - jb_close(js); + SCJbClose(js); } if (flag & EXCEPTION_TARGET_FLAG_MIDSTREAM) { - jb_start_object(js); - jb_set_string( + SCJbStartObject(js); + SCJbSetString( js, "target", ExceptionPolicyTargetFlagToString(EXCEPTION_TARGET_FLAG_MIDSTREAM)); - jb_set_string(js, "policy", + SCJbSetString(js, "policy", ExceptionPolicyEnumToString( ExceptionPolicyTargetPolicy(EXCEPTION_TARGET_FLAG_MIDSTREAM), true)); - jb_close(js); + SCJbClose(js); } if (flag & EXCEPTION_TARGET_FLAG_APPLAYER_ERROR) { - jb_start_object(js); - jb_set_string(js, "target", + SCJbStartObject(js); + SCJbSetString(js, "target", ExceptionPolicyTargetFlagToString(EXCEPTION_TARGET_FLAG_APPLAYER_ERROR)); - jb_set_string(js, "policy", + SCJbSetString(js, "policy", ExceptionPolicyEnumToString( ExceptionPolicyTargetPolicy(EXCEPTION_TARGET_FLAG_APPLAYER_ERROR), true)); - jb_close(js); + SCJbClose(js); } } /* Eve format logging */ -static void EveFlowLogJSON(OutputJsonThreadCtx *aft, JsonBuilder *jb, Flow *f) +static void EveFlowLogJSON(OutputJsonThreadCtx *aft, SCJsonBuilder *jb, Flow *f) { EveAddAppProto(f, jb); - jb_open_object(jb, "flow"); + SCJbOpenObject(jb, "flow"); EveAddFlow(f, jb); char timebuf2[64]; CreateIsoTimeString(f->lastts, timebuf2, sizeof(timebuf2)); - jb_set_string(jb, "end", timebuf2); + SCJbSetString(jb, "end", timebuf2); uint64_t age = (SCTIME_SECS(f->lastts) - SCTIME_SECS(f->startts)); - jb_set_uint(jb, "age", age); + SCJbSetUint(jb, "age", age); if (f->flow_end_flags & FLOW_END_FLAG_EMERGENCY) JB_SET_TRUE(jb, "emergency"); @@ -329,9 +328,9 @@ static void EveFlowLogJSON(OutputJsonThreadCtx *aft, JsonBuilder *jb, Flow *f) else reason = "unknown"; - jb_set_string(jb, "reason", reason); + SCJbSetString(jb, "reason", reason); - jb_set_bool(jb, "alerted", FlowHasAlerts(f)); + SCJbSetBool(jb, "alerted", FlowHasAlerts(f)); if (f->flags & FLOW_WRONG_THREAD) JB_SET_TRUE(jb, "wrong_thread"); @@ -341,41 +340,41 @@ static void EveFlowLogJSON(OutputJsonThreadCtx *aft, JsonBuilder *jb, Flow *f) JB_SET_STRING(jb, "action", "pass"); } if (f->applied_exception_policy != 0) { - jb_open_array(jb, "exception_policy"); + SCJbOpenArray(jb, "exception_policy"); EveExceptionPolicyLog(jb, f->applied_exception_policy); - jb_close(jb); /* close array */ + SCJbClose(jb); /* close array */ } /* Close flow. */ - jb_close(jb); + SCJbClose(jb); EveAddCommonOptions(&aft->ctx->cfg, NULL, f, jb, LOG_DIR_FLOW); /* TCP */ if (f->proto == IPPROTO_TCP) { - jb_open_object(jb, "tcp"); + SCJbOpenObject(jb, "tcp"); TcpSession *ssn = f->protoctx; char hexflags[3]; snprintf(hexflags, sizeof(hexflags), "%02x", ssn ? ssn->tcp_packet_flags : 0); - jb_set_string(jb, "tcp_flags", hexflags); + SCJbSetString(jb, "tcp_flags", hexflags); snprintf(hexflags, sizeof(hexflags), "%02x", ssn ? ssn->client.tcp_flags : 0); - jb_set_string(jb, "tcp_flags_ts", hexflags); + SCJbSetString(jb, "tcp_flags_ts", hexflags); snprintf(hexflags, sizeof(hexflags), "%02x", ssn ? ssn->server.tcp_flags : 0); - jb_set_string(jb, "tcp_flags_tc", hexflags); + SCJbSetString(jb, "tcp_flags_tc", hexflags); EveTcpFlags(ssn ? ssn->tcp_packet_flags : 0, jb); if (ssn) { const char *tcp_state = StreamTcpStateAsString(ssn->state); if (tcp_state != NULL) - jb_set_string(jb, "state", tcp_state); + SCJbSetString(jb, "state", tcp_state); if (ssn->server.flags & STREAMTCP_STREAM_FLAG_HAS_GAP) { JB_SET_TRUE(jb, "tc_gap"); } @@ -383,17 +382,17 @@ static void EveFlowLogJSON(OutputJsonThreadCtx *aft, JsonBuilder *jb, Flow *f) JB_SET_TRUE(jb, "ts_gap"); } - jb_set_uint(jb, "ts_max_regions", ssn->client.sb.max_regions); - jb_set_uint(jb, "tc_max_regions", ssn->server.sb.max_regions); + SCJbSetUint(jb, "ts_max_regions", ssn->client.sb.max_regions); + SCJbSetUint(jb, "tc_max_regions", ssn->server.sb.max_regions); if (ssn->urg_offset_ts) - jb_set_uint(jb, "ts_urgent_oob_data", ssn->urg_offset_ts); + SCJbSetUint(jb, "ts_urgent_oob_data", ssn->urg_offset_ts); if (ssn->urg_offset_tc) - jb_set_uint(jb, "tc_urgent_oob_data", ssn->urg_offset_tc); + SCJbSetUint(jb, "tc_urgent_oob_data", ssn->urg_offset_tc); } /* Close tcp. */ - jb_close(jb); + SCJbClose(jb); } } @@ -405,7 +404,7 @@ static int JsonFlowLogger(ThreadVars *tv, void *thread_data, Flow *f) /* reset */ MemBufferReset(thread->buffer); - JsonBuilder *jb = CreateEveHeaderFromFlow(f); + SCJsonBuilder *jb = CreateEveHeaderFromFlow(f); if (unlikely(jb == NULL)) { SCReturnInt(TM_ECODE_OK); } @@ -413,7 +412,7 @@ static int JsonFlowLogger(ThreadVars *tv, void *thread_data, Flow *f) EveFlowLogJSON(thread, jb, f); OutputJsonBuilderBuffer(tv, NULL, f, jb, thread); - jb_free(jb); + SCJbFree(jb); SCReturnInt(TM_ECODE_OK); } diff --git a/src/output-json-flow.h b/src/output-json-flow.h index e334315e56..4524370d11 100644 --- a/src/output-json-flow.h +++ b/src/output-json-flow.h @@ -25,7 +25,7 @@ #define SURICATA_OUTPUT_JSON_FLOW_H void JsonFlowLogRegister(void); -void EveAddFlow(Flow *f, JsonBuilder *js); -void EveAddAppProto(Flow *f, JsonBuilder *js); +void EveAddFlow(Flow *f, SCJsonBuilder *js); +void EveAddAppProto(Flow *f, SCJsonBuilder *js); #endif /* SURICATA_OUTPUT_JSON_FLOW_H */ diff --git a/src/output-json-frame.c b/src/output-json-frame.c index c8bbcfa8f1..f66bd8f8d0 100644 --- a/src/output-json-frame.c +++ b/src/output-json-frame.c @@ -173,7 +173,7 @@ static int FrameJsonStreamDataCallback( * \brief try to log frame's stream data into payload/payload_printable */ static void FrameAddPayloadTCP(Flow *f, const TcpSession *ssn, const TcpStream *stream, - const Frame *frame, JsonBuilder *jb, MemBuffer *buffer) + const Frame *frame, SCJsonBuilder *jb, MemBuffer *buffer) { MemBufferReset(buffer); @@ -199,17 +199,17 @@ static void FrameAddPayloadTCP(Flow *f, const TcpSession *ssn, const TcpStream * } if (cbd.payload->offset) { - jb_set_base64(jb, "payload", cbd.payload->buffer, cbd.payload->offset); + SCJbSetBase64(jb, "payload", cbd.payload->buffer, cbd.payload->offset); uint8_t printable_buf[cbd.payload->offset + 1]; uint32_t offset = 0; PrintStringsToBuffer(printable_buf, &offset, cbd.payload->offset + 1, cbd.payload->buffer, cbd.payload->offset); - jb_set_string(jb, "payload_printable", (char *)printable_buf); - jb_set_bool(jb, "complete", complete); + SCJbSetString(jb, "payload_printable", (char *)printable_buf); + SCJbSetBool(jb, "complete", complete); } } -static void FrameAddPayloadUDP(JsonBuilder *js, const Packet *p, const Frame *frame) +static void FrameAddPayloadUDP(SCJsonBuilder *js, const Packet *p, const Frame *frame) { DEBUG_VALIDATE_BUG_ON(frame->offset >= p->payload_len); if (frame->offset >= p->payload_len) @@ -231,18 +231,18 @@ static void FrameAddPayloadUDP(JsonBuilder *js, const Packet *p, const Frame *fr const uint32_t data_len = frame_len; const uint32_t log_data_len = MIN(data_len, 256); - jb_set_base64(js, "payload", data, log_data_len); + SCJbSetBase64(js, "payload", data, log_data_len); uint8_t printable_buf[log_data_len + 1]; uint32_t o = 0; PrintStringsToBuffer(printable_buf, &o, log_data_len + 1, data, log_data_len); printable_buf[log_data_len] = '\0'; - jb_set_string(js, "payload_printable", (char *)printable_buf); + SCJbSetString(js, "payload_printable", (char *)printable_buf); #if 0 char pretty_buf[data_len * 4 + 1]; pretty_buf[0] = '\0'; PayloadAsHex(data, data_len, pretty_buf, data_len * 4 + 1); - jb_set_string(js, "payload_hex", pretty_buf); + SCJbSetString(js, "payload_hex", pretty_buf); #endif } @@ -251,40 +251,40 @@ static void FrameAddPayloadUDP(JsonBuilder *js, const Packet *p, const Frame *fr * \note ipproto argument is passed to assist static code analyzers */ void FrameJsonLogOneFrame(const uint8_t ipproto, const Frame *frame, Flow *f, - const TcpStream *stream, const Packet *p, JsonBuilder *jb, MemBuffer *buffer) + const TcpStream *stream, const Packet *p, SCJsonBuilder *jb, MemBuffer *buffer) { DEBUG_VALIDATE_BUG_ON(ipproto != p->proto); DEBUG_VALIDATE_BUG_ON(ipproto != f->proto); - jb_open_object(jb, "frame"); + SCJbOpenObject(jb, "frame"); if (frame->type == FRAME_STREAM_TYPE) { - jb_set_string(jb, "type", "stream"); + SCJbSetString(jb, "type", "stream"); } else { - jb_set_string(jb, "type", AppLayerParserGetFrameNameById(ipproto, f->alproto, frame->type)); + SCJbSetString(jb, "type", AppLayerParserGetFrameNameById(ipproto, f->alproto, frame->type)); } - jb_set_uint(jb, "id", frame->id); - jb_set_string(jb, "direction", PKT_IS_TOSERVER(p) ? "toserver" : "toclient"); + SCJbSetUint(jb, "id", frame->id); + SCJbSetString(jb, "direction", PKT_IS_TOSERVER(p) ? "toserver" : "toclient"); if (ipproto == IPPROTO_TCP) { DEBUG_VALIDATE_BUG_ON(stream == NULL); - jb_set_uint(jb, "stream_offset", frame->offset); + SCJbSetUint(jb, "stream_offset", frame->offset); if (frame->len < 0) { uint64_t usable = StreamTcpGetUsable(stream, true); uint64_t len = usable - frame->offset; - jb_set_uint(jb, "length", len); + SCJbSetUint(jb, "length", len); } else { - jb_set_uint(jb, "length", frame->len); + SCJbSetUint(jb, "length", frame->len); } FrameAddPayloadTCP(f, f->protoctx, stream, frame, jb, buffer); } else { - jb_set_uint(jb, "length", frame->len); + SCJbSetUint(jb, "length", frame->len); FrameAddPayloadUDP(jb, p, frame); } if (frame->flags & FRAME_FLAG_TX_ID_SET) { - jb_set_uint(jb, "tx_id", frame->tx_id); + SCJbSetUint(jb, "tx_id", frame->tx_id); } - jb_close(jb); + SCJbClose(jb); } static int FrameJsonUdp(ThreadVars *tv, JsonFrameLogThread *aft, const Packet *p, Flow *f, @@ -308,15 +308,15 @@ static int FrameJsonUdp(ThreadVars *tv, JsonFrameLogThread *aft, const Packet *p JsonAddrInfo addr = json_addr_info_zero; JsonAddrInfoInit(p, LOG_DIR_PACKET, &addr); - JsonBuilder *jb = + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_PACKET, "frame", &addr, json_output_ctx->eve_ctx); if (unlikely(jb == NULL)) return TM_ECODE_OK; - jb_set_string(jb, "app_proto", AppProtoToString(f->alproto)); + SCJbSetString(jb, "app_proto", AppProtoToString(f->alproto)); FrameJsonLogOneFrame(IPPROTO_UDP, frame, p->flow, NULL, p, jb, aft->payload_buffer); OutputJsonBuilderBuffer(tv, p, p->flow, jb, aft->ctx); - jb_free(jb); + SCJbFree(jb); frame->flags |= FRAME_FLAG_LOGGED; } return TM_ECODE_OK; @@ -382,15 +382,15 @@ static int FrameJson(ThreadVars *tv, JsonFrameLogThread *aft, const Packet *p) JsonAddrInfo addr = json_addr_info_zero; JsonAddrInfoInit(p, LOG_DIR_PACKET, &addr); - JsonBuilder *jb = + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_PACKET, "frame", &addr, json_output_ctx->eve_ctx); if (unlikely(jb == NULL)) return TM_ECODE_OK; - jb_set_string(jb, "app_proto", AppProtoToString(p->flow->alproto)); + SCJbSetString(jb, "app_proto", AppProtoToString(p->flow->alproto)); FrameJsonLogOneFrame(IPPROTO_TCP, frame, p->flow, stream, p, jb, aft->payload_buffer); OutputJsonBuilderBuffer(tv, p, p->flow, jb, aft->ctx); - jb_free(jb); + SCJbFree(jb); frame->flags |= FRAME_FLAG_LOGGED; } } diff --git a/src/output-json-frame.h b/src/output-json-frame.h index 49caca073d..8c02c033e0 100644 --- a/src/output-json-frame.h +++ b/src/output-json-frame.h @@ -31,7 +31,7 @@ #include "stream-tcp-private.h" void FrameJsonLogOneFrame(const uint8_t ipproto, const Frame *frame, Flow *f, - const TcpStream *stream, const Packet *p, JsonBuilder *jb, MemBuffer *); + const TcpStream *stream, const Packet *p, SCJsonBuilder *jb, MemBuffer *); void JsonFrameLogRegister(void); #endif /* SURICATA_OUTPUT_JSON_FRAME_H */ diff --git a/src/output-json-ftp.c b/src/output-json-ftp.c index f7fae9983b..c623b5e6c1 100644 --- a/src/output-json-ftp.c +++ b/src/output-json-ftp.c @@ -46,13 +46,13 @@ #include "app-layer-ftp.h" #include "output-json-ftp.h" -bool EveFTPLogCommand(void *vtx, JsonBuilder *jb) +bool EveFTPLogCommand(void *vtx, SCJsonBuilder *jb) { FTPTransaction *tx = vtx; /* Preallocate array objects to simplify failure case */ - JsonBuilder *js_resplist = NULL; + SCJsonBuilder *js_resplist = NULL; if (!TAILQ_EMPTY(&tx->response_list)) { - js_resplist = jb_new_array(); + js_resplist = SCJbNewArray(); if (unlikely(js_resplist == NULL)) { return false; @@ -68,12 +68,12 @@ bool EveFTPLogCommand(void *vtx, JsonBuilder *jb) return false; } } - jb_open_object(jb, "ftp"); + SCJbOpenObject(jb, "ftp"); if (command_name) { - jb_set_string(jb, "command", command_name); + SCJbSetString(jb, "command", command_name); uint32_t min_length = command_name_length + 1; /* command + space */ if (tx->request_length > min_length) { - jb_set_string_from_bytes(jb, "command_data", (const uint8_t *)tx->request + min_length, + SCJbSetStringFromBytes(jb, "command_data", (const uint8_t *)tx->request + min_length, tx->request_length - min_length - 1); if (tx->request_truncated) { JB_SET_TRUE(jb, "command_truncated"); @@ -109,16 +109,17 @@ bool EveFTPLogCommand(void *vtx, JsonBuilder *jb) /* Gather the completion code if present */ if (isdigit(where[0]) && isdigit(where[1]) && isdigit(where[2])) { if (!is_cc_array_open) { - jb_open_array(jb, "completion_code"); + SCJbOpenArray(jb, "completion_code"); is_cc_array_open = true; } - jb_append_string_from_bytes(jb, (const uint8_t *)where, 3); + SCJbAppendStringFromBytes(jb, (const uint8_t *)where, 3); offset = 4; } } /* move past 3 character completion code */ if (pos >= offset) { - jb_append_string_from_bytes(js_resplist, (const uint8_t *)where + offset, pos - offset); + SCJbAppendStringFromBytes( + js_resplist, (const uint8_t *)where + offset, pos - offset); resp_cnt++; } @@ -128,17 +129,17 @@ bool EveFTPLogCommand(void *vtx, JsonBuilder *jb) } if (is_cc_array_open) { - jb_close(jb); + SCJbClose(jb); } if (resp_cnt) { - jb_close(js_resplist); - jb_set_object(jb, "reply", js_resplist); + SCJbClose(js_resplist); + SCJbSetObject(jb, "reply", js_resplist); } - jb_free(js_resplist); + SCJbFree(js_resplist); } if (tx->dyn_port) { - jb_set_uint(jb, "dynamic_port", tx->dyn_port); + SCJbSetUint(jb, "dynamic_port", tx->dyn_port); } if (tx->command_descriptor.command_code == FTP_COMMAND_PORT || @@ -161,6 +162,6 @@ bool EveFTPLogCommand(void *vtx, JsonBuilder *jb) } else { JB_SET_FALSE(jb, "reply_truncated"); } - jb_close(jb); + SCJbClose(jb); return true; } diff --git a/src/output-json-ftp.h b/src/output-json-ftp.h index 57c35e9b66..2adf69fd6e 100644 --- a/src/output-json-ftp.h +++ b/src/output-json-ftp.h @@ -24,6 +24,6 @@ #ifndef SURICATA_OUTPUT_JSON_FTP_H #define SURICATA_OUTPUT_JSON_FTP_H -bool EveFTPLogCommand(void *vtx, JsonBuilder *js); +bool EveFTPLogCommand(void *vtx, SCJsonBuilder *js); #endif /* SURICATA_OUTPUT_JSON_FTP_H */ diff --git a/src/output-json-http.c b/src/output-json-http.c index 78da8f6c8d..c65a987b2d 100644 --- a/src/output-json-http.c +++ b/src/output-json-http.c @@ -194,11 +194,11 @@ struct { { "x_bluecoat_via", "x-bluecoat-via", LOG_HTTP_REQUEST }, }; -static void EveHttpLogJSONBasic(JsonBuilder *js, htp_tx_t *tx) +static void EveHttpLogJSONBasic(SCJsonBuilder *js, htp_tx_t *tx) { /* hostname */ if (htp_tx_request_hostname(tx) != NULL) { - jb_set_string_from_bytes(js, "hostname", bstr_ptr(htp_tx_request_hostname(tx)), + SCJbSetStringFromBytes(js, "hostname", bstr_ptr(htp_tx_request_hostname(tx)), (uint32_t)bstr_len(htp_tx_request_hostname(tx))); } @@ -209,12 +209,12 @@ static void EveHttpLogJSONBasic(JsonBuilder *js, htp_tx_t *tx) * port and the TCP destination port of the flow. */ if (htp_tx_request_port_number(tx) >= 0) { - jb_set_uint(js, "http_port", htp_tx_request_port_number(tx)); + SCJbSetUint(js, "http_port", htp_tx_request_port_number(tx)); } /* uri */ if (htp_tx_request_uri(tx) != NULL) { - jb_set_string_from_bytes(js, "url", bstr_ptr(htp_tx_request_uri(tx)), + SCJbSetStringFromBytes(js, "url", bstr_ptr(htp_tx_request_uri(tx)), (uint32_t)bstr_len(htp_tx_request_uri(tx))); } @@ -222,14 +222,14 @@ static void EveHttpLogJSONBasic(JsonBuilder *js, htp_tx_t *tx) /* user agent */ const htp_header_t *h_user_agent = htp_tx_request_header(tx, "user-agent"); if (h_user_agent != NULL) { - jb_set_string_from_bytes(js, "http_user_agent", htp_header_value_ptr(h_user_agent), + SCJbSetStringFromBytes(js, "http_user_agent", htp_header_value_ptr(h_user_agent), (uint32_t)htp_header_value_len(h_user_agent)); } /* x-forwarded-for */ const htp_header_t *h_x_forwarded_for = htp_tx_request_header(tx, "x-forwarded-for"); if (h_x_forwarded_for != NULL) { - jb_set_string_from_bytes(js, "xff", htp_header_value_ptr(h_x_forwarded_for), + SCJbSetStringFromBytes(js, "xff", htp_header_value_ptr(h_x_forwarded_for), (uint32_t)htp_header_value_len(h_x_forwarded_for)); } } @@ -245,28 +245,28 @@ static void EveHttpLogJSONBasic(JsonBuilder *js, htp_tx_t *tx) char *p = strchr(string, ';'); if (p != NULL) *p = '\0'; - jb_set_string(js, "http_content_type", string); + SCJbSetString(js, "http_content_type", string); } const htp_header_t *h_content_range = htp_tx_response_header(tx, "content-range"); if (h_content_range != NULL) { - jb_open_object(js, "content_range"); - jb_set_string_from_bytes(js, "raw", htp_header_value_ptr(h_content_range), + SCJbOpenObject(js, "content_range"); + SCJbSetStringFromBytes(js, "raw", htp_header_value_ptr(h_content_range), (uint32_t)htp_header_value_len(h_content_range)); HTTPContentRange crparsed; if (HTPParseContentRange(htp_header_value(h_content_range), &crparsed) == 0) { if (crparsed.start >= 0) - jb_set_uint(js, "start", crparsed.start); + SCJbSetUint(js, "start", crparsed.start); if (crparsed.end >= 0) - jb_set_uint(js, "end", crparsed.end); + SCJbSetUint(js, "end", crparsed.end); if (crparsed.size >= 0) - jb_set_uint(js, "size", crparsed.size); + SCJbSetUint(js, "size", crparsed.size); } - jb_close(js); + SCJbClose(js); } } } -static void EveHttpLogJSONExtended(JsonBuilder *js, htp_tx_t *tx) +static void EveHttpLogJSONExtended(SCJsonBuilder *js, htp_tx_t *tx) { /* referer */ const htp_header_t *h_referer = NULL; @@ -274,53 +274,53 @@ static void EveHttpLogJSONExtended(JsonBuilder *js, htp_tx_t *tx) h_referer = htp_tx_request_header(tx, "referer"); } if (h_referer != NULL) { - jb_set_string_from_bytes(js, "http_refer", htp_header_value_ptr(h_referer), + SCJbSetStringFromBytes(js, "http_refer", htp_header_value_ptr(h_referer), (uint32_t)htp_header_value_len(h_referer)); } /* method */ if (htp_tx_request_method(tx) != NULL) { - jb_set_string_from_bytes(js, "http_method", bstr_ptr(htp_tx_request_method(tx)), + SCJbSetStringFromBytes(js, "http_method", bstr_ptr(htp_tx_request_method(tx)), (uint32_t)bstr_len(htp_tx_request_method(tx))); } /* protocol */ if (htp_tx_request_protocol(tx) != NULL) { - jb_set_string_from_bytes(js, "protocol", bstr_ptr(htp_tx_request_protocol(tx)), + SCJbSetStringFromBytes(js, "protocol", bstr_ptr(htp_tx_request_protocol(tx)), (uint32_t)bstr_len(htp_tx_request_protocol(tx))); } /* response status */ const int resp = htp_tx_response_status_number(tx); if (resp > 0) { - jb_set_uint(js, "status", (uint32_t)resp); + SCJbSetUint(js, "status", (uint32_t)resp); } else if (htp_tx_response_status(tx) != NULL) { - jb_set_string_from_bytes(js, "status_string", bstr_ptr(htp_tx_response_status(tx)), + SCJbSetStringFromBytes(js, "status_string", bstr_ptr(htp_tx_response_status(tx)), (uint32_t)bstr_len(htp_tx_response_status(tx))); } const htp_header_t *h_location = htp_tx_response_header(tx, "location"); if (h_location != NULL) { - jb_set_string_from_bytes(js, "redirect", htp_header_value_ptr(h_location), + SCJbSetStringFromBytes(js, "redirect", htp_header_value_ptr(h_location), (uint32_t)htp_header_value_len(h_location)); } /* length */ - jb_set_uint(js, "length", htp_tx_response_message_len(tx)); + SCJbSetUint(js, "length", htp_tx_response_message_len(tx)); } static void EveHttpLogJSONHeaders( - JsonBuilder *js, uint32_t direction, htp_tx_t *tx, LogHttpFileCtx *http_ctx) + SCJsonBuilder *js, uint32_t direction, htp_tx_t *tx, LogHttpFileCtx *http_ctx) { const htp_headers_t *headers = direction & LOG_HTTP_REQ_HEADERS ? htp_tx_request_headers(tx) : htp_tx_response_headers(tx); char name[MAX_SIZE_HEADER_NAME] = {0}; char value[MAX_SIZE_HEADER_VALUE] = {0}; size_t n = htp_headers_size(headers); - JsonBuilderMark mark = { 0, 0, 0 }; - jb_get_mark(js, &mark); + SCJsonBuilderMark mark = { 0, 0, 0 }; + SCJbGetMark(js, &mark); bool array_empty = true; - jb_open_array(js, direction & LOG_HTTP_REQ_HEADERS ? "request_headers" : "response_headers"); + SCJbOpenArray(js, direction & LOG_HTTP_REQ_HEADERS ? "request_headers" : "response_headers"); for (size_t i = 0; i < n; i++) { const htp_header_t *h = htp_headers_get_index(headers, i); if ((http_ctx->flags & direction) == 0 && http_ctx->fields != 0) { @@ -344,30 +344,30 @@ static void EveHttpLogJSONHeaders( } } array_empty = false; - jb_start_object(js); + SCJbStartObject(js); size_t size_name = htp_header_name_len(h) < MAX_SIZE_HEADER_NAME - 1 ? htp_header_name_len(h) : MAX_SIZE_HEADER_NAME - 1; memcpy(name, htp_header_name_ptr(h), size_name); name[size_name] = '\0'; - jb_set_string(js, "name", name); + SCJbSetString(js, "name", name); size_t size_value = htp_header_value_len(h) < MAX_SIZE_HEADER_VALUE - 1 ? htp_header_value_len(h) : MAX_SIZE_HEADER_VALUE - 1; memcpy(value, htp_header_value_ptr(h), size_value); value[size_value] = '\0'; - jb_set_string(js, "value", value); - jb_close(js); + SCJbSetString(js, "value", value); + SCJbClose(js); } if (array_empty) { - jb_restore_mark(js, &mark); + SCJbRestoreMark(js, &mark); } else { // Close array. - jb_close(js); + SCJbClose(js); } } -static void BodyPrintableBuffer(JsonBuilder *js, HtpBody *body, const char *key) +static void BodyPrintableBuffer(SCJsonBuilder *js, HtpBody *body, const char *key) { if (body->sb != NULL && body->sb->region.buf != NULL) { uint32_t offset = 0; @@ -383,12 +383,12 @@ static void BodyPrintableBuffer(JsonBuilder *js, HtpBody *body, const char *key) uint8_t printable_buf[body_data_len + 1]; PrintStringsToBuffer(printable_buf, &offset, body_data_len + 1, body_data, body_data_len); if (offset > 0) { - jb_set_string(js, key, (char *)printable_buf); + SCJbSetString(js, key, (char *)printable_buf); } } } -void EveHttpLogJSONBodyPrintable(JsonBuilder *js, Flow *f, uint64_t tx_id) +void EveHttpLogJSONBodyPrintable(SCJsonBuilder *js, Flow *f, uint64_t tx_id) { HtpState *htp_state = (HtpState *)FlowGetAppState(f); if (htp_state) { @@ -403,7 +403,7 @@ void EveHttpLogJSONBodyPrintable(JsonBuilder *js, Flow *f, uint64_t tx_id) } } -static void BodyBase64Buffer(JsonBuilder *js, HtpBody *body, const char *key) +static void BodyBase64Buffer(SCJsonBuilder *js, HtpBody *body, const char *key) { if (body->sb != NULL && body->sb->region.buf != NULL) { const uint8_t *body_data; @@ -415,11 +415,11 @@ static void BodyBase64Buffer(JsonBuilder *js, HtpBody *body, const char *key) return; } - jb_set_base64(js, key, body_data, body_data_len); + SCJbSetBase64(js, key, body_data, body_data_len); } } -void EveHttpLogJSONBodyBase64(JsonBuilder *js, Flow *f, uint64_t tx_id) +void EveHttpLogJSONBodyBase64(SCJsonBuilder *js, Flow *f, uint64_t tx_id) { HtpState *htp_state = (HtpState *)FlowGetAppState(f); if (htp_state) { @@ -435,10 +435,10 @@ void EveHttpLogJSONBodyBase64(JsonBuilder *js, Flow *f, uint64_t tx_id) } /* JSON format logging */ -static void EveHttpLogJSON(JsonHttpLogThread *aft, JsonBuilder *js, htp_tx_t *tx, uint64_t tx_id) +static void EveHttpLogJSON(JsonHttpLogThread *aft, SCJsonBuilder *js, htp_tx_t *tx, uint64_t tx_id) { LogHttpFileCtx *http_ctx = aft->httplog_ctx; - jb_open_object(js, "http"); + SCJbOpenObject(js, "http"); EveHttpLogJSONBasic(js, tx); if (http_ctx->flags & LOG_HTTP_EXTENDED) @@ -448,7 +448,7 @@ static void EveHttpLogJSON(JsonHttpLogThread *aft, JsonBuilder *js, htp_tx_t *tx if (http_ctx->flags & LOG_HTTP_RES_HEADERS || http_ctx->fields != 0) EveHttpLogJSONHeaders(js, LOG_HTTP_RES_HEADERS, tx, http_ctx); - jb_close(js); + SCJbClose(js); } static int JsonHttpLogger(ThreadVars *tv, void *thread_data, const Packet *p, Flow *f, void *alstate, void *txptr, uint64_t tx_id) @@ -458,7 +458,7 @@ static int JsonHttpLogger(ThreadVars *tv, void *thread_data, const Packet *p, Fl htp_tx_t *tx = txptr; JsonHttpLogThread *jhl = (JsonHttpLogThread *)thread_data; - JsonBuilder *js = CreateEveHeaderWithTxId( + SCJsonBuilder *js = CreateEveHeaderWithTxId( p, LOG_DIR_FLOW, "http", NULL, tx_id, jhl->httplog_ctx->eve_ctx); if (unlikely(js == NULL)) return TM_ECODE_OK; @@ -478,25 +478,25 @@ static int JsonHttpLogger(ThreadVars *tv, void *thread_data, const Packet *p, Fl if (have_xff_ip) { if (xff_cfg->flags & XFF_EXTRADATA) { - jb_set_string(js, "xff", buffer); + SCJbSetString(js, "xff", buffer); } else if (xff_cfg->flags & XFF_OVERWRITE) { if (p->flowflags & FLOW_PKT_TOCLIENT) { - jb_set_string(js, "dest_ip", buffer); + SCJbSetString(js, "dest_ip", buffer); } else { - jb_set_string(js, "src_ip", buffer); + SCJbSetString(js, "src_ip", buffer); } } } } OutputJsonBuilderBuffer(tv, p, p->flow, js, jhl->ctx); - jb_free(js); + SCJbFree(js); SCReturnInt(TM_ECODE_OK); } -bool EveHttpAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *js) +bool EveHttpAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *js) { HtpState *htp_state = (HtpState *)FlowGetAppState(f); if (htp_state) { diff --git a/src/output-json-http.h b/src/output-json-http.h index eb077d1756..ad0f446eab 100644 --- a/src/output-json-http.h +++ b/src/output-json-http.h @@ -26,8 +26,8 @@ void JsonHttpLogRegister(void); -bool EveHttpAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *js); -void EveHttpLogJSONBodyPrintable(JsonBuilder *js, Flow *f, uint64_t tx_id); -void EveHttpLogJSONBodyBase64(JsonBuilder *js, Flow *f, uint64_t tx_id); +bool EveHttpAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *js); +void EveHttpLogJSONBodyPrintable(SCJsonBuilder *js, Flow *f, uint64_t tx_id); +void EveHttpLogJSONBodyBase64(SCJsonBuilder *js, Flow *f, uint64_t tx_id); #endif /* SURICATA_OUTPUT_JSON_HTTP_H */ diff --git a/src/output-json-ike.c b/src/output-json-ike.c index 3380a804a2..bda0ba90dd 100644 --- a/src/output-json-ike.c +++ b/src/output-json-ike.c @@ -62,7 +62,7 @@ typedef struct LogIKELogThread_ { OutputJsonThreadCtx *ctx; } LogIKELogThread; -bool EveIKEAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *js) +bool EveIKEAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *js) { IKEState *state = FlowGetAppState(f); if (state) { @@ -79,7 +79,7 @@ static int JsonIKELogger(ThreadVars *tv, void *thread_data, const Packet *p, Flo void *tx, uint64_t tx_id) { LogIKELogThread *thread = thread_data; - JsonBuilder *jb = + SCJsonBuilder *jb = CreateEveHeader((Packet *)p, LOG_DIR_PACKET, "ike", NULL, thread->ikelog_ctx->eve_ctx); if (unlikely(jb == NULL)) { return TM_ECODE_FAILED; @@ -92,11 +92,11 @@ static int JsonIKELogger(ThreadVars *tv, void *thread_data, const Packet *p, Flo OutputJsonBuilderBuffer(tv, p, p->flow, jb, thread->ctx); - jb_free(jb); + SCJbFree(jb); return TM_ECODE_OK; error: - jb_free(jb); + SCJbFree(jb); return TM_ECODE_FAILED; } diff --git a/src/output-json-ike.h b/src/output-json-ike.h index b4cbb602e4..0ab188d14e 100644 --- a/src/output-json-ike.h +++ b/src/output-json-ike.h @@ -26,6 +26,6 @@ void JsonIKELogRegister(void); -bool EveIKEAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *js); +bool EveIKEAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *js); #endif /* SURICATA_OUTPUT_JSON_IKE_H */ diff --git a/src/output-json-metadata.c b/src/output-json-metadata.c index c930eaf177..ab94550fc8 100644 --- a/src/output-json-metadata.c +++ b/src/output-json-metadata.c @@ -65,7 +65,7 @@ static int MetadataJson(ThreadVars *tv, OutputJsonThreadCtx *aft, const Packet *p) { - JsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "metadata", NULL, aft->ctx); + SCJsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "metadata", NULL, aft->ctx); if (unlikely(js == NULL)) return TM_ECODE_OK; @@ -76,7 +76,7 @@ static int MetadataJson(ThreadVars *tv, OutputJsonThreadCtx *aft, const Packet * } OutputJsonBuilderBuffer(tv, p, p->flow, js, aft); - jb_free(js); + SCJbFree(js); return TM_ECODE_OK; } diff --git a/src/output-json-mqtt.c b/src/output-json-mqtt.c index a7f20000a2..d619f31db8 100644 --- a/src/output-json-mqtt.c +++ b/src/output-json-mqtt.c @@ -60,7 +60,7 @@ typedef struct LogMQTTLogThread_ { OutputJsonThreadCtx *ctx; } LogMQTTLogThread; -bool JsonMQTTAddMetadata(void *vtx, JsonBuilder *js) +bool JsonMQTTAddMetadata(void *vtx, SCJsonBuilder *js) { return SCMqttLoggerLog(vtx, MQTT_DEFAULT_FLAGS, MQTT_DEFAULT_MAXLOGLEN, js); } @@ -77,7 +77,7 @@ static int JsonMQTTLogger(ThreadVars *tv, void *thread_data, dir = LOG_DIR_FLOW_TOSERVER; } - JsonBuilder *js = CreateEveHeader(p, dir, "mqtt", NULL, thread->mqttlog_ctx->eve_ctx); + SCJsonBuilder *js = CreateEveHeader(p, dir, "mqtt", NULL, thread->mqttlog_ctx->eve_ctx); if (unlikely(js == NULL)) { return TM_ECODE_FAILED; } @@ -86,12 +86,12 @@ static int JsonMQTTLogger(ThreadVars *tv, void *thread_data, goto error; OutputJsonBuilderBuffer(tv, p, p->flow, js, thread->ctx); - jb_free(js); + SCJbFree(js); return TM_ECODE_OK; error: - jb_free(js); + SCJbFree(js); return TM_ECODE_FAILED; } diff --git a/src/output-json-mqtt.h b/src/output-json-mqtt.h index 31dfab4c7d..2a862cc33f 100644 --- a/src/output-json-mqtt.h +++ b/src/output-json-mqtt.h @@ -25,6 +25,6 @@ #define SURICATA_OUTPUT_JSON_MQTT_H void JsonMQTTLogRegister(void); -bool JsonMQTTAddMetadata(void *vtx, JsonBuilder *js); +bool JsonMQTTAddMetadata(void *vtx, SCJsonBuilder *js); #endif /* SURICATA_OUTPUT_JSON_MQTT_H */ diff --git a/src/output-json-netflow.c b/src/output-json-netflow.c index e448ecd33b..6a2bb7ff17 100644 --- a/src/output-json-netflow.c +++ b/src/output-json-netflow.c @@ -49,13 +49,13 @@ #include "stream-tcp-private.h" -static JsonBuilder *CreateEveHeaderFromNetFlow(const Flow *f, int dir) +static SCJsonBuilder *CreateEveHeaderFromNetFlow(const Flow *f, int dir) { char timebuf[64]; char srcip[46] = {0}, dstip[46] = {0}; Port sp, dp; - JsonBuilder *js = jb_new_object(); + SCJsonBuilder *js = SCJbNewObject(); if (unlikely(js == NULL)) return NULL; @@ -93,7 +93,7 @@ static JsonBuilder *CreateEveHeaderFromNetFlow(const Flow *f, int dir) } /* time */ - jb_set_string(js, "timestamp", timebuf); + SCJbSetString(js, "timestamp", timebuf); CreateEveFlowId(js, (const Flow *)f); @@ -105,52 +105,52 @@ static JsonBuilder *CreateEveHeaderFromNetFlow(const Flow *f, int dir) /* input interface */ if (f->livedev) { - jb_set_string(js, "in_iface", f->livedev->dev); + SCJbSetString(js, "in_iface", f->livedev->dev); } JB_SET_STRING(js, "event_type", "netflow"); /* vlan */ if (f->vlan_idx > 0) { - jb_open_array(js, "vlan"); - jb_append_uint(js, f->vlan_id[0]); + SCJbOpenArray(js, "vlan"); + SCJbAppendUint(js, f->vlan_id[0]); if (f->vlan_idx > 1) { - jb_append_uint(js, f->vlan_id[1]); + SCJbAppendUint(js, f->vlan_id[1]); } if (f->vlan_idx > 2) { - jb_append_uint(js, f->vlan_id[2]); + SCJbAppendUint(js, f->vlan_id[2]); } - jb_close(js); + SCJbClose(js); } /* tuple */ - jb_set_string(js, "src_ip", srcip); + SCJbSetString(js, "src_ip", srcip); switch(f->proto) { case IPPROTO_ICMP: break; case IPPROTO_UDP: case IPPROTO_TCP: case IPPROTO_SCTP: - jb_set_uint(js, "src_port", sp); + SCJbSetUint(js, "src_port", sp); break; } - jb_set_string(js, "dest_ip", dstip); + SCJbSetString(js, "dest_ip", dstip); switch(f->proto) { case IPPROTO_ICMP: break; case IPPROTO_UDP: case IPPROTO_TCP: case IPPROTO_SCTP: - jb_set_uint(js, "dest_port", dp); + SCJbSetUint(js, "dest_port", dp); break; } if (SCProtoNameValid(f->proto)) { - jb_set_string(js, "proto", known_proto[f->proto]); + SCJbSetString(js, "proto", known_proto[f->proto]); } else { char proto[4]; snprintf(proto, sizeof(proto), "%"PRIu8"", f->proto); - jb_set_string(js, "proto", proto); + SCJbSetString(js, "proto", proto); } switch (f->proto) { @@ -163,106 +163,104 @@ static JsonBuilder *CreateEveHeaderFromNetFlow(const Flow *f, int dir) code = f->icmp_d.code; } - jb_set_uint(js, "icmp_type", type); - jb_set_uint(js, "icmp_code", code); + SCJbSetUint(js, "icmp_type", type); + SCJbSetUint(js, "icmp_code", code); break; } case IPPROTO_ESP: - jb_set_uint(js, "spi", f->esp.spi); + SCJbSetUint(js, "spi", f->esp.spi); break; } return js; } /* JSON format logging */ -static void NetFlowLogEveToServer(JsonBuilder *js, Flow *f) +static void NetFlowLogEveToServer(SCJsonBuilder *js, Flow *f) { - jb_set_string(js, "app_proto", - AppProtoToString(f->alproto_ts ? f->alproto_ts : f->alproto)); + SCJbSetString(js, "app_proto", AppProtoToString(f->alproto_ts ? f->alproto_ts : f->alproto)); - jb_open_object(js, "netflow"); + SCJbOpenObject(js, "netflow"); - jb_set_uint(js, "pkts", f->todstpktcnt); - jb_set_uint(js, "bytes", f->todstbytecnt); + SCJbSetUint(js, "pkts", f->todstpktcnt); + SCJbSetUint(js, "bytes", f->todstbytecnt); char timebuf1[64], timebuf2[64]; CreateIsoTimeString(f->startts, timebuf1, sizeof(timebuf1)); CreateIsoTimeString(f->lastts, timebuf2, sizeof(timebuf2)); - jb_set_string(js, "start", timebuf1); - jb_set_string(js, "end", timebuf2); + SCJbSetString(js, "start", timebuf1); + SCJbSetString(js, "end", timebuf2); uint64_t age = (SCTIME_SECS(f->lastts) - SCTIME_SECS(f->startts)); - jb_set_uint(js, "age", age); + SCJbSetUint(js, "age", age); - jb_set_uint(js, "min_ttl", f->min_ttl_toserver); - jb_set_uint(js, "max_ttl", f->max_ttl_toserver); + SCJbSetUint(js, "min_ttl", f->min_ttl_toserver); + SCJbSetUint(js, "max_ttl", f->max_ttl_toserver); /* Close netflow. */ - jb_close(js); + SCJbClose(js); /* TCP */ if (f->proto == IPPROTO_TCP) { - jb_open_object(js, "tcp"); + SCJbOpenObject(js, "tcp"); TcpSession *ssn = f->protoctx; char hexflags[3]; snprintf(hexflags, sizeof(hexflags), "%02x", ssn ? ssn->client.tcp_flags : 0); - jb_set_string(js, "tcp_flags", hexflags); + SCJbSetString(js, "tcp_flags", hexflags); EveTcpFlags(ssn ? ssn->client.tcp_flags : 0, js); - jb_close(js); + SCJbClose(js); } } -static void NetFlowLogEveToClient(JsonBuilder *js, Flow *f) +static void NetFlowLogEveToClient(SCJsonBuilder *js, Flow *f) { - jb_set_string(js, "app_proto", - AppProtoToString(f->alproto_tc ? f->alproto_tc : f->alproto)); + SCJbSetString(js, "app_proto", AppProtoToString(f->alproto_tc ? f->alproto_tc : f->alproto)); - jb_open_object(js, "netflow"); + SCJbOpenObject(js, "netflow"); - jb_set_uint(js, "pkts", f->tosrcpktcnt); - jb_set_uint(js, "bytes", f->tosrcbytecnt); + SCJbSetUint(js, "pkts", f->tosrcpktcnt); + SCJbSetUint(js, "bytes", f->tosrcbytecnt); char timebuf1[64], timebuf2[64]; CreateIsoTimeString(f->startts, timebuf1, sizeof(timebuf1)); CreateIsoTimeString(f->lastts, timebuf2, sizeof(timebuf2)); - jb_set_string(js, "start", timebuf1); - jb_set_string(js, "end", timebuf2); + SCJbSetString(js, "start", timebuf1); + SCJbSetString(js, "end", timebuf2); uint64_t age = (SCTIME_SECS(f->lastts) - SCTIME_SECS(f->startts)); - jb_set_uint(js, "age", age); + SCJbSetUint(js, "age", age); /* To client is zero if we did not see any packet */ if (f->tosrcpktcnt) { - jb_set_uint(js, "min_ttl", f->min_ttl_toclient); - jb_set_uint(js, "max_ttl", f->max_ttl_toclient); + SCJbSetUint(js, "min_ttl", f->min_ttl_toclient); + SCJbSetUint(js, "max_ttl", f->max_ttl_toclient); } /* Close netflow. */ - jb_close(js); + SCJbClose(js); /* TCP */ if (f->proto == IPPROTO_TCP) { - jb_open_object(js, "tcp"); + SCJbOpenObject(js, "tcp"); TcpSession *ssn = f->protoctx; char hexflags[3]; snprintf(hexflags, sizeof(hexflags), "%02x", ssn ? ssn->server.tcp_flags : 0); - jb_set_string(js, "tcp_flags", hexflags); + SCJbSetString(js, "tcp_flags", hexflags); EveTcpFlags(ssn ? ssn->server.tcp_flags : 0, js); - jb_close(js); + SCJbClose(js); } } @@ -271,13 +269,13 @@ static int JsonNetFlowLogger(ThreadVars *tv, void *thread_data, Flow *f) SCEnter(); OutputJsonThreadCtx *jhl = thread_data; - JsonBuilder *jb = CreateEveHeaderFromNetFlow(f, 0); + SCJsonBuilder *jb = CreateEveHeaderFromNetFlow(f, 0); if (unlikely(jb == NULL)) return TM_ECODE_OK; NetFlowLogEveToServer(jb, f); EveAddCommonOptions(&jhl->ctx->cfg, NULL, f, jb, LOG_DIR_FLOW_TOSERVER); OutputJsonBuilderBuffer(tv, NULL, f, jb, jhl); - jb_free(jb); + SCJbFree(jb); /* only log a response record if we actually have seen response packets */ if (f->tosrcpktcnt) { @@ -287,7 +285,7 @@ static int JsonNetFlowLogger(ThreadVars *tv, void *thread_data, Flow *f) NetFlowLogEveToClient(jb, f); EveAddCommonOptions(&jhl->ctx->cfg, NULL, f, jb, LOG_DIR_FLOW_TOCLIENT); OutputJsonBuilderBuffer(tv, NULL, f, jb, jhl); - jb_free(jb); + SCJbFree(jb); } SCReturnInt(TM_ECODE_OK); } diff --git a/src/output-json-nfs.c b/src/output-json-nfs.c index a00f503055..170caf07c9 100644 --- a/src/output-json-nfs.c +++ b/src/output-json-nfs.c @@ -47,7 +47,7 @@ #include "rust.h" -bool EveNFSAddMetadataRPC(const Flow *f, uint64_t tx_id, JsonBuilder *jb) +bool EveNFSAddMetadataRPC(const Flow *f, uint64_t tx_id, SCJsonBuilder *jb) { NFSState *state = FlowGetAppState(f); if (state) { @@ -59,7 +59,7 @@ bool EveNFSAddMetadataRPC(const Flow *f, uint64_t tx_id, JsonBuilder *jb) return false; } -bool EveNFSAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *jb) +bool EveNFSAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *jb) { NFSState *state = FlowGetAppState(f); if (state) { @@ -80,22 +80,22 @@ static int JsonNFSLogger(ThreadVars *tv, void *thread_data, if (rs_nfs_tx_logging_is_filtered(state, nfstx)) return TM_ECODE_OK; - JsonBuilder *jb = CreateEveHeader(p, LOG_DIR_PACKET, "nfs", NULL, thread->ctx); + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_PACKET, "nfs", NULL, thread->ctx); if (unlikely(jb == NULL)) { return TM_ECODE_OK; } - jb_open_object(jb, "rpc"); + SCJbOpenObject(jb, "rpc"); rs_rpc_log_json_response(tx, jb); - jb_close(jb); + SCJbClose(jb); - jb_open_object(jb, "nfs"); + SCJbOpenObject(jb, "nfs"); rs_nfs_log_json_response(state, tx, jb); - jb_close(jb); + SCJbClose(jb); MemBufferReset(thread->buffer); OutputJsonBuilderBuffer(tv, p, p->flow, jb, thread); - jb_free(jb); + SCJbFree(jb); return TM_ECODE_OK; } diff --git a/src/output-json-nfs.h b/src/output-json-nfs.h index 5d8903e1f3..7eb4e38656 100644 --- a/src/output-json-nfs.h +++ b/src/output-json-nfs.h @@ -26,7 +26,7 @@ void JsonNFSLogRegister(void); -bool EveNFSAddMetadataRPC(const Flow *f, uint64_t tx_id, JsonBuilder *jb); -bool EveNFSAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *jb); +bool EveNFSAddMetadataRPC(const Flow *f, uint64_t tx_id, SCJsonBuilder *jb); +bool EveNFSAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *jb); #endif /* SURICATA_OUTPUT_JSON_NFS_H */ diff --git a/src/output-json-pgsql.c b/src/output-json-pgsql.c index 2ba6ea4341..8d864f169d 100644 --- a/src/output-json-pgsql.c +++ b/src/output-json-pgsql.c @@ -59,7 +59,7 @@ typedef struct LogPgsqlLogThread_ { OutputJsonThreadCtx *ctx; } LogPgsqlLogThread; -bool JsonPgsqlAddMetadata(void *vtx, JsonBuilder *jb) +bool JsonPgsqlAddMetadata(void *vtx, SCJsonBuilder *jb) { return SCPgsqlLogger(vtx, PGSQL_DEFAULTS, jb); } @@ -70,7 +70,7 @@ static int JsonPgsqlLogger(ThreadVars *tv, void *thread_data, const Packet *p, F LogPgsqlLogThread *thread = thread_data; SCLogDebug("Logging pgsql transaction %" PRIu64 ".", tx_id); - JsonBuilder *jb = + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "pgsql", NULL, thread->pgsqllog_ctx->eve_ctx); if (unlikely(jb == NULL)) { return TM_ECODE_FAILED; @@ -81,12 +81,12 @@ static int JsonPgsqlLogger(ThreadVars *tv, void *thread_data, const Packet *p, F } OutputJsonBuilderBuffer(tv, p, p->flow, jb, thread->ctx); - jb_free(jb); + SCJbFree(jb); return TM_ECODE_OK; error: - jb_free(jb); + SCJbFree(jb); return TM_ECODE_FAILED; } diff --git a/src/output-json-pgsql.h b/src/output-json-pgsql.h index 617f256165..3a3086d166 100644 --- a/src/output-json-pgsql.h +++ b/src/output-json-pgsql.h @@ -25,6 +25,6 @@ #define SURICATA_OUTPUT_JSON_PGSQL_H void JsonPgsqlLogRegister(void); -bool JsonPgsqlAddMetadata(void *vtx, JsonBuilder *jb); +bool JsonPgsqlAddMetadata(void *vtx, SCJsonBuilder *jb); #endif /* SURICATA_OUTPUT_JSON_PGSQL_H */ diff --git a/src/output-json-smb.c b/src/output-json-smb.c index 73646ad57c..df4927fb43 100644 --- a/src/output-json-smb.c +++ b/src/output-json-smb.c @@ -31,7 +31,7 @@ #include "output-json-smb.h" #include "rust.h" -bool EveSMBAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *jb) +bool EveSMBAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *jb) { SMBState *state = FlowGetAppState(f); if (state) { @@ -48,24 +48,24 @@ static int JsonSMBLogger(ThreadVars *tv, void *thread_data, { OutputJsonThreadCtx *thread = thread_data; - JsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "smb", NULL, thread->ctx); + SCJsonBuilder *jb = CreateEveHeader(p, LOG_DIR_FLOW, "smb", NULL, thread->ctx); if (unlikely(jb == NULL)) { return TM_ECODE_FAILED; } - jb_open_object(jb, "smb"); + SCJbOpenObject(jb, "smb"); if (!SCSmbLogJsonResponse(jb, state, tx)) { goto error; } - jb_close(jb); + SCJbClose(jb); OutputJsonBuilderBuffer(tv, p, p->flow, jb, thread); - jb_free(jb); + SCJbFree(jb); return TM_ECODE_OK; error: - jb_free(jb); + SCJbFree(jb); return TM_ECODE_FAILED; } diff --git a/src/output-json-smb.h b/src/output-json-smb.h index bfb1f0ff16..71e820e896 100644 --- a/src/output-json-smb.h +++ b/src/output-json-smb.h @@ -25,6 +25,6 @@ #define SURICATA_OUTPUT_JSON_SMB_H void JsonSMBLogRegister(void); -bool EveSMBAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *jb); +bool EveSMBAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *jb); #endif /* SURICATA_OUTPUT_JSON_SMB_H */ diff --git a/src/output-json-smtp.c b/src/output-json-smtp.c index 0f374df287..0201721f01 100644 --- a/src/output-json-smtp.c +++ b/src/output-json-smtp.c @@ -51,22 +51,22 @@ #include "output-json-smtp.h" #include "output-json-email-common.h" -static void EveSmtpDataLogger(void *state, void *vtx, JsonBuilder *js) +static void EveSmtpDataLogger(void *state, void *vtx, SCJsonBuilder *js) { SMTPTransaction *tx = vtx; SMTPString *rcptto_str; if (((SMTPState *)state)->helo) { - jb_set_string(js, "helo", (const char *)((SMTPState *)state)->helo); + SCJbSetString(js, "helo", (const char *)((SMTPState *)state)->helo); } if (tx->mail_from) { - jb_set_string(js, "mail_from", (const char *)tx->mail_from); + SCJbSetString(js, "mail_from", (const char *)tx->mail_from); } if (!TAILQ_EMPTY(&tx->rcpt_to_list)) { - jb_open_array(js, "rcpt_to"); + SCJbOpenArray(js, "rcpt_to"); TAILQ_FOREACH(rcptto_str, &tx->rcpt_to_list, next) { - jb_append_string(js, (char *)rcptto_str->str); + SCJbAppendString(js, (char *)rcptto_str->str); } - jb_close(js); + SCJbClose(js); } } @@ -75,25 +75,25 @@ static int JsonSmtpLogger(ThreadVars *tv, void *thread_data, const Packet *p, Fl SCEnter(); JsonEmailLogThread *jhl = (JsonEmailLogThread *)thread_data; - JsonBuilder *jb = CreateEveHeaderWithTxId( + SCJsonBuilder *jb = CreateEveHeaderWithTxId( p, LOG_DIR_FLOW, "smtp", NULL, tx_id, jhl->emaillog_ctx->eve_ctx); if (unlikely(jb == NULL)) return TM_ECODE_OK; - jb_open_object(jb, "smtp"); + SCJbOpenObject(jb, "smtp"); EveSmtpDataLogger(state, tx, jb); - jb_close(jb); + SCJbClose(jb); EveEmailLogJson(jhl, jb, p, f, state, tx, tx_id); OutputJsonBuilderBuffer(tv, p, p->flow, jb, jhl->ctx); - jb_free(jb); + SCJbFree(jb); SCReturnInt(TM_ECODE_OK); } -bool EveSMTPAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *js) +bool EveSMTPAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *js) { SMTPState *smtp_state = (SMTPState *)FlowGetAppState(f); if (smtp_state) { diff --git a/src/output-json-smtp.h b/src/output-json-smtp.h index 51fca1ef1e..172d08999d 100644 --- a/src/output-json-smtp.h +++ b/src/output-json-smtp.h @@ -25,6 +25,6 @@ #define SURICATA_OUTPUT_JSON_SMTP_H void JsonSmtpLogRegister(void); -bool EveSMTPAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *js); +bool EveSMTPAddMetadata(const Flow *f, uint64_t tx_id, SCJsonBuilder *js); #endif /* SURICATA_OUTPUT_JSON_SMTP_H */ diff --git a/src/output-json-tls.c b/src/output-json-tls.c index eb5aff6436..e6b8f96e12 100644 --- a/src/output-json-tls.c +++ b/src/output-json-tls.c @@ -125,34 +125,32 @@ typedef struct JsonTlsLogThread_ { OutputJsonThreadCtx *ctx; } JsonTlsLogThread; -static void JsonTlsLogSubject(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogSubject(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->server_connp.cert0_subject) { - jb_set_string(js, "subject", - ssl_state->server_connp.cert0_subject); + SCJbSetString(js, "subject", ssl_state->server_connp.cert0_subject); } } -static void JsonTlsLogIssuer(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogIssuer(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->server_connp.cert0_issuerdn) { - jb_set_string(js, "issuerdn", - ssl_state->server_connp.cert0_issuerdn); + SCJbSetString(js, "issuerdn", ssl_state->server_connp.cert0_issuerdn); } } -static void JsonTlsLogSAN(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogSAN(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->server_connp.cert0_sans_len > 0) { - jb_open_array(js, "subjectaltname"); + SCJbOpenArray(js, "subjectaltname"); for (uint16_t i = 0; i < ssl_state->server_connp.cert0_sans_len; i++) { - jb_append_string(js, ssl_state->server_connp.cert0_sans[i]); + SCJbAppendString(js, ssl_state->server_connp.cert0_sans[i]); } - jb_close(js); + SCJbClose(js); } } -static void JsonTlsLogSessionResumed(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogSessionResumed(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->flags & SSL_AL_FLAG_SESSION_RESUMED) { /* Only log a session as 'resumed' if a certificate has not @@ -161,129 +159,122 @@ static void JsonTlsLogSessionResumed(JsonBuilder *js, SSLState *ssl_state) ssl_state->server_connp.cert0_subject == NULL) && (ssl_state->flags & SSL_AL_FLAG_STATE_SERVER_HELLO) && ((ssl_state->flags & SSL_AL_FLAG_LOG_WITHOUT_CERT) == 0)) { - jb_set_bool(js, "session_resumed", true); + SCJbSetBool(js, "session_resumed", true); } } } -static void JsonTlsLogFingerprint(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogFingerprint(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->server_connp.cert0_fingerprint) { - jb_set_string(js, "fingerprint", - ssl_state->server_connp.cert0_fingerprint); + SCJbSetString(js, "fingerprint", ssl_state->server_connp.cert0_fingerprint); } } -static void JsonTlsLogSni(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogSni(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->client_connp.sni) { - jb_set_string(js, "sni", - ssl_state->client_connp.sni); + SCJbSetString(js, "sni", ssl_state->client_connp.sni); } } -static void JsonTlsLogSerial(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogSerial(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->server_connp.cert0_serial) { - jb_set_string(js, "serial", - ssl_state->server_connp.cert0_serial); + SCJbSetString(js, "serial", ssl_state->server_connp.cert0_serial); } } -static void JsonTlsLogVersion(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogVersion(SCJsonBuilder *js, SSLState *ssl_state) { char ssl_version[SSL_VERSION_MAX_STRLEN]; SSLVersionToString(ssl_state->server_connp.version, ssl_version); - jb_set_string(js, "version", ssl_version); + SCJbSetString(js, "version", ssl_version); } -static void JsonTlsLogNotBefore(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogNotBefore(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->server_connp.cert0_not_before != 0) { sc_x509_log_timestamp(js, "notbefore", ssl_state->server_connp.cert0_not_before); } } -static void JsonTlsLogNotAfter(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogNotAfter(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->server_connp.cert0_not_after != 0) { sc_x509_log_timestamp(js, "notafter", ssl_state->server_connp.cert0_not_after); } } -static void JsonTlsLogJa3Hash(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogJa3Hash(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->client_connp.ja3_hash != NULL) { - jb_set_string(js, "hash", - ssl_state->client_connp.ja3_hash); + SCJbSetString(js, "hash", ssl_state->client_connp.ja3_hash); } } -static void JsonTlsLogJa3String(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogJa3String(SCJsonBuilder *js, SSLState *ssl_state) { if ((ssl_state->client_connp.ja3_str != NULL) && ssl_state->client_connp.ja3_str->data != NULL) { - jb_set_string(js, "string", - ssl_state->client_connp.ja3_str->data); + SCJbSetString(js, "string", ssl_state->client_connp.ja3_str->data); } } -static void JsonTlsLogJa3(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogJa3(SCJsonBuilder *js, SSLState *ssl_state) { if ((ssl_state->client_connp.ja3_hash != NULL) || ((ssl_state->client_connp.ja3_str != NULL) && ssl_state->client_connp.ja3_str->data != NULL)) { - jb_open_object(js, "ja3"); + SCJbOpenObject(js, "ja3"); JsonTlsLogJa3Hash(js, ssl_state); JsonTlsLogJa3String(js, ssl_state); - jb_close(js); + SCJbClose(js); } } -static void JsonTlsLogSCJA4(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogSCJA4(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->client_connp.ja4 != NULL) { uint8_t buffer[JA4_HEX_LEN]; /* JA4 hash has 36 characters */ SCJA4GetHash(ssl_state->client_connp.ja4, (uint8_t(*)[JA4_HEX_LEN])buffer); - jb_set_string_from_bytes(js, "ja4", buffer, 36); + SCJbSetStringFromBytes(js, "ja4", buffer, 36); } } -static void JsonTlsLogJa3SHash(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogJa3SHash(SCJsonBuilder *js, SSLState *ssl_state) { if (ssl_state->server_connp.ja3_hash != NULL) { - jb_set_string(js, "hash", - ssl_state->server_connp.ja3_hash); + SCJbSetString(js, "hash", ssl_state->server_connp.ja3_hash); } } -static void JsonTlsLogJa3SString(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogJa3SString(SCJsonBuilder *js, SSLState *ssl_state) { if ((ssl_state->server_connp.ja3_str != NULL) && ssl_state->server_connp.ja3_str->data != NULL) { - jb_set_string(js, "string", - ssl_state->server_connp.ja3_str->data); + SCJbSetString(js, "string", ssl_state->server_connp.ja3_str->data); } } -static void JsonTlsLogJa3S(JsonBuilder *js, SSLState *ssl_state) +static void JsonTlsLogJa3S(SCJsonBuilder *js, SSLState *ssl_state) { if ((ssl_state->server_connp.ja3_hash != NULL) || ((ssl_state->server_connp.ja3_str != NULL) && ssl_state->server_connp.ja3_str->data != NULL)) { - jb_open_object(js, "ja3s"); + SCJbOpenObject(js, "ja3s"); JsonTlsLogJa3SHash(js, ssl_state); JsonTlsLogJa3SString(js, ssl_state); - jb_close(js); + SCJbClose(js); } } -static void JsonTlsLogAlpns(JsonBuilder *js, SSLStateConnp *connp, const char *object) +static void JsonTlsLogAlpns(SCJsonBuilder *js, SSLStateConnp *connp, const char *object) { if (TAILQ_EMPTY(&connp->alpns)) { return; @@ -294,14 +285,14 @@ static void JsonTlsLogAlpns(JsonBuilder *js, SSLStateConnp *connp, const char *o return; } - jb_open_array(js, object); + SCJbOpenArray(js, object); TAILQ_FOREACH (a, &connp->alpns, next) { - jb_append_string_from_bytes(js, a->alpn, a->size); + SCJbAppendStringFromBytes(js, a->alpn, a->size); } - jb_close(js); + SCJbClose(js); } -static void JsonTlsLogCertificate(JsonBuilder *js, SSLStateConnp *connp) +static void JsonTlsLogCertificate(SCJsonBuilder *js, SSLStateConnp *connp) { if (TAILQ_EMPTY(&connp->certs)) { return; @@ -312,23 +303,23 @@ static void JsonTlsLogCertificate(JsonBuilder *js, SSLStateConnp *connp) return; } - jb_set_base64(js, "certificate", cert->cert_data, cert->cert_len); + SCJbSetBase64(js, "certificate", cert->cert_data, cert->cert_len); } -static void JsonTlsLogChain(JsonBuilder *js, SSLStateConnp *connp) +static void JsonTlsLogChain(SCJsonBuilder *js, SSLStateConnp *connp) { if (TAILQ_EMPTY(&connp->certs)) { return; } - jb_open_array(js, "chain"); + SCJbOpenArray(js, "chain"); SSLCertsChain *cert; TAILQ_FOREACH (cert, &connp->certs, next) { - jb_append_base64(js, cert->cert_data, cert->cert_len); + SCJbAppendBase64(js, cert->cert_data, cert->cert_len); } - jb_close(js); + SCJbClose(js); } static bool HasClientCert(SSLStateConnp *connp) @@ -339,31 +330,31 @@ static bool HasClientCert(SSLStateConnp *connp) } static void JsonTlsLogClientCert( - JsonBuilder *js, SSLStateConnp *connp, const bool log_cert, const bool log_chain) + SCJsonBuilder *js, SSLStateConnp *connp, const bool log_cert, const bool log_chain) { if (connp->cert0_subject != NULL) { - jb_set_string(js, "subject", connp->cert0_subject); + SCJbSetString(js, "subject", connp->cert0_subject); } if (connp->cert0_issuerdn != NULL) { - jb_set_string(js, "issuerdn", connp->cert0_issuerdn); + SCJbSetString(js, "issuerdn", connp->cert0_issuerdn); } if (connp->cert0_fingerprint) { - jb_set_string(js, "fingerprint", connp->cert0_fingerprint); + SCJbSetString(js, "fingerprint", connp->cert0_fingerprint); } if (connp->cert0_serial) { - jb_set_string(js, "serial", connp->cert0_serial); + SCJbSetString(js, "serial", connp->cert0_serial); } if (connp->cert0_not_before != 0) { char timebuf[64]; SCTime_t ts = SCTIME_FROM_SECS(connp->cert0_not_before); CreateUtcIsoTimeString(ts, timebuf, sizeof(timebuf)); - jb_set_string(js, "notbefore", timebuf); + SCJbSetString(js, "notbefore", timebuf); } if (connp->cert0_not_after != 0) { char timebuf[64]; SCTime_t ts = SCTIME_FROM_SECS(connp->cert0_not_after); CreateUtcIsoTimeString(ts, timebuf, sizeof(timebuf)); - jb_set_string(js, "notafter", timebuf); + SCJbSetString(js, "notafter", timebuf); } if (log_cert) { @@ -374,7 +365,7 @@ static void JsonTlsLogClientCert( } } -static void JsonTlsLogFields(JsonBuilder *js, SSLState *ssl_state, uint64_t fields) +static void JsonTlsLogFields(SCJsonBuilder *js, SSLState *ssl_state, uint64_t fields) { /* tls subject */ if (fields & LOG_TLS_FIELD_SUBJECT) @@ -448,19 +439,19 @@ static void JsonTlsLogFields(JsonBuilder *js, SSLState *ssl_state, uint64_t fiel const bool log_cert = (fields & LOG_TLS_FIELD_CLIENT_CERT) != 0; const bool log_chain = (fields & LOG_TLS_FIELD_CLIENT_CHAIN) != 0; if (HasClientCert(&ssl_state->client_connp)) { - jb_open_object(js, "client"); + SCJbOpenObject(js, "client"); JsonTlsLogClientCert(js, &ssl_state->client_connp, log_cert, log_chain); - jb_close(js); + SCJbClose(js); } } } -bool JsonTlsLogJSONExtended(void *vtx, JsonBuilder *tjs) +bool JsonTlsLogJSONExtended(void *vtx, SCJsonBuilder *tjs) { SSLState *state = (SSLState *)vtx; - jb_open_object(tjs, "tls"); + SCJbOpenObject(tjs, "tls"); JsonTlsLogFields(tjs, state, EXTENDED_FIELDS); - return jb_close(tjs); + return SCJbClose(tjs); } static int JsonTlsLogger(ThreadVars *tv, void *thread_data, const Packet *p, @@ -482,27 +473,26 @@ static int JsonTlsLogger(ThreadVars *tv, void *thread_data, const Packet *p, return 0; } - JsonBuilder *js = CreateEveHeader(p, LOG_DIR_FLOW, "tls", NULL, aft->tlslog_ctx->eve_ctx); + SCJsonBuilder *js = CreateEveHeader(p, LOG_DIR_FLOW, "tls", NULL, aft->tlslog_ctx->eve_ctx); if (unlikely(js == NULL)) { return 0; } - jb_open_object(js, "tls"); + SCJbOpenObject(js, "tls"); JsonTlsLogFields(js, ssl_state, tls_ctx->fields); /* print original application level protocol when it have been changed because of STARTTLS, HTTP CONNECT, or similar. */ if (f->alproto_orig != ALPROTO_UNKNOWN) { - jb_set_string(js, "from_proto", - AppLayerGetProtoName(f->alproto_orig)); + SCJbSetString(js, "from_proto", AppLayerGetProtoName(f->alproto_orig)); } /* Close the tls object. */ - jb_close(js); + SCJbClose(js); OutputJsonBuilderBuffer(tv, p, p->flow, js, aft->ctx); - jb_free(js); + SCJbFree(js); return 0; } diff --git a/src/output-json-tls.h b/src/output-json-tls.h index 8bd9f34d6a..6d988957f1 100644 --- a/src/output-json-tls.h +++ b/src/output-json-tls.h @@ -26,9 +26,9 @@ void JsonTlsLogRegister(void); -/* For JsonBuilder. */ +/* For SCJsonBuilder. */ #include "rust.h" -bool JsonTlsLogJSONExtended(void *vtx, JsonBuilder *js); +bool JsonTlsLogJSONExtended(void *vtx, SCJsonBuilder *js); #endif /* SURICATA_OUTPUT_JSON_TLS_H */ diff --git a/src/output-json.c b/src/output-json.c index a571b89fa0..17e1d9b112 100644 --- a/src/output-json.c +++ b/src/output-json.c @@ -69,9 +69,9 @@ #define MAX_JSON_SIZE 2048 static void OutputJsonDeInitCtx(OutputCtx *); -static void CreateEveCommunityFlowId(JsonBuilder *js, const Flow *f, const uint16_t seed); +static void CreateEveCommunityFlowId(SCJsonBuilder *js, const Flow *f, const uint16_t seed); static int CreateJSONEther( - JsonBuilder *parent, const Packet *p, const Flow *f, enum OutputJsonLogDirection dir); + SCJsonBuilder *parent, const Packet *p, const Flow *f, enum OutputJsonLogDirection dir); static const char *TRAFFIC_ID_PREFIX = "traffic/id/"; static const char *TRAFFIC_LABEL_PREFIX = "traffic/label/"; @@ -121,31 +121,31 @@ json_t *SCJsonString(const char *val) /* Default Sensor ID value */ static int64_t sensor_id = -1; /* -1 = not defined */ -void EveFileInfo(JsonBuilder *jb, const File *ff, const uint64_t tx_id, const uint16_t flags) +void EveFileInfo(SCJsonBuilder *jb, const File *ff, const uint64_t tx_id, const uint16_t flags) { - jb_set_string_from_bytes(jb, "filename", ff->name, ff->name_len); + SCJbSetStringFromBytes(jb, "filename", ff->name, ff->name_len); if (ff->sid_cnt > 0) { - jb_open_array(jb, "sid"); + SCJbOpenArray(jb, "sid"); for (uint32_t i = 0; ff->sid != NULL && i < ff->sid_cnt; i++) { - jb_append_uint(jb, ff->sid[i]); + SCJbAppendUint(jb, ff->sid[i]); } - jb_close(jb); + SCJbClose(jb); } #ifdef HAVE_MAGIC if (ff->magic) - jb_set_string(jb, "magic", (char *)ff->magic); + SCJbSetString(jb, "magic", (char *)ff->magic); #endif - jb_set_bool(jb, "gaps", ff->flags & FILE_HAS_GAPS); + SCJbSetBool(jb, "gaps", ff->flags & FILE_HAS_GAPS); switch (ff->state) { case FILE_STATE_CLOSED: JB_SET_STRING(jb, "state", "CLOSED"); if (ff->flags & FILE_MD5) { - jb_set_hex(jb, "md5", (uint8_t *)ff->md5, (uint32_t)sizeof(ff->md5)); + SCJbSetHex(jb, "md5", (uint8_t *)ff->md5, (uint32_t)sizeof(ff->md5)); } if (ff->flags & FILE_SHA1) { - jb_set_hex(jb, "sha1", (uint8_t *)ff->sha1, (uint32_t)sizeof(ff->sha1)); + SCJbSetHex(jb, "sha1", (uint8_t *)ff->sha1, (uint32_t)sizeof(ff->sha1)); } break; case FILE_STATE_TRUNCATED: @@ -160,12 +160,12 @@ void EveFileInfo(JsonBuilder *jb, const File *ff, const uint64_t tx_id, const ui } if (ff->flags & FILE_SHA256) { - jb_set_hex(jb, "sha256", (uint8_t *)ff->sha256, (uint32_t)sizeof(ff->sha256)); + SCJbSetHex(jb, "sha256", (uint8_t *)ff->sha256, (uint32_t)sizeof(ff->sha256)); } if (flags & FILE_STORED) { JB_SET_TRUE(jb, "stored"); - jb_set_uint(jb, "file_id", ff->file_store_id); + SCJbSetUint(jb, "file_id", ff->file_store_id); } else { JB_SET_FALSE(jb, "stored"); if (flags & FILE_STORE) { @@ -173,15 +173,15 @@ void EveFileInfo(JsonBuilder *jb, const File *ff, const uint64_t tx_id, const ui } } - jb_set_uint(jb, "size", FileTrackedSize(ff)); + SCJbSetUint(jb, "size", FileTrackedSize(ff)); if (ff->end > 0) { - jb_set_uint(jb, "start", ff->start); - jb_set_uint(jb, "end", ff->end); + SCJbSetUint(jb, "start", ff->start); + SCJbSetUint(jb, "end", ff->end); } - jb_set_uint(jb, "tx_id", tx_id); + SCJbSetUint(jb, "tx_id", tx_id); } -static void EveAddPacketVars(const Packet *p, JsonBuilder *js_vars) +static void EveAddPacketVars(const Packet *p, SCJsonBuilder *js_vars) { if (p == NULL || p->pktvar == NULL) { return; @@ -191,10 +191,10 @@ static void EveAddPacketVars(const Packet *p, JsonBuilder *js_vars) while (pv != NULL) { if (pv->key || pv->id > 0) { if (!open) { - jb_open_array(js_vars, "pktvars"); + SCJbOpenArray(js_vars, "pktvars"); open = true; } - jb_start_object(js_vars); + SCJbStartObject(js_vars); if (pv->key != NULL) { uint32_t offset = 0; @@ -204,21 +204,21 @@ static void EveAddPacketVars(const Packet *p, JsonBuilder *js_vars) uint8_t printable_buf[len + 1]; offset = 0; PrintStringsToBuffer(printable_buf, &offset, len + 1, pv->value, pv->value_len); - jb_set_string(js_vars, (char *)keybuf, (char *)printable_buf); + SCJbSetString(js_vars, (char *)keybuf, (char *)printable_buf); } else { const char *varname = VarNameStoreLookupById(pv->id, VAR_TYPE_PKT_VAR); uint32_t len = pv->value_len; uint8_t printable_buf[len + 1]; uint32_t offset = 0; PrintStringsToBuffer(printable_buf, &offset, len + 1, pv->value, pv->value_len); - jb_set_string(js_vars, varname, (char *)printable_buf); + SCJbSetString(js_vars, varname, (char *)printable_buf); } - jb_close(js_vars); + SCJbClose(js_vars); } pv = pv->next; } if (open) { - jb_close(js_vars); + SCJbClose(js_vars); } } @@ -238,16 +238,16 @@ static bool SCStringHasPrefix(const char *s, const char *prefix) return false; } -static void EveAddFlowVars(const Flow *f, JsonBuilder *js_root, JsonBuilder **js_traffic) +static void EveAddFlowVars(const Flow *f, SCJsonBuilder *js_root, SCJsonBuilder **js_traffic) { if (f == NULL || f->flowvar == NULL) { return; } - JsonBuilder *js_flowvars = NULL; - JsonBuilder *js_traffic_id = NULL; - JsonBuilder *js_traffic_label = NULL; - JsonBuilder *js_flowints = NULL; - JsonBuilder *js_flowbits = NULL; + SCJsonBuilder *js_flowvars = NULL; + SCJsonBuilder *js_traffic_id = NULL; + SCJsonBuilder *js_traffic_label = NULL; + SCJsonBuilder *js_flowints = NULL; + SCJsonBuilder *js_flowbits = NULL; GenericVar *gv = f->flowvar; while (gv != NULL) { if (gv->type == DETECT_FLOWVAR || gv->type == DETECT_FLOWINT) { @@ -257,7 +257,7 @@ static void EveAddFlowVars(const Flow *f, JsonBuilder *js_root, JsonBuilder **js VAR_TYPE_FLOW_VAR); if (varname) { if (js_flowvars == NULL) { - js_flowvars = jb_new_array(); + js_flowvars = SCJbNewArray(); if (js_flowvars == NULL) break; } @@ -268,13 +268,13 @@ static void EveAddFlowVars(const Flow *f, JsonBuilder *js_root, JsonBuilder **js PrintStringsToBuffer(printable_buf, &offset, len + 1, fv->data.fv_str.value, fv->data.fv_str.value_len); - jb_start_object(js_flowvars); - jb_set_string(js_flowvars, varname, (char *)printable_buf); - jb_close(js_flowvars); + SCJbStartObject(js_flowvars); + SCJbSetString(js_flowvars, varname, (char *)printable_buf); + SCJbClose(js_flowvars); } } else if (fv->datatype == FLOWVAR_TYPE_STR && fv->key != NULL) { if (js_flowvars == NULL) { - js_flowvars = jb_new_array(); + js_flowvars = SCJbNewArray(); if (js_flowvars == NULL) break; } @@ -289,19 +289,19 @@ static void EveAddFlowVars(const Flow *f, JsonBuilder *js_root, JsonBuilder **js PrintStringsToBuffer(printable_buf, &offset, len + 1, fv->data.fv_str.value, fv->data.fv_str.value_len); - jb_start_object(js_flowvars); - jb_set_string(js_flowvars, (const char *)keybuf, (char *)printable_buf); - jb_close(js_flowvars); + SCJbStartObject(js_flowvars); + SCJbSetString(js_flowvars, (const char *)keybuf, (char *)printable_buf); + SCJbClose(js_flowvars); } else if (fv->datatype == FLOWVAR_TYPE_INT) { const char *varname = VarNameStoreLookupById(fv->idx, VAR_TYPE_FLOW_INT); if (varname) { if (js_flowints == NULL) { - js_flowints = jb_new_object(); + js_flowints = SCJbNewObject(); if (js_flowints == NULL) break; } - jb_set_uint(js_flowints, varname, fv->data.fv_int.value); + SCJbSetUint(js_flowints, varname, fv->data.fv_int.value); } } @@ -312,91 +312,91 @@ static void EveAddFlowVars(const Flow *f, JsonBuilder *js_root, JsonBuilder **js if (varname) { if (SCStringHasPrefix(varname, TRAFFIC_ID_PREFIX)) { if (js_traffic_id == NULL) { - js_traffic_id = jb_new_array(); + js_traffic_id = SCJbNewArray(); if (unlikely(js_traffic_id == NULL)) { break; } } - jb_append_string(js_traffic_id, &varname[traffic_id_prefix_len]); + SCJbAppendString(js_traffic_id, &varname[traffic_id_prefix_len]); } else if (SCStringHasPrefix(varname, TRAFFIC_LABEL_PREFIX)) { if (js_traffic_label == NULL) { - js_traffic_label = jb_new_array(); + js_traffic_label = SCJbNewArray(); if (unlikely(js_traffic_label == NULL)) { break; } } - jb_append_string(js_traffic_label, &varname[traffic_label_prefix_len]); + SCJbAppendString(js_traffic_label, &varname[traffic_label_prefix_len]); } else { if (js_flowbits == NULL) { - js_flowbits = jb_new_array(); + js_flowbits = SCJbNewArray(); if (unlikely(js_flowbits == NULL)) break; } - jb_append_string(js_flowbits, varname); + SCJbAppendString(js_flowbits, varname); } } } gv = gv->next; } if (js_flowbits) { - jb_close(js_flowbits); - jb_set_object(js_root, "flowbits", js_flowbits); - jb_free(js_flowbits); + SCJbClose(js_flowbits); + SCJbSetObject(js_root, "flowbits", js_flowbits); + SCJbFree(js_flowbits); } if (js_flowints) { - jb_close(js_flowints); - jb_set_object(js_root, "flowints", js_flowints); - jb_free(js_flowints); + SCJbClose(js_flowints); + SCJbSetObject(js_root, "flowints", js_flowints); + SCJbFree(js_flowints); } if (js_flowvars) { - jb_close(js_flowvars); - jb_set_object(js_root, "flowvars", js_flowvars); - jb_free(js_flowvars); + SCJbClose(js_flowvars); + SCJbSetObject(js_root, "flowvars", js_flowvars); + SCJbFree(js_flowvars); } if (js_traffic_id != NULL || js_traffic_label != NULL) { - *js_traffic = jb_new_object(); + *js_traffic = SCJbNewObject(); if (likely(*js_traffic != NULL)) { if (js_traffic_id != NULL) { - jb_close(js_traffic_id); - jb_set_object(*js_traffic, "id", js_traffic_id); - jb_free(js_traffic_id); + SCJbClose(js_traffic_id); + SCJbSetObject(*js_traffic, "id", js_traffic_id); + SCJbFree(js_traffic_id); } if (js_traffic_label != NULL) { - jb_close(js_traffic_label); - jb_set_object(*js_traffic, "label", js_traffic_label); - jb_free(js_traffic_label); + SCJbClose(js_traffic_label); + SCJbSetObject(*js_traffic, "label", js_traffic_label); + SCJbFree(js_traffic_label); } - jb_close(*js_traffic); + SCJbClose(*js_traffic); } } } -void EveAddMetadata(const Packet *p, const Flow *f, JsonBuilder *js) +void EveAddMetadata(const Packet *p, const Flow *f, SCJsonBuilder *js) { if ((p && p->pktvar) || (f && f->flowvar)) { - JsonBuilder *js_vars = jb_new_object(); + SCJsonBuilder *js_vars = SCJbNewObject(); if (js_vars) { if (f && f->flowvar) { - JsonBuilder *js_traffic = NULL; + SCJsonBuilder *js_traffic = NULL; EveAddFlowVars(f, js_vars, &js_traffic); if (js_traffic != NULL) { - jb_set_object(js, "traffic", js_traffic); - jb_free(js_traffic); + SCJbSetObject(js, "traffic", js_traffic); + SCJbFree(js_traffic); } } if (p && p->pktvar) { EveAddPacketVars(p, js_vars); } - jb_close(js_vars); - jb_set_object(js, "metadata", js_vars); - jb_free(js_vars); + SCJbClose(js_vars); + SCJbSetObject(js, "metadata", js_vars); + SCJbFree(js_vars); } } } void EveAddCommonOptions(const OutputJsonCommonSettings *cfg, const Packet *p, const Flow *f, - JsonBuilder *js, enum OutputJsonLogDirection dir) + SCJsonBuilder *js, enum OutputJsonLogDirection dir) { if (cfg->include_metadata) { EveAddMetadata(p, f, js); @@ -408,7 +408,7 @@ void EveAddCommonOptions(const OutputJsonCommonSettings *cfg, const Packet *p, c CreateEveCommunityFlowId(js, f, cfg->community_id_seed); } if (f != NULL && f->tenant_id > 0) { - jb_set_uint(js, "tenant_id", f->tenant_id); + SCJbSetUint(js, "tenant_id", f->tenant_id); } } @@ -419,32 +419,32 @@ void EveAddCommonOptions(const OutputJsonCommonSettings *cfg, const Packet *p, c * \param js JSON object * \param max_length If non-zero, restricts the number of packet data bytes handled. */ -void EvePacket(const Packet *p, JsonBuilder *js, uint32_t max_length) +void EvePacket(const Packet *p, SCJsonBuilder *js, uint32_t max_length) { uint32_t max_len = max_length == 0 ? GET_PKT_LEN(p) : max_length; - jb_set_base64(js, "packet", GET_PKT_DATA(p), max_len); + SCJbSetBase64(js, "packet", GET_PKT_DATA(p), max_len); - if (!jb_open_object(js, "packet_info")) { + if (!SCJbOpenObject(js, "packet_info")) { return; } - if (!jb_set_uint(js, "linktype", p->datalink)) { - jb_close(js); + if (!SCJbSetUint(js, "linktype", p->datalink)) { + SCJbClose(js); return; } const char *dl_name = DatalinkValueToName(p->datalink); - // Intentionally ignore the return value from jb_set_string and proceed + // Intentionally ignore the return value from SCJbSetString and proceed // so the jb object is closed - (void)jb_set_string(js, "linktype_name", dl_name == NULL ? "n/a" : dl_name); + (void)SCJbSetString(js, "linktype_name", dl_name == NULL ? "n/a" : dl_name); - jb_close(js); + SCJbClose(js); } /** \brief jsonify tcp flags field * Only add 'true' fields in an attempt to keep things reasonably compact. */ -void EveTcpFlags(const uint8_t flags, JsonBuilder *js) +void EveTcpFlags(const uint8_t flags, SCJsonBuilder *js) { if (flags & TH_SYN) JB_SET_TRUE(js, "syn"); @@ -680,47 +680,47 @@ static bool CalculateCommunityFlowIdv6(const Flow *f, return false; } -static void CreateEveCommunityFlowId(JsonBuilder *js, const Flow *f, const uint16_t seed) +static void CreateEveCommunityFlowId(SCJsonBuilder *js, const Flow *f, const uint16_t seed) { unsigned char buf[COMMUNITY_ID_BUF_SIZE]; if (f->flags & FLOW_IPV4) { if (CalculateCommunityFlowIdv4(f, seed, buf)) { - jb_set_string(js, "community_id", (const char *)buf); + SCJbSetString(js, "community_id", (const char *)buf); } } else if (f->flags & FLOW_IPV6) { if (CalculateCommunityFlowIdv6(f, seed, buf)) { - jb_set_string(js, "community_id", (const char *)buf); + SCJbSetString(js, "community_id", (const char *)buf); } } } -void CreateEveFlowId(JsonBuilder *js, const Flow *f) +void CreateEveFlowId(SCJsonBuilder *js, const Flow *f) { if (f == NULL) { return; } int64_t flow_id = FlowGetId(f); - jb_set_uint(js, "flow_id", flow_id); + SCJbSetUint(js, "flow_id", flow_id); if (f->parent_id) { - jb_set_uint(js, "parent_id", f->parent_id); + SCJbSetUint(js, "parent_id", f->parent_id); } } -void JSONFormatAndAddMACAddr(JsonBuilder *js, const char *key, const uint8_t *val, bool is_array) +void JSONFormatAndAddMACAddr(SCJsonBuilder *js, const char *key, const uint8_t *val, bool is_array) { char eth_addr[19]; (void) snprintf(eth_addr, 19, "%02x:%02x:%02x:%02x:%02x:%02x", val[0], val[1], val[2], val[3], val[4], val[5]); if (is_array) { - jb_append_string(js, eth_addr); + SCJbAppendString(js, eth_addr); } else { - jb_set_string(js, key, eth_addr); + SCJbSetString(js, key, eth_addr); } } /* only required to traverse the MAC address set */ typedef struct JSONMACAddrInfo { - JsonBuilder *src, *dst; + SCJsonBuilder *src, *dst; } JSONMACAddrInfo; static int MacSetIterateToJSON(uint8_t *val, MacSetSide side, void *data) @@ -735,14 +735,14 @@ static int MacSetIterateToJSON(uint8_t *val, MacSetSide side, void *data) } static int CreateJSONEther( - JsonBuilder *js, const Packet *p, const Flow *f, enum OutputJsonLogDirection dir) + SCJsonBuilder *js, const Packet *p, const Flow *f, enum OutputJsonLogDirection dir) { if (p != NULL) { /* this is a packet context, so we need to add scalar fields */ if (PacketIsEthernet(p)) { const EthernetHdr *ethh = PacketGetEthernet(p); - jb_open_object(js, "ether"); - jb_set_uint(js, "ether_type", ethh->eth_type); + SCJbOpenObject(js, "ether"); + SCJbSetUint(js, "ether_type", ethh->eth_type); const uint8_t *src; const uint8_t *dst; switch (dir) { @@ -774,7 +774,7 @@ static int CreateJSONEther( } JSONFormatAndAddMACAddr(js, "src_mac", src, false); JSONFormatAndAddMACAddr(js, "dest_mac", dst, false); - jb_close(js); + SCJbClose(js); } else if (f != NULL) { /* When pseudopackets do not have associated ethernet metadata, use the first set of mac addresses stored with their flow. @@ -785,10 +785,10 @@ static int CreateJSONEther( uint8_t *src = MacSetGetFirst(ms, MAC_SET_SRC); uint8_t *dst = MacSetGetFirst(ms, MAC_SET_DST); if (dst != NULL && src != NULL) { - jb_open_object(js, "ether"); + SCJbOpenObject(js, "ether"); JSONFormatAndAddMACAddr(js, "src_mac", src, false); JSONFormatAndAddMACAddr(js, "dest_mac", dst, false); - jb_close(js); + SCJbClose(js); } } } @@ -797,84 +797,84 @@ static int CreateJSONEther( append to arrays */ MacSet *ms = FlowGetStorageById(f, MacSetGetFlowStorageID()); if (ms != NULL && MacSetSize(ms) > 0) { - jb_open_object(js, "ether"); + SCJbOpenObject(js, "ether"); JSONMACAddrInfo info; - info.dst = jb_new_array(); - info.src = jb_new_array(); + info.dst = SCJbNewArray(); + info.src = SCJbNewArray(); int ret = MacSetForEach(ms, MacSetIterateToJSON, &info); if (unlikely(ret != 0)) { /* should not happen, JSONFlowAppendMACAddrs is sane */ - jb_free(info.dst); - jb_free(info.src); - jb_close(js); + SCJbFree(info.dst); + SCJbFree(info.src); + SCJbClose(js); return ret; } - jb_close(info.dst); - jb_close(info.src); + SCJbClose(info.dst); + SCJbClose(info.src); /* case is handling netflow too so may need to revert */ if (dir == LOG_DIR_FLOW_TOCLIENT) { - jb_set_object(js, "dest_macs", info.src); - jb_set_object(js, "src_macs", info.dst); + SCJbSetObject(js, "dest_macs", info.src); + SCJbSetObject(js, "src_macs", info.dst); } else { DEBUG_VALIDATE_BUG_ON(dir != LOG_DIR_FLOW_TOSERVER && dir != LOG_DIR_FLOW); - jb_set_object(js, "dest_macs", info.dst); - jb_set_object(js, "src_macs", info.src); + SCJbSetObject(js, "dest_macs", info.dst); + SCJbSetObject(js, "src_macs", info.src); } - jb_free(info.dst); - jb_free(info.src); - jb_close(js); + SCJbFree(info.dst); + SCJbFree(info.src); + SCJbClose(js); } } return 0; } -JsonBuilder *CreateEveHeader(const Packet *p, enum OutputJsonLogDirection dir, +SCJsonBuilder *CreateEveHeader(const Packet *p, enum OutputJsonLogDirection dir, const char *event_type, JsonAddrInfo *addr, OutputJsonCtx *eve_ctx) { char timebuf[64]; const Flow *f = (const Flow *)p->flow; - JsonBuilder *js = jb_new_object(); + SCJsonBuilder *js = SCJbNewObject(); if (unlikely(js == NULL)) { return NULL; } CreateIsoTimeString(p->ts, timebuf, sizeof(timebuf)); - jb_set_string(js, "timestamp", timebuf); + SCJbSetString(js, "timestamp", timebuf); CreateEveFlowId(js, f); /* sensor id */ if (sensor_id >= 0) { - jb_set_uint(js, "sensor_id", sensor_id); + SCJbSetUint(js, "sensor_id", sensor_id); } /* input interface */ if (p->livedev) { - jb_set_string(js, "in_iface", p->livedev->dev); + SCJbSetString(js, "in_iface", p->livedev->dev); } /* pcap_cnt */ if (p->pcap_cnt != 0) { - jb_set_uint(js, "pcap_cnt", p->pcap_cnt); + SCJbSetUint(js, "pcap_cnt", p->pcap_cnt); } if (event_type) { - jb_set_string(js, "event_type", event_type); + SCJbSetString(js, "event_type", event_type); } /* vlan */ if (p->vlan_idx > 0) { - jb_open_array(js, "vlan"); - jb_append_uint(js, p->vlan_id[0]); + SCJbOpenArray(js, "vlan"); + SCJbAppendUint(js, p->vlan_id[0]); if (p->vlan_idx > 1) { - jb_append_uint(js, p->vlan_id[1]); + SCJbAppendUint(js, p->vlan_id[1]); } if (p->vlan_idx > 2) { - jb_append_uint(js, p->vlan_id[2]); + SCJbAppendUint(js, p->vlan_id[2]); } - jb_close(js); + SCJbClose(js); } /* 5-tuple */ @@ -884,38 +884,38 @@ JsonBuilder *CreateEveHeader(const Packet *p, enum OutputJsonLogDirection dir, addr = &addr_info; } if (addr->src_ip[0] != '\0') { - jb_set_string(js, "src_ip", addr->src_ip); + SCJbSetString(js, "src_ip", addr->src_ip); } if (addr->log_port) { - jb_set_uint(js, "src_port", addr->sp); + SCJbSetUint(js, "src_port", addr->sp); } if (addr->dst_ip[0] != '\0') { - jb_set_string(js, "dest_ip", addr->dst_ip); + SCJbSetString(js, "dest_ip", addr->dst_ip); } if (addr->log_port) { - jb_set_uint(js, "dest_port", addr->dp); + SCJbSetUint(js, "dest_port", addr->dp); } if (addr->proto[0] != '\0') { - jb_set_string(js, "proto", addr->proto); + SCJbSetString(js, "proto", addr->proto); } /* icmp */ switch (p->proto) { case IPPROTO_ICMP: if (PacketIsICMPv4(p)) { - jb_set_uint(js, "icmp_type", p->icmp_s.type); - jb_set_uint(js, "icmp_code", p->icmp_s.code); + SCJbSetUint(js, "icmp_type", p->icmp_s.type); + SCJbSetUint(js, "icmp_code", p->icmp_s.code); } break; case IPPROTO_ICMPV6: if (PacketIsICMPv6(p)) { - jb_set_uint(js, "icmp_type", PacketGetICMPv6(p)->type); - jb_set_uint(js, "icmp_code", PacketGetICMPv6(p)->code); + SCJbSetUint(js, "icmp_type", PacketGetICMPv6(p)->type); + SCJbSetUint(js, "icmp_code", PacketGetICMPv6(p)->code); } break; } - jb_set_string(js, "pkt_src", PktSrcToString(p->pkt_src)); + SCJbSetString(js, "pkt_src", PktSrcToString(p->pkt_src)); if (eve_ctx != NULL) { EveAddCommonOptions(&eve_ctx->cfg, p, f, js, dir); @@ -924,15 +924,15 @@ JsonBuilder *CreateEveHeader(const Packet *p, enum OutputJsonLogDirection dir, return js; } -JsonBuilder *CreateEveHeaderWithTxId(const Packet *p, enum OutputJsonLogDirection dir, +SCJsonBuilder *CreateEveHeaderWithTxId(const Packet *p, enum OutputJsonLogDirection dir, const char *event_type, JsonAddrInfo *addr, uint64_t tx_id, OutputJsonCtx *eve_ctx) { - JsonBuilder *js = CreateEveHeader(p, dir, event_type, addr, eve_ctx); + SCJsonBuilder *js = CreateEveHeader(p, dir, event_type, addr, eve_ctx); if (unlikely(js == NULL)) return NULL; /* tx id for correlation with other events */ - jb_set_uint(js, "tx_id", tx_id); + SCJbSetUint(js, "tx_id", tx_id); return js; } @@ -987,21 +987,21 @@ void OutputJsonFlush(OutputJsonThreadCtx *ctx) } void OutputJsonBuilderBuffer( - ThreadVars *tv, const Packet *p, Flow *f, JsonBuilder *js, OutputJsonThreadCtx *ctx) + ThreadVars *tv, const Packet *p, Flow *f, SCJsonBuilder *js, OutputJsonThreadCtx *ctx) { LogFileCtx *file_ctx = ctx->file_ctx; MemBuffer **buffer = &ctx->buffer; if (file_ctx->sensor_name) { - jb_set_string(js, "host", file_ctx->sensor_name); + SCJbSetString(js, "host", file_ctx->sensor_name); } if (file_ctx->is_pcap_offline) { - jb_set_string(js, "pcap_filename", PcapFileGetFilename()); + SCJbSetString(js, "pcap_filename", PcapFileGetFilename()); } SCEveRunCallbacks(tv, p, f, js); - jb_close(js); + SCJbClose(js); MemBufferReset(*buffer); @@ -1009,8 +1009,8 @@ void OutputJsonBuilderBuffer( MemBufferWriteRaw((*buffer), (const uint8_t *)file_ctx->prefix, file_ctx->prefix_len); } - size_t jslen = jb_len(js); - DEBUG_VALIDATE_BUG_ON(jb_len(js) > UINT32_MAX); + size_t jslen = SCJbLen(js); + DEBUG_VALIDATE_BUG_ON(SCJbLen(js) > UINT32_MAX); size_t remaining = MEMBUFFER_SIZE(*buffer) - MEMBUFFER_OFFSET(*buffer); if (jslen >= remaining) { size_t expand_by = jslen + 1 - remaining; @@ -1020,7 +1020,7 @@ void OutputJsonBuilderBuffer( * message to hopefully identify the event_type. */ char partial[120]; size_t partial_len = MIN(sizeof(partial), jslen); - memcpy(partial, jb_ptr(js), partial_len - 1); + memcpy(partial, SCJbPtr(js), partial_len - 1); partial[partial_len - 1] = '\0'; SCLogWarning("Formatted JSON EVE record too large, will be dropped: %s", partial); ctx->too_large_warning = true; @@ -1029,7 +1029,7 @@ void OutputJsonBuilderBuffer( } } - MemBufferWriteRaw((*buffer), jb_ptr(js), (uint32_t)jslen); + MemBufferWriteRaw((*buffer), SCJbPtr(js), (uint32_t)jslen); LogFileWrite(file_ctx, *buffer); } diff --git a/src/output-json.h b/src/output-json.h index 20f8945540..47c0e5b463 100644 --- a/src/output-json.h +++ b/src/output-json.h @@ -95,17 +95,17 @@ typedef struct OutputJsonThreadCtx_ { json_t *SCJsonString(const char *val); -void CreateEveFlowId(JsonBuilder *js, const Flow *f); -void EveFileInfo(JsonBuilder *js, const File *file, const uint64_t tx_id, const uint16_t flags); -void EveTcpFlags(uint8_t flags, JsonBuilder *js); -void EvePacket(const Packet *p, JsonBuilder *js, uint32_t max_length); -JsonBuilder *CreateEveHeader(const Packet *p, enum OutputJsonLogDirection dir, +void CreateEveFlowId(SCJsonBuilder *js, const Flow *f); +void EveFileInfo(SCJsonBuilder *js, const File *file, const uint64_t tx_id, const uint16_t flags); +void EveTcpFlags(uint8_t flags, SCJsonBuilder *js); +void EvePacket(const Packet *p, SCJsonBuilder *js, uint32_t max_length); +SCJsonBuilder *CreateEveHeader(const Packet *p, enum OutputJsonLogDirection dir, const char *event_type, JsonAddrInfo *addr, OutputJsonCtx *eve_ctx); -JsonBuilder *CreateEveHeaderWithTxId(const Packet *p, enum OutputJsonLogDirection dir, +SCJsonBuilder *CreateEveHeaderWithTxId(const Packet *p, enum OutputJsonLogDirection dir, const char *event_type, JsonAddrInfo *addr, uint64_t tx_id, OutputJsonCtx *eve_ctx); int OutputJSONBuffer(json_t *js, LogFileCtx *file_ctx, MemBuffer **buffer); void OutputJsonBuilderBuffer( - ThreadVars *tv, const Packet *p, Flow *f, JsonBuilder *js, OutputJsonThreadCtx *ctx); + ThreadVars *tv, const Packet *p, Flow *f, SCJsonBuilder *js, OutputJsonThreadCtx *ctx); OutputInitResult OutputJsonInitCtx(SCConfNode *); OutputInitResult OutputJsonLogInitSub(SCConfNode *conf, OutputCtx *parent_ctx); @@ -113,15 +113,15 @@ TmEcode JsonLogThreadInit(ThreadVars *t, const void *initdata, void **data); TmEcode JsonLogThreadDeinit(ThreadVars *t, void *data); void EveAddCommonOptions(const OutputJsonCommonSettings *cfg, const Packet *p, const Flow *f, - JsonBuilder *js, enum OutputJsonLogDirection dir); + SCJsonBuilder *js, enum OutputJsonLogDirection dir); int OutputJsonLogFlush(ThreadVars *tv, void *thread_data, const Packet *p); -void EveAddMetadata(const Packet *p, const Flow *f, JsonBuilder *js); +void EveAddMetadata(const Packet *p, const Flow *f, SCJsonBuilder *js); int OutputJSONMemBufferCallback(const char *str, size_t size, void *data); OutputJsonThreadCtx *CreateEveThreadCtx(ThreadVars *t, OutputJsonCtx *ctx); void FreeEveThreadCtx(OutputJsonThreadCtx *ctx); -void JSONFormatAndAddMACAddr(JsonBuilder *js, const char *key, const uint8_t *val, bool is_array); +void JSONFormatAndAddMACAddr(SCJsonBuilder *js, const char *key, const uint8_t *val, bool is_array); void OutputJsonFlush(OutputJsonThreadCtx *ctx); #endif /* SURICATA_OUTPUT_JSON_H */ diff --git a/src/output.c b/src/output.c index 2af4e4acb9..80ac2ed245 100644 --- a/src/output.c +++ b/src/output.c @@ -937,7 +937,7 @@ static int JsonGenericLogger(ThreadVars *tv, void *thread_data, const Packet *p, return TM_ECODE_FAILED; } - JsonBuilder *js = CreateEveHeader(p, dir, al->name, NULL, thread->ctx); + SCJsonBuilder *js = CreateEveHeader(p, dir, al->name, NULL, thread->ctx); if (unlikely(js == NULL)) { return TM_ECODE_FAILED; } @@ -947,12 +947,12 @@ static int JsonGenericLogger(ThreadVars *tv, void *thread_data, const Packet *p, } OutputJsonBuilderBuffer(tv, p, p->flow, js, thread); - jb_free(js); + SCJbFree(js); return TM_ECODE_OK; error: - jb_free(js); + SCJbFree(js); return TM_ECODE_FAILED; } diff --git a/src/output.h b/src/output.h index 9ab3d1bc27..75d3f58498 100644 --- a/src/output.h +++ b/src/output.h @@ -172,7 +172,7 @@ void OutputLoggerExitPrintStats(ThreadVars *, void *); void OutputSetupActiveLoggers(void); void OutputClearActiveLoggers(void); -typedef bool (*EveJsonSimpleTxLogFunc)(void *, struct JsonBuilder *); +typedef bool (*EveJsonSimpleTxLogFunc)(void *, struct SCJsonBuilder *); typedef struct EveJsonSimpleAppLayerLogger { EveJsonSimpleTxLogFunc LogTx; diff --git a/src/rust.h b/src/rust.h index 03cff24c8d..1d552ef890 100644 --- a/src/rust.h +++ b/src/rust.h @@ -23,8 +23,8 @@ typedef struct HttpRangeContainerBlock HttpRangeContainerBlock; #include "rust-context.h" #include "rust-bindings.h" -#define JB_SET_STRING(jb, key, val) jb_set_formatted((jb), "\"" key "\":\"" val "\"") -#define JB_SET_TRUE(jb, key) jb_set_formatted((jb), "\"" key "\":true") -#define JB_SET_FALSE(jb, key) jb_set_formatted((jb), "\"" key "\":false") +#define JB_SET_STRING(jb, key, val) SCJbSetFormatted((jb), "\"" key "\":\"" val "\"") +#define JB_SET_TRUE(jb, key) SCJbSetFormatted((jb), "\"" key "\":true") +#define JB_SET_FALSE(jb, key) SCJbSetFormatted((jb), "\"" key "\":false") #endif /* !SURICATA_RUST_H */ diff --git a/src/util-debug.c b/src/util-debug.c index cd85f7a70c..e0b7479b32 100644 --- a/src/util-debug.c +++ b/src/util-debug.c @@ -199,29 +199,29 @@ static int SCLogMessageJSON(SCTime_t tval, char *buffer, size_t buffer_size, SCL const char *file, unsigned line, const char *function, const char *module, const char *message) { - JsonBuilder *js = jb_new_object(); + SCJsonBuilder *js = SCJbNewObject(); if (unlikely(js == NULL)) goto error; char timebuf[64]; CreateIsoTimeString(tval, timebuf, sizeof(timebuf)); - jb_set_string(js, "timestamp", timebuf); + SCJbSetString(js, "timestamp", timebuf); const char *s = SCMapEnumValueToName(log_level, sc_log_level_map); if (s != NULL) { - jb_set_string(js, "log_level", s); + SCJbSetString(js, "log_level", s); } else { JB_SET_STRING(js, "log_level", "INVALID"); } JB_SET_STRING(js, "event_type", "engine"); - jb_open_object(js, "engine"); + SCJbOpenObject(js, "engine"); if (message) - jb_set_string(js, "message", message); + SCJbSetString(js, "message", message); if (t_thread_name[0] != '\0') { - jb_set_string(js, "thread_name", t_thread_name); + SCJbSetString(js, "thread_name", t_thread_name); } if (module) { @@ -229,25 +229,25 @@ static int SCLogMessageJSON(SCTime_t tval, char *buffer, size_t buffer_size, SCL int dn_len = 0; const char *dn_name; dn_name = SCTransformModule(module, &dn_len); - jb_set_string(js, "module", dn_name); + SCJbSetString(js, "module", dn_name); } if (log_level >= SC_LOG_DEBUG) { if (function) - jb_set_string(js, "function", function); + SCJbSetString(js, "function", function); if (file) - jb_set_string(js, "file", file); + SCJbSetString(js, "file", file); if (line > 0) - jb_set_uint(js, "line", line); + SCJbSetUint(js, "line", line); } - jb_close(js); // engine + SCJbClose(js); // engine - jb_close(js); - memcpy(buffer, jb_ptr(js), MIN(buffer_size, jb_len(js))); + SCJbClose(js); + memcpy(buffer, SCJbPtr(js), MIN(buffer_size, SCJbLen(js))); - jb_free(js); + SCJbFree(js); return 0;