@@ -2,7 +2,6 @@ use std::borrow::Cow;
2
2
3
3
use super :: analyzer:: { Analyzer , Event , EventType , Severity } ;
4
4
use super :: information_element:: { InformationElement , LteInformationElement } ;
5
- use super :: util:: unpack;
6
5
use telcom_parser:: lte_rrc:: {
7
6
DL_DCCH_MessageType , DL_DCCH_MessageType_c1 , RRCConnectionReleaseCriticalExtensions ,
8
7
RRCConnectionReleaseCriticalExtensions_c1 , RedirectedCarrierInfo ,
@@ -23,27 +22,27 @@ impl Analyzer for ConnectionRedirect2GDowngradeAnalyzer {
23
22
}
24
23
25
24
fn analyze_information_element ( & mut self , ie : & InformationElement ) -> Option < Event > {
26
- unpack ! ( InformationElement :: LTE ( lte_ie) = ie) ;
27
- let message = match & * * lte_ie {
28
- LteInformationElement :: DlDcch ( msg_cont ) => & msg_cont. message ,
29
- _ => return None ,
30
- } ;
31
- unpack ! ( DL_DCCH_MessageType :: C1 ( c1 ) = message ) ;
32
- unpack ! ( DL_DCCH_MessageType_c1 :: RrcConnectionRelease ( release ) = c1 ) ;
33
- unpack ! ( RRCConnectionReleaseCriticalExtensions :: C1 ( c1 ) = & release . critical_extensions ) ;
34
- unpack ! ( RRCConnectionReleaseCriticalExtensions_c1 :: RrcConnectionRelease_r8 ( r8_ies ) = c1 ) ;
35
- unpack ! ( Some ( carrier_info ) = & r8_ies . redirected_carrier_info ) ;
36
- match carrier_info {
37
- RedirectedCarrierInfo :: Geran ( _carrier_freqs_geran ) => Some ( Event {
38
- event_type : EventType :: QualitativeWarning {
39
- severity : Severity :: High ,
40
- } ,
41
- message : "Detected 2G downgrade" . to_owned ( ) ,
42
- } ) ,
43
- _ => Some ( Event {
44
- event_type : EventType :: Informational ,
45
- message : format ! ( "RRCConnectionRelease CarrierInfo: {:?}" , carrier_info ) ,
46
- } ) ,
25
+ if let InformationElement :: LTE ( lte_ie) = ie
26
+ && let LteInformationElement :: DlDcch ( msg_cont ) = & * * lte_ie
27
+ && let DL_DCCH_MessageType :: C1 ( c1 ) = & msg_cont. message
28
+ && let DL_DCCH_MessageType_c1 :: RrcConnectionRelease ( release ) = c1
29
+ && let RRCConnectionReleaseCriticalExtensions :: C1 ( c1 ) = & release . critical_extensions
30
+ && let RRCConnectionReleaseCriticalExtensions_c1 :: RrcConnectionRelease_r8 ( r8_ies ) = c1
31
+ && let Some ( carrier_info ) = & r8_ies . redirected_carrier_info {
32
+ match carrier_info {
33
+ RedirectedCarrierInfo :: Geran ( _carrier_freqs_geran ) => Some ( Event {
34
+ event_type : EventType :: QualitativeWarning {
35
+ severity : Severity :: High ,
36
+ } ,
37
+ message : "Detected 2G downgrade" . to_owned ( ) ,
38
+ } ) ,
39
+ _ => Some ( Event {
40
+ event_type : EventType :: Informational ,
41
+ message : format ! ( "RRCConnectionRelease CarrierInfo: {:?}" , carrier_info ) ,
42
+ } ) ,
43
+ }
44
+ } else {
45
+ None
47
46
}
48
47
}
49
48
}
0 commit comments