Move prefs processing from registered init fcn to proto_reg_handoff fcn

svn path=/trunk/; revision=26695
This commit is contained in:
Bill Meier 2008-11-04 21:48:25 +00:00
parent aea36789d4
commit 5e4758e5e0
1 changed files with 34 additions and 48 deletions

View File

@ -89,12 +89,9 @@ static emem_tree_t* trxs = NULL;
static emem_tree_t* ctxs_by_trx = NULL;
static emem_tree_t* ctxs = NULL;
static gboolean h248_prefs_initialized = FALSE;
static gboolean keep_persistent_data = FALSE;
static guint32 udp_port = 2945;
static guint32 temp_udp_port = 2945;
static guint32 tcp_port = 2945;
static guint32 temp_tcp_port = 2945;
static guint global_udp_port = 2945;
static guint global_tcp_port = 2945;
static gboolean h248_desegment = TRUE;
@ -1266,37 +1263,9 @@ dissect_h248(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
static void h248_init(void) {
if (!h248_prefs_initialized) {
h248_prefs_initialized = TRUE;
} else {
if ( udp_port )
dissector_delete("udp.port", udp_port, h248_handle);
if ( tcp_port)
dissector_delete("tcp.port", tcp_port, h248_tpkt_handle);
}
udp_port = temp_udp_port;
tcp_port = temp_tcp_port;
if ( udp_port ) {
dissector_add("udp.port", udp_port, h248_handle);
}
if ( tcp_port) {
dissector_add("tcp.port", tcp_port, h248_tpkt_handle);
}
if (!h248_term_handle){
h248_term_handle = find_dissector("h248term");
}
}
/*--- proto_register_h248 ----------------------------------------------*/
void proto_reg_handoff_h248(void);
void proto_register_h248(void) {
/* List of fields */
@ -1405,7 +1374,7 @@ void proto_register_h248(void) {
proto_register_field_array(proto_h248, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
h248_module = prefs_register_protocol(proto_h248, h248_init);
h248_module = prefs_register_protocol(proto_h248, proto_reg_handoff_h248);
prefs_register_bool_preference(h248_module, "ctx_info",
"Track Context",
"Mantain relationships between transactions and contexts and display an extra tree showing context data",
@ -1414,20 +1383,17 @@ void proto_register_h248(void) {
"UDP port",
"Port to be decoded as h248",
10,
&temp_udp_port);
&global_udp_port);
prefs_register_uint_preference(h248_module, "tcp_port",
"TCP port",
"Port to be decoded as h248",
10,
&temp_tcp_port);
&global_tcp_port);
prefs_register_bool_preference(h248_module, "desegment",
"Desegment H.248 over TCP",
"Desegment H.248 messages that span more TCP segments",
&h248_desegment);
register_init_routine( &h248_init );
msgs = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "h248_msgs");
trxs = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "h248_trxs");
ctxs_by_trx = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "h248_ctxs_by_trx");
@ -1441,13 +1407,33 @@ void proto_register_h248(void) {
/*--- proto_reg_handoff_h248 -------------------------------------------*/
void proto_reg_handoff_h248(void) {
h248_handle = find_dissector("h248");
h248_tpkt_handle = find_dissector("h248.tpkt");
static gboolean initialized = FALSE;
static guint32 udp_port;
static guint32 tcp_port;
dissector_add("mtp3.service_indicator", GATEWAY_CONTROL_PROTOCOL_USER_ID, h248_handle);
dissector_add("udp.port", udp_port, h248_handle);
dissector_add("tcp.port", tcp_port, h248_tpkt_handle);
if (!initialized) {
h248_handle = find_dissector("h248");
h248_tpkt_handle = find_dissector("h248.tpkt");
dissector_add("mtp3.service_indicator", GATEWAY_CONTROL_PROTOCOL_USER_ID, h248_handle);
h248_term_handle = find_dissector("h248term");
initialized = TRUE;
} else {
if (udp_port != 0)
dissector_delete("udp.port", udp_port, h248_handle);
if (tcp_port != 0)
dissector_delete("tcp.port", tcp_port, h248_tpkt_handle);
}
udp_port = global_udp_port;
tcp_port = global_tcp_port;
if (udp_port != 0) {
dissector_add("udp.port", udp_port, h248_handle);
}
if (tcp_port != 0) {
dissector_add("tcp.port", tcp_port, h248_tpkt_handle);
}
}