diff --git a/lib/src/diag/mod.rs b/lib/src/diag/mod.rs
index 6a1ca3b..4443983 100644
--- a/lib/src/diag/mod.rs
+++ b/lib/src/diag/mod.rs
@@ -156,6 +156,20 @@ impl Message {
Err(err) => Err(DiagParsingError::HdlcDecapsulationError(err, data.to_vec())),
}
}
+
+ /// Returns whether this message should be parsed into a GSMTAP packet for
+ /// display in pcap files
+ pub fn is_gsmtap_message(&self) -> bool {
+ let Message::Log { body, .. } = self else {
+ return false;
+ };
+ match body {
+ LogBody::LteRrcOtaMessage { .. } => true,
+ LogBody::LteMacRachResponse { .. } => true,
+ LogBody::Nas4GMessage { .. } => true,
+ _ => false
+ }
+ }
}
#[derive(Debug, Clone, PartialEq, DekuRead, DekuWrite)]
diff --git a/lib/src/gsmtap/parser.rs b/lib/src/gsmtap/parser.rs
index 837d22b..e33f91c 100644
--- a/lib/src/gsmtap/parser.rs
+++ b/lib/src/gsmtap/parser.rs
@@ -17,6 +17,9 @@ pub enum GsmtapParserError {
}
pub fn parse(msg: Message) -> Result