rust: bindgen SCFileFlowFlagsToFlags

Ticket: 7667
pull/13884/head
Philippe Antoine 5 months ago committed by Victor Julien
parent 6fa85d18f0
commit 573dd2367e

@ -22,12 +22,6 @@ use std::os::raw::{c_void};
use crate::core::*;
// Defined in util-file.h
#[allow(unused_doc_comments)]
/// cbindgen:ignore
extern "C" {
pub fn FileFlowFlagsToFlags(flow_file_flags: u16, flags: u8) -> u16;
}
#[repr(C)]
#[derive(Debug)]

@ -25,7 +25,6 @@ use crate::conf::conf_get;
use crate::core::*;
use crate::direction::Direction;
use crate::dns::dns::DnsVariant;
use crate::filecontainer::*;
use crate::filetracker::*;
use crate::flow::Flow;
use crate::frames::Frame;
@ -41,7 +40,7 @@ use std::io;
use suricata_sys::sys::{
AppLayerParserState, AppProto, SCAppLayerForceProtocolChange,
SCAppLayerParserConfParserEnabled, SCAppLayerParserRegisterLogger,
SCAppLayerProtoDetectConfProtoDetectionEnabled,
SCAppLayerProtoDetectConfProtoDetectionEnabled, SCFileFlowFlagsToFlags,
};
static mut ALPROTO_HTTP2: AppProto = ALPROTO_UNKNOWN;
@ -299,8 +298,8 @@ impl HTTP2Transaction {
}
pub fn update_file_flags(&mut self, flow_file_flags: u16) {
self.ft_ts.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, STREAM_TOSERVER) };
self.ft_tc.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, STREAM_TOCLIENT) };
self.ft_ts.file_flags = unsafe { SCFileFlowFlagsToFlags(flow_file_flags, STREAM_TOSERVER) };
self.ft_tc.file_flags = unsafe { SCFileFlowFlagsToFlags(flow_file_flags, STREAM_TOCLIENT) };
}
fn decompress<'a>(

@ -26,7 +26,7 @@ use nom7::{Err, Needed};
use suricata_sys::sys::{
AppLayerParserState, AppProto, SCAppLayerParserConfParserEnabled,
SCAppLayerProtoDetectConfProtoDetectionEnabled, SCAppLayerProtoDetectPPParseConfPorts,
SCAppLayerProtoDetectPPRegister,
SCAppLayerProtoDetectPPRegister, SCFileFlowFlagsToFlags,
};
use crate::applayer;
@ -35,7 +35,6 @@ use crate::conf::*;
use crate::core::*;
use crate::direction::Direction;
use crate::direction::DIR_BOTH;
use crate::filecontainer::*;
use crate::filetracker::*;
use crate::flow::{Flow, flow_get_last_time};
use crate::frames::*;
@ -166,7 +165,7 @@ impl NFSTransactionFile {
} else {
STREAM_TOCLIENT
};
self.file_tracker.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, dir_flag) };
self.file_tracker.file_flags = unsafe { SCFileFlowFlagsToFlags(flow_file_flags, dir_flag) };
}
}

@ -19,9 +19,9 @@ use std;
use crate::core::*;
use crate::direction::Direction;
use crate::filetracker::*;
use crate::filecontainer::*;
use crate::smb::smb::*;
use suricata_sys::sys::SCFileFlowFlagsToFlags;
/// File tracking transaction. Single direction only.
#[derive(Default, Debug)]
@ -47,7 +47,7 @@ impl SMBTransactionFile {
pub fn update_file_flags(&mut self, flow_file_flags: u16) {
let dir_flag = if self.direction == Direction::ToServer { STREAM_TOSERVER } else { STREAM_TOCLIENT };
self.file_tracker.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, dir_flag) };
self.file_tracker.file_flags = unsafe { SCFileFlowFlagsToFlags(flow_file_flags, dir_flag) };
}
}

@ -761,6 +761,9 @@ extern "C" {
sid: u32, flags: u8,
) -> ::std::os::raw::c_int;
}
extern "C" {
pub fn SCFileFlowFlagsToFlags(flow_file_flags: u16, direction: u8) -> u16;
}
extern "C" {
pub fn SCFlowGetLastTimeAsParts(flow: *const Flow, secs: *mut u64, usecs: *mut u64);
}

@ -998,7 +998,7 @@ static AppLayerResult FTPDataParse(Flow *f, FtpDataState *ftpdata_state,
ftpdata_state->tx_data.updated_tc = true;
}
/* we depend on detection engine for file pruning */
const uint16_t flags = FileFlowFlagsToFlags(ftpdata_state->tx_data.file_flags, direction);
const uint16_t flags = SCFileFlowFlagsToFlags(ftpdata_state->tx_data.file_flags, direction);
int ret = 0;
SCLogDebug("FTP-DATA input_len %u flags %04x dir %d/%s EOF %s", input_len, flags, direction,

@ -58,13 +58,13 @@ int HTPFileOpen(HtpState *s, HtpTxUserData *tx, const uint8_t *filename, uint16_
if (direction & STREAM_TOCLIENT) {
files = &tx->files_tc;
flags = FileFlowFlagsToFlags(tx->tx_data.file_flags, STREAM_TOCLIENT);
flags = SCFileFlowFlagsToFlags(tx->tx_data.file_flags, STREAM_TOCLIENT);
// we shall not open a new file if there is a current one
DEBUG_VALIDATE_BUG_ON(tx->file_range != NULL);
} else {
files = &tx->files_ts;
flags = FileFlowFlagsToFlags(tx->tx_data.file_flags, STREAM_TOSERVER);
flags = SCFileFlowFlagsToFlags(tx->tx_data.file_flags, STREAM_TOSERVER);
}
if (FileOpenFileWithId(files, &htp_sbcfg, s->file_track_id++, filename, filename_len, data,

@ -51,6 +51,7 @@
#include "app-layer-register.h"
#include "util-mpm.h"
#include "util-file.h"
#include "flow-bindgen.h"

@ -212,7 +212,7 @@ void FileForceHashParseCfg(SCConfNode *conf)
}
}
uint16_t FileFlowFlagsToFlags(const uint16_t flow_file_flags, uint8_t direction)
uint16_t SCFileFlowFlagsToFlags(const uint16_t flow_file_flags, uint8_t direction)
{
uint16_t flags = 0;
@ -271,7 +271,7 @@ uint16_t FileFlowFlagsToFlags(const uint16_t flow_file_flags, uint8_t direction)
uint16_t FileFlowToFlags(const Flow *flow, uint8_t direction)
{
return FileFlowFlagsToFlags(flow->file_flags, direction);
return SCFileFlowFlagsToFlags(flow->file_flags, direction);
}
void FileApplyTxFlags(const AppLayerTxData *txd, const uint8_t direction, File *file)
@ -279,7 +279,7 @@ void FileApplyTxFlags(const AppLayerTxData *txd, const uint8_t direction, File *
SCLogDebug("file flags %04x STORE %s NOSTORE %s", file->flags,
(file->flags & FILE_STORE) ? "true" : "false",
(file->flags & FILE_NOSTORE) ? "true" : "false");
uint16_t update_flags = FileFlowFlagsToFlags(txd->file_flags, direction);
uint16_t update_flags = SCFileFlowFlagsToFlags(txd->file_flags, direction);
DEBUG_VALIDATE_BUG_ON(
(file->flags & (FILE_STORE | FILE_NOSTORE)) == (FILE_STORE | FILE_NOSTORE));
if (file->flags & FILE_STORE)

@ -25,6 +25,12 @@
#ifndef SURICATA_UTIL_FILE_H
#define SURICATA_UTIL_FILE_H
// only bindgen this function as struct File_ defined here in C
// uses some structrues from rust
uint16_t SCFileFlowFlagsToFlags(const uint16_t flow_file_flags, uint8_t direction);
#ifndef SURICATA_BINDGEN_H
#include "conf.h"
#include "util-streaming-buffer.h"
#include "flow.h"
@ -241,7 +247,6 @@ void FileStoreFileById(FileContainer *fc, uint32_t);
uint64_t FileDataSize(const File *file);
uint64_t FileTrackedSize(const File *file);
uint16_t FileFlowFlagsToFlags(const uint16_t flow_file_flags, uint8_t direction);
uint16_t FileFlowToFlags(const Flow *flow, uint8_t direction);
#ifdef DEBUG
@ -252,4 +257,6 @@ void FilePrintFlags(const File *file);
void FilesPrune(FileContainer *fc, const StreamingBufferConfig *sbcfg, const bool trunc);
#endif // SURICATA_BINDGEN_H
#endif /* SURICATA_UTIL_FILE_H */

Loading…
Cancel
Save