# m3ap.cnf # m3ap conformation file #.OPT PER ALIGNED #.END #.USE_VALS_EXT ProcedureCode ProtocolIE-ID #.EXPORTS #.PDU M3AP-PDU #.MAKE_ENUM ProcedureCode ProtocolIE-ID #.NO_EMIT # TBCD-STRING #.OMIT_ASSIGNMENT # Get rid of unused code warnings ProtocolIE-FieldPair ProtocolIE-ContainerPair ProtocolIE-ContainerPairList ProtocolIE-ContainerList Presence #.TYPE_RENAME InitiatingMessage/value InitiatingMessage_value SuccessfulOutcome/value SuccessfulOutcome_value UnsuccessfulOutcome/value UnsuccessfulOutcome_value #.FIELD_RENAME InitiatingMessage/value initiatingMessagevalue UnsuccessfulOutcome/value unsuccessfulOutcome_value SuccessfulOutcome/value successfulOutcome_value PrivateIE-Field/id private_id ProtocolExtensionField/id ext_id PrivateIE-Field/value private_value ProtocolIE-Field/value ie_field_value #.FN_PARS ProtocolIE-ID VAL_PTR=&ProtocolIE_ID #.FN_FTR ProtocolIE-ID if (tree) { proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(ProtocolIE_ID, &m3ap_ProtocolIE_ID_vals_ext, "unknown (%d)")); } #.END #.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue # Currently not used # FN_PARS ProtocolIE-FieldPair/firstValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairFirstValue # FN_PARS ProtocolIE-FieldPair/secondValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairSecondValue # FN_PARS ProtocolExtensionID VAL_PTR=&ProtocolExtensionID #.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue #.FN_PARS ProcedureCode VAL_PTR = &ProcedureCode #.FN_FTR ProcedureCode col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s", val_to_str_ext(ProcedureCode, &m3ap_ProcedureCode_vals_ext, "unknown message")); #.END #.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue #.FN_HDR InitiatingMessage/value message_type = INITIATING_MESSAGE; #.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue #.FN_HDR SuccessfulOutcome/value message_type = SUCCESSFUL_OUTCOME; #.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue #.FN_HDR UnsuccessfulOutcome/value message_type = UNSUCCESSFUL_OUTCOME; #--- Parameterization is not supported in asn2wrs --- #ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, M3AP-PROTOCOL-IES : IEsSetParam} ::= # SEQUENCE (SIZE (lowerBound..upperBound)) OF # ProtocolIE-Container {{IEsSetParam}} # FN_PARS ProtocolIE-ContainerList #MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound") #MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound") # FN_HDR ProtocolIE-ContainerList # static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = { # { "lowerBound", ASN1_PAR_INTEGER }, # { "upperBound", ASN1_PAR_INTEGER }, # { NULL, (asn1_par_type)0 } # }; # asn1_stack_frame_check(actx, "ProtocolIE-ContainerList", ProtocolIE_ContainerList_pars); # END #ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, M3AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= # SEQUENCE (SIZE (lowerBound..upperBound)) OF # ProtocolIE-ContainerPair {{IEsSetParam}} # FN_PARS ProtocolIE-ContainerPairList #MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound") #MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound") # FN_HDR ProtocolIE-ContainerPairList # static const asn1_par_def_t ProtocolIE_ContainerPairList_pars[] = { # { "lowerBound", ASN1_PAR_INTEGER }, # { "upperBound", ASN1_PAR_INTEGER }, # { NULL, 0 } # }; # asn1_stack_frame_check(actx, "ProtocolIE-ContainerPairList", ProtocolIE_ContainerPairList_pars); # END # following construction is not supported by asn2wrs # PLMNidentity ::= TBCD-STRING (SIZE (3)) #.FN_BODY PLMN-Identity VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 3, 3, FALSE, ¶meter_tvb); if (!parameter_tvb) return offset; dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, E212_NONE, FALSE); #.END #.FN_BODY IPAddress VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; gint tvb_len; %(DEFAULT_BODY)s if (!parameter_tvb) return offset; tvb_len = tvb_reported_length(parameter_tvb); switch (tvb_len) { case 4: proto_tree_add_item(tree, hf_m3ap_IPAddress_v4, parameter_tvb, 0, tvb_len, ENC_NA); break; case 6: proto_tree_add_item(tree, hf_m3ap_IPAddress_v6, parameter_tvb, 0, tvb_len, ENC_NA); break; default: proto_tree_add_expert(tree, actx->pinfo, &ei_m3ap_invalid_ip_address_len, parameter_tvb, 0, tvb_len); break; } #.END #.FN_BODY Absolute-Time-ofMBMS-Data VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; const gchar *time_str; gint tvb_len; %(DEFAULT_BODY)s if (!parameter_tvb) return offset; tvb_len = tvb_reported_length(parameter_tvb); time_str = tvb_ntp_fmt_ts(parameter_tvb, 0); proto_tree_add_string(tree, hf_m3ap_Absolute_Time_ofMBMS_Data_value, parameter_tvb, 0, tvb_len, time_str); #.END #.FN_BODY MBMS-Service-Area VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; guint16 tvb_len; %(DEFAULT_BODY)s if (!parameter_tvb) return offset; tvb_len = tvb_reported_length(parameter_tvb); dissect_gtpv2_mbms_service_area(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0, NULL); #.END #.FN_BODY MBMS-Session-Duration VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; guint16 tvb_len; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 3, 3, FALSE, ¶meter_tvb); if (!parameter_tvb) return offset; tvb_len = tvb_reported_length(parameter_tvb); proto_item_append_text(actx->created_item, " "); dissect_gtpv2_mbms_session_duration(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0, NULL); #.END #.FN_BODY MinimumTimeToMBMSDataTransfer VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; guint16 tvb_len; %(DEFAULT_BODY)s if (!parameter_tvb) return offset; tvb_len = tvb_reported_length(parameter_tvb); dissect_gtpv2_mbms_time_to_data_xfer(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0, NULL); #.END #------ Pretify info column ----- #.FN_HDR MBMSSessionStartRequest col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Request "); #.FN_HDR MBMSSessionStartResponse col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Response "); #.FN_HDR MBMSSessionStartFailure col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Failure "); #.FN_HDR MBMSSessionStopRequest col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Stop Request "); #.FN_HDR MBMSSessionStopResponse col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Stop Response "); #.FN_HDR MBMSSessionUpdateRequest col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Request "); #.FN_HDR MBMSSessionUpdateResponse col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Response "); #.FN_HDR MBMSSessionUpdateFailure col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Failure "); #.FN_HDR ErrorIndication col_set_str(actx->pinfo->cinfo, COL_INFO,"Error Indication "); #.FN_HDR Reset col_set_str(actx->pinfo->cinfo, COL_INFO,"Reset "); #.FN_HDR ResetAcknowledge col_set_str(actx->pinfo->cinfo, COL_INFO,"Reset Acknowledge "); #.FN_HDR PrivateMessage col_set_str(actx->pinfo->cinfo, COL_INFO,"Private Message "); #.FN_HDR MCEConfigurationUpdate col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update "); #.FN_HDR MCEConfigurationUpdateAcknowledge col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update Acknowledge "); #.FN_HDR MCEConfigurationUpdateFailure col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update Failure "); #.FN_HDR M3SetupRequest col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Request "); #.FN_HDR M3SetupResponse col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Response "); #.FN_HDR M3SetupFailure col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Failure "); #.ASSIGN_VALUE_TO_TYPE # M3AP does not have constants assigned to types, they are pure INTEGER # ProcedureCode id-mBMSsessionStart ProcedureCode id-mBMSsessionStop ProcedureCode id-errorIndication ProcedureCode id-privateMessage ProcedureCode id-Reset ProcedureCode id-mBMSsessionUpdate ProcedureCode id-mCEConfigurationUpdate ProcedureCode id-m3Setup ProcedureCode # ProtocolIE id-MME-MBMS-M3AP-ID ProtocolIE-ID id-MCE-MBMS-M3AP-ID ProtocolIE-ID id-TMGI ProtocolIE-ID id-MBMS-Session-ID ProtocolIE-ID id-MBMS-E-RAB-QoS-Parameters ProtocolIE-ID id-MBMS-Session-Duration ProtocolIE-ID id-MBMS-Service-Area ProtocolIE-ID id-TNL-Information ProtocolIE-ID id-CriticalityDiagnostics ProtocolIE-ID id-Cause ProtocolIE-ID id-MBMS-Service-Area-List ProtocolIE-ID id-MBMS-Service-Area-List-Item ProtocolIE-ID id-TimeToWait ProtocolIE-ID id-ResetType ProtocolIE-ID id-MBMS-Service-associatedLogicalM3-ConnectionItem ProtocolIE-ID id-MBMS-Service-associatedLogicalM3-ConnectionListResAck ProtocolIE-ID id-MinimumTimeToMBMSDataTransfer ProtocolIE-ID id-AllocationAndRetentionPriority ProtocolIE-ID id-Global-MCE-ID ProtocolIE-ID id-MCEname ProtocolIE-ID id-MBMSServiceAreaList ProtocolIE-ID id-Time-ofMBMS-DataTransfer ProtocolIE-ID id-Time-ofMBMS-DataStop ProtocolIE-ID #.REGISTER #M3AP-PROTOCOL-IES MME-MBMS-M3AP-ID N m3ap.ies id-MME-MBMS-M3AP-ID MCE-MBMS-M3AP-ID N m3ap.ies id-MCE-MBMS-M3AP-ID TMGI N m3ap.ies id-TMGI MBMS-Session-ID N m3ap.ies id-MBMS-Session-ID MBMS-E-RAB-QoS-Parameters N m3ap.ies id-MBMS-E-RAB-QoS-Parameters MBMS-Session-Duration N m3ap.ies id-MBMS-Session-Duration MBMS-Service-Area N m3ap.ies id-MBMS-Service-Area TNL-Information N m3ap.ies id-TNL-Information CriticalityDiagnostics N m3ap.ies id-CriticalityDiagnostics Cause N m3ap.ies id-Cause #MBMS-Service-Area-List N m3ap.ies id-MBMS-Service-Area-List #MBMS-Service-Area-List-Item N m3ap.ies id-MBMS-Service-Area-List-Item TimeToWait N m3ap.ies id-TimeToWait ResetType N m3ap.ies id-ResetType MBMS-Service-associatedLogicalM3-ConnectionItem N m3ap.ies id-MBMS-Service-associatedLogicalM3-ConnectionItem MBMS-Service-associatedLogicalM3-ConnectionListResAck N m3ap.ies id-MBMS-Service-associatedLogicalM3-ConnectionListResAck MinimumTimeToMBMSDataTransfer N m3ap.ies id-MinimumTimeToMBMSDataTransfer AllocationAndRetentionPriority N m3ap.ies id-AllocationAndRetentionPriority Global-MCE-ID N m3ap.ies id-Global-MCE-ID MCEname N m3ap.ies id-MCEname MBMSServiceAreaListItem N m3ap.ies id-MBMSServiceAreaList Absolute-Time-ofMBMS-Data N m3ap.ies id-Time-ofMBMS-DataTransfer Absolute-Time-ofMBMS-Data N m3ap.ies id-Time-ofMBMS-DataStop #M3AP-ELEMENTARY-PROCEDURE MBMSSessionStartRequest N m3ap.proc.imsg id-mBMSsessionStart MBMSSessionStartResponse N m3ap.proc.sout id-mBMSsessionStart MBMSSessionStartFailure N m3ap.proc.uout id-mBMSsessionStart MBMSSessionStopRequest N m3ap.proc.imsg id-mBMSsessionStop MBMSSessionStopResponse N m3ap.proc.sout id-mBMSsessionStop MBMSSessionUpdateRequest N m3ap.proc.imsg id-mBMSsessionUpdate MBMSSessionUpdateResponse N m3ap.proc.sout id-mBMSsessionUpdate MBMSSessionUpdateFailure N m3ap.proc.uout id-mBMSsessionUpdate ErrorIndication N m3ap.proc.imsg id-errorIndication Reset N m3ap.proc.imsg id-Reset ResetAcknowledge N m3ap.proc.sout id-Reset PrivateMessage N m3ap.proc.imsg id-privateMessage MCEConfigurationUpdate N m3ap.proc.imsg id-mCEConfigurationUpdate MCEConfigurationUpdateAcknowledge N m3ap.proc.sout id-mCEConfigurationUpdate MCEConfigurationUpdateFailure N m3ap.proc.uout id-mCEConfigurationUpdate M3SetupRequest N m3ap.proc.imsg id-m3Setup M3SetupResponse N m3ap.proc.sout id-m3Setup M3SetupFailure N m3ap.proc.uout id-m3Setup #.END