diff options
author | Bill Meier <wmeier@newsguy.com> | 2008-09-15 19:54:40 +0000 |
---|---|---|
committer | Bill Meier <wmeier@newsguy.com> | 2008-09-15 19:54:40 +0000 |
commit | 3ab617020d2f9e6e6fdf73ea8a06fb0c75275bc6 (patch) | |
tree | 77f3d3fd0e172be6a2ae6ed0f7db7721a2fb7bb8 /epan | |
parent | 28c2ad711ddcf60d54f5a566a66483ac222f7ac0 (diff) |
proto_reg_handoff: fix so port pref change works; gen'l cleanuop
svn path=/trunk/; revision=26208
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-s5066.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/epan/dissectors/packet-s5066.c b/epan/dissectors/packet-s5066.c index 44ad918e21..44ab9e4b42 100644 --- a/epan/dissectors/packet-s5066.c +++ b/epan/dissectors/packet-s5066.c @@ -35,7 +35,6 @@ /* Forward reference */ /* Register functions */ -void proto_register_s5066(void); void proto_reg_handoff_s5066(void); /* Main dissectors */ static void dissect_s5066_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); @@ -74,7 +73,6 @@ static guint dissect_s5066_26(tvbuff_t *tvb, guint offset, proto_tree *tree); static guint dissect_s5066_27(tvbuff_t *tvb, guint offset, proto_tree *tree); static gint proto_s5066 = -1; -static dissector_handle_t s5066_tcp_handle; static dissector_handle_t data_handle; /* Enable desegmentation of S5066 over TCP */ @@ -771,15 +769,13 @@ proto_register_s5066(void) module_t *s5066_module; - if (proto_s5066 == -1) { - proto_s5066 = proto_register_protocol ( + proto_s5066 = proto_register_protocol ( "STANAG 5066 (SIS layer)", /* name */ "STANAG 5066", /* short name*/ "s5066" /* abbrev */ ); - proto_register_field_array(proto_s5066, hf, array_length(hf)); - proto_register_subtree_array(ett, array_length(ett)); - } + proto_register_field_array(proto_s5066, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); s5066_module = prefs_register_protocol(proto_s5066, proto_reg_handoff_s5066); prefs_register_bool_preference(s5066_module, "desegment_pdus", @@ -802,15 +798,21 @@ proto_register_s5066(void) void proto_reg_handoff_s5066(void) { - static gint Initialized = FALSE; + static gboolean Initialized = FALSE; + static dissector_handle_t s5066_tcp_handle; + static guint saved_s5066_port; if (!Initialized) { s5066_tcp_handle = create_dissector_handle(dissect_s5066_tcp, proto_s5066); - dissector_add("tcp.port", global_s5066_port, s5066_tcp_handle); - data_handle = find_dissector("data"); Initialized = TRUE; + } else { + dissector_delete("tcp.port", saved_s5066_port, s5066_tcp_handle); } + + dissector_add("tcp.port", global_s5066_port, s5066_tcp_handle); + saved_s5066_port = global_s5066_port; + if (!s5066_edition_one) { s5066_header_size = 5; s5066_size_offset = 3; |