@ -88,6 +88,8 @@ pub static mut SMB_CFG_MAX_GUID_CACHE_SIZE: usize = 1024;
pub static mut SMB_CFG_MAX_READ_OFFSET_CACHE_SIZE : usize = 128 ;
/// For SMBState::ssn2tree_cache
pub static mut SMB_CFG_MAX_TREE_CACHE_SIZE : usize = 512 ;
/// For SMBState::dcerpc_rec_frag_cache
pub static mut SMB_CFG_MAX_FRAG_CACHE_SIZE : usize = 128 ;
static mut ALPROTO_SMB : AppProto = ALPROTO_UNKNOWN ;
@ -712,9 +714,9 @@ pub struct SMBState<> {
/// Map session key to SMBTree
pub ssn2tree_cache : LruCache < SMBCommonHdr , SMBTree > ,
// store partial data records that are transferred in multiple
// requests for DCERPC.
pub ssnguid2vec_map: HashMap < SMBHashKeyHdrGuid , Vec < u8 > > ,
/ // store partial data records that are transferred in multiple
/ // requests for DCERPC.
pub dcerpc_rec_frag_cache: LruCache < SMBHashKeyHdrGuid , Vec < u8 > > ,
skip_ts : u32 ,
skip_tc : u32 ,
@ -787,7 +789,7 @@ impl SMBState {
guid2name_cache :LruCache ::new ( NonZeroUsize ::new ( unsafe { SMB_CFG_MAX_GUID_CACHE_SIZE } ) . unwrap ( ) ) ,
read_offset_cache :LruCache ::new ( NonZeroUsize ::new ( unsafe { SMB_CFG_MAX_READ_OFFSET_CACHE_SIZE } ) . unwrap ( ) ) ,
ssn2tree_cache :LruCache ::new ( NonZeroUsize ::new ( unsafe { SMB_CFG_MAX_TREE_CACHE_SIZE } ) . unwrap ( ) ) ,
ssnguid2vec_map:HashMap ::new ( ) ,
dcerpc_rec_frag_cache:LruCache ::new ( NonZeroUsize ::new ( unsafe { SMB_CFG_MAX_FRAG_CACHE_SIZE } ) . unwrap ( ) ) ,
skip_ts :0 ,
skip_tc :0 ,
file_ts_left :0 ,
@ -2483,6 +2485,18 @@ pub unsafe extern "C" fn rs_smb_register_parser() {
SCLogError ! ( "Invalid max-tree-cache-size value" ) ;
}
}
let retval = conf_get ( "app-layer.protocols.smb.max-dcerpc-frag-cache-size" ) ;
if let Some ( val ) = retval {
if let Ok ( v ) = val . parse ::< usize > ( ) {
if v > 0 {
SMB_CFG_MAX_FRAG_CACHE_SIZE = v ;
} else {
SCLogError ! ( "Invalid max-dcerpc-frag-cache-size value" ) ;
}
} else {
SCLogError ! ( "Invalid max-dcerpc-frag-cache-size value" ) ;
}
}
SCLogConfig ! ( "read: max record size: {}, max queued chunks {}, max queued size {}" ,
SMB_CFG_MAX_READ_SIZE , SMB_CFG_MAX_READ_QUEUE_CNT , SMB_CFG_MAX_READ_QUEUE_SIZE ) ;
SCLogConfig ! ( "write: max record size: {}, max queued chunks {}, max queued size {}" ,