rust/sys: generate jsonbuilder bindings in sys

Bindgen the Rust bindings to the C JsonBuilder API along with the rest
of the Rust bindings to C. Breaking it out was probably the wrong
idea.

This should make it easier, and more correct to bindgen C functions
that use SCJsonBuilder types.
pull/14806/head
Jason Ish 2 months ago committed by Victor Julien
parent f951477461
commit f79158ae55

@ -24,7 +24,7 @@
use super::template::TemplateTransaction;
use std::ffi::CString;
use suricata::cast_pointer;
use suricata_sys::jsonbuilder::{SCJbClose, SCJbOpenObject, SCJbSetString, SCJsonBuilder};
use suricata_sys::sys::{SCJbClose, SCJbOpenObject, SCJbSetString, SCJsonBuilder};
use std;

@ -135,6 +135,7 @@ vendor:
update-bindings:
if HAVE_BINDGEN
CARGO=$(CARGO) $(CBINDGEN) --quiet --config cbindgen.toml src/jsonbuilder.rs -o gen/jsonbuilder.h
$(BINDGEN) \
-o sys/src/sys.rs.tmp \
--rust-target 1.68 \
@ -157,19 +158,6 @@ if HAVE_BINDGEN
printf "// This file is automatically generated. Do not edit.\n\n" > sys/src/sys.rs
cat sys/src/sys.rs.tmp >> sys/src/sys.rs
rm -f sys/src/sys.rs.tmp
CARGO=$(CARGO) $(CBINDGEN) --quiet --config cbindgen.toml src/jsonbuilder.rs -o gen/jsonbuilder.h
$(BINDGEN) \
-o sys/src/jsonbuilder.rs.tmp \
--rust-target 1.68 \
--no-layout-tests \
--disable-header-comment \
--allowlist-function 'SC.*' \
gen/jsonbuilder.h \
-- \
-DHAVE_CONFIG_H -I../src -I../rust/gen $(CPPFLAGS)
printf "// This file is automatically generated. Do not edit.\n\n" > sys/src/jsonbuilder.rs
cat sys/src/jsonbuilder.rs.tmp >> sys/src/jsonbuilder.rs
rm -f sys/src/jsonbuilder.rs.tmp
else
@echo "error: bindgen or rustfmt not installed, can't update bindings"
exit 1

@ -1,130 +0,0 @@
// This file is automatically generated. Do not edit.
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SCJsonBuilder {
_unused: [u8; 0],
}
#[doc = " A \"mark\" or saved state for a JsonBuilder object.\n\n The name is full, and the types are u64 as this object is used\n directly in C as well."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SCJsonBuilderMark {
pub position: u64,
pub state_index: u64,
pub state: u64,
}
extern "C" {
pub fn SCJbNewObject() -> *mut SCJsonBuilder;
}
extern "C" {
pub fn SCJbNewArray() -> *mut SCJsonBuilder;
}
extern "C" {
pub fn SCJbClone(js: *mut SCJsonBuilder) -> *mut SCJsonBuilder;
}
extern "C" {
pub fn SCJbFree(js: *mut SCJsonBuilder);
}
extern "C" {
pub fn SCJbCapacity(jb: *mut SCJsonBuilder) -> usize;
}
extern "C" {
pub fn SCJbReset(jb: *mut SCJsonBuilder);
}
extern "C" {
pub fn SCJbOpenObject(js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char) -> bool;
}
extern "C" {
pub fn SCJbStartObject(js: *mut SCJsonBuilder) -> bool;
}
extern "C" {
pub fn SCJbOpenArray(js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char) -> bool;
}
extern "C" {
pub fn SCJbSetString(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char,
val: *const ::std::os::raw::c_char,
) -> bool;
}
extern "C" {
pub fn SCJbSetStringFromBytes(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, bytes: *const u8, len: u32,
) -> bool;
}
extern "C" {
pub fn SCJbSetPrintAsciiString(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, bytes: *const u8, len: u32,
) -> bool;
}
extern "C" {
pub fn SCJbSetBase64(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, bytes: *const u8, len: u32,
) -> bool;
}
extern "C" {
pub fn SCJbSetHex(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, bytes: *const u8, len: u32,
) -> bool;
}
extern "C" {
pub fn SCJbSetFormatted(
js: *mut SCJsonBuilder, formatted: *const ::std::os::raw::c_char,
) -> bool;
}
extern "C" {
pub fn SCJbAppendObject(jb: *mut SCJsonBuilder, obj: *const SCJsonBuilder) -> bool;
}
extern "C" {
pub fn SCJbSetObject(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: *mut SCJsonBuilder,
) -> bool;
}
extern "C" {
pub fn SCJbAppendString(js: *mut SCJsonBuilder, val: *const ::std::os::raw::c_char) -> bool;
}
extern "C" {
pub fn SCJbAppendStringFromBytes(js: *mut SCJsonBuilder, bytes: *const u8, len: u32) -> bool;
}
extern "C" {
pub fn SCJbAppendBase64(js: *mut SCJsonBuilder, bytes: *const u8, len: u32) -> bool;
}
extern "C" {
pub fn SCJbAppendUint(js: *mut SCJsonBuilder, val: u64) -> bool;
}
extern "C" {
pub fn SCJbAppendFloat(js: *mut SCJsonBuilder, val: f64) -> bool;
}
extern "C" {
pub fn SCJbSetUint(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: u64,
) -> bool;
}
extern "C" {
pub fn SCJbSetInt(js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: i64)
-> bool;
}
extern "C" {
pub fn SCJbSetFloat(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: f64,
) -> bool;
}
extern "C" {
pub fn SCJbSetBool(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: bool,
) -> bool;
}
extern "C" {
pub fn SCJbClose(js: *mut SCJsonBuilder) -> bool;
}
extern "C" {
pub fn SCJbLen(js: *const SCJsonBuilder) -> usize;
}
extern "C" {
pub fn SCJbPtr(js: *mut SCJsonBuilder) -> *const u8;
}
extern "C" {
pub fn SCJbGetMark(js: *mut SCJsonBuilder, mark: *mut SCJsonBuilderMark);
}
extern "C" {
pub fn SCJbRestoreMark(js: *mut SCJsonBuilder, mark: *mut SCJsonBuilderMark) -> bool;
}

@ -21,5 +21,4 @@
#![allow(clippy::all)]
#![allow(unpredictable_function_pointer_comparisons)]
pub mod jsonbuilder;
pub mod sys;

@ -1712,3 +1712,131 @@ extern "C" {
set: *mut Dataset, data: *const u8, data_len: u32, rep: *const DataRepType,
) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SCJsonBuilder {
_unused: [u8; 0],
}
#[doc = " A \"mark\" or saved state for a JsonBuilder object.\n\n The name is full, and the types are u64 as this object is used\n directly in C as well."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
pub struct SCJsonBuilderMark {
pub position: u64,
pub state_index: u64,
pub state: u64,
}
extern "C" {
pub fn SCJbNewObject() -> *mut SCJsonBuilder;
}
extern "C" {
pub fn SCJbNewArray() -> *mut SCJsonBuilder;
}
extern "C" {
pub fn SCJbClone(js: *mut SCJsonBuilder) -> *mut SCJsonBuilder;
}
extern "C" {
pub fn SCJbFree(js: *mut SCJsonBuilder);
}
extern "C" {
pub fn SCJbCapacity(jb: *mut SCJsonBuilder) -> usize;
}
extern "C" {
pub fn SCJbReset(jb: *mut SCJsonBuilder);
}
extern "C" {
pub fn SCJbOpenObject(js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char) -> bool;
}
extern "C" {
pub fn SCJbStartObject(js: *mut SCJsonBuilder) -> bool;
}
extern "C" {
pub fn SCJbOpenArray(js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char) -> bool;
}
extern "C" {
pub fn SCJbSetString(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char,
val: *const ::std::os::raw::c_char,
) -> bool;
}
extern "C" {
pub fn SCJbSetStringFromBytes(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, bytes: *const u8, len: u32,
) -> bool;
}
extern "C" {
pub fn SCJbSetPrintAsciiString(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, bytes: *const u8, len: u32,
) -> bool;
}
extern "C" {
pub fn SCJbSetBase64(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, bytes: *const u8, len: u32,
) -> bool;
}
extern "C" {
pub fn SCJbSetHex(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, bytes: *const u8, len: u32,
) -> bool;
}
extern "C" {
pub fn SCJbSetFormatted(
js: *mut SCJsonBuilder, formatted: *const ::std::os::raw::c_char,
) -> bool;
}
extern "C" {
pub fn SCJbAppendObject(jb: *mut SCJsonBuilder, obj: *const SCJsonBuilder) -> bool;
}
extern "C" {
pub fn SCJbSetObject(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: *mut SCJsonBuilder,
) -> bool;
}
extern "C" {
pub fn SCJbAppendString(js: *mut SCJsonBuilder, val: *const ::std::os::raw::c_char) -> bool;
}
extern "C" {
pub fn SCJbAppendStringFromBytes(js: *mut SCJsonBuilder, bytes: *const u8, len: u32) -> bool;
}
extern "C" {
pub fn SCJbAppendBase64(js: *mut SCJsonBuilder, bytes: *const u8, len: u32) -> bool;
}
extern "C" {
pub fn SCJbAppendUint(js: *mut SCJsonBuilder, val: u64) -> bool;
}
extern "C" {
pub fn SCJbAppendFloat(js: *mut SCJsonBuilder, val: f64) -> bool;
}
extern "C" {
pub fn SCJbSetUint(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: u64,
) -> bool;
}
extern "C" {
pub fn SCJbSetInt(js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: i64)
-> bool;
}
extern "C" {
pub fn SCJbSetFloat(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: f64,
) -> bool;
}
extern "C" {
pub fn SCJbSetBool(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: bool,
) -> bool;
}
extern "C" {
pub fn SCJbClose(js: *mut SCJsonBuilder) -> bool;
}
extern "C" {
pub fn SCJbLen(js: *const SCJsonBuilder) -> usize;
}
extern "C" {
pub fn SCJbPtr(js: *mut SCJsonBuilder) -> *const u8;
}
extern "C" {
pub fn SCJbGetMark(js: *mut SCJsonBuilder, mark: *mut SCJsonBuilderMark);
}
extern "C" {
pub fn SCJbRestoreMark(js: *mut SCJsonBuilder, mark: *mut SCJsonBuilderMark) -> bool;
}

@ -67,4 +67,6 @@
#include "feature.h"
#include "datasets.h"
#include "jsonbuilder.h"
#endif

Loading…
Cancel
Save