X2AP: upgrade dissector to v13.5.0

Also get rid of two global variables

Change-Id: I8c20decb76f5c1773f58efd24d2e1e7d1177d358
Reviewed-on: https://code.wireshark.org/review/18029
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
This commit is contained in:
Pascal Quantin 2016-10-02 20:52:14 +02:00
parent 7a6610fc99
commit 470086f059
9 changed files with 249 additions and 161 deletions

View File

@ -1,4 +1,4 @@
-- 3GPP TS 36.423 V13.4.0 (2016-06)
-- 3GPP TS 36.423 V13.5.0 (2016-09)
-- 9.3.6 Common definitions
-- **************************************************************
--

View File

@ -1,4 +1,4 @@
-- 3GPP TS 36.423 V13.4.0 (2016-06)
-- 3GPP TS 36.423 V13.5.0 (2016-09)
-- 9.3.7 Constant Definitions
-- **************************************************************
--

View File

@ -1,4 +1,4 @@
-- 3GPP TS 36.423 V13.4.0 (2016-06)
-- 3GPP TS 36.423 V13.5.0 (2016-09)
-- 9.3.8 Container Definitions
-- **************************************************************
--

View File

@ -1,4 +1,4 @@
-- 3GPP TS 36.423 V13.4.0 (2016-06)
-- 3GPP TS 36.423 V13.5.0 (2016-09)
-- 9.3.5 Information Element Definitions
-- **************************************************************
--

View File

@ -1,4 +1,4 @@
-- 3GPP TS 36.423 V13.4.0 (2016-06)
-- 3GPP TS 36.423 V13.5.0 (2016-09)
-- 9.3.4 PDU Definitions
-- **************************************************************
--

View File

@ -1,4 +1,4 @@
-- 3GPP TS 36.423 V13.4.0 (2016-06)
-- 3GPP TS 36.423 V13.5.0 (2016-09)
-- 9.3.3 Elementary Procedure Definitions
-- **************************************************************
--

View File

@ -24,7 +24,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Ref:
* 3GPP TS 36.423 V13.4.0 (2016-06)
* 3GPP TS 36.423 V13.5.0 (2016-09)
*/
#include "config.h"
@ -34,6 +34,7 @@
#include <epan/asn1.h>
#include <epan/prefs.h>
#include <epan/sctpppids.h>
#include <epan/proto_data.h>
#include "packet-per.h"
#include "packet-e212.h"
@ -136,10 +137,25 @@ static int ett_x2ap_transmissionModes = -1;
static int ett_x2ap_X2AP_Message = -1;
#include "packet-x2ap-ett.c"
struct x2ap_private_data {
guint32 procedure_code;
guint32 protocol_ie_id;
};
enum {
X2AP_RRC_CONTEXT_LTE,
X2AP_RRC_CONTEXT_NBIOT
};
static const enum_val_t x2ap_rrc_context_vals[] = {
{"lte", "LTE", X2AP_RRC_CONTEXT_LTE},
{"nb-iot","NB-IoT", X2AP_RRC_CONTEXT_NBIOT},
{NULL, NULL, -1}
};
/* Global variables */
static guint32 ProcedureCode;
static guint32 ProtocolIE_ID;
static guint gbl_x2apSctpPort=SCTP_PORT_X2AP;
static gint g_x2ap_dissect_rrc_context_as = X2AP_RRC_CONTEXT_LTE;
/* Dissector tables */
static dissector_table_t x2ap_ies_dissector_table;
@ -197,31 +213,52 @@ x2ap_Threshold_RSRQ_fmt(gchar *s, guint32 v)
g_snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB (%u)", ((float)v/2)-20, v);
}
static struct x2ap_private_data*
x2ap_get_private_data(packet_info *pinfo)
{
struct x2ap_private_data *x2ap_data = (struct x2ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_x2ap, 0);
if (!x2ap_data) {
x2ap_data = wmem_new0(pinfo->pool, struct x2ap_private_data);
p_add_proto_data(pinfo->pool, pinfo, proto_x2ap, 0, x2ap_data);
}
return x2ap_data;
}
#include "packet-x2ap-fn.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
return (dissector_try_uint(x2ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(pinfo);
return (dissector_try_uint(x2ap_ies_dissector_table, x2ap_data->protocol_ie_id, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
return (dissector_try_uint(x2ap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(pinfo);
return (dissector_try_uint(x2ap_extension_dissector_table, x2ap_data->protocol_ie_id, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
return (dissector_try_uint(x2ap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(pinfo);
return (dissector_try_uint(x2ap_proc_imsg_dissector_table, x2ap_data->procedure_code, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
return (dissector_try_uint(x2ap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(pinfo);
return (dissector_try_uint(x2ap_proc_sout_dissector_table, x2ap_data->procedure_code, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
return (dissector_try_uint(x2ap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(pinfo);
return (dissector_try_uint(x2ap_proc_uout_dissector_table, x2ap_data->procedure_code, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
static int
@ -515,7 +552,9 @@ void proto_register_x2ap(void) {
"Set the SCTP port for X2AP messages",
10,
&gbl_x2apSctpPort);
prefs_register_enum_preference(x2ap_module, "dissect_rrc_context_as", "Dissect RRC Context as",
"Select whether RRC Context should be dissected as legacy LTE or NB-IOT",
&g_x2ap_dissect_rrc_context_as, x2ap_rrc_context_vals, FALSE);
}
@ -523,25 +562,24 @@ void proto_register_x2ap(void) {
void
proto_reg_handoff_x2ap(void)
{
static gboolean Initialized=FALSE;
static guint SctpPort;
static gboolean Initialized=FALSE;
static guint SctpPort;
if (!Initialized) {
dissector_add_for_decode_as("sctp.port", x2ap_handle);
dissector_add_uint("sctp.ppi", X2AP_PAYLOAD_PROTOCOL_ID, x2ap_handle);
Initialized=TRUE;
if (!Initialized) {
dissector_add_for_decode_as("sctp.port", x2ap_handle);
dissector_add_uint("sctp.ppi", X2AP_PAYLOAD_PROTOCOL_ID, x2ap_handle);
Initialized=TRUE;
#include "packet-x2ap-dis-tab.c"
} else {
if (SctpPort != 0) {
dissector_delete_uint("sctp.port", SctpPort, x2ap_handle);
}
}
SctpPort=gbl_x2apSctpPort;
if (SctpPort != 0) {
dissector_add_uint("sctp.port", SctpPort, x2ap_handle);
}
} else {
if (SctpPort != 0) {
dissector_delete_uint("sctp.port", SctpPort, x2ap_handle);
}
}
SctpPort=gbl_x2apSctpPort;
if (SctpPort != 0) {
dissector_add_uint("sctp.port", SctpPort, x2ap_handle);
}
}

View File

@ -47,10 +47,12 @@ ProtocolIE-ContainerPair
ProtocolIE-ContainerPairList
#.END
#.FN_PARS ProtocolIE-ID VAL_PTR = &ProtocolIE_ID
#.FN_BODY ProtocolIE-ID VAL_PTR = &x2ap_data->protocol_ie_id
struct x2ap_private_data *x2ap_data = x2ap_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(ProtocolIE_ID, &x2ap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(x2ap_data->protocol_ie_id, &x2ap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
}
#.END
@ -58,14 +60,11 @@ ProtocolIE-ContainerPairList
#.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue
#.FN_PARS ProcedureCode VAL_PTR = &ProcedureCode
#.FN_BODY ProcedureCode VAL_PTR = &x2ap_data->procedure_code
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(actx->pinfo);
%(DEFAULT_BODY)s
#.END
#.FN_HDR ProcedureCode
ProcedureCode = 0xFFFF;
#.END
#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue
#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue
@ -136,7 +135,11 @@ Port-Number TYPE = FT_UINT16 DISPLAY = BASE_DEC
return offset;
subtree = proto_item_add_subtree(actx->created_item, ett_x2ap_RRC_Context);
dissect_lte_rrc_HandoverPreparationInformation_PDU(parameter_tvb, actx->pinfo, subtree, NULL);
if (g_x2ap_dissect_rrc_context_as == X2AP_RRC_CONTEXT_NBIOT) {
dissect_lte_rrc_HandoverPreparationInformation_NB_PDU(parameter_tvb, actx->pinfo, subtree, NULL);
} else {
dissect_lte_rrc_HandoverPreparationInformation_PDU(parameter_tvb, actx->pinfo, subtree, NULL);
}
#.FN_BODY UE-HistoryInformationFromTheUE VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb = NULL;

View File

@ -32,7 +32,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Ref:
* 3GPP TS 36.423 V13.4.0 (2016-06)
* 3GPP TS 36.423 V13.5.0 (2016-09)
*/
#include "config.h"
@ -42,6 +42,7 @@
#include <epan/asn1.h>
#include <epan/prefs.h>
#include <epan/sctpppids.h>
#include <epan/proto_data.h>
#include "packet-per.h"
#include "packet-e212.h"
@ -307,7 +308,7 @@ typedef enum _ProtocolIE_ID_enum {
} ProtocolIE_ID_enum;
/*--- End of included file: packet-x2ap-val.h ---*/
#line 57 "./asn1/x2ap/packet-x2ap-template.c"
#line 58 "./asn1/x2ap/packet-x2ap-template.c"
/* Initialize the protocol and registered fields */
static int proto_x2ap = -1;
@ -941,7 +942,7 @@ static int hf_x2ap_successfulOutcome_value = -1; /* SuccessfulOutcome_value */
static int hf_x2ap_value = -1; /* UnsuccessfulOutcome_value */
/*--- End of included file: packet-x2ap-hf.c ---*/
#line 114 "./asn1/x2ap/packet-x2ap-template.c"
#line 115 "./asn1/x2ap/packet-x2ap-template.c"
/* Initialize the subtree pointers */
static int ett_x2ap = -1;
@ -1242,12 +1243,27 @@ static gint ett_x2ap_SuccessfulOutcome = -1;
static gint ett_x2ap_UnsuccessfulOutcome = -1;
/*--- End of included file: packet-x2ap-ett.c ---*/
#line 138 "./asn1/x2ap/packet-x2ap-template.c"
#line 139 "./asn1/x2ap/packet-x2ap-template.c"
struct x2ap_private_data {
guint32 procedure_code;
guint32 protocol_ie_id;
};
enum {
X2AP_RRC_CONTEXT_LTE,
X2AP_RRC_CONTEXT_NBIOT
};
static const enum_val_t x2ap_rrc_context_vals[] = {
{"lte", "LTE", X2AP_RRC_CONTEXT_LTE},
{"nb-iot","NB-IoT", X2AP_RRC_CONTEXT_NBIOT},
{NULL, NULL, -1}
};
/* Global variables */
static guint32 ProcedureCode;
static guint32 ProtocolIE_ID;
static guint gbl_x2apSctpPort=SCTP_PORT_X2AP;
static gint g_x2ap_dissect_rrc_context_as = X2AP_RRC_CONTEXT_LTE;
/* Dissector tables */
static dissector_table_t x2ap_ies_dissector_table;
@ -1305,6 +1321,17 @@ x2ap_Threshold_RSRQ_fmt(gchar *s, guint32 v)
g_snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB (%u)", ((float)v/2)-20, v);
}
static struct x2ap_private_data*
x2ap_get_private_data(packet_info *pinfo)
{
struct x2ap_private_data *x2ap_data = (struct x2ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_x2ap, 0);
if (!x2ap_data) {
x2ap_data = wmem_new0(pinfo->pool, struct x2ap_private_data);
p_add_proto_data(pinfo->pool, pinfo, proto_x2ap, 0, x2ap_data);
}
return x2ap_data;
}
/*--- Included file: packet-x2ap-fn.c ---*/
#line 1 "./asn1/x2ap/packet-x2ap-fn.c"
@ -1403,11 +1430,12 @@ static value_string_ext x2ap_ProcedureCode_vals_ext = VALUE_STRING_EXT_INIT(x2ap
static int
dissect_x2ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 65 "./asn1/x2ap/x2ap.cnf"
ProcedureCode = 0xFFFF;
#line 64 "./asn1/x2ap/x2ap.cnf"
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(actx->pinfo);
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, &ProcedureCode, FALSE);
0U, 255U, &x2ap_data->procedure_code, FALSE);
return offset;
}
@ -1595,12 +1623,16 @@ static value_string_ext x2ap_ProtocolIE_ID_vals_ext = VALUE_STRING_EXT_INIT(x2ap
static int
dissect_x2ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 51 "./asn1/x2ap/x2ap.cnf"
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(actx->pinfo);
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, maxProtocolIEs, &ProtocolIE_ID, FALSE);
0U, maxProtocolIEs, &x2ap_data->protocol_ie_id, FALSE);
#line 52 "./asn1/x2ap/x2ap.cnf"
#line 54 "./asn1/x2ap/x2ap.cnf"
if (tree) {
proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(ProtocolIE_ID, &x2ap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(x2ap_data->protocol_ie_id, &x2ap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
}
return offset;
@ -2092,7 +2124,7 @@ dissect_x2ap_AllocationAndRetentionPriority(tvbuff_t *tvb _U_, int offset _U_, a
static int
dissect_x2ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 295 "./asn1/x2ap/x2ap.cnf"
#line 298 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
proto_tree *subtree;
@ -2173,7 +2205,7 @@ dissect_x2ap_CellBasedMDT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
static int
dissect_x2ap_TAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 279 "./asn1/x2ap/x2ap.cnf"
#line 282 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
2, 2, FALSE, &parameter_tvb);
@ -2355,7 +2387,7 @@ dissect_x2ap_BitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
0U, G_GUINT64_CONSTANT(10000000000), NULL, FALSE);
#line 310 "./asn1/x2ap/x2ap.cnf"
#line 313 "./asn1/x2ap/x2ap.cnf"
proto_item_append_text(actx->created_item, "bit/s");
@ -3443,7 +3475,7 @@ dissect_x2ap_DL_Total_PRB_usage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
static int
dissect_x2ap_T_transmissionModes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 424 "./asn1/x2ap/x2ap.cnf"
#line 427 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
8, 8, FALSE, &parameter_tvb, NULL);
@ -3693,7 +3725,7 @@ dissect_x2ap_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
static int
dissect_x2ap_EncryptionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 331 "./asn1/x2ap/x2ap.cnf"
#line 334 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
16, 16, TRUE, &parameter_tvb, NULL);
@ -3957,7 +3989,7 @@ dissect_x2ap_EUTRA_Mode_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_x2ap_EUTRANTraceID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 228 "./asn1/x2ap/x2ap.cnf"
#line 231 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@ -3997,7 +4029,7 @@ dissect_x2ap_ExpectedActivityPeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1U, 181U, NULL, FALSE);
#line 415 "./asn1/x2ap/x2ap.cnf"
#line 418 "./asn1/x2ap/x2ap.cnf"
proto_item_append_text(actx->created_item, "s");
@ -4011,7 +4043,7 @@ dissect_x2ap_ExpectedIdlePeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1U, 181U, NULL, FALSE);
#line 418 "./asn1/x2ap/x2ap.cnf"
#line 421 "./asn1/x2ap/x2ap.cnf"
proto_item_append_text(actx->created_item, "s");
@ -4213,7 +4245,7 @@ dissect_x2ap_ForbiddenTAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
static int
dissect_x2ap_LAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 288 "./asn1/x2ap/x2ap.cnf"
#line 291 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
2, 2, FALSE, &parameter_tvb);
@ -4327,7 +4359,7 @@ dissect_x2ap_GlobalENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
static int
dissect_x2ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 95 "./asn1/x2ap/x2ap.cnf"
#line 94 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
proto_tree *subtree;
int len;
@ -4387,7 +4419,7 @@ dissect_x2ap_GTPtunnelEndpoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_x2ap_MME_Group_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 324 "./asn1/x2ap/x2ap.cnf"
#line 327 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
2, 2, FALSE, &parameter_tvb);
@ -4435,7 +4467,7 @@ dissect_x2ap_GUGroupIDList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static int
dissect_x2ap_MME_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 315 "./asn1/x2ap/x2ap.cnf"
#line 318 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
1, 1, FALSE, &parameter_tvb);
@ -4539,7 +4571,7 @@ dissect_x2ap_HWLoadIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_x2ap_IntegrityProtectionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 346 "./asn1/x2ap/x2ap.cnf"
#line 349 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
16, 16, TRUE, &parameter_tvb, NULL);
@ -4565,7 +4597,7 @@ dissect_x2ap_IntegrityProtectionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, as
static int
dissect_x2ap_InterfacesToTrace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 239 "./asn1/x2ap/x2ap.cnf"
#line 242 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
8, 8, FALSE, &parameter_tvb, NULL);
@ -4611,7 +4643,7 @@ dissect_x2ap_Time_UE_StayedInCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 4095U, NULL, FALSE);
#line 361 "./asn1/x2ap/x2ap.cnf"
#line 364 "./asn1/x2ap/x2ap.cnf"
proto_item_append_text(actx->created_item, "s");
@ -4693,7 +4725,7 @@ dissect_x2ap_LastVisitedCell_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
dissect_x2ap_LHN_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 445 "./asn1/x2ap/x2ap.cnf"
#line 448 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
32, 256, FALSE, &parameter_tvb);
@ -5126,7 +5158,7 @@ dissect_x2ap_MDT_Activation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_x2ap_MeasurementsToActivate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 376 "./asn1/x2ap/x2ap.cnf"
#line 379 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
8, 8, FALSE, &parameter_tvb, NULL);
@ -5190,7 +5222,7 @@ dissect_x2ap_MDTPLMNList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
static int
dissect_x2ap_MDT_Location_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 401 "./asn1/x2ap/x2ap.cnf"
#line 404 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
8, 8, FALSE, &parameter_tvb, NULL);
@ -5225,7 +5257,7 @@ dissect_x2ap_Measurement_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_x2ap_MeNBtoSeNBContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 210 "./asn1/x2ap/x2ap.cnf"
#line 213 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@ -5488,7 +5520,7 @@ dissect_x2ap_Number_of_Antennaports(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static int
dissect_x2ap_Port_Number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 120 "./asn1/x2ap/x2ap.cnf"
#line 119 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
2, 2, FALSE, &parameter_tvb);
@ -5792,7 +5824,7 @@ dissect_x2ap_RelativeNarrowbandTxPower(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static int
dissect_x2ap_ReportCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 151 "./asn1/x2ap/x2ap.cnf"
#line 154 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
32, 32, FALSE, &parameter_tvb, NULL);
@ -5891,7 +5923,7 @@ dissect_x2ap_ResumeID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
static int
dissect_x2ap_RRC_Context(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 131 "./asn1/x2ap/x2ap.cnf"
#line 130 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
proto_tree *subtree;
@ -5902,7 +5934,11 @@ dissect_x2ap_RRC_Context(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
return offset;
subtree = proto_item_add_subtree(actx->created_item, ett_x2ap_RRC_Context);
dissect_lte_rrc_HandoverPreparationInformation_PDU(parameter_tvb, actx->pinfo, subtree, NULL);
if (g_x2ap_dissect_rrc_context_as == X2AP_RRC_CONTEXT_NBIOT) {
dissect_lte_rrc_HandoverPreparationInformation_NB_PDU(parameter_tvb, actx->pinfo, subtree, NULL);
} else {
dissect_lte_rrc_HandoverPreparationInformation_PDU(parameter_tvb, actx->pinfo, subtree, NULL);
}
@ -6057,7 +6093,7 @@ dissect_x2ap_SeNBSecurityKey(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_x2ap_SeNBtoMeNBContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 219 "./asn1/x2ap/x2ap.cnf"
#line 222 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@ -6186,7 +6222,7 @@ dissect_x2ap_TargetCellInUTRAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_x2ap_TargeteNBtoSource_eNBTransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 76 "./asn1/x2ap/x2ap.cnf"
#line 75 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
proto_tree *subtree;
@ -6258,7 +6294,7 @@ dissect_x2ap_TraceDepth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
static int
dissect_x2ap_TraceCollectionEntityIPAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 254 "./asn1/x2ap/x2ap.cnf"
#line 257 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
proto_tree *subtree;
int len;
@ -6371,7 +6407,7 @@ dissect_x2ap_UE_HistoryInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
dissect_x2ap_UE_HistoryInformationFromTheUE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 142 "./asn1/x2ap/x2ap.cnf"
#line 145 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
proto_tree *subtree;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@ -6421,7 +6457,7 @@ dissect_x2ap_UE_X2AP_ID_Extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
dissect_x2ap_UE_RLF_Report_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 192 "./asn1/x2ap/x2ap.cnf"
#line 195 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@ -6441,7 +6477,7 @@ dissect_x2ap_UE_RLF_Report_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static int
dissect_x2ap_UE_RLF_Report_Container_for_extended_bands(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 201 "./asn1/x2ap/x2ap.cnf"
#line 204 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@ -6531,7 +6567,7 @@ static const per_sequence_t HandoverRequest_sequence[] = {
static int
dissect_x2ap_HandoverRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 459 "./asn1/x2ap/x2ap.cnf"
#line 462 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6630,7 +6666,7 @@ static const per_sequence_t HandoverRequestAcknowledge_sequence[] = {
static int
dissect_x2ap_HandoverRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 461 "./asn1/x2ap/x2ap.cnf"
#line 464 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverRequestAcknowledge");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6678,7 +6714,7 @@ static const per_sequence_t HandoverPreparationFailure_sequence[] = {
static int
dissect_x2ap_HandoverPreparationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 463 "./asn1/x2ap/x2ap.cnf"
#line 466 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverPreparationFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6695,7 +6731,7 @@ static const per_sequence_t HandoverReport_sequence[] = {
static int
dissect_x2ap_HandoverReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 501 "./asn1/x2ap/x2ap.cnf"
#line 504 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverReport");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6712,7 +6748,7 @@ static const per_sequence_t SNStatusTransfer_sequence[] = {
static int
dissect_x2ap_SNStatusTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 465 "./asn1/x2ap/x2ap.cnf"
#line 468 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SNStatusTransfer");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6761,7 +6797,7 @@ static const per_sequence_t UEContextRelease_sequence[] = {
static int
dissect_x2ap_UEContextRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 467 "./asn1/x2ap/x2ap.cnf"
#line 470 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextRelease");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6778,7 +6814,7 @@ static const per_sequence_t HandoverCancel_sequence[] = {
static int
dissect_x2ap_HandoverCancel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 469 "./asn1/x2ap/x2ap.cnf"
#line 472 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverCancel");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6795,7 +6831,7 @@ static const per_sequence_t ErrorIndication_sequence[] = {
static int
dissect_x2ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 471 "./asn1/x2ap/x2ap.cnf"
#line 474 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6812,7 +6848,7 @@ static const per_sequence_t ResetRequest_sequence[] = {
static int
dissect_x2ap_ResetRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 473 "./asn1/x2ap/x2ap.cnf"
#line 476 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6829,7 +6865,7 @@ static const per_sequence_t ResetResponse_sequence[] = {
static int
dissect_x2ap_ResetResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 475 "./asn1/x2ap/x2ap.cnf"
#line 478 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetResponse");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6846,7 +6882,7 @@ static const per_sequence_t X2SetupRequest_sequence[] = {
static int
dissect_x2ap_X2SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 477 "./asn1/x2ap/x2ap.cnf"
#line 480 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2SetupRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6863,7 +6899,7 @@ static const per_sequence_t X2SetupResponse_sequence[] = {
static int
dissect_x2ap_X2SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 479 "./asn1/x2ap/x2ap.cnf"
#line 482 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2SetupResponse");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6880,7 +6916,7 @@ static const per_sequence_t X2SetupFailure_sequence[] = {
static int
dissect_x2ap_X2SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 481 "./asn1/x2ap/x2ap.cnf"
#line 484 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2SetupFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6897,7 +6933,7 @@ static const per_sequence_t LoadInformation_sequence[] = {
static int
dissect_x2ap_LoadInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 483 "./asn1/x2ap/x2ap.cnf"
#line 486 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "LoadInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -6946,7 +6982,7 @@ static const per_sequence_t ENBConfigurationUpdate_sequence[] = {
static int
dissect_x2ap_ENBConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 485 "./asn1/x2ap/x2ap.cnf"
#line 488 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBConfigurationUpdate");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7008,7 +7044,7 @@ static const per_sequence_t ENBConfigurationUpdateAcknowledge_sequence[] = {
static int
dissect_x2ap_ENBConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 487 "./asn1/x2ap/x2ap.cnf"
#line 490 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBConfigurationUpdateAcknowledge");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7025,7 +7061,7 @@ static const per_sequence_t ENBConfigurationUpdateFailure_sequence[] = {
static int
dissect_x2ap_ENBConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 489 "./asn1/x2ap/x2ap.cnf"
#line 492 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBConfigurationUpdateFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7042,7 +7078,7 @@ static const per_sequence_t ResourceStatusRequest_sequence[] = {
static int
dissect_x2ap_ResourceStatusRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 491 "./asn1/x2ap/x2ap.cnf"
#line 494 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResourceStatusRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7121,7 +7157,7 @@ static const per_sequence_t ResourceStatusResponse_sequence[] = {
static int
dissect_x2ap_ResourceStatusResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 493 "./asn1/x2ap/x2ap.cnf"
#line 496 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResourceStatusResponse");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7178,7 +7214,7 @@ dissect_x2ap_MeasurementInitiationResult_Item(tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_x2ap_T_measurementFailedReportCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 170 "./asn1/x2ap/x2ap.cnf"
#line 173 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
@ -7229,7 +7265,7 @@ static const per_sequence_t ResourceStatusFailure_sequence[] = {
static int
dissect_x2ap_ResourceStatusFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 495 "./asn1/x2ap/x2ap.cnf"
#line 498 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResourceStatusFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7276,7 +7312,7 @@ static const per_sequence_t ResourceStatusUpdate_sequence[] = {
static int
dissect_x2ap_ResourceStatusUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 497 "./asn1/x2ap/x2ap.cnf"
#line 500 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResourceStatusUpdate");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7325,7 +7361,7 @@ static const per_sequence_t PrivateMessage_sequence[] = {
static int
dissect_x2ap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 499 "./asn1/x2ap/x2ap.cnf"
#line 502 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PrivateMessage");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7342,7 +7378,7 @@ static const per_sequence_t MobilityChangeRequest_sequence[] = {
static int
dissect_x2ap_MobilityChangeRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 505 "./asn1/x2ap/x2ap.cnf"
#line 508 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MobilityChangeRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7359,7 +7395,7 @@ static const per_sequence_t MobilityChangeAcknowledge_sequence[] = {
static int
dissect_x2ap_MobilityChangeAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 507 "./asn1/x2ap/x2ap.cnf"
#line 510 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MobilityChangeAcknowledge");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7376,7 +7412,7 @@ static const per_sequence_t MobilityChangeFailure_sequence[] = {
static int
dissect_x2ap_MobilityChangeFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 509 "./asn1/x2ap/x2ap.cnf"
#line 512 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MobilityChangeFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7393,7 +7429,7 @@ static const per_sequence_t RLFIndication_sequence[] = {
static int
dissect_x2ap_RLFIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 503 "./asn1/x2ap/x2ap.cnf"
#line 506 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RLFIndication");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7410,7 +7446,7 @@ static const per_sequence_t CellActivationRequest_sequence[] = {
static int
dissect_x2ap_CellActivationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 511 "./asn1/x2ap/x2ap.cnf"
#line 514 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "CellActivationRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7456,7 +7492,7 @@ static const per_sequence_t CellActivationResponse_sequence[] = {
static int
dissect_x2ap_CellActivationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 513 "./asn1/x2ap/x2ap.cnf"
#line 516 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "CellActivationResponse");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7502,7 +7538,7 @@ static const per_sequence_t CellActivationFailure_sequence[] = {
static int
dissect_x2ap_CellActivationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 515 "./asn1/x2ap/x2ap.cnf"
#line 518 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "CellActivationFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7519,7 +7555,7 @@ static const per_sequence_t X2Release_sequence[] = {
static int
dissect_x2ap_X2Release(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 517 "./asn1/x2ap/x2ap.cnf"
#line 520 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2Release");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7536,7 +7572,7 @@ static const per_sequence_t X2APMessageTransfer_sequence[] = {
static int
dissect_x2ap_X2APMessageTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 519 "./asn1/x2ap/x2ap.cnf"
#line 522 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2APMessageTransfer");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7565,7 +7601,7 @@ dissect_x2ap_RNL_Header(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
static int
dissect_x2ap_X2AP_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 450 "./asn1/x2ap/x2ap.cnf"
#line 453 "./asn1/x2ap/x2ap.cnf"
tvbuff_t *parameter_tvb;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &parameter_tvb);
@ -7587,7 +7623,7 @@ static const per_sequence_t SeNBAdditionRequest_sequence[] = {
static int
dissect_x2ap_SeNBAdditionRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 527 "./asn1/x2ap/x2ap.cnf"
#line 530 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBAdditionRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7675,7 +7711,7 @@ static const per_sequence_t SeNBAdditionRequestAcknowledge_sequence[] = {
static int
dissect_x2ap_SeNBAdditionRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 529 "./asn1/x2ap/x2ap.cnf"
#line 532 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBAdditionRequestAcknowledge");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7762,7 +7798,7 @@ static const per_sequence_t SeNBAdditionRequestReject_sequence[] = {
static int
dissect_x2ap_SeNBAdditionRequestReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 531 "./asn1/x2ap/x2ap.cnf"
#line 534 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBAdditionRequestReject");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7779,7 +7815,7 @@ static const per_sequence_t SeNBReconfigurationComplete_sequence[] = {
static int
dissect_x2ap_SeNBReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 533 "./asn1/x2ap/x2ap.cnf"
#line 536 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBReconfigurationComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -7849,7 +7885,7 @@ static const per_sequence_t SeNBModificationRequest_sequence[] = {
static int
dissect_x2ap_SeNBModificationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 535 "./asn1/x2ap/x2ap.cnf"
#line 538 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8096,7 +8132,7 @@ static const per_sequence_t SeNBModificationRequestAcknowledge_sequence[] = {
static int
dissect_x2ap_SeNBModificationRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 537 "./asn1/x2ap/x2ap.cnf"
#line 540 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationRequestAcknowledge");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8317,7 +8353,7 @@ static const per_sequence_t SeNBModificationRequestReject_sequence[] = {
static int
dissect_x2ap_SeNBModificationRequestReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 539 "./asn1/x2ap/x2ap.cnf"
#line 542 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationRequestReject");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8334,7 +8370,7 @@ static const per_sequence_t SeNBModificationRequired_sequence[] = {
static int
dissect_x2ap_SeNBModificationRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 541 "./asn1/x2ap/x2ap.cnf"
#line 544 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationRequired");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8381,7 +8417,7 @@ static const per_sequence_t SeNBModificationConfirm_sequence[] = {
static int
dissect_x2ap_SeNBModificationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 543 "./asn1/x2ap/x2ap.cnf"
#line 546 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationConfirm");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8398,7 +8434,7 @@ static const per_sequence_t SeNBModificationRefuse_sequence[] = {
static int
dissect_x2ap_SeNBModificationRefuse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 545 "./asn1/x2ap/x2ap.cnf"
#line 548 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationRefuse");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8415,7 +8451,7 @@ static const per_sequence_t SeNBReleaseRequest_sequence[] = {
static int
dissect_x2ap_SeNBReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 547 "./asn1/x2ap/x2ap.cnf"
#line 550 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBReleaseRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8501,7 +8537,7 @@ static const per_sequence_t SeNBReleaseRequired_sequence[] = {
static int
dissect_x2ap_SeNBReleaseRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 549 "./asn1/x2ap/x2ap.cnf"
#line 552 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBReleaseRequired");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8518,7 +8554,7 @@ static const per_sequence_t SeNBReleaseConfirm_sequence[] = {
static int
dissect_x2ap_SeNBReleaseConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 551 "./asn1/x2ap/x2ap.cnf"
#line 554 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBReleaseConfirm");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8604,7 +8640,7 @@ static const per_sequence_t SeNBCounterCheckRequest_sequence[] = {
static int
dissect_x2ap_SeNBCounterCheckRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 553 "./asn1/x2ap/x2ap.cnf"
#line 556 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBCounterCheckRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8662,7 +8698,7 @@ static const per_sequence_t X2RemovalRequest_sequence[] = {
static int
dissect_x2ap_X2RemovalRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 521 "./asn1/x2ap/x2ap.cnf"
#line 524 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2RemovalRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8679,7 +8715,7 @@ static const per_sequence_t X2RemovalResponse_sequence[] = {
static int
dissect_x2ap_X2RemovalResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 523 "./asn1/x2ap/x2ap.cnf"
#line 526 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2RemovalResponse");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8696,7 +8732,7 @@ static const per_sequence_t X2RemovalFailure_sequence[] = {
static int
dissect_x2ap_X2RemovalFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 525 "./asn1/x2ap/x2ap.cnf"
#line 528 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2RemovalFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8713,7 +8749,7 @@ static const per_sequence_t RetrieveUEContextRequest_sequence[] = {
static int
dissect_x2ap_RetrieveUEContextRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 555 "./asn1/x2ap/x2ap.cnf"
#line 558 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RetrieveUEContextRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8730,7 +8766,7 @@ static const per_sequence_t RetrieveUEContextResponse_sequence[] = {
static int
dissect_x2ap_RetrieveUEContextResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 557 "./asn1/x2ap/x2ap.cnf"
#line 560 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RetrieveUEContextResponse");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@ -8803,7 +8839,7 @@ static const per_sequence_t RetrieveUEContextFailure_sequence[] = {
static int
dissect_x2ap_RetrieveUEContextFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 559 "./asn1/x2ap/x2ap.cnf"
#line 562 "./asn1/x2ap/x2ap.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RetrieveUEContextFailure");
@ -10501,31 +10537,41 @@ static int dissect_X2AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto
/*--- End of included file: packet-x2ap-fn.c ---*/
#line 201 "./asn1/x2ap/packet-x2ap-template.c"
#line 228 "./asn1/x2ap/packet-x2ap-template.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
return (dissector_try_uint(x2ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(pinfo);
return (dissector_try_uint(x2ap_ies_dissector_table, x2ap_data->protocol_ie_id, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
return (dissector_try_uint(x2ap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(pinfo);
return (dissector_try_uint(x2ap_extension_dissector_table, x2ap_data->protocol_ie_id, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
return (dissector_try_uint(x2ap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(pinfo);
return (dissector_try_uint(x2ap_proc_imsg_dissector_table, x2ap_data->procedure_code, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
return (dissector_try_uint(x2ap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(pinfo);
return (dissector_try_uint(x2ap_proc_sout_dissector_table, x2ap_data->procedure_code, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
return (dissector_try_uint(x2ap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
struct x2ap_private_data *x2ap_data = x2ap_get_private_data(pinfo);
return (dissector_try_uint(x2ap_proc_uout_dissector_table, x2ap_data->procedure_code, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
static int
@ -13057,7 +13103,7 @@ void proto_register_x2ap(void) {
"UnsuccessfulOutcome_value", HFILL }},
/*--- End of included file: packet-x2ap-hfarr.c ---*/
#line 464 "./asn1/x2ap/packet-x2ap-template.c"
#line 501 "./asn1/x2ap/packet-x2ap-template.c"
};
/* List of subtrees */
@ -13360,7 +13406,7 @@ void proto_register_x2ap(void) {
&ett_x2ap_UnsuccessfulOutcome,
/*--- End of included file: packet-x2ap-ettarr.c ---*/
#line 490 "./asn1/x2ap/packet-x2ap-template.c"
#line 527 "./asn1/x2ap/packet-x2ap-template.c"
};
module_t *x2ap_module;
@ -13389,7 +13435,9 @@ void proto_register_x2ap(void) {
"Set the SCTP port for X2AP messages",
10,
&gbl_x2apSctpPort);
prefs_register_enum_preference(x2ap_module, "dissect_rrc_context_as", "Dissect RRC Context as",
"Select whether RRC Context should be dissected as legacy LTE or NB-IOT",
&g_x2ap_dissect_rrc_context_as, x2ap_rrc_context_vals, FALSE);
}
@ -13397,13 +13445,13 @@ void proto_register_x2ap(void) {
void
proto_reg_handoff_x2ap(void)
{
static gboolean Initialized=FALSE;
static guint SctpPort;
static gboolean Initialized=FALSE;
static guint SctpPort;
if (!Initialized) {
dissector_add_for_decode_as("sctp.port", x2ap_handle);
dissector_add_uint("sctp.ppi", X2AP_PAYLOAD_PROTOCOL_ID, x2ap_handle);
Initialized=TRUE;
if (!Initialized) {
dissector_add_for_decode_as("sctp.port", x2ap_handle);
dissector_add_uint("sctp.ppi", X2AP_PAYLOAD_PROTOCOL_ID, x2ap_handle);
Initialized=TRUE;
/*--- Included file: packet-x2ap-dis-tab.c ---*/
#line 1 "./asn1/x2ap/packet-x2ap-dis-tab.c"
@ -13633,18 +13681,17 @@ proto_reg_handoff_x2ap(void)
/*--- End of included file: packet-x2ap-dis-tab.c ---*/
#line 534 "./asn1/x2ap/packet-x2ap-template.c"
} else {
if (SctpPort != 0) {
dissector_delete_uint("sctp.port", SctpPort, x2ap_handle);
}
}
SctpPort=gbl_x2apSctpPort;
if (SctpPort != 0) {
dissector_add_uint("sctp.port", SctpPort, x2ap_handle);
}
#line 573 "./asn1/x2ap/packet-x2ap-template.c"
} else {
if (SctpPort != 0) {
dissector_delete_uint("sctp.port", SctpPort, x2ap_handle);
}
}
SctpPort=gbl_x2apSctpPort;
if (SctpPort != 0) {
dissector_add_uint("sctp.port", SctpPort, x2ap_handle);
}
}