diff options
author | wmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7> | 2008-09-15 16:36:06 +0000 |
---|---|---|
committer | wmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7> | 2008-09-15 16:36:06 +0000 |
commit | 3e851ff2ef7f819c97b8eeecb17aab4029705f27 (patch) | |
tree | faee990d1203f64304a68bb091e844d0fcf3fe4f | |
parent | 53a1d7f4b2792c034dab4d27afb0909b8766c573 (diff) |
proto_reg-handoff: Use dissector_add_handle instead of registering to port 0;
Also: minor cleanup related to proto_reg_handoff
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@26197 f5534014-38df-0310-8fa8-9805f1628bb7
-rw-r--r-- | epan/dissectors/packet-fix.c | 13 | ||||
-rw-r--r-- | epan/dissectors/packet-lge_monitor.c | 28 | ||||
-rw-r--r-- | epan/dissectors/packet-lsc.c | 33 | ||||
-rw-r--r-- | epan/dissectors/packet-osi.c | 25 |
4 files changed, 59 insertions, 40 deletions
diff --git a/epan/dissectors/packet-fix.c b/epan/dissectors/packet-fix.c index e24e318c1f..8167e05dc8 100644 --- a/epan/dissectors/packet-fix.c +++ b/epan/dissectors/packet-fix.c @@ -6439,14 +6439,11 @@ proto_register_fix(void) void proto_reg_handoff_fix(void) { - static dissector_handle_t fix_handle; - /* - * The first time the function is called let the tcp dissector - * know that we're interested in traffic - */ + dissector_handle_t fix_handle; + /* Let the tcp dissector know that we're interested in traffic */ heur_dissector_add("tcp", dissect_fix, proto_fix); - /* Register fix to TCP port 0 to be able to do "dissect as"*/ - fix_handle = new_create_dissector_handle(dissect_fix, proto_fix); - dissector_add("tcp.port", 0, fix_handle); + /* Register a fix handle to "tcp.port" to be able to do 'decode-as' */ + fix_handle = new_create_dissector_handle(dissect_fix, proto_fix); + dissector_add_handle("tcp.port", fix_handle); } diff --git a/epan/dissectors/packet-lge_monitor.c b/epan/dissectors/packet-lge_monitor.c index 65e539199d..8197a7e788 100644 --- a/epan/dissectors/packet-lge_monitor.c +++ b/epan/dissectors/packet-lge_monitor.c @@ -53,7 +53,6 @@ static int ett_lge_monitor = -1; static guint LGEMonitorUDPPort = 0; -static guint udp_port = 0; static dissector_handle_t mtp3_handle, m3ua_handle, sccp_handle, sctp_handle; static const value_string lge_monitor_dir_vals[] = { @@ -126,24 +125,29 @@ dissect_lge_monitor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) void proto_reg_handoff_lge_monitor(void) { - dissector_handle_t lge_monitor_handle; - static int lge_monitor_prefs_initialized = FALSE; - - lge_monitor_handle = create_dissector_handle(dissect_lge_monitor, proto_lge_monitor); + static dissector_handle_t lge_monitor_handle; + static guint saved_udp_port; + static gboolean lge_monitor_prefs_initialized = FALSE; if (!lge_monitor_prefs_initialized) { + lge_monitor_handle = create_dissector_handle(dissect_lge_monitor, proto_lge_monitor); + dissector_add_handle("udp.port", lge_monitor_handle); /* for 'decode-as' */ + mtp3_handle = find_dissector("mtp3"); + m3ua_handle = find_dissector("m3ua"); + sccp_handle = find_dissector("sccp"); + sctp_handle = find_dissector("sctp"); lge_monitor_prefs_initialized = TRUE; } else { - dissector_delete("udp.port", udp_port, lge_monitor_handle); + if (saved_udp_port != 0) { + dissector_delete("udp.port", saved_udp_port, lge_monitor_handle); + } } - udp_port = LGEMonitorUDPPort; - dissector_add("udp.port", LGEMonitorUDPPort, lge_monitor_handle); - mtp3_handle = find_dissector("mtp3"); - m3ua_handle = find_dissector("m3ua"); - sccp_handle = find_dissector("sccp"); - sctp_handle = find_dissector("sctp"); + if (LGEMonitorUDPPort != 0) { + dissector_add("udp.port", LGEMonitorUDPPort, lge_monitor_handle); + } + saved_udp_port = LGEMonitorUDPPort; } void diff --git a/epan/dissectors/packet-lsc.c b/epan/dissectors/packet-lsc.c index 3a77d7ab87..7c4ed0daa7 100644 --- a/epan/dissectors/packet-lsc.c +++ b/epan/dissectors/packet-lsc.c @@ -135,8 +135,6 @@ static int hf_lsc_mode = -1; /* Preferences */ static guint global_lsc_port = 0; -static guint lsc_port = 0; - /* Initialize the subtree pointers */ static gint ett_lsc = -1; @@ -441,15 +439,28 @@ proto_register_lsc(void) void proto_reg_handoff_lsc(void) { - dissector_handle_t lsc_udp_handle; - dissector_handle_t lsc_tcp_handle; - - lsc_udp_handle = create_dissector_handle(dissect_lsc_udp, proto_lsc); - lsc_tcp_handle = create_dissector_handle(dissect_lsc_tcp, proto_lsc); + static gboolean initialized = FALSE; + static dissector_handle_t lsc_udp_handle; + static dissector_handle_t lsc_tcp_handle; + static guint saved_lsc_port; + + if (!initialized) { + lsc_udp_handle = create_dissector_handle(dissect_lsc_udp, proto_lsc); + lsc_tcp_handle = create_dissector_handle(dissect_lsc_tcp, proto_lsc); + dissector_add_handle("udp.port", lsc_udp_handle); /* for 'decode-as' */ + dissector_add_handle("tcp.port", lsc_tcp_handle); /* ... */ + initialized = TRUE; + } else { + if (saved_lsc_port != 0) { + dissector_delete("udp.port", saved_lsc_port, lsc_udp_handle); + dissector_delete("tcp.port", saved_lsc_port, lsc_tcp_handle); + } + } /* Set the port number */ - lsc_port = global_lsc_port; - - dissector_add("udp.port", lsc_port, lsc_udp_handle); - dissector_add("tcp.port", lsc_port, lsc_tcp_handle); + if (global_lsc_port != 0) { + dissector_add("udp.port", global_lsc_port, lsc_udp_handle); + dissector_add("tcp.port", global_lsc_port, lsc_tcp_handle); + } + saved_lsc_port = global_lsc_port; } diff --git a/epan/dissectors/packet-osi.c b/epan/dissectors/packet-osi.c index 7901cdc550..e9960c6d5c 100644 --- a/epan/dissectors/packet-osi.c +++ b/epan/dissectors/packet-osi.c @@ -47,12 +47,10 @@ static int proto_osi = -1; static dissector_handle_t osi_handle; -static dissector_handle_t osi_tpkt_handle; /* Preferences for OSI over TPKT over TCP */ static gboolean tpkt_desegment = FALSE; -int global_tcp_port_osi_over_tpkt = 0; -int tcp_port_osi_over_tpkt = 0; +static int global_tcp_port_osi_over_tpkt = 0; cksum_status_t calc_checksum( tvbuff_t *tvb, int offset, guint len, guint checksum) { @@ -292,7 +290,10 @@ static void dissect_osi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) void proto_reg_handoff_osi(void) { - static int osi_prefs_initialized = FALSE; + static gboolean osi_prefs_initialized = FALSE; + static dissector_handle_t osi_tpkt_handle; + static guint tcp_port_osi_over_tpkt; + if (!osi_prefs_initialized) { osi_handle = create_dissector_handle(dissect_osi, proto_osi); dissector_add("llc.dsap", SAP_OSINL1, osi_handle); @@ -300,20 +301,26 @@ proto_reg_handoff_osi(void) dissector_add("llc.dsap", SAP_OSINL3, osi_handle); dissector_add("llc.dsap", SAP_OSINL4, osi_handle); dissector_add("llc.dsap", SAP_OSINL5, osi_handle); - dissector_add("ppp.protocol", PPP_OSI, osi_handle); + dissector_add("ppp.protocol", PPP_OSI, osi_handle); dissector_add("chdlctype", CHDLCTYPE_OSI, osi_handle); dissector_add("null.type", BSD_AF_ISO, osi_handle); dissector_add("gre.proto", SAP_OSINL5, osi_handle); data_handle = find_dissector("data"); ppp_handle = find_dissector("ppp"); + osi_tpkt_handle = create_dissector_handle(dissect_osi_tpkt, proto_osi); + dissector_add_handle("tcp.port", osi_tpkt_handle); /* for 'decode-as' */ osi_prefs_initialized = TRUE; - }else{ - dissector_delete("tcp.port", tcp_port_osi_over_tpkt, osi_tpkt_handle); + } else { + if (tcp_port_osi_over_tpkt != 0) { + dissector_delete("tcp.port", tcp_port_osi_over_tpkt, osi_tpkt_handle); + } } + if (global_tcp_port_osi_over_tpkt != 0) { + dissector_add("tcp.port", global_tcp_port_osi_over_tpkt, osi_tpkt_handle); + } tcp_port_osi_over_tpkt = global_tcp_port_osi_over_tpkt; - dissector_add("tcp.port", global_tcp_port_osi_over_tpkt, osi_tpkt_handle); } void @@ -343,7 +350,7 @@ proto_register_osi(void) prefs_register_uint_preference(osi_module, "tpkt_port", "TCP port for OSI over TPKT", "TCP port for OSI over TPKT", - 10, &global_tcp_port_osi_over_tpkt); + 10, &global_tcp_port_osi_over_tpkt); prefs_register_bool_preference(osi_module, "tpkt_reassemble", "Reassemble segmented TPKT datagrams", "Whether segmented TPKT datagrams should be reassembled", |