diff options
Diffstat (limited to 'epan/dissectors/asn1')
-rw-r--r-- | epan/dissectors/asn1/lte-rrc/lte-rrc.cnf | 17 | ||||
-rw-r--r-- | epan/dissectors/asn1/s1ap/packet-s1ap-template.c | 24 | ||||
-rw-r--r-- | epan/dissectors/asn1/s1ap/s1ap.cnf | 86 |
3 files changed, 109 insertions, 18 deletions
diff --git a/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf b/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf index d88f4329fd..69b9d493d5 100644 --- a/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf +++ b/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf @@ -22,29 +22,30 @@ T-StatusProhibit WLAN-backhaulRate-r12 #.EXPORTS -HandoverCommand HandoverCommand_PDU -HandoverPreparationInformation HandoverPreparationInformation_PDU -HandoverPreparationInformation-NB HandoverPreparationInformation-NB_PDU -UERadioAccessCapabilityInformation +RLF-Report-r9_PDU +RLF-Report-v9e0_PDU UERadioAccessCapabilityInformation_PDU -UERadioAccessCapabilityInformation-NB UERadioAccessCapabilityInformation-NB_PDU -UE-EUTRA-Capability UE-EUTRA-Capability_PDU -UERadioPagingInformation +UEPagingCoverageInformation_PDU UERadioPagingInformation_PDU +VisitedCellInfoList-r12_PDU #.END #.PDU HandoverCommand HandoverPreparationInformation HandoverPreparationInformation-NB +RLF-Report-r9 +RLF-Report-v9e0 +UEPagingCoverageInformation UERadioAccessCapabilityInformation UERadioAccessCapabilityInformation-NB UERadioPagingInformation +VisitedCellInfoList-r12 BCCH-BCH-Message @bcch.bch BCCH-DL-SCH-Message @bcch.dl.sch BCCH-DL-SCH-Message-BR @bcch.dl.sch.br @@ -97,10 +98,8 @@ SL-PreconfigRelay-r13 SL-PreconfigSync-r12 SL-Preconfiguration-r12 SL-TxPoolIdentity-r13 -UEPagingCoverageInformation UEPagingCoverageInformation-NB UEPagingCoverageInformation-NB-IEs -UEPagingCoverageInformation-r13-IEs UERadioPagingInformation-NB UERadioPagingInformation-NB-IEs VarConnEstFailReport-r11 diff --git a/epan/dissectors/asn1/s1ap/packet-s1ap-template.c b/epan/dissectors/asn1/s1ap/packet-s1ap-template.c index 0cbb471863..0de9f1f343 100644 --- a/epan/dissectors/asn1/s1ap/packet-s1ap-template.c +++ b/epan/dissectors/asn1/s1ap/packet-s1ap-template.c @@ -1,6 +1,6 @@ /* packet-s1ap.c * Routines for E-UTRAN S1 Application Protocol (S1AP) packet dissection - * Copyright 2007-2010, Anders Broman <anders.broman@ericsson.com> + * Copyright 2007-2016, Anders Broman <anders.broman@ericsson.com> * * Wireshark - Network traffic analyzer * By Gerald Combs <gerald@wireshark.org> @@ -22,7 +22,7 @@ * * Based on the RANAP dissector * - * References: 3GPP TS 36.413 V9.2.0 (2010-03) + * References: 3GPP TS 36.413 V13.3.0 (2016-06) */ #include "config.h" @@ -83,6 +83,10 @@ static int ett_s1ap_RIMInformation = -1; static int ett_s1ap_Cdma2000PDU = -1; static int ett_s1ap_Cdma2000SectorID = -1; static int ett_s1ap_UERadioPagingInformation = -1; +static int ett_s1ap_UE_HistoryInformationFromTheUE = -1; +static int ett_s1ap_CELevel = -1; +static int ett_s1ap_UE_RLF_Report_Container = -1; +static int ett_s1ap_UE_RLF_Report_Container_for_extended_bands = -1; #include "packet-s1ap-ett.c" @@ -135,6 +139,18 @@ static int dissect_SourceBSS_ToTargetBSS_TransparentContainer_PDU(tvbuff_t *tvb, static int dissect_TargetBSS_ToSourceBSS_TransparentContainer_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); #endif +static void +s1ap_Threshold_RSRP_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm (%u)", (gint32)v-140, v); +} + +static void +s1ap_Threshold_RSRQ_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB (%u)", ((float)v/2)-20, v); +} + #include "packet-s1ap-fn.c" static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) @@ -264,6 +280,10 @@ void proto_register_s1ap(void) { &ett_s1ap_Cdma2000PDU, &ett_s1ap_Cdma2000SectorID, &ett_s1ap_UERadioPagingInformation, + &ett_s1ap_UE_HistoryInformationFromTheUE, + &ett_s1ap_CELevel, + &ett_s1ap_UE_RLF_Report_Container, + &ett_s1ap_UE_RLF_Report_Container_for_extended_bands, #include "packet-s1ap-ettarr.c" }; diff --git a/epan/dissectors/asn1/s1ap/s1ap.cnf b/epan/dissectors/asn1/s1ap/s1ap.cnf index 569f6a6343..66aa4a2271 100644 --- a/epan/dissectors/asn1/s1ap/s1ap.cnf +++ b/epan/dissectors/asn1/s1ap/s1ap.cnf @@ -30,7 +30,6 @@ SONtransferResponseContainer SONtransferCause_PDU UE-HistoryInformation_PDU - #.PDU S1AP-PDU SourceeNB-ToTargeteNB-TransparentContainer @@ -487,11 +486,11 @@ tvbuff_t *parameter_tvb=NULL; switch(message_type){ case INITIATING_MESSAGE: - /* 9.2.1.7 Source eNB to Target eNB Transparent Container */ + /* 9.2.1.7 Source eNB to Target eNB Transparent Container */ dissect_lte_rrc_HandoverPreparationInformation_PDU(parameter_tvb, actx->pinfo, subtree, NULL); break; case SUCCESSFUL_OUTCOME: - /* 9.2.1.7 Source eNB to Target eNB Transparent Container */ + /* 9.2.1.8 Target eNB to Source eNB Transparent Container */ dissect_lte_rrc_HandoverCommand_PDU(parameter_tvb, actx->pinfo, subtree, NULL); break; default: @@ -499,8 +498,18 @@ tvbuff_t *parameter_tvb=NULL; } } +#.FN_BODY UE-HistoryInformationFromTheUE VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree = NULL; +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + if (g_s1ap_dissect_container) { + subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_UE_HistoryInformationFromTheUE); + dissect_lte_rrc_VisitedCellInfoList_r12_PDU(parameter_tvb, actx->pinfo, subtree, NULL); + } #.FN_BODY UERadioCapability VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb; @@ -513,7 +522,13 @@ tvbuff_t *parameter_tvb=NULL; if (g_s1ap_dissect_container) { subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_UERadioCapability); dissect_lte_rrc_UERadioAccessCapabilityInformation_PDU(parameter_tvb, actx->pinfo, subtree, NULL); -} + } + +#.TYPE_ATTR +Threshold-RSRP DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(s1ap_Threshold_RSRP_fmt) + +#.TYPE_ATTR +Threshold-RSRQ DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(s1ap_Threshold_RSRQ_fmt) # 9.2.3.24 RIM Information # Contains the BSSGP RIM PDU @@ -577,9 +592,66 @@ if (gcsna_handle) { if (!parameter_tvb) return offset; - subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_UERadioPagingInformation); - dissect_lte_rrc_UERadioPagingInformation_PDU(parameter_tvb, actx->pinfo, subtree, NULL); + if (g_s1ap_dissect_container) { + subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_UERadioPagingInformation); + dissect_lte_rrc_UERadioPagingInformation_PDU(parameter_tvb, actx->pinfo, subtree, NULL); + } +#.FN_BODY CELevel VAL_PTR = ¶meter_tvb +# 9.2.1.109 Cell Identifier and Coverage Enhancement Level +# Includes the UEPagingCoverageInformation message as defined in 10.2.2 of TS 36.331 + tvbuff_t *parameter_tvb; + proto_tree *subtree = NULL; +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + + if (g_s1ap_dissect_container) { + subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_CELevel); + dissect_lte_rrc_UEPagingCoverageInformation_PDU(parameter_tvb, actx->pinfo, subtree, NULL); + } + +#.FN_BODY UE-RLF-Report-Container VAL_PTR = ¶meter_tvb +# 9.2.3.40 RLF Report Information +# Includes the rlf-Report-r9 contained in UEInformationResponse message as defined in TS 36.331 + tvbuff_t *parameter_tvb; + proto_tree *subtree = NULL; +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + + if (g_s1ap_dissect_container) { + subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_UE_RLF_Report_Container); + dissect_lte_rrc_RLF_Report_r9_PDU(parameter_tvb, actx->pinfo, subtree, NULL); + } + +#.FN_BODY UE-RLF-Report-Container-for-extended-bands VAL_PTR = ¶meter_tvb +# 9.2.3.40 RLF Report Information +# Includes the rlf-Report-v9e0 contained in UEInformationResponse message as defined in TS 36.331 + tvbuff_t *parameter_tvb; + proto_tree *subtree = NULL; +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + + if (g_s1ap_dissect_container) { + subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_UE_RLF_Report_Container_for_extended_bands); + dissect_lte_rrc_RLF_Report_v9e0_PDU(parameter_tvb, actx->pinfo, subtree, NULL); + } + +#.FN_BODY TooEarlyInterRATHOReportReportFromEUTRAN/uERLFReportContainer VAL_PTR = ¶meter_tvb +# B.1.17 Failure Event Report +# Includes the RLF Report contained in the UEInformationResponse message (TS 36.331 [16]) + tvbuff_t *parameter_tvb; + proto_tree *subtree = NULL; +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + + if (g_s1ap_dissect_container) { + subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_UE_RLF_Report_Container); + dissect_lte_rrc_RLF_Report_r9_PDU(parameter_tvb, actx->pinfo, subtree, NULL); + } #.TYPE_ATTR ProtocolExtensionID TYPE = FT_UINT8 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS = &s1ap_ProtocolIE_ID_vals_ext @@ -1400,7 +1472,7 @@ UEContextResumeFailure N s1ap.proc.uout id-UEContextResume #.FN_BODY CauseProtocol VAL_PTR=&value guint32 value; %(DEFAULT_BODY)s - col_append_fstr(actx->pinfo->cinfo, COL_INFO, " [Protocol-cause=%%s]", val_to_str_const(value, s1ap_CauseProtocol_vals, "Unknown")); + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " [Protocol-cause=%%s]", val_to_str_const(value, s1ap_CauseProtocol_vals, "Unknown")); #.FN_BODY CauseMisc VAL_PTR=&value guint32 value; |