use crate::smb::smb::*;
#[derive(AppLayerEvent)]
pub enum SMBEvent {
InternalError,
MalformedData,
RecordOverflow,
MalformedNtlmsspRequest,
MalformedNtlmsspResponse,
DuplicateNegotiate,
NegotiateMalformedDialects,
FileOverlap,
RequestToClient,
ResponseToServer,
NegotiateMaxReadSizeTooLarge,
NegotiateMaxWriteSizeTooLarge,
ReadRequestTooLarge,
ReadResponseTooLarge,
ReadQueueSizeExceeded,
ReadQueueCntExceeded,
WriteRequestTooLarge,
WriteQueueSizeExceeded,
WriteQueueCntExceeded,
UnusualNtlmsspOrder,
TooManyTransactions,
}
impl SMBTransaction {
pub fn set_event(&mut self, e: SMBEvent) {
self.tx_data.set_event(e as u8);
}
pub fn set_events(&mut self, events: Vec<SMBEvent>) {
for e in events {
self.tx_data.set_event(e as u8);
}
}
}
impl SMBState {
pub fn set_event(&mut self, event: SMBEvent) {
let len = self.transactions.len();
if len == 0 {
return;
}
let tx = &mut self.transactions[len - 1];
tx.set_event(event);
}
}