aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/rnsap
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-05-11 08:42:23 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-05-11 08:42:23 +0000
commit1fe00a4c4463253e434d7dd5037cffaf66e63cad (patch)
treea21ddb315a2efdb4beedb91a52ff3750b1e71acb /asn1/rnsap
parent6a92b2a472944da55d398bd15bff2bc086a26a1d (diff)
Make it possible to dissect private IE's
svn path=/trunk/; revision=42570
Diffstat (limited to 'asn1/rnsap')
-rw-r--r--asn1/rnsap/packet-rnsap-template.c9
-rw-r--r--asn1/rnsap/rnsap.cnf5
2 files changed, 14 insertions, 0 deletions
diff --git a/asn1/rnsap/packet-rnsap-template.c b/asn1/rnsap/packet-rnsap-template.c
index 62cddff8ac..90ed3702f0 100644
--- a/asn1/rnsap/packet-rnsap-template.c
+++ b/asn1/rnsap/packet-rnsap-template.c
@@ -38,6 +38,7 @@
#include <epan/asn1.h>
#include "packet-per.h"
+#include "packet-ber.h"
#ifdef _MSC_VER
/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
@@ -69,6 +70,8 @@ static guint32 ProcedureCode;
static guint32 ProtocolIE_ID;
static guint32 ddMode;
static const gchar *ProcedureID;
+static const char *obj_id = NULL;
+
/* Dissector tables */
static dissector_table_t rnsap_ies_dissector_table;
@@ -79,6 +82,7 @@ static dissector_table_t rnsap_proc_uout_dissector_table;
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+static int dissect_PrivateIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
@@ -95,6 +99,11 @@ static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_in
return (dissector_try_uint(rnsap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
+static int dissect_PrivateIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ return (call_ber_oid_callback(obj_id, tvb, 0, pinfo, tree)) ? tvb_length(tvb) : 0;
+}
+
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
if (!ProcedureID) return 0;
diff --git a/asn1/rnsap/rnsap.cnf b/asn1/rnsap/rnsap.cnf
index a830f1b1cc..c5116fc7b7 100644
--- a/asn1/rnsap/rnsap.cnf
+++ b/asn1/rnsap/rnsap.cnf
@@ -72,6 +72,8 @@ ProtocolIE-ContainerPairList
#.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue
+#.FN_PARS PrivateIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_PrivateIEFieldValue
+
#.FN_PARS ProcedureCode VAL_PTR = &ProcedureCode
#.FN_FTR ProcedureCode
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
@@ -123,6 +125,9 @@ ProtocolIE-ContainerPairList
#.END
+#.FN_PARS PrivateIE-ID/global FN_VARIANT = _str VAL_PTR = &obj_id
+
+
#.TYPE_ATTR
BLER TYPE = FT_INT32 DISPLAY = BASE_DEC STRINGS = NULL
#.END