aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss@ulticom.com>2008-07-26 02:04:19 +0000
committerJeff Morriss <jeff.morriss@ulticom.com>2008-07-26 02:04:19 +0000
commit31d0fb16d75daf0bc8350dee6cc0332c294c4bc9 (patch)
tree82ac082d6f6433e73d65a08383c90f9584435545 /asn1
parent5b836ec67407f529eee1346ae6704b4e132f36d6 (diff)
From Neil Piercy via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=2637 : Make the RANAP SSN configurable.
svn path=/trunk/; revision=25837
Diffstat (limited to 'asn1')
-rw-r--r--asn1/ranap/packet-ranap-template.c33
1 files changed, 26 insertions, 7 deletions
diff --git a/asn1/ranap/packet-ranap-template.c b/asn1/ranap/packet-ranap-template.c
index b4680c7921..fc1f58fc21 100644
--- a/asn1/ranap/packet-ranap-template.c
+++ b/asn1/ranap/packet-ranap-template.c
@@ -1,6 +1,6 @@
/* packet-ranap.c
* Routines for UMTS Node B Application Part(RANAP) packet dissection
- * Copyright 2005, Anders Broman <anders.broman@ericsson.com>
+ * Copyright 2005, Anders Broman <anders.broman[AT]ericsson.com>
*
* $Id$
*
@@ -38,6 +38,7 @@
#include <epan/emem.h>
#include <epan/strutil.h>
#include <epan/asn1.h>
+#include <epan/prefs.h>
#include "packet-ber.h"
#include "packet-per.h"
@@ -51,7 +52,7 @@
#pragma warning(disable:4146)
#endif
-#define SCCP_SSN_RANAP 0x8E
+#define SCCP_SSN_RANAP 142
#define PNAME "Radio Access Network Application Part"
#define PSNAME "RANAP"
@@ -77,6 +78,9 @@ static guint32 ProcedureCode;
static guint32 ProtocolIE_ID;
static guint32 ProtocolExtensionID;
+/* Initialise the Preferences */
+static gint global_ranap_sccp_ssn = SCCP_SSN_RANAP;
+
/* Dissector tables */
static dissector_table_t ranap_ies_dissector_table;
static dissector_table_t ranap_ies_p1_dissector_table;
@@ -96,6 +100,7 @@ static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, pro
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);
static int dissect_OutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+void proto_reg_handoff_ranap(void);
#include "packet-ranap-fn.c"
@@ -152,14 +157,14 @@ dissect_ranap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* create the ranap protocol tree */
ranap_item = proto_tree_add_item(tree, proto_ranap, tvb, 0, -1, FALSE);
ranap_tree = proto_item_add_subtree(ranap_item, ett_ranap);
-
+
dissect_RANAP_PDU_PDU(tvb, pinfo, ranap_tree);
if (pinfo->sccp_info) {
sccp_msg_info_t* sccp_msg = pinfo->sccp_info;
-
+
if (sccp_msg->data.co.assoc)
sccp_msg->data.co.assoc->payload = SCCP_PLOAD_RANAP;
-
+
if (! sccp_msg->data.co.label && ProcedureCode != 0xFFFFFFFF) {
const gchar* str = val_to_str(ProcedureCode, ranap_ProcedureCode_vals,"Unknown RANAP");
sccp_msg->data.co.label = se_strdup(str);
@@ -169,6 +174,7 @@ dissect_ranap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/*--- proto_register_ranap -------------------------------------------*/
void proto_register_ranap(void) {
+ module_t *ranap_module;
/* List of fields */
@@ -193,7 +199,7 @@ void proto_register_ranap(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_ranap, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
-
+
/* Register dissector */
register_dissector("ranap", dissect_ranap, proto_ranap);
ranap_handle = find_dissector("ranap");
@@ -210,6 +216,10 @@ void proto_register_ranap(void) {
nas_pdu_dissector_table = register_dissector_table("ranap.nas_pdu", "RANAP NAS PDU", FT_UINT8, BASE_DEC);
+ ranap_module = prefs_register_protocol(proto_ranap, proto_reg_handoff_ranap);
+ prefs_register_uint_preference(ranap_module, "sccp_ssn", "SCCP SSN for RANAP",
+ "The SCCP SubSystem Number for RANAP (default 142)", 10,
+ &global_ranap_sccp_ssn);
}
@@ -217,8 +227,17 @@ void proto_register_ranap(void) {
void
proto_reg_handoff_ranap(void)
{
+ static int initialized = FALSE;
+ static gint local_ranap_sccp_ssn;
+
+ if (!initialized) {
+ initialized = TRUE;
+ } else {
+ dissector_delete("sccp.ssn", local_ranap_sccp_ssn, ranap_handle);
+ }
- dissector_add("sccp.ssn", SCCP_SSN_RANAP, ranap_handle);
+ dissector_add("sccp.ssn", global_ranap_sccp_ssn, ranap_handle);
+ local_ranap_sccp_ssn = global_ranap_sccp_ssn;
#include "packet-ranap-dis-tab.c"
}