diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/e2ap/e2ap.cnf | |
parent | Initial commit. (diff) | |
download | wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip |
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/e2ap/e2ap.cnf')
-rw-r--r-- | epan/dissectors/asn1/e2ap/e2ap.cnf | 917 |
1 files changed, 917 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/e2ap/e2ap.cnf b/epan/dissectors/asn1/e2ap/e2ap.cnf new file mode 100644 index 00000000..dc37391d --- /dev/null +++ b/epan/dissectors/asn1/e2ap/e2ap.cnf @@ -0,0 +1,917 @@ +# e2ap.cnf +# e2ap conformation file + +#.OPT +PER +ALIGNED +#.END + +#.USE_VALS_EXT +ProcedureCode +ProtocolIE-ID +NI-ProtocolIE-ID + +#.EXPORTS ONLY_VALS WS_DLL + +#.EXPORTS + +#.PDU +E2AP-PDU + +E2SM-KPM-EventTriggerDefinition +E2SM-KPM-ActionDefinition +E2SM-KPM-IndicationHeader +E2SM-KPM-IndicationMessage +E2SM-KPM-RANfunction-Description + +E2SM-RC-EventTrigger +E2SM-RC-ActionDefinition +E2SM-RC-RANFunctionDefinition +E2SM-RC-IndicationMessage +E2SM-RC-IndicationHeader +E2SM-RC-CallProcessID +E2SM-RC-ControlHeader +E2SM-RC-ControlMessage +E2SM-RC-ControlOutcome +# New for v3 +# E2SM-RC-QueryOutcome +# E2SM-RC-QueryDefinition +# E2SM-RC-QueryHeader + + +E2SM-NI-EventTriggerDefinition +E2SM-NI-ActionDefinition +E2SM-NI-RANfunction-Description +E2SM-NI-IndicationMessage +E2SM-NI-IndicationHeader +E2SM-NI-CallProcessID +E2SM-NI-ControlHeader +E2SM-NI-ControlMessage +E2SM-NI-ControlOutcome + + +#.MAKE_ENUM +ProcedureCode +ProtocolIE-ID + + +#.NO_EMIT + +#.OMIT_ASSIGNMENT +# Get rid of unused code warnings +ProtocolIE-FieldPair +ProtocolIE-ContainerList +ProtocolIE-ContainerPair +ProtocolIE-ContainerPairList +Presence +FreqBandNrItem +IndexToRFSP +EN-GNB-ID +SubscriberProfileIDforRFP +QoSID +GroupID +CoreCPID + +#.END + + +#.TYPE_ATTR +#E2SM-KPM-IndicationMessage DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationMessage_vals) +#E2SM-KPM-IndicationHeader DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationHeader_vals) + +#.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 + +#GlobalGNB-ID/gNB-ID globalGNB-ID_gNB-ID + + +#.FIELD_ATTR +#GlobalGNB-ID/gNB-ID ABBREV=globalGNB_ID.gNB_ID + +#.FN_BODY ProtocolIE-ID VAL_PTR=&e2ap_data->protocol_ie_id + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); +%(DEFAULT_BODY)s + +#.FN_FTR ProtocolIE-ID + if (tree) { + proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", + val_to_str_ext(e2ap_data->protocol_ie_id, &e2ap_ProtocolIE_ID_vals_ext, "unknown (%d)")); + } +#.END + + +# TODO: probably not worth it +# #.FN_BODY E2AP-PDU VAL_PTR=&value +# guint32 value; +# %(DEFAULT_BODY)s +# col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%s)", val_to_str(value, e2ap_E2AP_PDU_vals, "Unknown")); + + + +#.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_BODY ProcedureCode VAL_PTR = &e2ap_data->procedure_code + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); +%(DEFAULT_BODY)s + //col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%%s", val_to_str(e2ap_data->procedure_code, e2ap_ProcedureCode_vals, "Unknown")); +#.END + + + +#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue +#.FN_HDR InitiatingMessage/value + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + e2ap_data->message_type = INITIATING_MESSAGE; +#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue +#.FN_HDR SuccessfulOutcome/value + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + e2ap_data->message_type = SUCCESSFUL_OUTCOME; +#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue +#.FN_HDR UnsuccessfulOutcome/value + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + e2ap_data->message_type = UNSUCCESSFUL_OUTCOME; + +#--- Parameterization is not supported in asn2wrs --- + +#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, e2ap-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, e2ap-PROTOCOL-IES-PAIR : IEsSetParam} ::= +# SEQUENCE (SIZE (lowerBound..upperBound)) OF +# ProtocolIE-ContainerPair {{IEsSetParam}} + +# Currently not used +# 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 + +#PduSessionResource-IE-ContainerList { e2ap-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxnoofPduSessionResources, {IEsSetParam} } +# FN_BODY PduSessionResource-IE-ContainerList +# asn1_stack_frame_push(%(ACTX)s, "ProtocolIE-ContainerList"); +# asn1_param_push_integer(%(ACTX)s, 1); +# asn1_param_push_integer(%(ACTX)s, maxnoofE_RABs); +# %(DEFAULT_BODY)s +# asn1_stack_frame_pop(%(ACTX)s, "ProtocolIE-ContainerList"); +# END + +# PduSessionResource-IE-ContainerPairList { e2ap-PROTOCOL-IES-PAIR : IEsSetParam } ::= ProtocolIE-ContainerPairList { 1, maxnoofPduSessionResources, {IEsSetParam} } +# Currently not used +# FN_BODY SAEB-IE-ContainerPairList +# asn1_stack_frame_push(%(ACTX)s, "ProtocolIE-ContainerPairList"); +# asn1_param_push_integer(%(ACTX)s, 1); +# asn1_param_push_integer(%(ACTX)s, maxnoofE_RABs); +#%(DEFAULT_BODY)s +# asn1_stack_frame_pop(%(ACTX)s, "ProtocolIE-ContainerPairList"); +# END + +# Currently not used +# ProtocolError-IE-ContainerList { e2ap-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxnoofPduSessionResources, {IEsSetParam} } +# FN_BODY ProtocolError-IE-ContainerList +# asn1_stack_frame_push(%(ACTX)s, "ProtocolIE-ContainerList"); +# asn1_param_push_integer(%(ACTX)s, 1); +# asn1_param_push_integer(%(ACTX)s, maxnoofE_RABs); +#%(DEFAULT_BODY)s +# asn1_stack_frame_pop(%(ACTX)s, "ProtocolIE-ContainerList"); +# END + +# .FN_HDR PrivateIE-ID +# struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); +# e2ap_data->obj_id = NULL; + +# FN_BODY PrivateIE-ID/global FN_VARIANT = _str VAL_PTR = &e2ap_data->obj_id +# struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); +# %(DEFAULT_BODY)s + +# FN_BODY PrivateIE-Field/value +# struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); +# if (e2ap_data->obj_id) { +# offset = call_per_oid_callback(e2ap_data->obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index); +# } else { +# %(DEFAULT_BODY)s +# } + + + + +# #.FN_BODY E2AP-Message VAL_PTR = ¶meter_tvb +# tvbuff_t *parameter_tvb; +# proto_tree *subtree; +#%(DEFAULT_BODY)s +# if (!parameter_tvb) +# return offset; + +# subtree = proto_item_add_subtree(actx->created_item, ett_e2ap_e2ap_Message); +# col_set_fence(actx->pinfo->cinfo, COL_INFO); +# call_dissector(e2ap_handle, parameter_tvb, actx->pinfo, subtree); + +#.FN_BODY E2SM-KPM-IndicationHeader-Format1/colletStartTime + int ts_offset = offset; + %(DEFAULT_BODY)s + /* Add as a generated field the timestamp decoded */ + const char *time_str = tvb_ntp_fmt_ts_sec(tvb, (ts_offset+7)/8); + proto_item *ti = proto_tree_add_string(tree, hf_e2ap_timestamp_string, tvb, (ts_offset+7)/8, 4, time_str); + proto_item_set_generated(ti); + + +# ################################################################################ +# Calling in-depth definitions of E2AP OCTET STRING fields. + +#.FN_BODY RANfunctionDefinition VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + + /* We know that the next thing is a RANFunction-Name, but it's wrapped up in a sequence, + so can't silently/hiddenly call ranFunctionName here... */ + + %(DEFAULT_BODY)s + + /* Looking for shortName string near beginning of tvb */ + gboolean found = FALSE; + /* For each RAN function name.. */ + for (int n=KPM_RANFUNCTIONS; n<MAX_RANFUNCTIONS && !found; n++) { + guint32 tvb_len = tvb_captured_length(parameter_tvb); + guint name_len = (gint)strlen(g_ran_function_name_table[n]); + /* For each of several byte positions.. */ + for (int m=0; (m<30) && ((m+name_len+1))<tvb_len; m++) { + /* Have we found a match on the name? */ + if (tvb_strneql(parameter_tvb, m, g_ran_function_name_table[n], name_len) == 0) { + /* TODO: we don't yet know the OID (hopefully won't make a difference for this message though...), + so for now just call with the first/only available dissector for this RAN Function name */ + if (g_ran_functions_available_dissectors[n].num_available_dissectors) { + g_ran_functions_available_dissectors[n].ran_function_dissectors[0]->functions.ran_function_definition_dissector(parameter_tvb, actx->pinfo, tree, NULL); + found = TRUE; + break; + } + } + } + } + if (!found) { + proto_item *ti = proto_tree_add_item(tree, hf_e2ap_ran_function_name_not_recognised, tvb, 0, 0, ENC_NA); + expert_add_info_format(actx->pinfo, ti, &ei_e2ap_ran_function_names_no_match, + "ShortName does not match any known Service Model"); + } + +#.FN_BODY RANfunction-Name/ranFunction-ShortName VAL_PTR=&value_tvb + tvbuff_t *value_tvb; +%(DEFAULT_BODY)s + if (!actx->pinfo->fd->visited) { + /* N.B. too early to work out exact dissector, as don't have OID yet */ + e2ap_store_ran_function_mapping(actx->pinfo, tree, value_tvb, + tvb_get_string_enc(wmem_packet_scope(), value_tvb, 0, tvb_captured_length(value_tvb), ENC_ASCII)); + } + + +#.FN_BODY RANfunction-Name/ranFunction-E2SM-OID VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + e2ap_update_ran_function_mapping(actx->pinfo, tree, parameter_tvb, + tvb_get_string_enc(actx->pinfo->pool, parameter_tvb, 0, + tvb_captured_length(parameter_tvb), ENC_ASCII)); + + +#.FN_BODY RICcontrolHeader VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb); + if (dissector) { + if (dissector->functions.ric_control_header_dissector) { + dissector->functions.ric_control_header_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } + } + +#.FN_BODY RICcontrolMessage VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb); + if (dissector) { + if (dissector->functions.ric_control_message_dissector) { + dissector->functions.ric_control_message_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } + } + +#.FN_BODY RICcontrolOutcome VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb); + if (dissector) { + if (dissector->functions.ric_control_outcome_dissector) { + dissector->functions.ric_control_outcome_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } + } + +#.FN_BODY RICqueryOutcome VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb); + if (dissector) { + if (dissector->functions.ric_query_outcome_dissector) { + dissector->functions.ric_query_outcome_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } + } + +#.FN_BODY RICqueryDefinition VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb); + if (dissector) { + if (dissector->functions.ric_query_definition_dissector) { + dissector->functions.ric_query_definition_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } + } + +#.FN_BODY RICqueryHeader VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb); + if (dissector) { + if (dissector->functions.ric_query_header_dissector) { + dissector->functions.ric_query_header_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } + } + + + +#.FN_BODY RICeventTriggerDefinition VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb); + if (dissector) { + if (dissector->functions.ran_event_trigger_dissector) { + dissector->functions.ran_event_trigger_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } + } + +#.FN_BODY RICactionDefinition VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb); + if (dissector) { + if (dissector->functions.ran_action_definition_dissector) { + dissector->functions.ran_action_definition_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } + } + +#.FN_BODY RICindicationHeader VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb); + if (dissector) { + if (dissector->functions.ran_indication_header_dissector) { + dissector->functions.ran_indication_header_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } + } + +#.FN_BODY RICindicationMessage VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb); + if (dissector) { + if (dissector->functions.ran_indication_message_dissector) { + dissector->functions.ran_indication_message_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } + } + +#.FN_BODY RICcallProcessID VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb); + if (dissector) { + if (dissector->functions.ran_callprocessid_dissector) { + dissector->functions.ran_callprocessid_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } + } +# ################################################################################ + + + +#.ASSIGN_VALUE_TO_TYPE # e2ap does not have constants assigned to types, they are pure INTEGER +# ProcedureCode + +id-E2setup ProcedureCode +id-ErrorIndication ProcedureCode +id-Reset ProcedureCode +id-RICcontrol ProcedureCode +id-RICindication ProcedureCode +id-RICserviceQuery ProcedureCode +id-RICserviceUpdate ProcedureCode +id-RICsubscription ProcedureCode +id-RICsubscriptionDelete ProcedureCode +id-E2nodeConfigurationUpdate ProcedureCode +id-E2connectionUpdate ProcedureCode +id-RICsubscriptionDeleteRequired ProcedureCode +id-E2removal ProcedureCode +# New for v3 +id-RICsubscriptionModification ProcedureCode +id-RICsubscriptionModificationRequired ProcedureCode +id-RICquery ProcedureCode + + + +# ProtocolIE-ID +id-Cause ProtocolIE-ID +id-CriticalityDiagnostics ProtocolIE-ID +id-GlobalE2node-ID ProtocolIE-ID +id-GlobalRIC-ID ProtocolIE-ID +id-RANfunctionID ProtocolIE-ID +id-RANfunctionID-Item ProtocolIE-ID +id-RANfunctionIEcause-Item ProtocolIE-ID +id-RANfunction-Item ProtocolIE-ID +id-RANfunctionsAccepted ProtocolIE-ID +id-RANfunctionsAdded ProtocolIE-ID +id-RANfunctionsDeleted ProtocolIE-ID +id-RANfunctionsModified ProtocolIE-ID +id-RANfunctionsRejected ProtocolIE-ID +id-RICaction-Admitted-Item ProtocolIE-ID +id-RICactionID ProtocolIE-ID +id-RICaction-NotAdmitted-Item ProtocolIE-ID +id-RICactions-Admitted ProtocolIE-ID +id-RICactions-NotAdmitted ProtocolIE-ID +id-RICaction-ToBeSetup-Item ProtocolIE-ID +id-RICcallProcessID ProtocolIE-ID +id-RICcontrolAckRequest ProtocolIE-ID +id-RICcontrolHeader ProtocolIE-ID +id-RICcontrolMessage ProtocolIE-ID +id-RICcontrolStatus ProtocolIE-ID +id-RICindicationHeader ProtocolIE-ID +id-RICindicationMessage ProtocolIE-ID +id-RICindicationSN ProtocolIE-ID +id-RICindicationType ProtocolIE-ID +id-RICrequestID ProtocolIE-ID +id-RICsubscriptionDetails ProtocolIE-ID +id-TimeToWait ProtocolIE-ID +id-RICcontrolOutcome ProtocolIE-ID + +id-E2nodeComponentConfigUpdate ProtocolIE-ID +id-E2nodeComponentConfigUpdate-Item ProtocolIE-ID +id-E2nodeComponentConfigUpdateAck ProtocolIE-ID +id-E2nodeComponentConfigUpdateAck-Item ProtocolIE-ID +id-E2connectionSetup ProtocolIE-ID +id-E2connectionSetupFailed ProtocolIE-ID +id-E2connectionSetupFailed-Item ProtocolIE-ID +id-E2connectionFailed-Item ProtocolIE-ID +id-E2connectionUpdate-Item ProtocolIE-ID +id-E2connectionUpdateAdd ProtocolIE-ID +id-E2connectionUpdateModify ProtocolIE-ID +id-E2connectionUpdateRemove ProtocolIE-ID +id-E2connectionUpdateRemove-Item ProtocolIE-ID +id-TNLinformation ProtocolIE-ID +id-TransactionID ProtocolIE-ID + +id-E2nodeComponentConfigAddition ProtocolIE-ID +id-E2nodeComponentConfigAddition-Item ProtocolIE-ID +id-E2nodeComponentConfigAdditionAck ProtocolIE-ID +id-E2nodeComponentConfigAdditionAck-Item ProtocolIE-ID +id-E2nodeComponentConfigRemoval ProtocolIE-ID +id-E2nodeComponentConfigRemoval-Item ProtocolIE-ID +id-E2nodeComponentConfigRemovalAck ProtocolIE-ID +id-E2nodeComponentConfigRemovalAck-Item ProtocolIE-ID +id-E2nodeTNLassociationRemoval ProtocolIE-ID +id-E2nodeTNLassociationRemoval-Item ProtocolIE-ID +id-RICsubscriptionToBeRemoved ProtocolIE-ID +id-RICsubscription-withCause-Item ProtocolIE-ID +# New for v3 +id-RICsubscriptionStartTime ProtocolIE-ID +id-RICsubscriptionEndTime ProtocolIE-ID +id-RICeventTriggerDefinitionToBeModified ProtocolIE-ID +id-RICactionsToBeRemovedForModification-List ProtocolIE-ID +id-RICaction-ToBeRemovedForModification-Item ProtocolIE-ID +id-RICactionsToBeModifiedForModification-List ProtocolIE-ID +id-RICaction-ToBeModifiedForModification-Item ProtocolIE-ID +id-RICactionsToBeAddedForModification-List ProtocolIE-ID +id-RICaction-ToBeAddedForModification-Item ProtocolIE-ID +id-RICactionsRemovedForModification-List ProtocolIE-ID +id-RICaction-RemovedForModification-Item ProtocolIE-ID +id-RICactionsFailedToBeRemovedForModification-List ProtocolIE-ID +id-RICaction-FailedToBeRemovedForModification-Item ProtocolIE-ID +id-RICactionsModifiedForModification-List ProtocolIE-ID +id-RICaction-ModifiedForModification-Item ProtocolIE-ID +id-RICactionsFailedToBeModifiedForModification-List ProtocolIE-ID +id-RICaction-FailedToBeModifiedForModification-Item ProtocolIE-ID +id-RICactionsAddedForModification-List ProtocolIE-ID +id-RICaction-AddedForModification-Item ProtocolIE-ID +id-RICactionsFailedToBeAddedForModification-List ProtocolIE-ID +id-RICaction-FailedToBeAddedForModification-Item ProtocolIE-ID +id-RICactionsRequiredToBeModified-List ProtocolIE-ID +id-RICaction-RequiredToBeModified-Item ProtocolIE-ID +id-RICactionsRequiredToBeRemoved-List ProtocolIE-ID +id-RICaction-RequiredToBeRemoved-Item ProtocolIE-ID +id-RICactionsConfirmedForModification-List ProtocolIE-ID +id-RICaction-ConfirmedForModification-Item ProtocolIE-ID +id-RICactionsRefusedToBeModified-List ProtocolIE-ID +id-RICaction-RefusedToBeModified-Item ProtocolIE-ID +id-RICactionsConfirmedForRemoval-List ProtocolIE-ID +id-RICaction-ConfirmedForRemoval-Item ProtocolIE-ID +id-RICactionsRefusedToBeRemoved-List ProtocolIE-ID +id-RICaction-RefusedToBeRemoved-Item ProtocolIE-ID +id-RICqueryHeader ProtocolIE-ID +id-RICqueryDefinition ProtocolIE-ID +id-RICqueryOutcome ProtocolIE-ID +#.END + + +#.REGISTER + +#E2AP-PROTOCOL-IES + +Cause N e2ap.ies id-Cause +CriticalityDiagnostics N e2ap.ies id-CriticalityDiagnostics +GlobalE2node-ID N e2ap.ies id-GlobalE2node-ID +GlobalRIC-ID N e2ap.ies id-GlobalRIC-ID +RANfunctionID N e2ap.ies id-RANfunctionID +RANfunctionID-Item N e2ap.ies id-RANfunctionID-Item +RANfunctionIDcause-Item N e2ap.ies id-RANfunctionIEcause-Item +RANfunction-Item N e2ap.ies id-RANfunction-Item +RANfunctionsID-List N e2ap.ies id-RANfunctionsAccepted +RANfunctions-List N e2ap.ies id-RANfunctionsAdded +RANfunctionsID-List N e2ap.ies id-RANfunctionsDeleted +RANfunctions-List N e2ap.ies id-RANfunctionsModified +RANfunctionsIDcause-List N e2ap.ies id-RANfunctionsRejected +RICaction-Admitted-Item N e2ap.ies id-RICaction-Admitted-Item +RICactionID N e2ap.ies id-RICactionID +RICaction-NotAdmitted-Item N e2ap.ies id-RICaction-NotAdmitted-Item +RICaction-Admitted-List N e2ap.ies id-RICactions-Admitted +RICaction-ToBeSetup-Item N e2ap.ies id-RICaction-ToBeSetup-Item +RICcallProcessID N e2ap.ies id-RICcallProcessID +RICaction-NotAdmitted-List N e2ap.ies id-RICactions-NotAdmitted +RICcontrolAckRequest N e2ap.ies id-RICcontrolAckRequest +RICcontrolHeader N e2ap.ies id-RICcontrolHeader +RICcontrolMessage N e2ap.ies id-RICcontrolMessage +RICcontrolOutcome N e2ap.ies id-RICcontrolOutcome +#RICcontrolStatus N e2ap.ies id-RICcontrolStatus +RICindicationHeader N e2ap.ies id-RICindicationHeader +RICindicationMessage N e2ap.ies id-RICindicationMessage +RICindicationSN N e2ap.ies id-RICindicationSN +RICindicationType N e2ap.ies id-RICindicationType +RICrequestID N e2ap.ies id-RICrequestID +RICsubscriptionDetails N e2ap.ies id-RICsubscriptionDetails +#RICcontrolHeader N e2ap.ies id-RICcontrolHeader +#RICcontrolMessage N e2ap.ies id-RICcontrolMessage + +TimeToWait N e2ap.ies id-TimeToWait +#RICcontrolOutcome N e2ap.ies id-RICcontrolOutcome + +E2nodeComponentConfigUpdate-List N e2ap.ies id-E2nodeComponentConfigUpdate +E2nodeComponentConfigUpdate-Item N e2ap.ies id-E2nodeComponentConfigUpdate-Item +E2nodeComponentConfigUpdateAck-List N e2ap.ies id-E2nodeComponentConfigUpdateAck +E2nodeComponentConfigUpdateAck-Item N e2ap.ies id-E2nodeComponentConfigUpdateAck-Item +E2connectionUpdate-List N e2ap.ies id-E2connectionSetup +E2connectionSetupFailed-List N e2ap.ies id-E2connectionSetupFailed +E2connectionSetupFailed-Item N e2ap.ies id-E2connectionSetupFailed-Item +#E2connectionSetupFailed-Item N e2ap.ies id-E2connectionFailed-Item +E2connectionUpdate-Item N e2ap.ies id-E2connectionUpdate-Item +E2connectionUpdate-List N e2ap.ies id-E2connectionUpdateAdd +E2connectionUpdate-List N e2ap.ies id-E2connectionUpdateModify +E2connectionUpdateRemove-List N e2ap.ies id-E2connectionUpdateRemove +E2connectionUpdateRemove-Item N e2ap.ies id-E2connectionUpdateRemove-Item +TNLinformation N e2ap.ies id-TNLinformation +TransactionID N e2ap.ies id-TransactionID + +E2nodeComponentConfigAddition-List N e2ap.ies id-E2nodeComponentConfigAddition +E2nodeComponentConfigAddition-Item N e2ap.ies id-E2nodeComponentConfigAddition-Item +E2nodeComponentConfigAdditionAck-List N e2ap.ies id-E2nodeComponentConfigAdditionAck +E2nodeComponentConfigAdditionAck-Item N e2ap.ies id-E2nodeComponentConfigAdditionAck-Item +E2nodeComponentConfigRemoval-List N e2ap.ies id-E2nodeComponentConfigRemoval +E2nodeComponentConfigRemoval-Item N e2ap.ies id-E2nodeComponentConfigRemoval-Item +E2nodeComponentConfigRemovalAck-List N e2ap.ies id-E2nodeComponentConfigRemovalAck +E2nodeComponentConfigRemovalAck-Item N e2ap.ies id-E2nodeComponentConfigRemovalAck-Item +E2nodeTNLassociationRemoval-List N e2ap.ies id-E2nodeTNLassociationRemoval +E2nodeTNLassociationRemoval-Item N e2ap.ies id-E2nodeTNLassociationRemoval-Item +RICsubscription-List-withCause N e2ap.ies id-RICsubscriptionToBeRemoved +RICsubscription-withCause-Item N e2ap.ies id-RICsubscription-withCause-Item + +# New for v3 +RICsubscriptionTime N e2ap.ies id-RICsubscriptionStartTime +RICsubscriptionTime N e2ap.ies id-RICsubscriptionEndTime +RICeventTriggerDefinition N e2ap.ies id-RICeventTriggerDefinitionToBeModified +RICactions-ToBeRemovedForModification-List N e2ap.ies id-RICactionsToBeRemovedForModification-List +RICaction-ToBeRemovedForModification-Item N e2ap.ies id-RICaction-ToBeRemovedForModification-Item +RICactions-ToBeModifiedForModification-List N e2ap.ies id-RICactionsToBeModifiedForModification-List +RICaction-ToBeModifiedForModification-Item N e2ap.ies id-RICaction-ToBeModifiedForModification-Item +RICactions-ToBeAddedForModification-List N e2ap.ies id-RICactionsToBeAddedForModification-List +RICaction-ToBeAddedForModification-Item N e2ap.ies id-RICaction-ToBeAddedForModification-Item +RICactions-RemovedForModification-List N e2ap.ies id-RICactionsRemovedForModification-List +RICaction-RemovedForModification-Item N e2ap.ies id-RICaction-RemovedForModification-Item +RICactions-FailedToBeRemovedForModification-List N e2ap.ies id-RICactionsFailedToBeRemovedForModification-List +RICaction-FailedToBeRemovedForModification-Item N e2ap.ies id-RICaction-FailedToBeRemovedForModification-Item +RICactions-ModifiedForModification-List N e2ap.ies id-RICactionsModifiedForModification-List +RICaction-ModifiedForModification-Item N e2ap.ies id-RICaction-ModifiedForModification-Item +RICactions-FailedToBeModifiedForModification-List N e2ap.ies id-RICactionsFailedToBeModifiedForModification-List +RICaction-FailedToBeModifiedForModification-Item N e2ap.ies id-RICaction-FailedToBeModifiedForModification-Item +RICactions-AddedForModification-List N e2ap.ies id-RICactionsAddedForModification-List +RICaction-AddedForModification-Item N e2ap.ies id-RICaction-AddedForModification-Item +RICactions-FailedToBeAddedForModification-List N e2ap.ies id-RICactionsFailedToBeAddedForModification-List +RICaction-FailedToBeAddedForModification-Item N e2ap.ies id-RICaction-FailedToBeAddedForModification-Item +RICactions-RequiredToBeModified-List N e2ap.ies id-RICactionsRequiredToBeModified-List +RICaction-RequiredToBeModified-Item N e2ap.ies id-RICaction-RequiredToBeModified-Item +RICactions-RequiredToBeRemoved-List N e2ap.ies id-RICactionsRequiredToBeRemoved-List +RICaction-RequiredToBeRemoved-Item N e2ap.ies id-RICaction-RequiredToBeRemoved-Item +RICactions-ConfirmedForModification-List N e2ap.ies id-RICactionsConfirmedForModification-List +RICaction-ConfirmedForModification-Item N e2ap.ies id-RICaction-ConfirmedForModification-Item +RICactions-RefusedToBeModified-List N e2ap.ies id-RICactionsRefusedToBeModified-List +RICaction-RefusedToBeModified-Item N e2ap.ies id-RICaction-RefusedToBeModified-Item +RICactions-ConfirmedForRemoval-List N e2ap.ies id-RICactionsConfirmedForRemoval-List +RICaction-ConfirmedForRemoval-Item N e2ap.ies id-RICaction-ConfirmedForRemoval-Item +RICactions-RefusedToBeRemoved-List N e2ap.ies id-RICactionsRefusedToBeRemoved-List +RICaction-RefusedToBeRemoved-Item N e2ap.ies id-RICaction-RefusedToBeRemoved-Item +RICqueryHeader N e2ap.ies id-RICqueryHeader +RICqueryDefinition N e2ap.ies id-RICqueryDefinition +RICqueryOutcome N e2ap.ies id-RICqueryOutcome + +#e2ap-PROTOCOL-EXTENSION + +#E2AP-ELEMENTARY-PROCEDURE + +E2connectionUpdate N e2ap.proc.imsg id-E2connectionUpdate +E2connectionUpdateAcknowledge N e2ap.proc.sout id-E2connectionUpdate +E2connectionUpdateFailure N e2ap.proc.uout id-E2connectionUpdate + +E2nodeConfigurationUpdate N e2ap.proc.imsg id-E2nodeConfigurationUpdate +E2nodeConfigurationUpdateAcknowledge N e2ap.proc.sout id-E2nodeConfigurationUpdate +E2nodeConfigurationUpdateFailure N e2ap.proc.uout id-E2nodeConfigurationUpdate + +E2setupFailure N e2ap.proc.uout id-E2setup +E2setupRequest N e2ap.proc.imsg id-E2setup +E2setupResponse N e2ap.proc.sout id-E2setup + +ErrorIndication N e2ap.proc.imsg id-ErrorIndication + +ResetRequest N e2ap.proc.imsg id-Reset +ResetResponse N e2ap.proc.sout id-Reset + +RICcontrolAcknowledge N e2ap.proc.sout id-RICcontrol +RICcontrolFailure N e2ap.proc.uout id-RICcontrol +RICcontrolRequest N e2ap.proc.imsg id-RICcontrol + +RICindication N e2ap.proc.imsg id-RICindication + +RICserviceQuery N e2ap.proc.imsg id-RICserviceQuery + +RICserviceUpdate N e2ap.proc.imsg id-RICserviceUpdate +RICserviceUpdateAcknowledge N e2ap.proc.sout id-RICserviceUpdate +RICserviceUpdateFailure N e2ap.proc.uout id-RICserviceUpdate + +RICsubscriptionFailure N e2ap.proc.uout id-RICsubscription +RICsubscriptionRequest N e2ap.proc.imsg id-RICsubscription +RICsubscriptionResponse N e2ap.proc.sout id-RICsubscription + +RICsubscriptionDeleteFailure N e2ap.proc.uout id-RICsubscriptionDelete +RICsubscriptionDeleteRequest N e2ap.proc.imsg id-RICsubscriptionDelete +RICsubscriptionDeleteResponse N e2ap.proc.sout id-RICsubscriptionDelete + +RICsubscriptionDeleteRequired N e2ap.proc.sout id-RICsubscriptionDeleteRequired + +E2RemovalFailure N e2ap.proc.uout id-E2removal +E2RemovalRequest N e2ap.proc.imsg id-E2removal +E2RemovalResponse N e2ap.proc.sout id-E2removal + +RICsubscriptionModificationFailure N e2ap.proc.uout id-RICsubscriptionModification +RICsubscriptionModificationRequest N e2ap.proc.imsg id-RICsubscriptionModification +RICsubscriptionModificationResponse N e2ap.proc.sout id-RICsubscriptionModification + +RICsubscriptionModificationRefuse N e2ap.proc.uout id-RICsubscriptionModificationRequired +RICsubscriptionModificationRequired N e2ap.proc.imsg id-RICsubscriptionModificationRequired +RICsubscriptionModificationConfirm N e2ap.proc.sout id-RICsubscriptionModificationRequired + +RICQueryFailure N e2ap.proc.uout id-RICquery +RICQueryRequest N e2ap.proc.imsg id-RICquery +RICQueryResponse N e2ap.proc.sout id-RICquery + + + +#.FN_BODY RANfunctionID VAL_PTR=&value + guint32 value; +%(DEFAULT_BODY)s + /* Store value in packet-private data */ + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + e2ap_data->ran_function_id = value; + + +#.FN_BODY GlobalgNB-ID/gnb-id + int start_offset = offset; +%(DEFAULT_BODY)s + /* Store value in packet-private data */ + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + /* Limit length, but really can't be > 5 bytes.. */ + e2ap_data->gnb_id_len = MIN((offset-start_offset)/8, MAX_GNB_ID_BYTES); + tvb_memcpy(tvb, &e2ap_data->gnb_id_bytes, start_offset/8, e2ap_data->gnb_id_len); + update_conversation_from_gnb_id(actx); + + + +#.FN_BODY TNLinformation/tnlAddress VAL_PTR=&value_tvb + tvbuff_t *value_tvb; +%(DEFAULT_BODY)s + if (tvb_captured_length(value_tvb)==4) { + proto_item_append_text(tree, " (%%s", tvb_ip_to_str(actx->pinfo->pool, value_tvb, 0)); + } + else { + proto_item_append_text(tree, " (%%s", tvb_ip6_to_str(actx->pinfo->pool, value_tvb, 0)); + } + +#.FN_BODY TNLinformation/tnlPort + proto_item_append_text(tree, ":%%u)", tvb_get_ntohs(tvb, offset/8)); +%(DEFAULT_BODY)s + + +#.FN_BODY E2nodeComponentConfiguration/e2nodeComponentRequestPart VAL_PTR=&value_tvb + tvbuff_t *value_tvb; +%(DEFAULT_BODY)s + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + if (e2ap_data->component_configuration_dissector) { + col_append_str(actx->pinfo->cinfo, COL_PROTOCOL, "|"); + col_set_fence(actx->pinfo->cinfo, COL_PROTOCOL); + col_set_writable(actx->pinfo->cinfo, COL_INFO, FALSE); + call_dissector(e2ap_data->component_configuration_dissector, value_tvb, actx->pinfo, tree); + col_set_writable(actx->pinfo->cinfo, COL_INFO, TRUE); + } + +#.FN_BODY E2nodeComponentConfiguration/e2nodeComponentResponsePart VAL_PTR=&value_tvb + tvbuff_t *value_tvb; +%(DEFAULT_BODY)s + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + if (e2ap_data->component_configuration_dissector) { + col_set_writable(actx->pinfo->cinfo, COL_INFO, FALSE); + call_dissector(e2ap_data->component_configuration_dissector, value_tvb, actx->pinfo, tree); + col_set_writable(actx->pinfo->cinfo, COL_INFO, TRUE); + } + + +#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeNG +%(DEFAULT_BODY)s + /* Store value in packet-private data */ + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + e2ap_data->component_configuration_dissector = find_dissector("ngap"); + +#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeXn +%(DEFAULT_BODY)s + /* Store value in packet-private data */ + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + e2ap_data->component_configuration_dissector = find_dissector("xnap"); + +#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeE1 +%(DEFAULT_BODY)s + /* Store value in packet-private data */ + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + e2ap_data->component_configuration_dissector = find_dissector("e1ap"); + +#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeF1 +%(DEFAULT_BODY)s + /* Store value in packet-private data */ + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + e2ap_data->component_configuration_dissector = find_dissector("f1ap"); + +# There is not yet a dissector for W1AP.. + +#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeS1 +%(DEFAULT_BODY)s + /* Store value in packet-private data */ + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + e2ap_data->component_configuration_dissector = find_dissector("s1ap"); + +#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeX2 +%(DEFAULT_BODY)s + /* Store value in packet-private data */ + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + e2ap_data->component_configuration_dissector = find_dissector("x2ap"); + + + +#.FN_HDR E2connectionUpdate + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdate"); + +#.FN_HDR E2connectionUpdateAcknowledge + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdateAcknowledge"); + +#.FN_HDR E2connectionUpdateFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdateFailure"); + + +#.FN_HDR E2nodeConfigurationUpdate + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdate"); + +#.FN_HDR E2nodeConfigurationUpdateAcknowledge + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdateAcknowledge"); + +#.FN_HDR E2nodeConfigurationUpdateFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdateFailure"); + + +#.FN_HDR E2setupFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupFailure"); + +#.FN_HDR E2setupRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupRequest"); + +#.FN_HDR E2setupResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupResponse"); + + +#.FN_HDR ErrorIndication + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication"); + + +#.FN_HDR ResetRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetRequest"); + +#.FN_HDR ResetResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetResponse"); + + +#.FN_HDR RICcontrolAcknowledge + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolAcknowledge"); + +#.FN_HDR RICcontrolFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolFailure"); + +#.FN_HDR RICcontrolRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolRequest"); + + +#.FN_HDR RICindication + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICindication"); + + +#.FN_HDR RICserviceQuery + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceQuery"); + + +#.FN_HDR RICserviceUpdate + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdate"); + +#.FN_HDR RICserviceUpdateAcknowledge + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdateAcknowledge"); + +#.FN_HDR RICserviceUpdateFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdateFailure"); + + + +#.FN_HDR RICsubscriptionFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionFailure"); + +#.FN_HDR RICsubscriptionRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionRequest"); + +#.FN_HDR RICsubscriptionResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionResponse"); + + + +#.FN_HDR RICsubscriptionDeleteFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteFailure"); + +#.FN_HDR RICsubscriptionDeleteRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteRequest"); + +#.FN_HDR RICsubscriptionDeleteResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteResponse"); + +#.FN_HDR RICsubscriptionDeleteRequired + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteRequired"); + + +# +# Editor modelines - https://www.wireshark.org/tools/modelines.html +# +# Local variables: +# c-basic-offset: 2 +# tab-width: 8 +# indent-tabs-mode: nil +# End: +# +# vi: set shiftwidth=2 tabstop=8 expandtab: +# :indentSize=2:tabSize=8:noTabs=true: +# |