aboutsummaryrefslogtreecommitdiffstats
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
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
-rw-r--r--asn1/ranap/packet-ranap-template.c33
-rw-r--r--epan/dissectors/packet-ranap.c49
2 files changed, 60 insertions, 22 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"
}
diff --git a/epan/dissectors/packet-ranap.c b/epan/dissectors/packet-ranap.c
index 87448e7d7d..a769fc3c7e 100644
--- a/epan/dissectors/packet-ranap.c
+++ b/epan/dissectors/packet-ranap.c
@@ -1,14 +1,14 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-ranap.c */
-/* ../../tools/asn2wrs.py -p ranap -c ranap.cnf -s packet-ranap-template RANAP-CommonDataTypes.asn RANAP-Constants.asn RANAP-Containers.asn RANAP-IEs.asn RANAP-PDU-Contents.asn RANAP-PDU-Descriptions.asn */
+/* ../../tools/asn2wrs.py -p ranap -c ./ranap.cnf -s ./packet-ranap-template -D . RANAP-CommonDataTypes.asn RANAP-Constants.asn RANAP-Containers.asn RANAP-IEs.asn RANAP-PDU-Contents.asn RANAP-PDU-Descriptions.asn */
/* Input file: packet-ranap-template.c */
#line 1 "packet-ranap-template.c"
/* 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$
*
@@ -46,6 +46,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"
@@ -59,7 +60,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"
@@ -329,7 +330,7 @@ typedef enum _ProtocolIE_ID_enum {
} ProtocolIE_ID_enum;
/*--- End of included file: packet-ranap-val.h ---*/
-#line 61 "packet-ranap-template.c"
+#line 62 "packet-ranap-template.c"
static dissector_handle_t ranap_handle = NULL;
@@ -902,7 +903,7 @@ static int hf_ranap_value_02 = -1; /* T_value_02 */
static int hf_ranap_value_03 = -1; /* T_value_03 */
/*--- End of included file: packet-ranap-hf.c ---*/
-#line 69 "packet-ranap-template.c"
+#line 70 "packet-ranap-template.c"
/* Initialize the subtree pointers */
static int ett_ranap = -1;
@@ -1178,13 +1179,16 @@ static gint ett_ranap_UnsuccessfulOutcome = -1;
static gint ett_ranap_Outcome = -1;
/*--- End of included file: packet-ranap-ett.c ---*/
-#line 74 "packet-ranap-template.c"
+#line 75 "packet-ranap-template.c"
/* Global variables */
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;
@@ -1204,6 +1208,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);
/*--- Included file: packet-ranap-fn.c ---*/
@@ -10406,7 +10411,7 @@ static int dissect_RANAP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, prot
/*--- End of included file: packet-ranap-fn.c ---*/
-#line 101 "packet-ranap-template.c"
+#line 106 "packet-ranap-template.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -10461,14 +10466,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);
@@ -10478,6 +10483,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 */
@@ -12732,7 +12738,7 @@ void proto_register_ranap(void) {
"ranap.T_value_03", HFILL }},
/*--- End of included file: packet-ranap-hfarr.c ---*/
-#line 182 "packet-ranap-template.c"
+#line 188 "packet-ranap-template.c"
};
/* List of subtrees */
@@ -13009,7 +13015,7 @@ void proto_register_ranap(void) {
&ett_ranap_Outcome,
/*--- End of included file: packet-ranap-ettarr.c ---*/
-#line 188 "packet-ranap-template.c"
+#line 194 "packet-ranap-template.c"
};
@@ -13018,7 +13024,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");
@@ -13035,6 +13041,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);
}
@@ -13042,8 +13052,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;
/*--- Included file: packet-ranap-dis-tab.c ---*/
@@ -13306,7 +13325,7 @@ proto_reg_handoff_ranap(void)
/*--- End of included file: packet-ranap-dis-tab.c ---*/
-#line 224 "packet-ranap-template.c"
+#line 243 "packet-ranap-template.c"
}