Compile (over 100) dfilters only if needed rather than at every Wireshark startup;

Also: Minor whitespace cleanup.

svn path=/trunk/; revision=34747
This commit is contained in:
Bill Meier 2010-11-01 18:38:13 +00:00
parent 5227ad988a
commit 2f8ab63858
2 changed files with 37 additions and 32 deletions

View File

@ -7512,12 +7512,29 @@ nds_defrag(tvbuff_t *tvb, packet_info *pinfo, guint32 nw_connection, guint8 sequ
}
}
else
{
{
dissect_ncp_reply(tvb, pinfo, nw_connection, sequence, type, tree, ncp_tap);
}
}
}
static gboolean ncp2222_dfilters_compiled = FALSE;
static void
ncp2222_compile_dfilters(void)
{
int i;
for (i = 0; i < NUM_REQ_CONDS; i++) {
if (!dfilter_compile((const gchar*)req_conds[i].dfilter_text,
&req_conds[i].dfilter)) {
g_message("NCP dissector failed to compile dfilter: %s\n",
req_conds[i].dfilter_text);
g_assert_not_reached();
}
}
}
void
dissect_ncp_request(tvbuff_t *tvb, packet_info *pinfo,
guint32 nw_connection, guint8 sequence,
@ -7540,6 +7557,15 @@ dissect_ncp_request(tvbuff_t *tvb, packet_info *pinfo,
const char *volatile message;
/* We're dissecting an ncp2222 request; Compile the dfilters (if not yet done). */
/* XXX: We do this here rather than at "post-registration" (as previouly done) */
/* so compiling over 100 dfilters is done only if needed (thus avoiding */
/* compiling the dfilters each time Wireshark is started. */
if (! ncp2222_dfilters_compiled) {
ncp2222_compile_dfilters();
ncp2222_dfilters_compiled = TRUE;
}
/* Determine which ncp_record to use. */
switch (type) {
case NCP_ALLOCATE_SLOT:

View File

@ -5756,10 +5756,10 @@ static int ptvc_struct_int_storage;
if global_highest_var > -1:
print "#define NUM_REPEAT_VARS\t%d" % (global_highest_var + 1)
print "static guint repeat_vars[NUM_REPEAT_VARS];",
print "static guint repeat_vars[NUM_REPEAT_VARS];"
else:
print "#define NUM_REPEAT_VARS\t0"
print "static guint *repeat_vars = NULL;",
print "static guint *repeat_vars = NULL;"
print """
#define NO_VAR NUM_REPEAT_VARS
@ -6271,7 +6271,7 @@ static int hf_iter_search = -1;
static int hf_iter_other = -1;
static int hf_nds_oid = -1;
"""
"""
# Look at all packet types in the packets collection, and cull information
# from them.
@ -6296,6 +6296,9 @@ static int hf_nds_oid = -1;
groups_used_hash[group] = len(groups_used_list)
groups_used_list.append(group)
# Determine which variables are used.
vars = pkt.Variables()
ExamineVars(vars, structs_used_hash, variables_used_hash)
@ -6574,26 +6577,7 @@ static int hf_nds_oid = -1;
print "\t0"
print "};\n"
# final_registration_ncp2222()
print """
static void
final_registration_ncp2222(void)
{
int i;
"""
# Create dfilter_t's for conditional_record's
print """
for (i = 0; i < NUM_REQ_CONDS; i++) {
if (!dfilter_compile((const gchar*)req_conds[i].dfilter_text,
&req_conds[i].dfilter)) {
g_message("NCP dissector failed to compile dfilter: %s\\n",
req_conds[i].dfilter_text);
g_assert_not_reached();
}
}
}
"""
print ""
# proto_register_ncp2222()
print """
@ -8276,20 +8260,15 @@ proto_register_ncp2222(void)
print "\t};\n"
print """
proto_register_field_array(proto_ncp, hf, array_length(hf));
"""
proto_register_field_array(proto_ncp, hf, array_length(hf));"""
if ett_list:
print """
proto_register_subtree_array(ett, array_length(ett));
"""
proto_register_subtree_array(ett, array_length(ett));"""
print """
register_init_routine(&ncp_init_protocol);
register_postseq_cleanup_routine(&ncp_postseq_cleanup);
register_final_registration_routine(final_registration_ncp2222);
"""
register_postseq_cleanup_routine(&ncp_postseq_cleanup);"""
# End of proto_register_ncp2222()
print "}"