diff options
-rw-r--r-- | epan/dissectors/packet-fddi.c | 17 | ||||
-rw-r--r-- | epan/dissectors/packet-nettl.c | 17 | ||||
-rw-r--r-- | epan/dissectors/packet-raw.c | 6 |
3 files changed, 19 insertions, 21 deletions
diff --git a/epan/dissectors/packet-fddi.c b/epan/dissectors/packet-fddi.c index f2680249bc..cdf6731b57 100644 --- a/epan/dissectors/packet-fddi.c +++ b/epan/dissectors/packet-fddi.c @@ -56,6 +56,8 @@ static gint ett_fddi_fc = -1; static int fddi_tap = -1; +static dissector_handle_t fddi_handle, fddi_bitswapped_handle; + static gboolean fddi_padding = FALSE; #define FDDI_PADDING ((fddi_padding) ? 3 : 0) @@ -512,7 +514,12 @@ proto_register_fddi(void) * Called from various dissectors for encapsulated FDDI frames. * We assume the MAC addresses in them aren't bitswapped. */ - register_dissector("fddi", dissect_fddi_not_bitswapped, proto_fddi); + fddi_handle = register_dissector("fddi", dissect_fddi_not_bitswapped, proto_fddi); + + /* + * Here, we assume they are bitswapped. + */ + fddi_bitswapped_handle = register_dissector("fddi_bitswapped", dissect_fddi_bitswapped, proto_fddi); fddi_module = prefs_register_protocol(proto_fddi, NULL); prefs_register_bool_preference(fddi_module, "padding", @@ -528,20 +535,12 @@ proto_register_fddi(void) void proto_reg_handoff_fddi(void) { - dissector_handle_t fddi_handle, fddi_bitswapped_handle; - /* * Get a handle for the LLC dissector. */ llc_handle = find_dissector("llc"); data_handle = find_dissector("data"); - fddi_handle = find_dissector("fddi"); - dissector_add_uint("wtap_encap", WTAP_ENCAP_FDDI, fddi_handle); - dissector_add_uint("sflow_245.header_protocol", SFLOW_245_HEADER_FDDI, fddi_handle); - - fddi_bitswapped_handle = - create_dissector_handle(dissect_fddi_bitswapped, proto_fddi); dissector_add_uint("wtap_encap", WTAP_ENCAP_FDDI_BITSWAPPED, fddi_bitswapped_handle); diff --git a/epan/dissectors/packet-nettl.c b/epan/dissectors/packet-nettl.c index 677bcfbea9..985b43eeb4 100644 --- a/epan/dissectors/packet-nettl.c +++ b/epan/dissectors/packet-nettl.c @@ -46,11 +46,12 @@ static int hf_nettl_uid = -1; static dissector_handle_t eth_withoutfcs_handle; static dissector_handle_t tr_handle; +static dissector_handle_t fddi_bitswapped_handle; static dissector_handle_t lapb_handle; static dissector_handle_t x25_handle; static dissector_handle_t sctp_handle; +static dissector_handle_t raw_ip_handle; static dissector_handle_t data_handle; -static dissector_table_t wtap_dissector_table; static dissector_table_t ip_proto_dissector_table; static dissector_table_t tcp_subdissector_table; @@ -237,9 +238,7 @@ dissect_nettl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U call_dissector(tr_handle, tvb, pinfo, tree); break; case WTAP_ENCAP_NETTL_FDDI: - if (!dissector_try_uint(wtap_dissector_table, - WTAP_ENCAP_FDDI_BITSWAPPED, tvb, pinfo, tree)) - call_dissector(data_handle, tvb, pinfo, tree); + call_dissector(fddi_bitswapped_handle, tvb, pinfo, tree); break; case WTAP_ENCAP_NETTL_RAW_IP: if ( (pinfo->pseudo_header->nettl.kind & NETTL_HDR_PDU_MASK) == 0 ) @@ -247,9 +246,8 @@ dissect_nettl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U call_dissector(data_handle, tvb, pinfo, tree); else if (pinfo->pseudo_header->nettl.subsys == NETTL_SUBSYS_NS_LS_SCTP ) call_dissector(sctp_handle, tvb, pinfo, tree); - else if (!dissector_try_uint(wtap_dissector_table, - WTAP_ENCAP_RAW_IP, tvb, pinfo, tree)) - call_dissector(data_handle, tvb, pinfo, tree); + else + call_dissector(raw_ip_handle, tvb, pinfo, tree); break; case WTAP_ENCAP_NETTL_RAW_ICMP: if (!dissector_try_uint(ip_proto_dissector_table, @@ -342,15 +340,16 @@ proto_reg_handoff_nettl(void) dissector_handle_t nettl_handle; /* - * Get handles for the Ethernet, Token Ring, FDDI, and RAW dissectors. + * Get handles for various dissectors and dissector tables. */ eth_withoutfcs_handle = find_dissector("eth_withoutfcs"); tr_handle = find_dissector("tr"); + fddi_bitswapped_handle = find_dissector("fddi_bitswapped"); lapb_handle = find_dissector("lapb"); x25_handle = find_dissector("x.25"); sctp_handle = find_dissector("sctp"); + raw_ip_handle = find_dissector("raw_ip"); data_handle = find_dissector("data"); - wtap_dissector_table = find_dissector_table("wtap_encap"); ip_proto_dissector_table = find_dissector_table("ip.proto"); tcp_subdissector_table = find_dissector_table("tcp.port"); diff --git a/epan/dissectors/packet-raw.c b/epan/dissectors/packet-raw.c index 4c3f048784..9a3d20a1d7 100644 --- a/epan/dissectors/packet-raw.c +++ b/epan/dissectors/packet-raw.c @@ -38,6 +38,7 @@ static gint ett_raw = -1; static const char zeroes[10] = {0,0,0,0,0,0,0,0,0,0}; +static dissector_handle_t raw_handle; static dissector_handle_t ip_handle; static dissector_handle_t ipv6_handle; static dissector_handle_t data_handle; @@ -172,13 +173,13 @@ proto_register_raw(void) proto_raw = proto_register_protocol("Raw packet data", "Raw", "raw"); proto_register_subtree_array(ett, array_length(ett)); + + raw_handle = register_dissector("raw_ip", dissect_raw, proto_raw); } void proto_reg_handoff_raw(void) { - dissector_handle_t raw_handle; - /* * Get handles for the IP, IPv6, undissected-data, and * PPP-in-HDLC-like-framing dissectors. @@ -187,7 +188,6 @@ proto_reg_handoff_raw(void) ipv6_handle = find_dissector("ipv6"); data_handle = find_dissector("data"); ppp_hdlc_handle = find_dissector("ppp_hdlc"); - raw_handle = create_dissector_handle(dissect_raw, proto_raw); dissector_add_uint("wtap_encap", WTAP_ENCAP_RAW_IP, raw_handle); register_capture_dissector("wtap_encap", WTAP_ENCAP_RAW_IP, capture_raw, proto_raw); } |