diff --git a/asn1/s1ap/s1ap.cnf b/asn1/s1ap/s1ap.cnf index d3c3bfc33b..9062192349 100644 --- a/asn1/s1ap/s1ap.cnf +++ b/asn1/s1ap/s1ap.cnf @@ -24,6 +24,9 @@ CauseMisc ENB-StatusTransfer-TransparentContainer_PDU Global-ENB-ID_PDU SONtransferApplicationIdentity_PDU +SONtransferRequestContainer_PDU +SONtransferResponseContainer_PDU +SONtransferCause_PDU #.PDU_NEW S1AP-PDU @@ -35,6 +38,9 @@ SourceBSS-ToTargetBSS-TransparentContainer TargetBSS-ToSourceBSS-TransparentContainer ENB-StatusTransfer-TransparentContainer SONtransferApplicationIdentity +SONtransferRequestContainer +SONtransferResponseContainer +SONtransferCause #.MAKE_ENUM ProcedureCode diff --git a/epan/dissectors/packet-s1ap.c b/epan/dissectors/packet-s1ap.c index 179be7484e..6eb87a1ebb 100644 --- a/epan/dissectors/packet-s1ap.c +++ b/epan/dissectors/packet-s1ap.c @@ -509,6 +509,9 @@ static int hf_s1ap_DownlinkNonUEAssociatedLPPaTransport_PDU = -1; /* DownlinkNo static int hf_s1ap_UplinkNonUEAssociatedLPPaTransport_PDU = -1; /* UplinkNonUEAssociatedLPPaTransport */ static int hf_s1ap_S1AP_PDU_PDU = -1; /* S1AP_PDU */ static int hf_s1ap_s1ap_SONtransferApplicationIdentity_PDU = -1; /* SONtransferApplicationIdentity */ +static int hf_s1ap_s1ap_SONtransferRequestContainer_PDU = -1; /* SONtransferRequestContainer */ +static int hf_s1ap_s1ap_SONtransferResponseContainer_PDU = -1; /* SONtransferResponseContainer */ +static int hf_s1ap_s1ap_SONtransferCause_PDU = -1; /* SONtransferCause */ static int hf_s1ap_local = -1; /* INTEGER_0_65535 */ static int hf_s1ap_global = -1; /* OBJECT_IDENTIFIER */ static int hf_s1ap_ProtocolIE_Container_item = -1; /* ProtocolIE_Field */ @@ -1147,7 +1150,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 97 "s1ap.cnf" +#line 103 "s1ap.cnf" col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ", val_to_str_ext(ProcedureCode, &s1ap_ProcedureCode_vals_ext, "unknown message")); @@ -1329,7 +1332,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 80 "s1ap.cnf" +#line 86 "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)")); } @@ -1409,7 +1412,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 122 "s1ap.cnf" +#line 128 "s1ap.cnf" static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = { { "lowerBound", ASN1_PAR_INTEGER }, { "upperBound", ASN1_PAR_INTEGER }, @@ -1672,7 +1675,7 @@ dissect_s1ap_BitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr 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 184 "s1ap.cnf" +#line 190 "s1ap.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -2868,7 +2871,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 197 "s1ap.cnf" +#line 203 "s1ap.cnf" tvbuff_t *parameter_tvb=NULL; int length; int p_offset; @@ -2902,7 +2905,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 232 "s1ap.cnf" +#line 238 "s1ap.cnf" tvbuff_t *parameter_tvb=NULL; proto_tree *subtree; gint tvb_len; @@ -3306,7 +3309,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 267 "s1ap.cnf" +#line 273 "s1ap.cnf" offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 5, &handover_type_value, TRUE, 0, NULL); @@ -3511,7 +3514,7 @@ dissect_s1ap_MSClassmark3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U 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 223 "s1ap.cnf" +#line 229 "s1ap.cnf" tvbuff_t *parameter_tvb=NULL; @@ -3758,7 +3761,7 @@ dissect_s1ap_RepetitionPeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act 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 397 "s1ap.cnf" +#line 403 "s1ap.cnf" gint32 start_offset; @@ -3991,7 +3994,7 @@ dissect_s1ap_SONConfigurationTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ct 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 286 "s1ap.cnf" +#line 292 "s1ap.cnf" gint32 start_offset; tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -4362,7 +4365,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 340 "s1ap.cnf" +#line 346 "s1ap.cnf" gint32 start_offset; tvbuff_t *parameter_tvb; @@ -4616,7 +4619,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 457 "s1ap.cnf" +#line 463 "s1ap.cnf" gint32 start_offset; tvbuff_t *parameter_tvb; @@ -4712,7 +4715,7 @@ dissect_s1ap_WarningMessageContents(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ 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 149 "s1ap.cnf" +#line 155 "s1ap.cnf" asn1_stack_frame_push(actx, "ProtocolIE-ContainerList"); asn1_param_push_integer(actx, 1); asn1_param_push_integer(actx, maxNrOfE_RABs); @@ -4732,7 +4735,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 272 "s1ap.cnf" +#line 278 "s1ap.cnf" handover_type_value = 0; offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -4749,7 +4752,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 274 "s1ap.cnf" +#line 280 "s1ap.cnf" handover_type_value = 0; offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -4808,7 +4811,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 276 "s1ap.cnf" +#line 282 "s1ap.cnf" handover_type_value = 0; @@ -5556,7 +5559,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 259 "s1ap.cnf" +#line 265 "s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -5575,7 +5578,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 255 "s1ap.cnf" +#line 261 "s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -5594,7 +5597,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 263 "s1ap.cnf" +#line 269 "s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -6254,7 +6257,7 @@ dissect_s1ap_UplinkNonUEAssociatedLPPaTransport(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 104 "s1ap.cnf" +#line 110 "s1ap.cnf" message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); @@ -6282,7 +6285,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 107 "s1ap.cnf" +#line 113 "s1ap.cnf" message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); @@ -6310,7 +6313,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 110 "s1ap.cnf" +#line 116 "s1ap.cnf" message_type = UNSUCCESSFUL_OUTCOME; @@ -8324,6 +8327,30 @@ int dissect_s1ap_SONtransferApplicationIdentity_PDU(tvbuff_t *tvb _U_, packet_in offset += 7; offset >>= 3; return offset; } +int dissect_s1ap_SONtransferRequestContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_s1ap_SONtransferRequestContainer(tvb, offset, &asn1_ctx, tree, hf_s1ap_s1ap_SONtransferRequestContainer_PDU); + offset += 7; offset >>= 3; + return offset; +} +int dissect_s1ap_SONtransferResponseContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_s1ap_SONtransferResponseContainer(tvb, offset, &asn1_ctx, tree, hf_s1ap_s1ap_SONtransferResponseContainer_PDU); + offset += 7; offset >>= 3; + return offset; +} +int dissect_s1ap_SONtransferCause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_s1ap_SONtransferCause(tvb, offset, &asn1_ctx, tree, hf_s1ap_s1ap_SONtransferCause_PDU); + offset += 7; offset >>= 3; + return offset; +} /*--- End of included file: packet-s1ap-fn.c ---*/ @@ -9408,6 +9435,18 @@ void proto_register_s1ap(void) { { "SONtransferApplicationIdentity", "s1ap.SONtransferApplicationIdentity", FT_UINT32, BASE_DEC, VALS(s1ap_SONtransferApplicationIdentity_vals), 0, NULL, HFILL }}, + { &hf_s1ap_s1ap_SONtransferRequestContainer_PDU, + { "SONtransferRequestContainer", "s1ap.SONtransferRequestContainer", + FT_UINT32, BASE_DEC, VALS(s1ap_SONtransferRequestContainer_vals), 0, + NULL, HFILL }}, + { &hf_s1ap_s1ap_SONtransferResponseContainer_PDU, + { "SONtransferResponseContainer", "s1ap.SONtransferResponseContainer", + FT_UINT32, BASE_DEC, VALS(s1ap_SONtransferResponseContainer_vals), 0, + NULL, HFILL }}, + { &hf_s1ap_s1ap_SONtransferCause_PDU, + { "SONtransferCause", "s1ap.SONtransferCause", + FT_UINT32, BASE_DEC, VALS(s1ap_SONtransferCause_vals), 0, + NULL, HFILL }}, { &hf_s1ap_local, { "local", "s1ap.local", FT_UINT32, BASE_DEC, NULL, 0, diff --git a/epan/dissectors/packet-s1ap.h b/epan/dissectors/packet-s1ap.h index 53a63a96be..6e48166c48 100644 --- a/epan/dissectors/packet-s1ap.h +++ b/epan/dissectors/packet-s1ap.h @@ -44,6 +44,9 @@ WS_VAR_IMPORT const value_string s1ap_CauseNas_vals[]; int dissect_s1ap_Global_ENB_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_); int dissect_s1ap_ENB_StatusTransfer_TransparentContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_); int dissect_s1ap_SONtransferApplicationIdentity_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_); +int dissect_s1ap_SONtransferRequestContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_); +int dissect_s1ap_SONtransferResponseContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_); +int dissect_s1ap_SONtransferCause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_); /*--- End of included file: packet-s1ap-exp.h ---*/ #line 29 "packet-s1ap-template.h"