aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorJakub Zawadzki <darkjames-ws@darkjames.pl>2013-11-16 01:10:05 +0000
committerJakub Zawadzki <darkjames-ws@darkjames.pl>2013-11-16 01:10:05 +0000
commitea73d4a55cf10850c61ed35d58fd9c9a191023f3 (patch)
tree87fd46511932572dfcec12f2e1630ea289e9a512 /epan/dissectors
parent09dc9a3d0a029fc669e09b3d2ff468b07b9b0c7b (diff)
Avoid calling find_dissector(), cache result of [new_]register_dissector()
svn path=/trunk/; revision=53353
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/file-elf.c9
-rw-r--r--epan/dissectors/packet-amr.c11
-rw-r--r--epan/dissectors/packet-aoe.c9
-rw-r--r--epan/dissectors/packet-erf.c7
-rw-r--r--epan/dissectors/packet-git.c9
-rw-r--r--epan/dissectors/packet-json.c8
-rw-r--r--epan/dissectors/packet-mtp2.c7
-rw-r--r--epan/dissectors/packet-mtp3.c7
-rw-r--r--epan/dissectors/packet-q931.c16
-rw-r--r--epan/dissectors/packet-uaudp.c6
-rw-r--r--epan/dissectors/packet-wai.c8
11 files changed, 43 insertions, 54 deletions
diff --git a/epan/dissectors/file-elf.c b/epan/dissectors/file-elf.c
index d91c803199..3b0eba059e 100644
--- a/epan/dissectors/file-elf.c
+++ b/epan/dissectors/file-elf.c
@@ -40,6 +40,8 @@
#include "dwarf.h"
+static dissector_handle_t elf_handle;
+
static int proto_elf = -1;
static int hf_elf_magic_bytes = -1;
@@ -2409,7 +2411,8 @@ proto_register_elf(void)
proto_elf = proto_register_protocol("Executable and Linkable Format", "ELF", "elf");
proto_register_field_array(proto_elf, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- new_register_dissector("elf", dissect_elf, proto_elf);
+
+ elf_handle = new_register_dissector("elf", dissect_elf, proto_elf);
module = prefs_register_protocol(proto_elf, NULL);
prefs_register_static_text_preference(module, "version",
@@ -2423,10 +2426,6 @@ proto_register_elf(void)
void
proto_reg_handoff_elf(void)
{
- dissector_handle_t elf_handle;
-
- elf_handle = find_dissector("elf");
-
dissector_add_string("media_type", "application/x-executable", elf_handle);
dissector_add_string("media_type", "application/x-coredump", elf_handle);
dissector_add_string("media_type", "application/x-object", elf_handle);
diff --git a/epan/dissectors/packet-amr.c b/epan/dissectors/packet-amr.c
index 3f15a4d5df..a684a0cc35 100644
--- a/epan/dissectors/packet-amr.c
+++ b/epan/dissectors/packet-amr.c
@@ -45,6 +45,9 @@
#define AMR_NB 0
#define AMR_WB 1
+static dissector_handle_t amr_handle;
+static dissector_handle_t amr_wb_handle;
+
/* Initialize the protocol and registered fields */
static int proto_amr = -1;
static int hf_amr_nb_cmr = -1;
@@ -786,8 +789,8 @@ proto_register_amr(void)
"The AMR mode",
&pref_amr_mode, modes, AMR_NB);
- register_dissector("amr", dissect_amr, proto_amr);
- register_dissector("amr-wb", dissect_amr_wb, proto_amr);
+ amr_handle = register_dissector("amr", dissect_amr, proto_amr);
+ amr_wb_handle = register_dissector("amr-wb", dissect_amr_wb, proto_amr);
register_dissector("amr_if1_nb", dissect_amr_nb_if1, proto_amr);
register_dissector("amr_if1_wb", dissect_amr_wb_if1, proto_amr);
register_dissector("amr_if2_nb", dissect_amr_nb_if2, proto_amr);
@@ -800,17 +803,13 @@ proto_register_amr(void)
void
proto_reg_handoff_amr(void)
{
- static dissector_handle_t amr_handle;
static guint dynamic_payload_type;
static gboolean amr_prefs_initialized = FALSE;
if (!amr_prefs_initialized) {
dissector_handle_t amr_name_handle;
- dissector_handle_t amr_wb_handle;
amr_capability_t *ftr;
- amr_handle = find_dissector("amr");
- amr_wb_handle = find_dissector("amr-wb");
dissector_add_string("rtp_dyn_payload_type","AMR", amr_handle);
dissector_add_string("rtp_dyn_payload_type","AMR-WB", amr_wb_handle);
diff --git a/epan/dissectors/packet-aoe.c b/epan/dissectors/packet-aoe.c
index 32e9ab361b..096f10fbde 100644
--- a/epan/dissectors/packet-aoe.c
+++ b/epan/dissectors/packet-aoe.c
@@ -31,6 +31,8 @@
void proto_register_aoe(void);
void proto_reg_handoff_aoe(void);
+static dissector_handle_t aoe_handle;
+
static int proto_aoe;
static int hf_aoe_version=-1;
static int hf_aoe_flags_response=-1;
@@ -483,16 +485,13 @@ proto_register_aoe(void)
proto_register_field_array(proto_aoe, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- register_dissector("aoe", dissect_aoe, proto_aoe);
+ aoe_handle = register_dissector("aoe", dissect_aoe, proto_aoe);
+
register_init_routine(ata_init);
}
void
proto_reg_handoff_aoe(void)
{
- dissector_handle_t aoe_handle;
-
- aoe_handle = find_dissector("aoe");
dissector_add_uint("ethertype", ETHERTYPE_AOE, aoe_handle);
-
}
diff --git a/epan/dissectors/packet-erf.c b/epan/dissectors/packet-erf.c
index 286124ce78..162572d565 100644
--- a/epan/dissectors/packet-erf.c
+++ b/epan/dissectors/packet-erf.c
@@ -106,6 +106,8 @@ typedef struct sdh_g707_format_s
* i = 0 --> ITU-T letter #A - index of AU3*/
} sdh_g707_format_t;
+static dissector_handle_t erf_handle;
+
/* Initialize the protocol and registered fields */
static int proto_erf = -1;
@@ -1934,7 +1936,7 @@ proto_register_erf(void)
expert_module_t* expert_erf;
proto_erf = proto_register_protocol("Extensible Record Format", "ERF", "erf");
- register_dissector("erf", dissect_erf, proto_erf);
+ erf_handle = register_dissector("erf", dissect_erf, proto_erf);
proto_register_field_array(proto_erf, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
@@ -1967,9 +1969,6 @@ proto_register_erf(void)
void
proto_reg_handoff_erf(void)
{
- dissector_handle_t erf_handle;
-
- erf_handle = find_dissector("erf");
dissector_add_uint("wtap_encap", WTAP_ENCAP_ERF, erf_handle);
/* Dissector called to dump raw data, or unknown protocol */
diff --git a/epan/dissectors/packet-git.c b/epan/dissectors/packet-git.c
index bac4578b7a..82a170561f 100644
--- a/epan/dissectors/packet-git.c
+++ b/epan/dissectors/packet-git.c
@@ -36,6 +36,8 @@
#include <epan/prefs.h>
#include "packet-tcp.h"
+static dissector_handle_t git_handle;
+
static int proto_git = -1;
static gint ett_git = -1;
@@ -139,11 +141,13 @@ proto_register_git(void)
};
module_t *git_module;
+
proto_git = proto_register_protocol("Git Smart Protocol", "GIT", "git");
- new_register_dissector("git", dissect_git, proto_git);
proto_register_field_array(proto_git, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ git_handle = new_register_dissector("git", dissect_git, proto_git);
+
git_module = prefs_register_protocol(proto_git, NULL);
prefs_register_bool_preference(git_module, "desegment",
@@ -156,8 +160,5 @@ proto_register_git(void)
void
proto_reg_handoff_git(void)
{
- dissector_handle_t git_handle;
-
- git_handle = find_dissector("git");
dissector_add_uint("tcp.port", TCP_PORT_GIT, git_handle);
}
diff --git a/epan/dissectors/packet-json.c b/epan/dissectors/packet-json.c
index 246440f9f2..d04a839d8e 100644
--- a/epan/dissectors/packet-json.c
+++ b/epan/dissectors/packet-json.c
@@ -37,6 +37,8 @@
#include <epan/packet.h>
#include <epan/tvbparse.h>
+static dissector_handle_t json_handle;
+
static gint ett_json = -1;
static gint ett_json_array = -1;
static gint ett_json_object = -1;
@@ -588,7 +590,7 @@ proto_register_json(void) {
proto_register_fields(proto_json, hfi, array_length(hfi));
proto_register_subtree_array(ett, array_length(ett));
- new_register_dissector("json", dissect_json, proto_json);
+ json_handle = new_register_dissector("json", dissect_json, proto_json);
init_json_parser();
}
@@ -596,10 +598,6 @@ proto_register_json(void) {
void
proto_reg_handoff_json(void)
{
- dissector_handle_t json_handle;
-
- json_handle = find_dissector("json");
-
dissector_add_string("media_type", "application/json", json_handle); /* RFC 4627 */
dissector_add_string("media_type", "application/json-rpc", json_handle); /* JSON-RPC over HTTP */
dissector_add_string("media_type", "application/jsonrequest", json_handle); /* JSON-RPC over HTTP */
diff --git a/epan/dissectors/packet-mtp2.c b/epan/dissectors/packet-mtp2.c
index 8c3662984d..327a4a7c0e 100644
--- a/epan/dissectors/packet-mtp2.c
+++ b/epan/dissectors/packet-mtp2.c
@@ -36,6 +36,8 @@
#include <epan/crc16-tvb.h>
#include <epan/expert.h>
+static dissector_handle_t mtp2_handle;
+
/* Initialize the protocol and registered fields */
static int proto_mtp2 = -1;
static int hf_mtp2_bsn = -1;
@@ -397,7 +399,7 @@ proto_register_mtp2(void)
expert_module_t* expert_mtp2;
proto_mtp2 = proto_register_protocol("Message Transfer Part Level 2", "MTP2", "mtp2");
- register_dissector("mtp2", dissect_mtp2, proto_mtp2);
+ mtp2_handle = register_dissector("mtp2", dissect_mtp2, proto_mtp2);
proto_register_field_array(proto_mtp2, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
@@ -417,9 +419,6 @@ proto_register_mtp2(void)
void
proto_reg_handoff_mtp2(void)
{
- dissector_handle_t mtp2_handle;
-
- mtp2_handle = find_dissector("mtp2");
dissector_add_uint("wtap_encap", WTAP_ENCAP_MTP2, mtp2_handle);
dissector_add_uint("wtap_encap", WTAP_ENCAP_MTP2_WITH_PHDR, mtp2_handle);
diff --git a/epan/dissectors/packet-mtp3.c b/epan/dissectors/packet-mtp3.c
index e835b73590..276917b315 100644
--- a/epan/dissectors/packet-mtp3.c
+++ b/epan/dissectors/packet-mtp3.c
@@ -55,6 +55,8 @@ static int proto_mtp3 = -1;
static int mtp3_tap = -1;
+static dissector_handle_t mtp3_handle;
+
static module_t *mtp3_module;
static int hf_mtp3_service_indicator = -1;
@@ -857,7 +859,7 @@ proto_register_mtp3(void)
/* Register the protocol name and description */
proto_mtp3 = proto_register_protocol("Message Transfer Part Level 3",
"MTP3", "mtp3");
- register_dissector("mtp3", dissect_mtp3, proto_mtp3);
+ mtp3_handle = register_dissector("mtp3", dissect_mtp3, proto_mtp3);
/* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_mtp3, hf, array_length(hf));
@@ -912,9 +914,6 @@ proto_register_mtp3(void)
void
proto_reg_handoff_mtp3(void)
{
- dissector_handle_t mtp3_handle;
-
- mtp3_handle = find_dissector("mtp3");
dissector_add_uint("wtap_encap", WTAP_ENCAP_MTP3, mtp3_handle);
dissector_add_string("tali.opcode", "mtp3", mtp3_handle);
diff --git a/epan/dissectors/packet-q931.c b/epan/dissectors/packet-q931.c
index b1fa92a732..77ca32ab80 100644
--- a/epan/dissectors/packet-q931.c
+++ b/epan/dissectors/packet-q931.c
@@ -60,6 +60,9 @@ static gboolean have_valid_q931_pi=FALSE;
static q931_packet_info *q931_pi=NULL;
static int q931_tap = -1;
+static dissector_handle_t q931_handle;
+static dissector_handle_t q931_over_ip_handle;
+
static int proto_q931 = -1;
static int hf_q931_discriminator = -1;
static int hf_q931_coding_standard = -1;
@@ -3563,12 +3566,11 @@ proto_register_q931(void)
proto_register_subtree_array(ett, array_length(ett));
register_init_routine(q931_init);
- register_dissector("q931", dissect_q931, proto_q931);
- register_dissector("q931.tpkt", dissect_q931_tpkt, proto_q931);
- q931_tpkt_handle = find_dissector("q931.tpkt");
+ q931_handle = register_dissector("q931", dissect_q931, proto_q931);
+ q931_tpkt_handle = register_dissector("q931.tpkt", dissect_q931_tpkt, proto_q931);
q931_tpkt_pdu_handle = create_dissector_handle(dissect_q931_tpkt_pdu,
proto_q931);
- register_dissector("q931.over_ip", dissect_q931_over_ip, proto_q931);
+ q931_over_ip_handle = register_dissector("q931.over_ip", dissect_q931_over_ip, proto_q931);
register_dissector("q931.ie", dissect_q931_ie_cs0, proto_q931);
register_dissector("q931.ie.cs7", dissect_q931_ie_cs7, proto_q931);
@@ -3594,13 +3596,7 @@ proto_register_q931(void)
void
proto_reg_handoff_q931(void)
{
- dissector_handle_t q931_handle;
- dissector_handle_t q931_over_ip_handle;
-
- q931_handle = find_dissector("q931");
dissector_add_uint("lapd.sapi", LAPD_SAPI_Q931, q931_handle);
-
- q931_over_ip_handle = find_dissector("q931.over_ip");
dissector_add_uint("sctp.ppi", H323_PAYLOAD_PROTOCOL_ID, q931_over_ip_handle);
/*
diff --git a/epan/dissectors/packet-uaudp.c b/epan/dissectors/packet-uaudp.c
index 2bbbb99b3d..1357788156 100644
--- a/epan/dissectors/packet-uaudp.c
+++ b/epan/dissectors/packet-uaudp.c
@@ -45,6 +45,8 @@ static int uaudp_tap = -1;
static tap_struct_uaudp ua_tap_info;
+static dissector_handle_t uaudp_handle;
+
static int proto_uaudp = -1;
static int hf_uaudp_opcode = -1;
@@ -589,7 +591,7 @@ void proto_register_uaudp(void)
"UAUDP",
"uaudp");
- register_dissector("uaudp", dissect_uaudp, proto_uaudp);
+ uaudp_handle = register_dissector("uaudp", dissect_uaudp, proto_uaudp);
#if 0 /* XXX: Not used ?? */
register_dissector("uaudp_dir_unknown", dissect_uaudp_dir_unknown, proto_uaudp);
register_dissector("uaudp_term_to_serv", dissect_uaudp_term_to_serv, proto_uaudp);
@@ -632,12 +634,10 @@ void proto_register_uaudp(void)
void proto_reg_handoff_uaudp(void)
{
static gboolean prefs_initialized = FALSE;
- static dissector_handle_t uaudp_handle;
int i;
if (!prefs_initialized)
{
- uaudp_handle = find_dissector("uaudp");
ua_sys_to_term_handle = find_dissector("ua_sys_to_term");
ua_term_to_sys_handle = find_dissector("ua_term_to_sys");
#if 0
diff --git a/epan/dissectors/packet-wai.c b/epan/dissectors/packet-wai.c
index 2ab32c1856..c4d18efcd1 100644
--- a/epan/dissectors/packet-wai.c
+++ b/epan/dissectors/packet-wai.c
@@ -63,6 +63,8 @@
static reassembly_table wai_reassembly_table;
+static dissector_handle_t wai_handle;
+
static int proto_wai = -1;
static gint hf_wai_version = -1;
@@ -1318,15 +1320,13 @@ proto_register_wai(void)
register_init_routine(&wai_reassemble_init);
proto_register_field_array(proto_wai, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- register_dissector("wai", dissect_wai, proto_wai);
+
+ wai_handle = register_dissector("wai", dissect_wai, proto_wai);
}
void
proto_reg_handoff_wai(void)
{
- dissector_handle_t wai_handle;
-
data_handle = find_dissector("data");
- wai_handle = find_dissector("wai");
dissector_add_uint("ethertype", ETHERTYPE_WAI, wai_handle);
}