aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/s1ap
diff options
context:
space:
mode:
authorAndersBroman <anders.broman@ericsson.com>2014-10-17 13:57:56 +0200
committerAnders Broman <a.broman58@gmail.com>2014-10-17 12:01:27 +0000
commit0ceeddee17571fa99a4cb35625a8e3c2bdca97d2 (patch)
tree3ae01c23317c96d17e0fcd0a0ad668487797a9c0 /asn1/s1ap
parent9d1afef1dfd3af626c471debe7f09f41d67c401f (diff)
Dissect CDMA2000 PDU if GCSNA dissector exists.
Change-Id: I866fb9bbc3e94df63231959d6745f3d45ca84020 Reviewed-on: https://code.wireshark.org/review/4772 Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'asn1/s1ap')
-rw-r--r--asn1/s1ap/packet-s1ap-template.c5
-rw-r--r--asn1/s1ap/s1ap.cnf14
2 files changed, 19 insertions, 0 deletions
diff --git a/asn1/s1ap/packet-s1ap-template.c b/asn1/s1ap/packet-s1ap-template.c
index 9f83e16fc7..61125e8812 100644
--- a/asn1/s1ap/packet-s1ap-template.c
+++ b/asn1/s1ap/packet-s1ap-template.c
@@ -81,6 +81,7 @@ static int ett_s1ap_ToSourceTransparentContainer = -1;
static int ett_s1ap_RRCContainer = -1;
static int ett_s1ap_UERadioCapability = -1;
static int ett_s1ap_RIMInformation = -1;
+static int ett_s1ap_Cdma2000PDU = -1;
#include "packet-s1ap-ett.c"
@@ -99,6 +100,8 @@ static guint32 handover_type_value;
static guint32 message_type;
static gboolean g_s1ap_dissect_container = TRUE;
+static dissector_handle_t gcsna_handle = NULL;
+
/* Dissector tables */
static dissector_table_t s1ap_ies_dissector_table;
static dissector_table_t s1ap_ies_p1_dissector_table;
@@ -191,6 +194,7 @@ proto_reg_handoff_s1ap(void)
static guint SctpPort;
s1ap_handle = find_dissector("s1ap");
+ gcsna_handle = find_dissector("gcsna");
if (!Initialized) {
nas_eps_handle = find_dissector("nas-eps");
@@ -239,6 +243,7 @@ void proto_register_s1ap(void) {
&ett_s1ap_RRCContainer,
&ett_s1ap_UERadioCapability,
&ett_s1ap_RIMInformation,
+ &ett_s1ap_Cdma2000PDU,
#include "packet-s1ap-ettarr.c"
};
diff --git a/asn1/s1ap/s1ap.cnf b/asn1/s1ap/s1ap.cnf
index 39da98c6f3..0815dcd167 100644
--- a/asn1/s1ap/s1ap.cnf
+++ b/asn1/s1ap/s1ap.cnf
@@ -506,6 +506,20 @@ if (g_s1ap_dissect_container) {
}
+#.FN_BODY Cdma2000PDU VAL_PTR = &parameter_tvb
+
+ tvbuff_t *parameter_tvb;
+ proto_tree *subtree = NULL;
+
+%(DEFAULT_BODY)s
+ if (!parameter_tvb)
+ return offset;
+
+if (gcsna_handle) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_Cdma2000PDU);
+ call_dissector(gcsna_handle, parameter_tvb, %(ACTX)s->pinfo, subtree);
+}
+
#.TYPE_ATTR
ProtocolExtensionID TYPE = FT_UINT8 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS = &s1ap_ProtocolIE_ID_vals_ext