use std;
use std::ffi::CString;
+// app-layer-frame-documentation tag start: FrameType enum
#[derive(AppLayerFrameType)]
pub enum SIPFrameType {
Pdu,
RequestBody,
ResponseBody,
}
+// app-layer-frame-documentation tag end: FrameType enum
#[derive(AppLayerEvent)]
pub enum SIPEvent {
}
}
+ // app-layer-frame-documentation tag start: parse_request
fn parse_request(&mut self, flow: *const core::Flow, stream_slice: StreamSlice) -> bool {
let input = stream_slice.as_slice();
let _pdu = Frame::new_ts(
self.transactions.push(tx);
return true;
}
+ // app-layer-frame-documentation tag end: parse_request
Err(Err::Incomplete(_)) => {
self.set_event(SIPEvent::IncompleteData);
return false;
}
}
-
+// app-layer-frame-documentation tag start: function to add frames
fn sip_frames_ts(flow: *const core::Flow, stream_slice: &StreamSlice, r: &Request) {
let oi = stream_slice.as_slice();
let _f = Frame::new_ts(
SCLogDebug!("ts: request_body {:?}", _f);
}
}
+// app-layer-frame-documentation tag end: function to add frames
fn sip_frames_tc(flow: *const core::Flow, stream_slice: &StreamSlice, r: &Response) {
let oi = stream_slice.as_slice();
None
}
+ // app-layer-frame-documentation tag start: parse_request
fn parse_request(
&mut self, flow: *const Flow, stream_slice: &StreamSlice, input: &[u8],
) -> AppLayerResult {
-1 as i64,
TelnetFrameType::Data as u8,
)
+ // app-layer-frame-documentation tag end: parse_request
};
self.request_specific_frame = f;
}
}
+ // app-layer-frame-documentation tag start: update frame_len
match parser::parse_message(start) {
Ok((rem, request)) => {
let consumed = start.len() - rem.len();
if let Some(frame) = &self.request_frame {
frame.set_len(flow, 0, consumed as i64);
+ // app-layer-frame-documentation tag end: update frame_len
self.request_frame = None;
}
if let Some(frame) = &self.request_specific_frame {