]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
rust/quic: replace rs_ naming with SC 13152/head
authorJason Ish <jason.ish@oisf.net>
Fri, 2 May 2025 23:01:10 +0000 (17:01 -0600)
committerVictor Julien <victor@inliniac.net>
Sat, 3 May 2025 06:19:41 +0000 (08:19 +0200)
12 files changed:
rust/src/quic/detect.rs
rust/src/quic/logger.rs
rust/src/quic/quic.rs
src/app-layer-parser.c
src/detect-ja4-hash.c
src/detect-quic-cyu-hash.c
src/detect-quic-cyu-string.c
src/detect-quic-sni.c
src/detect-quic-ua.c
src/detect-quic-version.c
src/output.c
src/util-ja3.c

index df1ab0ddd55285159156d69425771f1ebe5aa475..f8be70534076f9bb695e05b76f5a0e1a8381e919 100644 (file)
@@ -21,7 +21,7 @@ use std::os::raw::c_void;
 use std::ptr;
 
 #[no_mangle]
-pub unsafe extern "C" fn rs_quic_tx_get_ua(
+pub unsafe extern "C" fn SCQuicTxGetUa(
     tx: &QuicTransaction, buffer: *mut *const u8, buffer_len: *mut u32,
 ) -> u8 {
     if let Some(ua) = &tx.ua {
@@ -36,7 +36,7 @@ pub unsafe extern "C" fn rs_quic_tx_get_ua(
 }
 
 #[no_mangle]
-pub unsafe extern "C" fn rs_quic_tx_get_sni(
+pub unsafe extern "C" fn SCQuicTxGetSni(
     tx: &QuicTransaction, buffer: *mut *const u8, buffer_len: *mut u32,
 ) -> u8 {
     if let Some(sni) = &tx.sni {
@@ -51,7 +51,7 @@ pub unsafe extern "C" fn rs_quic_tx_get_sni(
 }
 
 #[no_mangle]
-pub unsafe extern "C" fn rs_quic_tx_get_ja3(
+pub unsafe extern "C" fn SCQuicTxGetJa3(
     tx: &QuicTransaction, buffer: *mut *const u8, buffer_len: *mut u32,
 ) -> u8 {
     if let Some(ja3) = &tx.ja3 {
@@ -66,7 +66,7 @@ pub unsafe extern "C" fn rs_quic_tx_get_ja3(
 }
 
 #[no_mangle]
-pub unsafe extern "C" fn rs_quic_tx_get_ja4(
+pub unsafe extern "C" fn SCQuicTxGetJa4(
     tx: &QuicTransaction, buffer: *mut *const u8, buffer_len: *mut u32,
 ) -> u8 {
     if let Some(ja4) = &tx.ja4 {
@@ -81,7 +81,7 @@ pub unsafe extern "C" fn rs_quic_tx_get_ja4(
 }
 
 #[no_mangle]
-pub unsafe extern "C" fn rs_quic_tx_get_version(
+pub unsafe extern "C" fn SCQuicTxGetVersion(
     tx: &QuicTransaction, buffer: *mut *const u8, buffer_len: *mut u32,
 ) -> u8 {
     if tx.header.flags.is_long {
@@ -97,7 +97,7 @@ pub unsafe extern "C" fn rs_quic_tx_get_version(
 }
 
 #[no_mangle]
-pub unsafe extern "C" fn rs_quic_tx_get_cyu_hash(
+pub unsafe extern "C" fn SCQuicTxGetCyuHash(
     _de: *mut DetectEngineThreadCtx, tx: *const c_void, _flags: u8, i: u32, buffer: *mut *const u8,
     buffer_len: *mut u32,
 ) -> bool {
@@ -120,7 +120,7 @@ pub unsafe extern "C" fn rs_quic_tx_get_cyu_hash(
 }
 
 #[no_mangle]
-pub unsafe extern "C" fn rs_quic_tx_get_cyu_string(
+pub unsafe extern "C" fn SCQuicTxGetCyuString(
     _de: *mut DetectEngineThreadCtx, tx: *const c_void, _flags: u8, i: u32, buffer: *mut *const u8,
     buffer_len: *mut u32,
 ) -> bool {
index a8362c55d9c4aadbaa1c667eb66740f507dee561..1ba2afbb66c15d601cefd254b3810f2a0e939a0b 100644 (file)
@@ -154,7 +154,7 @@ fn log_quic(tx: &QuicTransaction, js: &mut JsonBuilder) -> Result<(), JsonError>
 }
 
 #[no_mangle]
-pub unsafe extern "C" fn rs_quic_to_json(
+pub unsafe extern "C" fn SCQuicLogJson(
     tx: *mut std::os::raw::c_void, js: &mut JsonBuilder,
 ) -> bool {
     let tx = cast_pointer!(tx, QuicTransaction);
index 7c1f25efd036f3704faee6710efe31c7cc90c82b..886c14e75265195c6a44db6668b0ce8abb472b9d 100644 (file)
@@ -426,8 +426,7 @@ impl QuicState {
     }
 }
 
-#[no_mangle]
-pub extern "C" fn rs_quic_state_new(
+extern "C" fn quic_state_new(
     _orig_state: *mut std::os::raw::c_void, _orig_proto: AppProto,
 ) -> *mut std::os::raw::c_void {
     let state = QuicState::new();
@@ -435,20 +434,17 @@ pub extern "C" fn rs_quic_state_new(
     return Box::into_raw(boxed) as *mut _;
 }
 
-#[no_mangle]
-pub extern "C" fn rs_quic_state_free(state: *mut std::os::raw::c_void) {
+extern "C" fn quic_state_free(state: *mut std::os::raw::c_void) {
     // Just unbox...
     std::mem::drop(unsafe { Box::from_raw(state as *mut QuicState) });
 }
 
-#[no_mangle]
-pub unsafe extern "C" fn rs_quic_state_tx_free(state: *mut std::os::raw::c_void, tx_id: u64) {
+unsafe extern "C" fn quic_state_tx_free(state: *mut std::os::raw::c_void, tx_id: u64) {
     let state = cast_pointer!(state, QuicState);
     state.free_tx(tx_id);
 }
 
-#[no_mangle]
-pub unsafe extern "C" fn rs_quic_probing_parser(
+unsafe extern "C" fn quic_probing_parser(
     _flow: *const Flow, _direction: u8, input: *const u8, input_len: u32, _rdir: *mut u8,
 ) -> AppProto {
     if input.is_null() {
@@ -463,8 +459,7 @@ pub unsafe extern "C" fn rs_quic_probing_parser(
     }
 }
 
-#[no_mangle]
-pub unsafe extern "C" fn rs_quic_parse_tc(
+unsafe extern "C" fn quic_parse_tc(
     _flow: *const Flow, state: *mut std::os::raw::c_void, _pstate: *mut std::os::raw::c_void,
     stream_slice: StreamSlice, _data: *const std::os::raw::c_void,
 ) -> AppLayerResult {
@@ -478,8 +473,7 @@ pub unsafe extern "C" fn rs_quic_parse_tc(
     }
 }
 
-#[no_mangle]
-pub unsafe extern "C" fn rs_quic_parse_ts(
+unsafe extern "C" fn quic_parse_ts(
     _flow: *const Flow, state: *mut std::os::raw::c_void, _pstate: *mut std::os::raw::c_void,
     stream_slice: StreamSlice, _data: *const std::os::raw::c_void,
 ) -> AppLayerResult {
@@ -493,8 +487,7 @@ pub unsafe extern "C" fn rs_quic_parse_ts(
     }
 }
 
-#[no_mangle]
-pub unsafe extern "C" fn rs_quic_state_get_tx(
+unsafe extern "C" fn quic_state_get_tx(
     state: *mut std::os::raw::c_void, tx_id: u64,
 ) -> *mut std::os::raw::c_void {
     let state = cast_pointer!(state, QuicState);
@@ -508,28 +501,19 @@ pub unsafe extern "C" fn rs_quic_state_get_tx(
     }
 }
 
-#[no_mangle]
-pub unsafe extern "C" fn rs_quic_state_get_tx_count(state: *mut std::os::raw::c_void) -> u64 {
+unsafe extern "C" fn quic_state_get_tx_count(state: *mut std::os::raw::c_void) -> u64 {
     let state = cast_pointer!(state, QuicState);
     return state.max_tx_id;
 }
 
-#[no_mangle]
-pub extern "C" fn rs_quic_state_progress_completion_status(_direction: u8) -> std::os::raw::c_int {
-    // This parser uses 1 to signal transaction completion status.
-    return 1;
-}
-
-#[no_mangle]
-pub unsafe extern "C" fn rs_quic_tx_get_alstate_progress(
+unsafe extern "C" fn quic_tx_get_alstate_progress(
     tx: *mut std::os::raw::c_void, _direction: u8,
 ) -> std::os::raw::c_int {
     let _tx = cast_pointer!(tx, QuicTransaction);
     return 1;
 }
 
-#[no_mangle]
-pub unsafe extern "C" fn rs_quic_state_get_tx_iterator(
+unsafe extern "C" fn quic_state_get_tx_iterator(
     _ipproto: u8, _alproto: AppProto, state: *mut std::os::raw::c_void, min_tx_id: u64,
     _max_tx_id: u64, istate: &mut u64,
 ) -> applayer::AppLayerGetTxIterTuple {
@@ -553,32 +537,32 @@ export_state_data_get!(quic_get_state_data, QuicState);
 const PARSER_NAME: &[u8] = b"quic\0";
 
 #[no_mangle]
-pub unsafe extern "C" fn rs_quic_register_parser() {
+pub unsafe extern "C" fn SCRegisterQuicParser() {
     let default_port = CString::new("[443,80]").unwrap();
     let parser = RustParser {
         name: PARSER_NAME.as_ptr() as *const std::os::raw::c_char,
         default_port: default_port.as_ptr(),
         ipproto: IPPROTO_UDP,
-        probe_ts: Some(rs_quic_probing_parser),
-        probe_tc: Some(rs_quic_probing_parser),
+        probe_ts: Some(quic_probing_parser),
+        probe_tc: Some(quic_probing_parser),
         min_depth: 0,
         max_depth: 16,
-        state_new: rs_quic_state_new,
-        state_free: rs_quic_state_free,
-        tx_free: rs_quic_state_tx_free,
-        parse_ts: rs_quic_parse_ts,
-        parse_tc: rs_quic_parse_tc,
-        get_tx_count: rs_quic_state_get_tx_count,
-        get_tx: rs_quic_state_get_tx,
+        state_new: quic_state_new,
+        state_free: quic_state_free,
+        tx_free: quic_state_tx_free,
+        parse_ts: quic_parse_ts,
+        parse_tc: quic_parse_tc,
+        get_tx_count: quic_state_get_tx_count,
+        get_tx: quic_state_get_tx,
         tx_comp_st_ts: 1,
         tx_comp_st_tc: 1,
-        tx_get_progress: rs_quic_tx_get_alstate_progress,
+        tx_get_progress: quic_tx_get_alstate_progress,
         get_eventinfo: Some(QuicEvent::get_event_info),
         get_eventinfo_byid: Some(QuicEvent::get_event_info_by_id),
         localstorage_new: None,
         localstorage_free: None,
         get_tx_files: None,
-        get_tx_iterator: Some(rs_quic_state_get_tx_iterator),
+        get_tx_iterator: Some(quic_state_get_tx_iterator),
         get_tx_data: quic_get_tx_data,
         get_state_data: quic_get_state_data,
         apply_tx_config: None,
index 06b0015a30a9f4b69c7764135f18d4193a163612..4fbf4e2d99d7f270d695fd8fe4be4445a5e7c586 100644 (file)
@@ -1794,7 +1794,7 @@ void AppLayerParserRegisterProtocolParsers(void)
     SCRegisterDhcpParser();
     SCRegisterSnmpParser();
     SCRegisterSipParser();
-    rs_quic_register_parser();
+    SCRegisterQuicParser();
     rs_websocket_register_parser();
     SCRegisterLdapTcpParser();
     SCRegisterLdapUdpParser();
index 8b090a7fbaf7a055644090ee6f028d3358bd3afc..b1f79906bdcffa0957afc5692e035e32a863cc03 100644 (file)
@@ -170,7 +170,7 @@ static InspectionBuffer *Ja4DetectGetHash(DetectEngineThreadCtx *det_ctx,
         uint32_t b_len = 0;
         const uint8_t *b = NULL;
 
-        if (rs_quic_tx_get_ja4(txv, &b, &b_len) != 1)
+        if (SCQuicTxGetJa4(txv, &b, &b_len) != 1)
             return NULL;
         if (b == NULL || b_len == 0)
             return NULL;
index b8ead1c1e0f889d860333bfde5ce01d13baf6d48..86dcb4531fe13cb214ef45e885100d08c598e12c 100644 (file)
@@ -69,7 +69,7 @@ void DetectQuicCyuHashRegister(void)
 #endif
 
     DetectAppLayerMultiRegister(
-            BUFFER_NAME, ALPROTO_QUIC, SIG_FLAG_TOSERVER, 1, rs_quic_tx_get_cyu_hash, 2);
+            BUFFER_NAME, ALPROTO_QUIC, SIG_FLAG_TOSERVER, 1, SCQuicTxGetCyuHash, 2);
 
     DetectBufferTypeSetDescriptionByName(BUFFER_NAME, BUFFER_DESC);
 
index b18cce998d0ea3e8b1e7e2926fffb2439807038b..c9154988d11f75d614f33ec46fe34ec00012733d 100644 (file)
@@ -67,7 +67,7 @@ void DetectQuicCyuStringRegister(void)
 #endif
 
     DetectAppLayerMultiRegister(
-            BUFFER_NAME, ALPROTO_QUIC, SIG_FLAG_TOSERVER, 1, rs_quic_tx_get_cyu_string, 2);
+            BUFFER_NAME, ALPROTO_QUIC, SIG_FLAG_TOSERVER, 1, SCQuicTxGetCyuString, 2);
 
     DetectBufferTypeSetDescriptionByName(BUFFER_NAME, BUFFER_DESC);
 
index 8a88c32b6b443255825eb96c8c4d3b1dd75e76da..8bd8dc3b94bd700c30de2fe9a1577d1bd4a1595b 100644 (file)
@@ -55,7 +55,7 @@ static InspectionBuffer *GetSniData(DetectEngineThreadCtx *det_ctx,
         uint32_t b_len = 0;
         const uint8_t *b = NULL;
 
-        if (rs_quic_tx_get_sni(txv, &b, &b_len) != 1)
+        if (SCQuicTxGetSni(txv, &b, &b_len) != 1)
             return NULL;
         if (b == NULL || b_len == 0)
             return NULL;
index dc215f980c4b9f755352667001919ddef64329ac..868b5ec382778486ff4b9ef6b7ee63040c71a476 100644 (file)
@@ -55,7 +55,7 @@ static InspectionBuffer *GetUaData(DetectEngineThreadCtx *det_ctx,
         uint32_t b_len = 0;
         const uint8_t *b = NULL;
 
-        if (rs_quic_tx_get_ua(txv, &b, &b_len) != 1)
+        if (SCQuicTxGetUa(txv, &b, &b_len) != 1)
             return NULL;
         if (b == NULL || b_len == 0)
             return NULL;
index 395bbdb6e4db6d74f62ad3c24b7ea056e8279146..983db9dbdc003992db6b222c1cc0323b618dc9b0 100644 (file)
@@ -55,7 +55,7 @@ static InspectionBuffer *GetVersionData(DetectEngineThreadCtx *det_ctx,
         uint32_t b_len = 0;
         const uint8_t *b = NULL;
 
-        if (rs_quic_tx_get_version(txv, &b, &b_len) != 1)
+        if (SCQuicTxGetVersion(txv, &b, &b_len) != 1)
             return NULL;
         if (b == NULL || b_len == 0)
             return NULL;
index cabc70e3c94eb3bf48d88475102840f8be983eb9..276534b428f2f9a34bd68be18373ab82c8bddfc1 100644 (file)
@@ -914,7 +914,7 @@ void OutputRegisterRootLoggers(void)
     // ALPROTO_IKE special: uses state
     RegisterSimpleJsonApplayerLogger(
             ALPROTO_KRB5, (EveJsonSimpleTxLogFunc)SCKrb5LogJsonResponse, NULL);
-    RegisterSimpleJsonApplayerLogger(ALPROTO_QUIC, (EveJsonSimpleTxLogFunc)rs_quic_to_json, NULL);
+    RegisterSimpleJsonApplayerLogger(ALPROTO_QUIC, (EveJsonSimpleTxLogFunc)SCQuicLogJson, NULL);
     // ALPROTO_DHCP TODO missing
     RegisterSimpleJsonApplayerLogger(ALPROTO_SIP, (EveJsonSimpleTxLogFunc)SCSipLogJson, NULL);
     RegisterSimpleJsonApplayerLogger(ALPROTO_RFB, (EveJsonSimpleTxLogFunc)rs_rfb_logger_log, NULL);
index af2cbbb2b3e6dd5937e0c9b3af08d6eb2157dff2..4fe43020603392b0e8eaf66e161d117d6b574881 100644 (file)
@@ -267,7 +267,7 @@ InspectionBuffer *Ja3DetectGetHash(DetectEngineThreadCtx *det_ctx,
         uint32_t b_len = 0;
         const uint8_t *b = NULL;
 
-        if (rs_quic_tx_get_ja3(txv, &b, &b_len) != 1)
+        if (SCQuicTxGetJa3(txv, &b, &b_len) != 1)
             return NULL;
         if (b == NULL || b_len == 0)
             return NULL;
@@ -292,7 +292,7 @@ InspectionBuffer *Ja3DetectGetString(DetectEngineThreadCtx *det_ctx,
         uint32_t b_len = 0;
         const uint8_t *b = NULL;
 
-        if (rs_quic_tx_get_ja3(txv, &b, &b_len) != 1)
+        if (SCQuicTxGetJa3(txv, &b, &b_len) != 1)
             return NULL;
         if (b == NULL || b_len == 0)
             return NULL;