diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2016-09-03 19:59:26 +0200 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2016-09-03 19:06:37 +0000 |
commit | 4a3b320c98febdd8fae2d3bb8f017b1aa46f1b75 (patch) | |
tree | 80ec3d19b276f8e8231739a75738510d603e266c /epan/dissectors/packet-s1ap.c | |
parent | 8f5ab27b4fd0d7cf92a85416ce26c4f9136273e5 (diff) |
S1AP: add more LTE-RRC transparent containers dissection
Change-Id: I08246d3fa97ceafefd3a1ab5c36de50a5728fd19
Reviewed-on: https://code.wireshark.org/review/17474
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-s1ap.c')
-rw-r--r-- | epan/dissectors/packet-s1ap.c | 320 |
1 files changed, 207 insertions, 113 deletions
diff --git a/epan/dissectors/packet-s1ap.c b/epan/dissectors/packet-s1ap.c index 224173e4e4..2ff29f8ac2 100644 --- a/epan/dissectors/packet-s1ap.c +++ b/epan/dissectors/packet-s1ap.c @@ -8,7 +8,7 @@ #line 1 "./asn1/s1ap/packet-s1ap-template.c" /* 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> @@ -30,7 +30,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" @@ -1086,7 +1086,7 @@ static int hf_s1ap_notificationCellList = -1; /* NotificationCellList */ static int hf_s1ap_NotificationCellList_item = -1; /* NotificationCellList_Item */ static int hf_s1ap_notifyFlag = -1; /* NotifyFlag */ static int hf_s1ap_tooEarlyInterRATHOReportFromEUTRAN = -1; /* TooEarlyInterRATHOReportReportFromEUTRAN */ -static int hf_s1ap_uERLFReportContainer = -1; /* OCTET_STRING */ +static int hf_s1ap_uERLFReportContainer = -1; /* T_uERLFReportContainer */ static int hf_s1ap_mobilityInformation = -1; /* MobilityInformation */ static int hf_s1ap_dL_EHRPD_CompositeAvailableCapacity = -1; /* EHRPDCompositeAvailableCapacity */ static int hf_s1ap_uL_EHRPD_CompositeAvailableCapacity = -1; /* EHRPDCompositeAvailableCapacity */ @@ -1109,6 +1109,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; /*--- Included file: packet-s1ap-ett.c ---*/ @@ -1440,7 +1444,7 @@ static gint ett_s1ap_EHRPDCompositeAvailableCapacity = -1; static gint ett_s1ap_EHRPDMultiSectorLoadReportingResponseItem = -1; /*--- End of included file: packet-s1ap-ett.c ---*/ -#line 88 "./asn1/s1ap/packet-s1ap-template.c" +#line 92 "./asn1/s1ap/packet-s1ap-template.c" enum{ INITIATING_MESSAGE, @@ -1491,6 +1495,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); +} + /*--- Included file: packet-s1ap-fn.c ---*/ #line 1 "./asn1/s1ap/packet-s1ap-fn.c" @@ -1545,7 +1561,7 @@ static const per_choice_t PrivateIE_ID_choice[] = { static int dissect_s1ap_PrivateIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 189 "./asn1/s1ap/s1ap.cnf" +#line 188 "./asn1/s1ap/s1ap.cnf" obj_id = NULL; @@ -1626,7 +1642,7 @@ dissect_s1ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, &ProcedureCode, FALSE); -#line 109 "./asn1/s1ap/s1ap.cnf" +#line 108 "./asn1/s1ap/s1ap.cnf" col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s", val_to_str_ext(ProcedureCode, &s1ap_ProcedureCode_vals_ext, "unknown message")); @@ -1897,7 +1913,7 @@ dissect_s1ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 65535U, &ProtocolIE_ID, FALSE); -#line 92 "./asn1/s1ap/s1ap.cnf" +#line 91 "./asn1/s1ap/s1ap.cnf" if (tree) { proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(ProtocolIE_ID, &s1ap_ProtocolIE_ID_vals_ext, "unknown (%d)")); } @@ -1977,7 +1993,7 @@ static const per_sequence_t ProtocolIE_ContainerList_sequence_of[1] = { static int dissect_s1ap_ProtocolIE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 134 "./asn1/s1ap/s1ap.cnf" +#line 133 "./asn1/s1ap/s1ap.cnf" static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = { { "lowerBound", ASN1_PAR_INTEGER }, { "upperBound", ASN1_PAR_INTEGER }, @@ -2035,7 +2051,7 @@ dissect_s1ap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ static int dissect_s1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 194 "./asn1/s1ap/s1ap.cnf" +#line 193 "./asn1/s1ap/s1ap.cnf" if (obj_id){ offset=call_per_oid_callback(obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index); @@ -2086,7 +2102,7 @@ dissect_s1ap_PrivateIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * static int dissect_s1ap_PLMNidentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 207 "./asn1/s1ap/s1ap.cnf" +#line 206 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -2224,7 +2240,7 @@ dissect_s1ap_CellBasedMDT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_s1ap_TAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 244 "./asn1/s1ap/s1ap.cnf" +#line 243 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -2421,8 +2437,21 @@ dissect_s1ap_AllocationAndRetentionPriority(tvbuff_t *tvb _U_, int offset _U_, a static int dissect_s1ap_CELevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 603 "./asn1/s1ap/s1ap.cnf" + tvbuff_t *parameter_tvb; + proto_tree *subtree = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, - NO_BOUND, NO_BOUND, FALSE, NULL); + NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); + + 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); + } + + return offset; } @@ -3113,7 +3142,7 @@ static value_string_ext s1ap_CauseRadioNetwork_vals_ext = VALUE_STRING_EXT_INIT( static int dissect_s1ap_CauseRadioNetwork(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1386 "./asn1/s1ap/s1ap.cnf" +#line 1458 "./asn1/s1ap/s1ap.cnf" guint32 value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 36, &value, TRUE, 3, NULL); @@ -3135,7 +3164,7 @@ const value_string s1ap_CauseTransport_vals[] = { static int dissect_s1ap_CauseTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1391 "./asn1/s1ap/s1ap.cnf" +#line 1463 "./asn1/s1ap/s1ap.cnf" guint32 value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, &value, TRUE, 0, NULL); @@ -3160,7 +3189,7 @@ const value_string s1ap_CauseNas_vals[] = { static int dissect_s1ap_CauseNas(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1396 "./asn1/s1ap/s1ap.cnf" +#line 1468 "./asn1/s1ap/s1ap.cnf" guint32 value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 4, &value, TRUE, 1, NULL); @@ -3187,12 +3216,12 @@ const value_string s1ap_CauseProtocol_vals[] = { static int dissect_s1ap_CauseProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1401 "./asn1/s1ap/s1ap.cnf" +#line 1473 "./asn1/s1ap/s1ap.cnf" guint32 value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 7, &value, TRUE, 0, NULL); - 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")); @@ -3213,7 +3242,7 @@ const value_string s1ap_CauseMisc_vals[] = { static int dissect_s1ap_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1406 "./asn1/s1ap/s1ap.cnf" +#line 1478 "./asn1/s1ap/s1ap.cnf" guint32 value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 6, &value, TRUE, 0, NULL); @@ -3272,7 +3301,7 @@ dissect_s1ap_CellAccessMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_s1ap_Cdma2000PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 537 "./asn1/s1ap/s1ap.cnf" +#line 552 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; @@ -3314,7 +3343,7 @@ dissect_s1ap_Cdma2000RATType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_s1ap_Cdma2000SectorID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 552 "./asn1/s1ap/s1ap.cnf" +#line 567 "./asn1/s1ap/s1ap.cnf" /* 9.2.1.25 * This IE is set to CDMA2000 Reference Cell ID * corresponding to the HRPD/1xRTT sector under @@ -4042,7 +4071,7 @@ dissect_s1ap_ENB_UE_S1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_s1ap_ENBname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 220 "./asn1/s1ap/s1ap.cnf" +#line 219 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb=NULL; int length; int p_offset; @@ -4077,7 +4106,7 @@ dissect_s1ap_ENBname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr static int dissect_s1ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 275 "./asn1/s1ap/s1ap.cnf" +#line 274 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb=NULL; proto_tree *subtree; gint tvb_len; @@ -4575,7 +4604,7 @@ static const value_string s1ap_HandoverType_vals[] = { static int dissect_s1ap_HandoverType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 310 "./asn1/s1ap/s1ap.cnf" +#line 309 "./asn1/s1ap/s1ap.cnf" offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 5, &handover_type_value, TRUE, 0, NULL); @@ -4938,7 +4967,7 @@ dissect_s1ap_LastVisitedCell_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_s1ap_LPPa_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 266 "./asn1/s1ap/s1ap.cnf" +#line 265 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb=NULL; @@ -5604,7 +5633,7 @@ dissect_s1ap_MutingPatternInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ct static int dissect_s1ap_NAS_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 257 "./asn1/s1ap/s1ap.cnf" +#line 256 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb=NULL; @@ -6120,7 +6149,7 @@ dissect_s1ap_RequestType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int dissect_s1ap_RIMInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 521 "./asn1/s1ap/s1ap.cnf" +#line 536 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -6235,8 +6264,21 @@ dissect_s1ap_RepetitionPeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int dissect_s1ap_UE_RLF_Report_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 617 "./asn1/s1ap/s1ap.cnf" + tvbuff_t *parameter_tvb; + proto_tree *subtree = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, - NO_BOUND, NO_BOUND, FALSE, NULL); + NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); + + 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); + } + + return offset; } @@ -6245,8 +6287,21 @@ dissect_s1ap_UE_RLF_Report_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx static int dissect_s1ap_UE_RLF_Report_Container_for_extended_bands(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 631 "./asn1/s1ap/s1ap.cnf" + tvbuff_t *parameter_tvb; + proto_tree *subtree = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, - NO_BOUND, NO_BOUND, FALSE, NULL); + NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); + + 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); + } + + return offset; } @@ -6271,7 +6326,7 @@ dissect_s1ap_RLFReportInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_s1ap_RRC_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 446 "./asn1/s1ap/s1ap.cnf" +#line 445 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb; @@ -6288,11 +6343,11 @@ dissect_s1ap_RRC_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ 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: @@ -6302,9 +6357,6 @@ dissect_s1ap_RRC_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ - - - return offset; } @@ -6581,7 +6633,7 @@ dissect_s1ap_SynchronisationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ static int dissect_s1ap_Source_ToTarget_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 331 "./asn1/s1ap/s1ap.cnf" +#line 330 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; @@ -6927,7 +6979,7 @@ dissect_s1ap_TargeteNB_ToSourceeNB_TransparentContainer(tvbuff_t *tvb _U_, int o static int dissect_s1ap_Target_ToSource_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 388 "./asn1/s1ap/s1ap.cnf" +#line 387 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; @@ -7222,8 +7274,22 @@ dissect_s1ap_UEIdentityIndexValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_s1ap_UE_HistoryInformationFromTheUE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 502 "./asn1/s1ap/s1ap.cnf" + tvbuff_t *parameter_tvb; + proto_tree *subtree = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, - NO_BOUND, NO_BOUND, FALSE, NULL); + NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); + + 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); + } + + return offset; } @@ -7254,7 +7320,7 @@ dissect_s1ap_UEPagingID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static int dissect_s1ap_UERadioCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 506 "./asn1/s1ap/s1ap.cnf" +#line 515 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; @@ -7267,7 +7333,7 @@ dissect_s1ap_UERadioCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac 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); -} + } @@ -7278,7 +7344,7 @@ dissect_s1ap_UERadioCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_s1ap_UERadioCapabilityForPaging(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 572 "./asn1/s1ap/s1ap.cnf" +#line 587 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; @@ -7289,9 +7355,10 @@ dissect_s1ap_UERadioCapabilityForPaging(tvbuff_t *tvb _U_, int offset _U_, asn1_ 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); + } @@ -7487,7 +7554,7 @@ dissect_s1ap_ENBIndirectX2TransportLayerAddresses(tvbuff_t *tvb _U_, int offset static int dissect_s1ap_E_RAB_IE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 161 "./asn1/s1ap/s1ap.cnf" +#line 160 "./asn1/s1ap/s1ap.cnf" asn1_stack_frame_push(actx, "ProtocolIE-ContainerList"); asn1_param_push_integer(actx, 1); asn1_param_push_integer(actx, maxnoofE_RABs); @@ -7507,7 +7574,7 @@ static const per_sequence_t HandoverRequired_sequence[] = { static int dissect_s1ap_HandoverRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 315 "./asn1/s1ap/s1ap.cnf" +#line 314 "./asn1/s1ap/s1ap.cnf" handover_type_value = 0; col_append_str(actx->pinfo->cinfo, COL_INFO, ", HandoverRequired "); @@ -7525,7 +7592,7 @@ static const per_sequence_t HandoverCommand_sequence[] = { static int dissect_s1ap_HandoverCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 317 "./asn1/s1ap/s1ap.cnf" +#line 316 "./asn1/s1ap/s1ap.cnf" handover_type_value = 0; col_append_str(actx->pinfo->cinfo, COL_INFO, ", HandoverCommand "); @@ -7571,7 +7638,7 @@ static const per_sequence_t HandoverPreparationFailure_sequence[] = { static int dissect_s1ap_HandoverPreparationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1291 "./asn1/s1ap/s1ap.cnf" +#line 1363 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", HandoverPreparationFailure "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -7588,7 +7655,7 @@ static const per_sequence_t HandoverRequest_sequence[] = { static int dissect_s1ap_HandoverRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 319 "./asn1/s1ap/s1ap.cnf" +#line 318 "./asn1/s1ap/s1ap.cnf" handover_type_value = 0; col_append_str(actx->pinfo->cinfo, COL_INFO, ", HandoverRequest "); @@ -7633,7 +7700,7 @@ static const per_sequence_t HandoverRequestAcknowledge_sequence[] = { static int dissect_s1ap_HandoverRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 321 "./asn1/s1ap/s1ap.cnf" +#line 320 "./asn1/s1ap/s1ap.cnf" handover_type_value = 0; col_append_str(actx->pinfo->cinfo, COL_INFO, ", HandoverRequestAcknowledge "); @@ -7707,7 +7774,7 @@ static const per_sequence_t HandoverFailure_sequence[] = { static int dissect_s1ap_HandoverFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1297 "./asn1/s1ap/s1ap.cnf" +#line 1369 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", HandoverFailure "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -7724,7 +7791,7 @@ static const per_sequence_t HandoverNotify_sequence[] = { static int dissect_s1ap_HandoverNotify(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1299 "./asn1/s1ap/s1ap.cnf" +#line 1371 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", HandoverNotify "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -7741,7 +7808,7 @@ static const per_sequence_t PathSwitchRequest_sequence[] = { static int dissect_s1ap_PathSwitchRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1301 "./asn1/s1ap/s1ap.cnf" +#line 1373 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", PathSwitchRequest "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -7784,7 +7851,7 @@ static const per_sequence_t PathSwitchRequestAcknowledge_sequence[] = { static int dissect_s1ap_PathSwitchRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1303 "./asn1/s1ap/s1ap.cnf" +#line 1375 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", PathSwitchRequestAcknowledge "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -7827,7 +7894,7 @@ static const per_sequence_t PathSwitchRequestFailure_sequence[] = { static int dissect_s1ap_PathSwitchRequestFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1305 "./asn1/s1ap/s1ap.cnf" +#line 1377 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", PathSwitchRequestFailure "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -7844,7 +7911,7 @@ static const per_sequence_t HandoverCancel_sequence[] = { static int dissect_s1ap_HandoverCancel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1307 "./asn1/s1ap/s1ap.cnf" +#line 1379 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", HandoverCancel "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -7861,7 +7928,7 @@ static const per_sequence_t HandoverCancelAcknowledge_sequence[] = { static int dissect_s1ap_HandoverCancelAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1309 "./asn1/s1ap/s1ap.cnf" +#line 1381 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", HandoverCancelAcknowledge "); @@ -7880,7 +7947,7 @@ static const per_sequence_t E_RABSetupRequest_sequence[] = { static int dissect_s1ap_E_RABSetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1253 "./asn1/s1ap/s1ap.cnf" +#line 1325 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", E_RABSetupRequest "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -7930,7 +7997,7 @@ static const per_sequence_t E_RABSetupResponse_sequence[] = { static int dissect_s1ap_E_RABSetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1255 "./asn1/s1ap/s1ap.cnf" +#line 1327 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", E_RABSetupResponse "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -7978,7 +8045,7 @@ static const per_sequence_t E_RABModifyRequest_sequence[] = { static int dissect_s1ap_E_RABModifyRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1257 "./asn1/s1ap/s1ap.cnf" +#line 1329 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", E_RABModifyRequest "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8026,7 +8093,7 @@ static const per_sequence_t E_RABModifyResponse_sequence[] = { static int dissect_s1ap_E_RABModifyResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1259 "./asn1/s1ap/s1ap.cnf" +#line 1331 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", E_RABModifyResponse "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8072,7 +8139,7 @@ static const per_sequence_t E_RABReleaseCommand_sequence[] = { static int dissect_s1ap_E_RABReleaseCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1261 "./asn1/s1ap/s1ap.cnf" +#line 1333 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", E_RABReleaseCommand "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8089,7 +8156,7 @@ static const per_sequence_t E_RABReleaseResponse_sequence[] = { static int dissect_s1ap_E_RABReleaseResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1263 "./asn1/s1ap/s1ap.cnf" +#line 1335 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", E_RABReleaseResponse "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8135,7 +8202,7 @@ static const per_sequence_t E_RABReleaseIndication_sequence[] = { static int dissect_s1ap_E_RABReleaseIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1265 "./asn1/s1ap/s1ap.cnf" +#line 1337 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", E_RABReleaseIndication "); @@ -8153,7 +8220,7 @@ static const per_sequence_t InitialContextSetupRequest_sequence[] = { static int dissect_s1ap_InitialContextSetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1268 "./asn1/s1ap/s1ap.cnf" +#line 1340 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", InitialContextSetupRequest "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8203,7 +8270,7 @@ static const per_sequence_t InitialContextSetupResponse_sequence[] = { static int dissect_s1ap_InitialContextSetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1270 "./asn1/s1ap/s1ap.cnf" +#line 1342 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", InitialContextSetupResponse "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8251,7 +8318,7 @@ static const per_sequence_t InitialContextSetupFailure_sequence[] = { static int dissect_s1ap_InitialContextSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1272 "./asn1/s1ap/s1ap.cnf" +#line 1344 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", InitialContextSetupFailure "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8311,7 +8378,7 @@ static const per_sequence_t UEContextReleaseRequest_sequence[] = { static int dissect_s1ap_UEContextReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1274 "./asn1/s1ap/s1ap.cnf" +#line 1346 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UEContextReleaseRequest "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8328,7 +8395,7 @@ static const per_sequence_t UEContextReleaseCommand_sequence[] = { static int dissect_s1ap_UEContextReleaseCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1276 "./asn1/s1ap/s1ap.cnf" +#line 1348 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UEContextReleaseCommand "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8345,7 +8412,7 @@ static const per_sequence_t UEContextReleaseComplete_sequence[] = { static int dissect_s1ap_UEContextReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1278 "./asn1/s1ap/s1ap.cnf" +#line 1350 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UEContextReleaseComplete "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8362,7 +8429,7 @@ static const per_sequence_t UEContextModificationRequest_sequence[] = { static int dissect_s1ap_UEContextModificationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1280 "./asn1/s1ap/s1ap.cnf" +#line 1352 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UEContextModificationRequest "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8379,7 +8446,7 @@ static const per_sequence_t UEContextModificationResponse_sequence[] = { static int dissect_s1ap_UEContextModificationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1282 "./asn1/s1ap/s1ap.cnf" +#line 1354 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UEContextModificationResponse "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8396,7 +8463,7 @@ static const per_sequence_t UEContextModificationFailure_sequence[] = { static int dissect_s1ap_UEContextModificationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1284 "./asn1/s1ap/s1ap.cnf" +#line 1356 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UEContextModificationFailure "); @@ -8414,7 +8481,7 @@ static const per_sequence_t UERadioCapabilityMatchRequest_sequence[] = { static int dissect_s1ap_UERadioCapabilityMatchRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1359 "./asn1/s1ap/s1ap.cnf" +#line 1431 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UERadioCapabilityMatchRequest "); @@ -8432,7 +8499,7 @@ static const per_sequence_t UERadioCapabilityMatchResponse_sequence[] = { static int dissect_s1ap_UERadioCapabilityMatchResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1362 "./asn1/s1ap/s1ap.cnf" +#line 1434 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UERadioCapabilityMatchResponse "); @@ -8450,7 +8517,7 @@ static const per_sequence_t DownlinkNASTransport_sequence[] = { static int dissect_s1ap_DownlinkNASTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 302 "./asn1/s1ap/s1ap.cnf" +#line 301 "./asn1/s1ap/s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -8469,7 +8536,7 @@ static const per_sequence_t InitialUEMessage_sequence[] = { static int dissect_s1ap_InitialUEMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 298 "./asn1/s1ap/s1ap.cnf" +#line 297 "./asn1/s1ap/s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -8488,7 +8555,7 @@ static const per_sequence_t UplinkNASTransport_sequence[] = { static int dissect_s1ap_UplinkNASTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 306 "./asn1/s1ap/s1ap.cnf" +#line 305 "./asn1/s1ap/s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -8521,7 +8588,7 @@ static const per_sequence_t RerouteNASRequest_sequence[] = { static int dissect_s1ap_RerouteNASRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1377 "./asn1/s1ap/s1ap.cnf" +#line 1449 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", RerouteNASRequest "); @@ -8539,7 +8606,7 @@ static const per_sequence_t Reset_sequence[] = { static int dissect_s1ap_Reset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1313 "./asn1/s1ap/s1ap.cnf" +#line 1385 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", Reset "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8607,7 +8674,7 @@ static const per_sequence_t ResetAcknowledge_sequence[] = { static int dissect_s1ap_ResetAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1315 "./asn1/s1ap/s1ap.cnf" +#line 1387 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", ResetAcknowledge "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8652,7 +8719,7 @@ static const per_sequence_t S1SetupRequest_sequence[] = { static int dissect_s1ap_S1SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1319 "./asn1/s1ap/s1ap.cnf" +#line 1391 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", S1SetupRequest "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8669,7 +8736,7 @@ static const per_sequence_t S1SetupResponse_sequence[] = { static int dissect_s1ap_S1SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1321 "./asn1/s1ap/s1ap.cnf" +#line 1393 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", S1SetupResponse "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8686,7 +8753,7 @@ static const per_sequence_t S1SetupFailure_sequence[] = { static int dissect_s1ap_S1SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1323 "./asn1/s1ap/s1ap.cnf" +#line 1395 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", S1SetupFailure "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8703,7 +8770,7 @@ static const per_sequence_t ENBConfigurationUpdate_sequence[] = { static int dissect_s1ap_ENBConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1325 "./asn1/s1ap/s1ap.cnf" +#line 1397 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", ENBConfigurationUpdate "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8720,7 +8787,7 @@ static const per_sequence_t ENBConfigurationUpdateAcknowledge_sequence[] = { static int dissect_s1ap_ENBConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1327 "./asn1/s1ap/s1ap.cnf" +#line 1399 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", ENBConfigurationUpdateAcknowledge "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8737,7 +8804,7 @@ static const per_sequence_t ENBConfigurationUpdateFailure_sequence[] = { static int dissect_s1ap_ENBConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1329 "./asn1/s1ap/s1ap.cnf" +#line 1401 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", ENBConfigurationUpdateFailure "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8754,7 +8821,7 @@ static const per_sequence_t MMEConfigurationUpdate_sequence[] = { static int dissect_s1ap_MMEConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1331 "./asn1/s1ap/s1ap.cnf" +#line 1403 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", MMEConfigurationUpdate "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8771,7 +8838,7 @@ static const per_sequence_t MMEConfigurationUpdateAcknowledge_sequence[] = { static int dissect_s1ap_MMEConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1333 "./asn1/s1ap/s1ap.cnf" +#line 1405 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", MMEConfigurationUpdateAcknowledge "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8788,7 +8855,7 @@ static const per_sequence_t MMEConfigurationUpdateFailure_sequence[] = { static int dissect_s1ap_MMEConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1335 "./asn1/s1ap/s1ap.cnf" +#line 1407 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", MMEConfigurationUpdateFailure "); @@ -9002,7 +9069,7 @@ static const per_sequence_t WriteReplaceWarningRequest_sequence[] = { static int dissect_s1ap_WriteReplaceWarningRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1338 "./asn1/s1ap/s1ap.cnf" +#line 1410 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", WriteReplaceWarningRequest "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9019,7 +9086,7 @@ static const per_sequence_t WriteReplaceWarningResponse_sequence[] = { static int dissect_s1ap_WriteReplaceWarningResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1340 "./asn1/s1ap/s1ap.cnf" +#line 1412 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", WriteReplaceWarningResponse "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9126,7 +9193,7 @@ static const per_sequence_t KillRequest_sequence[] = { static int dissect_s1ap_KillRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1342 "./asn1/s1ap/s1ap.cnf" +#line 1414 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", KillRequest "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9143,7 +9210,7 @@ static const per_sequence_t KillResponse_sequence[] = { static int dissect_s1ap_KillResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1344 "./asn1/s1ap/s1ap.cnf" +#line 1416 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", KillResponse "); @@ -9175,7 +9242,7 @@ static const per_sequence_t PWSFailureIndication_sequence[] = { static int dissect_s1ap_PWSFailureIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1380 "./asn1/s1ap/s1ap.cnf" +#line 1452 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", PWSFailureIndication "); @@ -9196,7 +9263,7 @@ static const per_sequence_t DownlinkUEAssociatedLPPaTransport_sequence[] = { static int dissect_s1ap_DownlinkUEAssociatedLPPaTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1347 "./asn1/s1ap/s1ap.cnf" +#line 1419 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", DownlinkUEAssociatedLPPaTransport "); @@ -9214,7 +9281,7 @@ static const per_sequence_t UplinkUEAssociatedLPPaTransport_sequence[] = { static int dissect_s1ap_UplinkUEAssociatedLPPaTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1350 "./asn1/s1ap/s1ap.cnf" +#line 1422 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UplinkUEAssociatedLPPaTransport "); @@ -9232,7 +9299,7 @@ static const per_sequence_t DownlinkNonUEAssociatedLPPaTransport_sequence[] = { static int dissect_s1ap_DownlinkNonUEAssociatedLPPaTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1353 "./asn1/s1ap/s1ap.cnf" +#line 1425 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", DownlinkNonUEAssociatedLPPaTransport "); @@ -9250,7 +9317,7 @@ static const per_sequence_t UplinkNonUEAssociatedLPPaTransport_sequence[] = { static int dissect_s1ap_UplinkNonUEAssociatedLPPaTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1356 "./asn1/s1ap/s1ap.cnf" +#line 1428 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UplinkNonUEAssociatedLPPaTransport "); @@ -9268,7 +9335,7 @@ static const per_sequence_t E_RABModificationIndication_sequence[] = { static int dissect_s1ap_E_RABModificationIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1365 "./asn1/s1ap/s1ap.cnf" +#line 1437 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", E-RABModificationIndication "); @@ -9356,7 +9423,7 @@ static const per_sequence_t E_RABModificationConfirm_sequence[] = { static int dissect_s1ap_E_RABModificationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1368 "./asn1/s1ap/s1ap.cnf" +#line 1440 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", E-RABModificationConfirm "); @@ -9403,7 +9470,7 @@ static const per_sequence_t UEContextModificationIndication_sequence[] = { static int dissect_s1ap_UEContextModificationIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1371 "./asn1/s1ap/s1ap.cnf" +#line 1443 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UEContextModificationIndication "); @@ -9421,7 +9488,7 @@ static const per_sequence_t UEContextModificationConfirm_sequence[] = { static int dissect_s1ap_UEContextModificationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1374 "./asn1/s1ap/s1ap.cnf" +#line 1446 "./asn1/s1ap/s1ap.cnf" col_append_str(actx->pinfo->cinfo, COL_INFO, ", UEContextModificationConfirm "); @@ -9569,7 +9636,7 @@ dissect_s1ap_ConnectionEstablishmentIndication(tvbuff_t *tvb _U_, int offset _U_ static int dissect_s1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 116 "./asn1/s1ap/s1ap.cnf" +#line 115 "./asn1/s1ap/s1ap.cnf" message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); @@ -9597,7 +9664,7 @@ dissect_s1ap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_s1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 119 "./asn1/s1ap/s1ap.cnf" +#line 118 "./asn1/s1ap/s1ap.cnf" message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); @@ -9625,7 +9692,7 @@ dissect_s1ap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_s1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 122 "./asn1/s1ap/s1ap.cnf" +#line 121 "./asn1/s1ap/s1ap.cnf" message_type = UNSUCCESSFUL_OUTCOME; @@ -10021,8 +10088,31 @@ dissect_s1ap_CellStateIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * } + +static int +dissect_s1ap_T_uERLFReportContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 645 "./asn1/s1ap/s1ap.cnf" + tvbuff_t *parameter_tvb; + proto_tree *subtree = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); + + 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); + } + + + + return offset; +} + + static const per_sequence_t TooEarlyInterRATHOReportReportFromEUTRAN_sequence[] = { - { &hf_s1ap_uERLFReportContainer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_OCTET_STRING }, + { &hf_s1ap_uERLFReportContainer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_T_uERLFReportContainer }, { &hf_s1ap_mobilityInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_MobilityInformation }, { NULL, 0, 0, NULL } }; @@ -12781,7 +12871,7 @@ int dissect_s1ap_SONtransferCause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, /*--- End of included file: packet-s1ap-fn.c ---*/ -#line 139 "./asn1/s1ap/packet-s1ap-template.c" +#line 155 "./asn1/s1ap/packet-s1ap-template.c" static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { @@ -13175,7 +13265,7 @@ proto_reg_handoff_s1ap(void) /*--- End of included file: packet-s1ap-dis-tab.c ---*/ -#line 225 "./asn1/s1ap/packet-s1ap-template.c" +#line 241 "./asn1/s1ap/packet-s1ap-template.c" } else { if (SctpPort != 0) { dissector_delete_uint("sctp.port", SctpPort, s1ap_handle); @@ -15016,11 +15106,11 @@ void proto_register_s1ap(void) { NULL, HFILL }}, { &hf_s1ap_threshold_RSRP, { "threshold-RSRP", "s1ap.threshold_RSRP", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(s1ap_Threshold_RSRP_fmt), 0, NULL, HFILL }}, { &hf_s1ap_threshold_RSRQ, { "threshold-RSRQ", "s1ap.threshold_RSRQ", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(s1ap_Threshold_RSRQ_fmt), 0, NULL, HFILL }}, { &hf_s1ap_global_ENB_ID, { "global-ENB-ID", "s1ap.global_ENB_ID_element", @@ -15833,7 +15923,7 @@ void proto_register_s1ap(void) { { &hf_s1ap_uERLFReportContainer, { "uERLFReportContainer", "s1ap.uERLFReportContainer", FT_BYTES, BASE_NONE, NULL, 0, - "OCTET_STRING", HFILL }}, + NULL, HFILL }}, { &hf_s1ap_mobilityInformation, { "mobilityInformation", "s1ap.mobilityInformation", FT_BYTES, BASE_NONE, NULL, 0, @@ -15864,7 +15954,7 @@ void proto_register_s1ap(void) { NULL, HFILL }}, /*--- End of included file: packet-s1ap-hfarr.c ---*/ -#line 253 "./asn1/s1ap/packet-s1ap-template.c" +#line 269 "./asn1/s1ap/packet-s1ap-template.c" }; /* List of subtrees */ @@ -15879,6 +15969,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, /*--- Included file: packet-s1ap-ettarr.c ---*/ #line 1 "./asn1/s1ap/packet-s1ap-ettarr.c" @@ -16209,7 +16303,7 @@ void proto_register_s1ap(void) { &ett_s1ap_EHRPDMultiSectorLoadReportingResponseItem, /*--- End of included file: packet-s1ap-ettarr.c ---*/ -#line 268 "./asn1/s1ap/packet-s1ap-template.c" +#line 288 "./asn1/s1ap/packet-s1ap-template.c" }; module_t *s1ap_module; |