diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2013-11-16 01:10:05 +0000 |
---|---|---|
committer | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2013-11-16 01:10:05 +0000 |
commit | ea73d4a55cf10850c61ed35d58fd9c9a191023f3 (patch) | |
tree | 87fd46511932572dfcec12f2e1630ea289e9a512 | |
parent | 09dc9a3d0a029fc669e09b3d2ff468b07b9b0c7b (diff) |
Avoid calling find_dissector(), cache result of [new_]register_dissector()
svn path=/trunk/; revision=53353
-rw-r--r-- | epan/dissectors/file-elf.c | 9 | ||||
-rw-r--r-- | epan/dissectors/packet-amr.c | 11 | ||||
-rw-r--r-- | epan/dissectors/packet-aoe.c | 9 | ||||
-rw-r--r-- | epan/dissectors/packet-erf.c | 7 | ||||
-rw-r--r-- | epan/dissectors/packet-git.c | 9 | ||||
-rw-r--r-- | epan/dissectors/packet-json.c | 8 | ||||
-rw-r--r-- | epan/dissectors/packet-mtp2.c | 7 | ||||
-rw-r--r-- | epan/dissectors/packet-mtp3.c | 7 | ||||
-rw-r--r-- | epan/dissectors/packet-q931.c | 16 | ||||
-rw-r--r-- | epan/dissectors/packet-uaudp.c | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-wai.c | 8 |
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); } |