diff options
author | Anders Broman <anders.broman@ericsson.com> | 2010-03-04 05:56:59 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2010-03-04 05:56:59 +0000 |
commit | ffbdfc3285c73d4d79bb62c074925684683a5f71 (patch) | |
tree | a9a97f79e84d25f8fa0d32f4bd6bcddc1934cb37 /asn1/rua/packet-rua-template.c | |
parent | 7923c40e07fce55301588705d108f50812415941 (diff) |
From Mark Wallis:
Improvements to new RUA Iuh dissector
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4552
Removed check_col() from the patch as it's no longer needed.
svn path=/trunk/; revision=32108
Diffstat (limited to 'asn1/rua/packet-rua-template.c')
-rw-r--r-- | asn1/rua/packet-rua-template.c | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/asn1/rua/packet-rua-template.c b/asn1/rua/packet-rua-template.c index 233e998995..43aaaf098d 100644 --- a/asn1/rua/packet-rua-template.c +++ b/asn1/rua/packet-rua-template.c @@ -36,6 +36,7 @@ #include <epan/packet.h> #include <epan/sctpppids.h> #include <epan/asn1.h> +#include <epan/prefs.h> #include "packet-per.h" @@ -47,6 +48,8 @@ #define PNAME "UTRAN Iuh interface RUA signalling" #define PSNAME "RUA" #define PFNAME "rua" +/* Dissector to use SCTP PPID 19 or a configured SCTP port. IANA assigned port = 29169*/ +#define SCTP_PORT_RUA 29169; #include "packet-rua-val.h" @@ -60,12 +63,14 @@ static int ett_rua = -1; /* initialise sub-dissector handles */ static dissector_handle_t ranap_handle = NULL; +static dissector_handle_t rua_ranap_handle = NULL; #include "packet-rua-ett.c" /* Global variables */ static guint32 ProcedureCode; static guint32 ProtocolIE_ID; +static guint global_sctp_port = SCTP_PORT_RUA; /* Dissector tables */ static dissector_table_t rua_ies_dissector_table; @@ -80,6 +85,8 @@ 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); +void proto_reg_handoff_rua(void); + #include "packet-rua-fn.c" static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) @@ -125,6 +132,7 @@ dissect_rua(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) /*--- proto_register_rua -------------------------------------------*/ void proto_register_rua(void) { +module_t *rua_module; /* List of fields */ @@ -155,6 +163,9 @@ void proto_register_rua(void) { rua_proc_imsg_dissector_table = register_dissector_table("rua.proc.imsg", "RUA-ELEMENTARY-PROCEDURE InitiatingMessage", FT_UINT32, BASE_DEC); rua_proc_sout_dissector_table = register_dissector_table("rua.proc.sout", "RUA-ELEMENTARY-PROCEDURE SuccessfulOutcome", FT_UINT32, BASE_DEC); rua_proc_uout_dissector_table = register_dissector_table("rua.proc.uout", "RUA-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", FT_UINT32, BASE_DEC); + + rua_module = prefs_register_protocol(proto_rua, proto_reg_handoff_rua); + prefs_register_uint_preference(rua_module, "port", "RUA SCTP Port", "Set the port for RUA messages (Default of 29169)", 10, &global_sctp_port); } @@ -163,12 +174,21 @@ void proto_register_rua(void) { void proto_reg_handoff_rua(void) { - dissector_handle_t rua_handle; - - rua_handle = find_dissector("rua"); - ranap_handle = find_dissector("ranap"); - dissector_add("sctp.ppi", RUA_PAYLOAD_PROTOCOL_ID, rua_handle); - dissector_add_handle("sctp.port", rua_handle); /* for "decode-as" */ - + static gboolean initialized = FALSE; + static dissector_handle_t rua_handle; + static guint sctp_port; + + if (!initialized) { + rua_handle = find_dissector("rua"); + rua_ranap_handle = find_dissector("ranap"); + dissector_add("sctp.ppi", RUA_PAYLOAD_PROTOCOL_ID, rua_handle); + initialized = TRUE; #include "packet-rua-dis-tab.c" + + } else { + dissector_delete("sctp.port", sctp_port, rua_handle); + } + /* Set our port number for future use */ + sctp_port = global_sctp_port; + dissector_add("sctp.port", sctp_port, rua_handle); } |