From c23ff8695bac431b3a7d3b78d55efa8aec40dcc6 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Tue, 7 Jul 2026 15:51:12 +0200 Subject: [PATCH] sctp/doc: list possible values for enum keywords Ticket: 8675 --- doc/userguide/rules/sctp-keywords.rst | 2 ++ rust/src/sctp/detect.rs | 9 +++++++++ src/detect-sctp-chunk-type.c | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/doc/userguide/rules/sctp-keywords.rst b/doc/userguide/rules/sctp-keywords.rst index 678c201eab..e1cae2d4e3 100644 --- a/doc/userguide/rules/sctp-keywords.rst +++ b/doc/userguide/rules/sctp-keywords.rst @@ -104,6 +104,8 @@ shutdown_complete 14 forward_tsn 192 ================= ===== +See ``suricata --list-keywords=json | jq '."sctp.chunk_type".enum_values'`` + Named values are case-insensitive and can be negated with ``!``:: sctp.chunk_type:init # INIT chunk diff --git a/rust/src/sctp/detect.rs b/rust/src/sctp/detect.rs index c1067c5eb7..66bfb85b31 100644 --- a/rust/src/sctp/detect.rs +++ b/rust/src/sctp/detect.rs @@ -18,6 +18,9 @@ // Author: Giuseppe Longo use crate::detect::uint::{detect_parse_uint_enum, DetectUintData}; +use crate::detect::EnumString; +use crate::jsonbuilder::JsonBuilder; +use suricata_sys::sys::SCJsonBuilder; use std::ffi::CStr; @@ -82,6 +85,12 @@ pub extern "C" fn SCSctpChunkTypeToString(val: u8) -> *const std::os::raw::c_cha s.as_ptr() as *const std::os::raw::c_char } +#[no_mangle] +pub unsafe extern "C" fn SCDetectSCTPChunkTypeListValues(jsb: *mut SCJsonBuilder) { + let jsb = cast_pointer!(jsb, JsonBuilder); + let _ = SctpChunkType::list_values(jsb); +} + #[cfg(test)] mod test { use super::*; diff --git a/src/detect-sctp-chunk-type.c b/src/detect-sctp-chunk-type.c index 5532b0609b..9d59bd6292 100644 --- a/src/detect-sctp-chunk-type.c +++ b/src/detect-sctp-chunk-type.c @@ -45,6 +45,11 @@ void DetectSCTPChunkTypeFree(DetectEngineCtx *, void *); static int PrefilterSetupSCTPChunkType(DetectEngineCtx *de_ctx, SigGroupHead *sgh); static bool PrefilterSCTPChunkTypeIsPrefilterable(const Signature *s); +static void DetectSCTPChunkTypeListValues(SCJsonBuilder *jsb) +{ + SCDetectSCTPChunkTypeListValues(jsb); +} + void DetectSCTPChunkTypeRegister(void) { sigmatch_table[DETECT_SCTP_CHUNK_TYPE].name = "sctp.chunk_type"; @@ -57,6 +62,7 @@ void DetectSCTPChunkTypeRegister(void) sigmatch_table[DETECT_SCTP_CHUNK_TYPE].SupportsPrefilter = PrefilterSCTPChunkTypeIsPrefilterable; sigmatch_table[DETECT_SCTP_CHUNK_TYPE].SetupPrefilter = PrefilterSetupSCTPChunkType; + sigmatch_table[DETECT_SCTP_CHUNK_TYPE].JsonAdditionalInfo = DetectSCTPChunkTypeListValues; } static int DetectSCTPChunkTypeMatch(