dcerpc: Rework constructs to use Self/Default

pull/6139/head
Jeff Lucovsky 5 years ago committed by Victor Julien
parent 00167121dc
commit 1ef0bd580b

@ -160,7 +160,7 @@ pub fn get_req_type_for_resp(t: u8) -> u8 {
} }
} }
#[derive(Debug)] #[derive(Default, Debug)]
pub struct DCERPCTransaction { pub struct DCERPCTransaction {
pub id: u64, // internal transaction ID pub id: u64, // internal transaction ID
pub ctxid: u16, pub ctxid: u16,
@ -187,31 +187,17 @@ pub struct DCERPCTransaction {
} }
impl DCERPCTransaction { impl DCERPCTransaction {
pub fn new() -> DCERPCTransaction { pub fn new() -> Self {
return DCERPCTransaction { return Self {
id: 0,
ctxid: 0,
opnum: 0,
first_request_seen: 0,
call_id: 0,
frag_cnt_ts: 0,
frag_cnt_tc: 0,
endianness: 0,
stub_data_buffer_ts: Vec::new(), stub_data_buffer_ts: Vec::new(),
stub_data_buffer_tc: Vec::new(), stub_data_buffer_tc: Vec::new(),
stub_data_buffer_reset_ts: false,
stub_data_buffer_reset_tc: false,
req_done: false,
resp_done: false,
req_lost: false,
resp_lost: false,
req_cmd: DCERPC_TYPE_REQUEST, req_cmd: DCERPC_TYPE_REQUEST,
resp_cmd: DCERPC_TYPE_RESPONSE, resp_cmd: DCERPC_TYPE_RESPONSE,
activityuuid: Vec::new(), activityuuid: Vec::new(),
seqnum: 0,
tx_data: AppLayerTxData::new(), tx_data: AppLayerTxData::new(),
de_state: None, de_state: None,
}; ..Default::default()
}
} }
pub fn free(&mut self) { pub fn free(&mut self) {
@ -253,7 +239,7 @@ pub struct DCERPCRequest {
pub first_request_seen: u8, pub first_request_seen: u8,
} }
#[derive(Debug, Clone)] #[derive(Default, Debug, Clone)]
pub struct DCERPCUuidEntry { pub struct DCERPCUuidEntry {
pub ctxid: u16, pub ctxid: u16,
pub internal_id: u16, pub internal_id: u16,
@ -265,16 +251,8 @@ pub struct DCERPCUuidEntry {
} }
impl DCERPCUuidEntry { impl DCERPCUuidEntry {
pub fn new() -> DCERPCUuidEntry { pub fn new() -> Self {
return DCERPCUuidEntry { Default::default()
ctxid: 0,
internal_id: 0,
result: 0,
uuid: Vec::new(),
version: 0,
versionminor: 0,
flags: 0,
};
} }
} }
@ -330,7 +308,7 @@ pub struct DCERPCBindAck {
pub ctxitems: Vec<DCERPCBindAckResult>, pub ctxitems: Vec<DCERPCBindAckResult>,
} }
#[derive(Debug)] #[derive(Default, Debug)]
pub struct DCERPCState { pub struct DCERPCState {
pub header: Option<DCERPCHdr>, pub header: Option<DCERPCHdr>,
pub bind: Option<DCERPCBind>, pub bind: Option<DCERPCBind>,
@ -357,31 +335,12 @@ pub struct DCERPCState {
} }
impl DCERPCState { impl DCERPCState {
pub fn new() -> DCERPCState { pub fn new() -> Self {
return DCERPCState { return Self {
header: None,
bind: None,
bindack: None,
transactions: Vec::new(),
buffer_ts: Vec::new(),
buffer_tc: Vec::new(),
pad: 0,
padleft: 0,
bytes_consumed: 0,
tx_id: 0,
query_completed: false,
data_needed_for_dir: core::STREAM_TOSERVER, data_needed_for_dir: core::STREAM_TOSERVER,
prev_dir: core::STREAM_TOSERVER, prev_dir: core::STREAM_TOSERVER,
prev_tx_call_id: 0, ..Default::default()
clear_bind_cache: false, }
ts_gap: false,
tc_gap: false,
ts_ssn_gap: false,
tc_ssn_gap: false,
ts_ssn_trunc: false,
tc_ssn_trunc: false,
flow: None,
};
} }
fn create_tx(&mut self, call_id: u32) -> DCERPCTransaction { fn create_tx(&mut self, call_id: u32) -> DCERPCTransaction {

@ -30,7 +30,7 @@ use crate::dcerpc::parser;
// Constant DCERPC UDP Header length // Constant DCERPC UDP Header length
pub const DCERPC_UDP_HDR_LEN: i32 = 80; pub const DCERPC_UDP_HDR_LEN: i32 = 80;
#[derive(Debug)] #[derive(Default, Debug)]
pub struct DCERPCHdrUdp { pub struct DCERPCHdrUdp {
pub rpc_vers: u8, pub rpc_vers: u8,
pub pkt_type: u8, pub pkt_type: u8,
@ -53,18 +53,15 @@ pub struct DCERPCHdrUdp {
pub serial_lo: u8, pub serial_lo: u8,
} }
#[derive(Debug)] #[derive(Default, Debug)]
pub struct DCERPCUDPState { pub struct DCERPCUDPState {
pub tx_id: u64, pub tx_id: u64,
pub transactions: Vec<DCERPCTransaction>, pub transactions: Vec<DCERPCTransaction>,
} }
impl DCERPCUDPState { impl DCERPCUDPState {
pub fn new() -> DCERPCUDPState { pub fn new() -> Self {
return DCERPCUDPState { Default::default()
tx_id: 0,
transactions: Vec::new(),
};
} }
fn create_tx(&mut self, hdr: &DCERPCHdrUdp) -> DCERPCTransaction { fn create_tx(&mut self, hdr: &DCERPCHdrUdp) -> DCERPCTransaction {

@ -46,8 +46,8 @@ pub struct DCEOpnumRange {
} }
impl DCEOpnumRange { impl DCEOpnumRange {
pub fn new() -> DCEOpnumRange { pub fn new() -> Self {
return DCEOpnumRange { return Self {
range1: DETECT_DCE_OPNUM_RANGE_UNINITIALIZED, range1: DETECT_DCE_OPNUM_RANGE_UNINITIALIZED,
range2: DETECT_DCE_OPNUM_RANGE_UNINITIALIZED, range2: DETECT_DCE_OPNUM_RANGE_UNINITIALIZED,
}; };

Loading…
Cancel
Save