]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
applayer template (rust): convert to JsonBuilder
authorJason Ish <jason.ish@oisf.net>
Tue, 7 Jul 2020 06:04:13 +0000 (00:04 -0600)
committerVictor Julien <victor@inliniac.net>
Wed, 8 Jul 2020 10:26:10 +0000 (12:26 +0200)
rust/src/applayertemplate/logger.rs
src/output-json-template-rust.c

index b1608180d9466f90c6112671782dbe7ab6757fbb..9c1278350f70b51b20fda865524ccbd9e85e4f14 100644 (file)
  */
 
 use std;
-use crate::json::*;
+use crate::jsonbuilder::{JsonBuilder, JsonError};
 use super::template::TemplateTransaction;
 
-fn log_template(tx: &TemplateTransaction) -> Option<Json> {
-    let js = Json::object();
+fn log_template(tx: &TemplateTransaction, js: &mut JsonBuilder) -> Result<(), JsonError> {
     if let Some(ref request) = tx.request {
-        js.set_string("request", request);
+        js.set_string("request", request)?;
     }
     if let Some(ref response) = tx.response {
-        js.set_string("response", response);
+        js.set_string("response", response)?;
     }
-    return Some(js);
+    Ok(())
 }
 
 #[no_mangle]
-pub extern "C" fn rs_template_logger_log(tx: *mut std::os::raw::c_void) -> *mut JsonT {
+pub extern "C" fn rs_template_logger_log(tx: *mut std::os::raw::c_void, js: &mut JsonBuilder) -> bool {
     let tx = cast_pointer!(tx, TemplateTransaction);
-    match log_template(tx) {
-        Some(js) => js.unwrap(),
-        None => std::ptr::null_mut(),
-    }
+    log_template(tx, js).is_ok()
 }
index 87aa213d58e867956506ef1930ee06cdd4ba118a..2ea62adbe3b30143a5cf7026f5b62146539fad77 100644 (file)
@@ -71,25 +71,25 @@ static int JsonTemplateLogger(ThreadVars *tv, void *thread_data,
     SCLogNotice("JsonTemplateLogger");
     LogTemplateLogThread *thread = thread_data;
 
-    json_t *js = CreateJSONHeader(p, LOG_DIR_PACKET, "template-rust", NULL);
+    JsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "template-rust", NULL);
     if (unlikely(js == NULL)) {
         return TM_ECODE_FAILED;
     }
 
-    json_t *template_js = rs_template_logger_log(tx);
-    if (unlikely(template_js == NULL)) {
+    jb_open_object(js, "template");
+    if (!rs_template_logger_log(tx, js)) {
         goto error;
     }
-    json_object_set_new(js, "template", template_js);
+    jb_close(js);
 
     MemBufferReset(thread->buffer);
-    OutputJSONBuffer(js, thread->templatelog_ctx->file_ctx, &thread->buffer);
-    json_decref(js);
+    OutputJsonBuilderBuffer(js, thread->templatelog_ctx->file_ctx, &thread->buffer);
+    jb_free(js);
 
     return TM_ECODE_OK;
 
 error:
-    json_decref(js);
+    jb_free(js);
     return TM_ECODE_FAILED;
 }