M2AP, M3AP: Use ECGI specific MCC/MNC fields

Use the specific MCC/MNC fields for the ECGI IE, and continue to
use E212_NONE for all others.
This commit is contained in:
John Thacker 2021-05-14 19:46:33 -04:00 committed by Wireshark GitLab Utility
parent e020b44e7c
commit 2ab87f882d
6 changed files with 168 additions and 72 deletions

View File

@ -68,13 +68,21 @@ ProtocolIE-Field/value ie_field_value
#.FN_BODY PLMN-Identity VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb = NULL;
struct m2ap_private_data *m2ap_data = m2ap_get_private_data(actx->pinfo);
e212_number_type_t number_type = m2ap_data->number_type;
m2ap_data->number_type = E212_NONE;
%(DEFAULT_BODY)s
if (parameter_tvb) {
proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_m2ap_PLMN_Identity);
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_NONE, FALSE);
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, number_type, FALSE);
}
#.END
#.FN_BODY ECGI
struct m2ap_private_data *m2ap_data = m2ap_get_private_data(actx->pinfo);
m2ap_data->number_type = E212_ECGI;
%(DEFAULT_BODY)s
#.FN_BODY IPAddress VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb = NULL;
%(DEFAULT_BODY)s

View File

@ -17,6 +17,7 @@
#include <epan/sctpppids.h>
#include <epan/asn1.h>
#include <epan/expert.h>
#include <epan/proto_data.h>
#include "packet-per.h"
#include "packet-e212.h"
@ -48,6 +49,10 @@ static int ett_m2ap_IPAddress = -1;
static expert_field ei_m2ap_invalid_ip_address_len = EI_INIT;
struct m2ap_private_data {
e212_number_type_t number_type;
};
enum{
INITIATING_MESSAGE,
SUCCESSFUL_OUTCOME,
@ -73,6 +78,17 @@ static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, pro
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
static struct m2ap_private_data*
m2ap_get_private_data(packet_info *pinfo)
{
struct m2ap_private_data *m2ap_data = (struct m2ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_m2ap, 0);
if (!m2ap_data) {
m2ap_data = wmem_new0(pinfo->pool, struct m2ap_private_data);
p_add_proto_data(pinfo->pool, pinfo, proto_m2ap, 0, m2ap_data);
}
return m2ap_data;
}
#include "packet-m2ap-fn.c"
static int

View File

@ -112,15 +112,22 @@ ProtocolIE-Field/value ie_field_value
#.FN_BODY PLMN-Identity VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb=NULL;
struct m3ap_private_data *m3ap_data = m3ap_get_private_data(actx->pinfo);
e212_number_type_t number_type = m3ap_data->number_type;
m3ap_data->number_type = E212_NONE;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3, 3, FALSE, &parameter_tvb);
if (!parameter_tvb)
return offset;
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, E212_NONE, FALSE);
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, number_type, FALSE);
#.END
#.FN_BODY ECGI
struct m3ap_private_data *m3ap_data = m3ap_get_private_data(actx->pinfo);
m3ap_data->number_type = E212_ECGI;
%(DEFAULT_BODY)s
#.FN_BODY IPAddress VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb=NULL;
gint tvb_len;

View File

@ -18,6 +18,7 @@
#include <epan/asn1.h>
#include <epan/sctpppids.h>
#include <epan/expert.h>
#include <epan/proto_data.h>
#include "packet-ber.h"
#include "packet-per.h"
@ -53,6 +54,10 @@ static int ett_m3ap_IPAddress = -1;
static expert_field ei_m3ap_invalid_ip_address_len = EI_INIT;
struct m3ap_private_data {
e212_number_type_t number_type;
};
enum{
INITIATING_MESSAGE,
SUCCESSFUL_OUTCOME,
@ -79,6 +84,17 @@ static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, pro
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
static struct m3ap_private_data*
m3ap_get_private_data(packet_info *pinfo)
{
struct m3ap_private_data *m3ap_data = (struct m3ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_m3ap, 0);
if (!m3ap_data) {
m3ap_data = wmem_new0(pinfo->pool, struct m3ap_private_data);
p_add_proto_data(pinfo->pool, pinfo, proto_m3ap, 0, m3ap_data);
}
return m3ap_data;
}
#include "packet-m3ap-fn.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)

View File

@ -25,6 +25,7 @@
#include <epan/sctpppids.h>
#include <epan/asn1.h>
#include <epan/expert.h>
#include <epan/proto_data.h>
#include "packet-per.h"
#include "packet-e212.h"
@ -124,7 +125,7 @@ typedef enum _ProtocolIE_ID_enum {
} ProtocolIE_ID_enum;
/*--- End of included file: packet-m2ap-val.h ---*/
#line 35 "./asn1/m2ap/packet-m2ap-template.c"
#line 36 "./asn1/m2ap/packet-m2ap-template.c"
/* Initialize the protocol and registered fields */
static int proto_m2ap = -1;
@ -321,7 +322,7 @@ static int hf_m2ap_successfulOutcome_value = -1; /* SuccessfulOutcome_value */
static int hf_m2ap_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_value */
/*--- End of included file: packet-m2ap-hf.c ---*/
#line 42 "./asn1/m2ap/packet-m2ap-template.c"
#line 43 "./asn1/m2ap/packet-m2ap-template.c"
/* Initialize the subtree pointers */
static int ett_m2ap = -1;
@ -419,10 +420,14 @@ static gint ett_m2ap_SuccessfulOutcome = -1;
static gint ett_m2ap_UnsuccessfulOutcome = -1;
/*--- End of included file: packet-m2ap-ett.c ---*/
#line 48 "./asn1/m2ap/packet-m2ap-template.c"
#line 49 "./asn1/m2ap/packet-m2ap-template.c"
static expert_field ei_m2ap_invalid_ip_address_len = EI_INIT;
struct m2ap_private_data {
e212_number_type_t number_type;
};
enum{
INITIATING_MESSAGE,
SUCCESSFUL_OUTCOME,
@ -448,6 +453,17 @@ static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, pro
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
static struct m2ap_private_data*
m2ap_get_private_data(packet_info *pinfo)
{
struct m2ap_private_data *m2ap_data = (struct m2ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_m2ap, 0);
if (!m2ap_data) {
m2ap_data = wmem_new0(pinfo->pool, struct m2ap_private_data);
p_add_proto_data(pinfo->pool, pinfo, proto_m2ap, 0, m2ap_data);
}
return m2ap_data;
}
/*--- Included file: packet-m2ap-fn.c ---*/
#line 1 "./asn1/m2ap/packet-m2ap-fn.c"
@ -963,12 +979,15 @@ static int
dissect_m2ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 70 "./asn1/m2ap/m2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
struct m2ap_private_data *m2ap_data = m2ap_get_private_data(actx->pinfo);
e212_number_type_t number_type = m2ap_data->number_type;
m2ap_data->number_type = E212_NONE;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3, 3, FALSE, &parameter_tvb);
if (parameter_tvb) {
proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_m2ap_PLMN_Identity);
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_NONE, FALSE);
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, number_type, FALSE);
}
@ -995,9 +1014,15 @@ static const per_sequence_t ECGI_sequence[] = {
static int
dissect_m2ap_ECGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 82 "./asn1/m2ap/m2ap.cnf"
struct m2ap_private_data *m2ap_data = m2ap_get_private_data(actx->pinfo);
m2ap_data->number_type = E212_ECGI;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m2ap_ECGI, ECGI_sequence);
return offset;
}
@ -1331,7 +1356,7 @@ dissect_m2ap_GTP_TEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
static int
dissect_m2ap_IPAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 79 "./asn1/m2ap/m2ap.cnf"
#line 87 "./asn1/m2ap/m2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
4, 16, FALSE, &parameter_tvb);
@ -2032,7 +2057,7 @@ static const per_sequence_t SessionStartRequest_sequence[] = {
static int
dissect_m2ap_SessionStartRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 103 "./asn1/m2ap/m2ap.cnf"
#line 111 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Session Start Request");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2049,7 +2074,7 @@ static const per_sequence_t SessionStartResponse_sequence[] = {
static int
dissect_m2ap_SessionStartResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 105 "./asn1/m2ap/m2ap.cnf"
#line 113 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Session Start Response");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2066,7 +2091,7 @@ static const per_sequence_t SessionStartFailure_sequence[] = {
static int
dissect_m2ap_SessionStartFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 107 "./asn1/m2ap/m2ap.cnf"
#line 115 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Session Start Failure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2083,7 +2108,7 @@ static const per_sequence_t SessionStopRequest_sequence[] = {
static int
dissect_m2ap_SessionStopRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 109 "./asn1/m2ap/m2ap.cnf"
#line 117 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Session Stop Request");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2100,7 +2125,7 @@ static const per_sequence_t SessionStopResponse_sequence[] = {
static int
dissect_m2ap_SessionStopResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 111 "./asn1/m2ap/m2ap.cnf"
#line 119 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Session Stop Response");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2117,7 +2142,7 @@ static const per_sequence_t SessionUpdateRequest_sequence[] = {
static int
dissect_m2ap_SessionUpdateRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 113 "./asn1/m2ap/m2ap.cnf"
#line 121 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Session Update Request");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2134,7 +2159,7 @@ static const per_sequence_t SessionUpdateResponse_sequence[] = {
static int
dissect_m2ap_SessionUpdateResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 115 "./asn1/m2ap/m2ap.cnf"
#line 123 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Session Update Response");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2151,7 +2176,7 @@ static const per_sequence_t SessionUpdateFailure_sequence[] = {
static int
dissect_m2ap_SessionUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 117 "./asn1/m2ap/m2ap.cnf"
#line 125 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Session Update Failure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2168,7 +2193,7 @@ static const per_sequence_t MbmsSchedulingInformation_sequence[] = {
static int
dissect_m2ap_MbmsSchedulingInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 119 "./asn1/m2ap/m2ap.cnf"
#line 127 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Scheduling Information");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2273,7 +2298,7 @@ static const per_sequence_t MbmsSchedulingInformationResponse_sequence[] = {
static int
dissect_m2ap_MbmsSchedulingInformationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 121 "./asn1/m2ap/m2ap.cnf"
#line 129 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Scheduling Information Response");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2290,7 +2315,7 @@ static const per_sequence_t M2SetupRequest_sequence[] = {
static int
dissect_m2ap_M2SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 123 "./asn1/m2ap/m2ap.cnf"
#line 131 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "M2 Setup Request");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2321,7 +2346,7 @@ static const per_sequence_t M2SetupResponse_sequence[] = {
static int
dissect_m2ap_M2SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 125 "./asn1/m2ap/m2ap.cnf"
#line 133 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "M2 Setup Response");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2352,7 +2377,7 @@ static const per_sequence_t M2SetupFailure_sequence[] = {
static int
dissect_m2ap_M2SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 127 "./asn1/m2ap/m2ap.cnf"
#line 135 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "M2 Setup Failure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2369,7 +2394,7 @@ static const per_sequence_t ENBConfigurationUpdate_sequence[] = {
static int
dissect_m2ap_ENBConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 129 "./asn1/m2ap/m2ap.cnf"
#line 137 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "eNB Configuration Update");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2400,7 +2425,7 @@ static const per_sequence_t ENBConfigurationUpdateAcknowledge_sequence[] = {
static int
dissect_m2ap_ENBConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 131 "./asn1/m2ap/m2ap.cnf"
#line 139 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "eNB Configuration Update Acknowledge");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2417,7 +2442,7 @@ static const per_sequence_t ENBConfigurationUpdateFailure_sequence[] = {
static int
dissect_m2ap_ENBConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 133 "./asn1/m2ap/m2ap.cnf"
#line 141 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "eNB Configuration Update Failure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2434,7 +2459,7 @@ static const per_sequence_t MCEConfigurationUpdate_sequence[] = {
static int
dissect_m2ap_MCEConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 135 "./asn1/m2ap/m2ap.cnf"
#line 143 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MCE Configuration Update");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2451,7 +2476,7 @@ static const per_sequence_t MCEConfigurationUpdateAcknowledge_sequence[] = {
static int
dissect_m2ap_MCEConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 137 "./asn1/m2ap/m2ap.cnf"
#line 145 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MCE Configuration Update Acknowledge");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2468,7 +2493,7 @@ static const per_sequence_t MCEConfigurationUpdateFailure_sequence[] = {
static int
dissect_m2ap_MCEConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 139 "./asn1/m2ap/m2ap.cnf"
#line 147 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MCE Configuration Update Failure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2485,7 +2510,7 @@ static const per_sequence_t ErrorIndication_sequence[] = {
static int
dissect_m2ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 141 "./asn1/m2ap/m2ap.cnf"
#line 149 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "Error Indication");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2502,7 +2527,7 @@ static const per_sequence_t Reset_sequence[] = {
static int
dissect_m2ap_Reset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 143 "./asn1/m2ap/m2ap.cnf"
#line 151 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "Reset");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2570,7 +2595,7 @@ static const per_sequence_t ResetAcknowledge_sequence[] = {
static int
dissect_m2ap_ResetAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 145 "./asn1/m2ap/m2ap.cnf"
#line 153 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "Reset Acknowledge");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2601,7 +2626,7 @@ static const per_sequence_t PrivateMessage_sequence[] = {
static int
dissect_m2ap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 147 "./asn1/m2ap/m2ap.cnf"
#line 155 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "Private Message");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2618,7 +2643,7 @@ static const per_sequence_t MbmsServiceCountingRequest_sequence[] = {
static int
dissect_m2ap_MbmsServiceCountingRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 149 "./asn1/m2ap/m2ap.cnf"
#line 157 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Service Counting Request");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2664,7 +2689,7 @@ static const per_sequence_t MbmsServiceCountingResponse_sequence[] = {
static int
dissect_m2ap_MbmsServiceCountingResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 151 "./asn1/m2ap/m2ap.cnf"
#line 159 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Service Counting Response");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2681,7 +2706,7 @@ static const per_sequence_t MbmsServiceCountingFailure_sequence[] = {
static int
dissect_m2ap_MbmsServiceCountingFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 153 "./asn1/m2ap/m2ap.cnf"
#line 161 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Service Counting Failure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2698,7 +2723,7 @@ static const per_sequence_t MbmsServiceCountingResultsReport_sequence[] = {
static int
dissect_m2ap_MbmsServiceCountingResultsReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 155 "./asn1/m2ap/m2ap.cnf"
#line 163 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Service Counting Results Report");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2755,7 +2780,7 @@ static const per_sequence_t MbmsOverloadNotification_sequence[] = {
static int
dissect_m2ap_MbmsOverloadNotification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 157 "./asn1/m2ap/m2ap.cnf"
#line 165 "./asn1/m2ap/m2ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "MBMS Overload Notification");
@ -3533,7 +3558,7 @@ static int dissect_M2AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto
/*--- End of included file: packet-m2ap-fn.c ---*/
#line 77 "./asn1/m2ap/packet-m2ap-template.c"
#line 93 "./asn1/m2ap/packet-m2ap-template.c"
static int
dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
@ -4345,7 +4370,7 @@ proto_register_m2ap(void) {
"UnsuccessfulOutcome_value", HFILL }},
/*--- End of included file: packet-m2ap-hfarr.c ---*/
#line 144 "./asn1/m2ap/packet-m2ap-template.c"
#line 160 "./asn1/m2ap/packet-m2ap-template.c"
};
/* List of subtrees */
@ -4445,7 +4470,7 @@ proto_register_m2ap(void) {
&ett_m2ap_UnsuccessfulOutcome,
/*--- End of included file: packet-m2ap-ettarr.c ---*/
#line 152 "./asn1/m2ap/packet-m2ap-template.c"
#line 168 "./asn1/m2ap/packet-m2ap-template.c"
};
expert_module_t* expert_m2ap;
@ -4559,5 +4584,5 @@ proto_reg_handoff_m2ap(void)
/*--- End of included file: packet-m2ap-dis-tab.c ---*/
#line 184 "./asn1/m2ap/packet-m2ap-template.c"
#line 200 "./asn1/m2ap/packet-m2ap-template.c"
}

View File

@ -26,6 +26,7 @@
#include <epan/asn1.h>
#include <epan/sctpppids.h>
#include <epan/expert.h>
#include <epan/proto_data.h>
#include "packet-ber.h"
#include "packet-per.h"
@ -95,7 +96,7 @@ typedef enum _ProtocolIE_ID_enum {
} ProtocolIE_ID_enum;
/*--- End of included file: packet-m3ap-val.h ---*/
#line 39 "./asn1/m3ap/packet-m3ap-template.c"
#line 40 "./asn1/m3ap/packet-m3ap-template.c"
/* Initialize the protocol and registered fields */
static int proto_m3ap = -1;
@ -208,7 +209,7 @@ static int hf_m3ap_successfulOutcome_value = -1; /* SuccessfulOutcome_value */
static int hf_m3ap_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_value */
/*--- End of included file: packet-m3ap-hf.c ---*/
#line 48 "./asn1/m3ap/packet-m3ap-template.c"
#line 49 "./asn1/m3ap/packet-m3ap-template.c"
/* Initialize the subtree pointers */
static int ett_m3ap = -1;
@ -264,10 +265,14 @@ static gint ett_m3ap_SuccessfulOutcome = -1;
static gint ett_m3ap_UnsuccessfulOutcome = -1;
/*--- End of included file: packet-m3ap-ett.c ---*/
#line 53 "./asn1/m3ap/packet-m3ap-template.c"
#line 54 "./asn1/m3ap/packet-m3ap-template.c"
static expert_field ei_m3ap_invalid_ip_address_len = EI_INIT;
struct m3ap_private_data {
e212_number_type_t number_type;
};
enum{
INITIATING_MESSAGE,
SUCCESSFUL_OUTCOME,
@ -294,6 +299,17 @@ static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, pro
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
static struct m3ap_private_data*
m3ap_get_private_data(packet_info *pinfo)
{
struct m3ap_private_data *m3ap_data = (struct m3ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_m3ap, 0);
if (!m3ap_data) {
m3ap_data = wmem_new0(pinfo->pool, struct m3ap_private_data);
p_add_proto_data(pinfo->pool, pinfo, proto_m3ap, 0, m3ap_data);
}
return m3ap_data;
}
/*--- Included file: packet-m3ap-fn.c ---*/
#line 1 "./asn1/m3ap/packet-m3ap-fn.c"
@ -573,7 +589,7 @@ dissect_m3ap_PrivateIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
static int
dissect_m3ap_Absolute_Time_ofMBMS_Data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 150 "./asn1/m3ap/m3ap.cnf"
#line 157 "./asn1/m3ap/m3ap.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
@ -859,13 +875,15 @@ static int
dissect_m3ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 114 "./asn1/m3ap/m3ap.cnf"
tvbuff_t *parameter_tvb=NULL;
struct m3ap_private_data *m3ap_data = m3ap_get_private_data(actx->pinfo);
e212_number_type_t number_type = m3ap_data->number_type;
m3ap_data->number_type = E212_NONE;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3, 3, FALSE, &parameter_tvb);
if (!parameter_tvb)
return offset;
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, E212_NONE, FALSE);
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, number_type, FALSE);
return offset;
@ -891,9 +909,15 @@ static const per_sequence_t ECGI_sequence[] = {
static int
dissect_m3ap_ECGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 127 "./asn1/m3ap/m3ap.cnf"
struct m3ap_private_data *m3ap_data = m3ap_get_private_data(actx->pinfo);
m3ap_data->number_type = E212_ECGI;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_m3ap_ECGI, ECGI_sequence);
return offset;
}
@ -964,7 +988,7 @@ dissect_m3ap_GTP_TEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
static int
dissect_m3ap_IPAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 125 "./asn1/m3ap/m3ap.cnf"
#line 132 "./asn1/m3ap/m3ap.cnf"
tvbuff_t *parameter_tvb=NULL;
gint tvb_len;
proto_tree *subtree;
@ -1084,7 +1108,7 @@ dissect_m3ap_MBMSServiceArea1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
static int
dissect_m3ap_MBMS_Service_Area(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 164 "./asn1/m3ap/m3ap.cnf"
#line 171 "./asn1/m3ap/m3ap.cnf"
tvbuff_t *parameter_tvb=NULL;
guint16 tvb_len;
@ -1107,7 +1131,7 @@ dissect_m3ap_MBMS_Service_Area(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_m3ap_MBMS_Session_Duration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 178 "./asn1/m3ap/m3ap.cnf"
#line 185 "./asn1/m3ap/m3ap.cnf"
tvbuff_t *parameter_tvb=NULL;
guint16 tvb_len;
@ -1150,7 +1174,7 @@ dissect_m3ap_MCEname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
static int
dissect_m3ap_MinimumTimeToMBMSDataTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 194 "./asn1/m3ap/m3ap.cnf"
#line 201 "./asn1/m3ap/m3ap.cnf"
tvbuff_t *parameter_tvb=NULL;
guint16 tvb_len;
@ -1254,7 +1278,7 @@ static const per_sequence_t MBMSSessionStartRequest_sequence[] = {
static int
dissect_m3ap_MBMSSessionStartRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 208 "./asn1/m3ap/m3ap.cnf"
#line 215 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Request ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1271,7 +1295,7 @@ static const per_sequence_t MBMSSessionStartResponse_sequence[] = {
static int
dissect_m3ap_MBMSSessionStartResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 210 "./asn1/m3ap/m3ap.cnf"
#line 217 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Response ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1288,7 +1312,7 @@ static const per_sequence_t MBMSSessionStartFailure_sequence[] = {
static int
dissect_m3ap_MBMSSessionStartFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 212 "./asn1/m3ap/m3ap.cnf"
#line 219 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Failure ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1305,7 +1329,7 @@ static const per_sequence_t MBMSSessionStopRequest_sequence[] = {
static int
dissect_m3ap_MBMSSessionStopRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 214 "./asn1/m3ap/m3ap.cnf"
#line 221 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Stop Request ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1322,7 +1346,7 @@ static const per_sequence_t MBMSSessionStopResponse_sequence[] = {
static int
dissect_m3ap_MBMSSessionStopResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 216 "./asn1/m3ap/m3ap.cnf"
#line 223 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Stop Response ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1339,7 +1363,7 @@ static const per_sequence_t MBMSSessionUpdateRequest_sequence[] = {
static int
dissect_m3ap_MBMSSessionUpdateRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 218 "./asn1/m3ap/m3ap.cnf"
#line 225 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Request ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1356,7 +1380,7 @@ static const per_sequence_t MBMSSessionUpdateResponse_sequence[] = {
static int
dissect_m3ap_MBMSSessionUpdateResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 220 "./asn1/m3ap/m3ap.cnf"
#line 227 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Response ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1373,7 +1397,7 @@ static const per_sequence_t MBMSSessionUpdateFailure_sequence[] = {
static int
dissect_m3ap_MBMSSessionUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 222 "./asn1/m3ap/m3ap.cnf"
#line 229 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Failure ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1390,7 +1414,7 @@ static const per_sequence_t ErrorIndication_sequence[] = {
static int
dissect_m3ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 224 "./asn1/m3ap/m3ap.cnf"
#line 231 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"Error Indication ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1407,7 +1431,7 @@ static const per_sequence_t Reset_sequence[] = {
static int
dissect_m3ap_Reset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 226 "./asn1/m3ap/m3ap.cnf"
#line 233 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"Reset ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1475,7 +1499,7 @@ static const per_sequence_t ResetAcknowledge_sequence[] = {
static int
dissect_m3ap_ResetAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 228 "./asn1/m3ap/m3ap.cnf"
#line 235 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"Reset Acknowledge ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1506,7 +1530,7 @@ static const per_sequence_t PrivateMessage_sequence[] = {
static int
dissect_m3ap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 230 "./asn1/m3ap/m3ap.cnf"
#line 237 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"Private Message ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1523,7 +1547,7 @@ static const per_sequence_t M3SetupRequest_sequence[] = {
static int
dissect_m3ap_M3SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 238 "./asn1/m3ap/m3ap.cnf"
#line 245 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Request ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1554,7 +1578,7 @@ static const per_sequence_t M3SetupResponse_sequence[] = {
static int
dissect_m3ap_M3SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 240 "./asn1/m3ap/m3ap.cnf"
#line 247 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Response ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1571,7 +1595,7 @@ static const per_sequence_t M3SetupFailure_sequence[] = {
static int
dissect_m3ap_M3SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 242 "./asn1/m3ap/m3ap.cnf"
#line 249 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Failure ");
@ -1590,7 +1614,7 @@ static const per_sequence_t MCEConfigurationUpdate_sequence[] = {
static int
dissect_m3ap_MCEConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 232 "./asn1/m3ap/m3ap.cnf"
#line 239 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1607,7 +1631,7 @@ static const per_sequence_t MCEConfigurationUpdateAcknowledge_sequence[] = {
static int
dissect_m3ap_MCEConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 234 "./asn1/m3ap/m3ap.cnf"
#line 241 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update Acknowledge ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -1624,7 +1648,7 @@ static const per_sequence_t MCEConfigurationUpdateFailure_sequence[] = {
static int
dissect_m3ap_MCEConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 236 "./asn1/m3ap/m3ap.cnf"
#line 243 "./asn1/m3ap/m3ap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update Failure ");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -2081,7 +2105,7 @@ static int dissect_M3AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto
/*--- End of included file: packet-m3ap-fn.c ---*/
#line 83 "./asn1/m3ap/packet-m3ap-template.c"
#line 99 "./asn1/m3ap/packet-m3ap-template.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
@ -2549,7 +2573,7 @@ void proto_register_m3ap(void) {
"UnsuccessfulOutcome_value", HFILL }},
/*--- End of included file: packet-m3ap-hfarr.c ---*/
#line 150 "./asn1/m3ap/packet-m3ap-template.c"
#line 166 "./asn1/m3ap/packet-m3ap-template.c"
};
/* List of subtrees */
@ -2607,7 +2631,7 @@ void proto_register_m3ap(void) {
&ett_m3ap_UnsuccessfulOutcome,
/*--- End of included file: packet-m3ap-ettarr.c ---*/
#line 157 "./asn1/m3ap/packet-m3ap-template.c"
#line 173 "./asn1/m3ap/packet-m3ap-template.c"
};
expert_module_t* expert_m3ap;
@ -2693,7 +2717,7 @@ proto_reg_handoff_m3ap(void)
/*--- End of included file: packet-m3ap-dis-tab.c ---*/
#line 195 "./asn1/m3ap/packet-m3ap-template.c"
#line 211 "./asn1/m3ap/packet-m3ap-template.c"
dissector_add_uint("m3ap.extension", 17, create_dissector_handle(dissect_AllocationAndRetentionPriority_PDU, proto_m3ap));
}
else {