diff options
author | Michael Mann <mmann78@netscape.net> | 2017-01-07 21:31:05 -0500 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2017-01-08 08:15:41 +0000 |
commit | 3952052426fbf063585b57aefe6b1b2fa57d651d (patch) | |
tree | 57bd5f6e8b45294d48266c6d2331917bbd875c3d | |
parent | ebd3dc6907c44d642a76f2a459395ffdb728143b (diff) | |
download | wireshark-3952052426fbf063585b57aefe6b1b2fa57d651d.tar.gz wireshark-3952052426fbf063585b57aefe6b1b2fa57d651d.tar.bz2 wireshark-3952052426fbf063585b57aefe6b1b2fa57d651d.zip |
Restore some MPLS registered dissectors.
Per https://ask.wireshark.org/questions/58532/missing-dissector-pw_eth_cw
it appears some MPLS dissectors are still referenced by name and
not just for the dissector table created in
I1e0c3ae784b71c0145b1f1730a97feae8e9f488f.
Change-Id: I27be132f56c879be16f78f76ac0e9688673a47c1
Reviewed-on: https://code.wireshark.org/review/19582
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r-- | epan/dissectors/packet-itdm.c | 5 | ||||
-rw-r--r-- | epan/dissectors/packet-mpls.c | 5 | ||||
-rw-r--r-- | epan/dissectors/packet-pw-atm.c | 12 | ||||
-rw-r--r-- | epan/dissectors/packet-pw-cesopsn.c | 1 | ||||
-rw-r--r-- | epan/dissectors/packet-pw-eth.c | 5 | ||||
-rw-r--r-- | epan/dissectors/packet-pw-fr.c | 7 | ||||
-rw-r--r-- | epan/dissectors/packet-pw-hdlc.c | 12 | ||||
-rw-r--r-- | epan/dissectors/packet-pw-satop.c | 6 |
8 files changed, 26 insertions, 27 deletions
diff --git a/epan/dissectors/packet-itdm.c b/epan/dissectors/packet-itdm.c index cbadee8d3c..37d8b0b53d 100644 --- a/epan/dissectors/packet-itdm.c +++ b/epan/dissectors/packet-itdm.c @@ -64,6 +64,8 @@ static int hf_itdm_ctl_cksum = -1; static gint ett_itdm = -1; static gint ett_itdm_ctl = -1; +static dissector_handle_t itdm_handle; + /* ZZZZ some magic number.. */ static guint gbl_ItdmMPLSLabel = 0x99887; static guint gbl_ItdmCTLFlowNo = 0; @@ -439,6 +441,7 @@ proto_register_itdm(void) module_t *itdm_module; proto_itdm = proto_register_protocol("Internal TDM", "ITDM", "itdm"); + itdm_handle = register_dissector("itdm", dissect_itdm, proto_itdm); proto_register_field_array(proto_itdm, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -460,11 +463,9 @@ void proto_reg_handoff_itdm(void) { static gboolean Initialized=FALSE; - static dissector_handle_t itdm_handle; static guint ItdmMPLSLabel; if (!Initialized) { - itdm_handle = create_dissector_handle( dissect_itdm, proto_itdm ); Initialized=TRUE; } else { dissector_delete_uint("mpls.label", ItdmMPLSLabel, itdm_handle); diff --git a/epan/dissectors/packet-mpls.c b/epan/dissectors/packet-mpls.c index 59e9a206a2..4ea63e589e 100644 --- a/epan/dissectors/packet-mpls.c +++ b/epan/dissectors/packet-mpls.c @@ -121,6 +121,7 @@ static expert_field ei_mpls_pw_mcw_error_processing_message = EI_INIT; static expert_field ei_mpls_invalid_label = EI_INIT; static dissector_handle_t mpls_handle; +static dissector_handle_t mpls_pwcw_handle; #if 0 /*not used yet*/ /* @@ -641,6 +642,7 @@ proto_register_mpls(void) expert_register_field_array(expert_mpls, ei, array_length(ei)); mpls_handle = register_dissector("mpls", dissect_mpls, proto_mpls); + mpls_pwcw_handle = register_dissector("mplspwcw", dissect_pw_mcw, proto_pw_mcw ); /* FF: mpls subdissector table is indexed by label */ mpls_subdissector_table = register_dissector_table("mpls.label", @@ -667,8 +669,6 @@ proto_register_mpls(void) void proto_reg_handoff_mpls(void) { - dissector_handle_t mpls_pwcw_handle; - dissector_add_uint("ethertype", ETHERTYPE_MPLS, mpls_handle); dissector_add_uint("ethertype", ETHERTYPE_MPLS_MULTI, mpls_handle); dissector_add_uint("ppp.protocol", PPP_MPLS_UNI, mpls_handle); @@ -688,7 +688,6 @@ proto_reg_handoff_mpls(void) dissector_add_uint_with_preference("udp.port", UDP_PORT_MPLS_OVER_UDP, mpls_handle); dissector_add_uint("vxlan.next_proto", VXLAN_MPLS, mpls_handle); - mpls_pwcw_handle = create_dissector_handle( dissect_pw_mcw, proto_pw_mcw ); dissector_add_uint( "mpls.label", MPLS_LABEL_INVALID, mpls_pwcw_handle ); dissector_ipv6 = find_dissector_add_dependency("ipv6", proto_pw_mcw ); diff --git a/epan/dissectors/packet-pw-atm.c b/epan/dissectors/packet-pw-atm.c index c770a24a24..609c1e7112 100644 --- a/epan/dissectors/packet-pw-atm.c +++ b/epan/dissectors/packet-pw-atm.c @@ -1905,6 +1905,10 @@ proto_register_pw_atm_ata(void) dh_control_word = register_dissector("mpls_pw_atm_control_word" ,dissect_control_word ,proto_control_word); dh_cell = register_dissector("mpls_pw_atm_cell" ,dissect_cell ,proto_cell); dh_cell_header = register_dissector("mpls_pw_atm_cell_header",dissect_cell_header ,proto_cell_header); + register_dissector("mpls_pw_atm_aal5_sdu" ,dissect_aal5_sdu ,proto_aal5_sdu); + register_dissector("mpls_pw_atm_11_or_aal5_pdu" ,dissect_11_or_aal5_pdu ,proto_11_or_aal5_pdu); + register_dissector("mpls_pw_atm_n1_cw" ,dissect_n1_cw ,proto_n1_cw); + register_dissector("mpls_pw_atm_n1_nocw" ,dissect_n1_nocw ,proto_n1_nocw); { static const char description_allow_cw_length_nonzero[] = "Enable to allow non-zero Length in Control Word." @@ -1955,13 +1959,13 @@ void proto_reg_handoff_pw_atm_ata(void) { dissector_handle_t h; - h = create_dissector_handle( dissect_n1_cw, proto_n1_cw ); + h = find_dissector("mpls_pw_atm_n1_cw"); dissector_add_for_decode_as( "mpls.label", h ); - h = create_dissector_handle( dissect_n1_nocw, proto_n1_nocw ); + h = find_dissector("mpls_pw_atm_n1_nocw"); dissector_add_for_decode_as( "mpls.label", h ); - h = create_dissector_handle( dissect_11_or_aal5_pdu, proto_11_or_aal5_pdu ); + h = find_dissector("mpls_pw_atm_11_or_aal5_pdu"); dissector_add_for_decode_as( "mpls.label", h ); - h = create_dissector_handle( dissect_aal5_sdu, proto_aal5_sdu ); + h = find_dissector("mpls_pw_atm_aal5_sdu"); dissector_add_for_decode_as( "mpls.label", h ); dh_atm_truncated = find_dissector("atm_pw_truncated"); diff --git a/epan/dissectors/packet-pw-cesopsn.c b/epan/dissectors/packet-pw-cesopsn.c index 882e2c092a..76c7ec50b7 100644 --- a/epan/dissectors/packet-pw-cesopsn.c +++ b/epan/dissectors/packet-pw-cesopsn.c @@ -445,6 +445,7 @@ void proto_register_pw_cesopsn(void) proto_register_subtree_array(ett_array, array_length(ett_array)); expert_pwcesopsn = expert_register_protocol(proto); expert_register_field_array(expert_pwcesopsn, ei, array_length(ei)); + register_dissector("pw_cesopsn_mpls", dissect_pw_cesopsn_mpls, proto); pw_cesopsn_udp_handle = register_dissector("pw_cesopsn_udp", dissect_pw_cesopsn_udp, proto); } diff --git a/epan/dissectors/packet-pw-eth.c b/epan/dissectors/packet-pw-eth.c index d157c0ce0a..2c245331f7 100644 --- a/epan/dissectors/packet-pw-eth.c +++ b/epan/dissectors/packet-pw-eth.c @@ -193,6 +193,8 @@ proto_register_pw_eth(void) "pwethheuristic"); proto_register_field_array(proto_pw_eth_cw, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); + pw_eth_handle_cw = register_dissector("pw_eth_cw", dissect_pw_eth_cw, proto_pw_eth_cw); + pw_eth_handle_nocw = register_dissector("pw_eth_nocw", dissect_pw_eth_nocw, proto_pw_eth_nocw); pw_eth_handle_heuristic = register_dissector("pw_eth_heuristic", dissect_pw_eth_heuristic, proto_pw_eth_heuristic); } @@ -202,10 +204,7 @@ proto_reg_handoff_pw_eth(void) { eth_withoutfcs_handle = find_dissector_add_dependency("eth_withoutfcs", proto_pw_eth_cw); - pw_eth_handle_cw = create_dissector_handle( dissect_pw_eth_cw, proto_pw_eth_cw ); dissector_add_for_decode_as("mpls.label", pw_eth_handle_cw); - - pw_eth_handle_nocw = create_dissector_handle( dissect_pw_eth_nocw, proto_pw_eth_nocw ); dissector_add_for_decode_as("mpls.label", pw_eth_handle_nocw); dissector_add_for_decode_as("mpls.label", pw_eth_handle_heuristic); diff --git a/epan/dissectors/packet-pw-fr.c b/epan/dissectors/packet-pw-fr.c index b7134f9878..565a64f94f 100644 --- a/epan/dissectors/packet-pw-fr.c +++ b/epan/dissectors/packet-pw-fr.c @@ -67,7 +67,7 @@ static const value_string vals_frg[] = { static dissector_handle_t fr_stripped_address_handle; - +static dissector_handle_t pw_fr_mpls_handle; static int dissect_pw_fr( tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* data _U_ ) @@ -305,17 +305,14 @@ static hf_register_info hf[] = { proto_register_subtree_array(ett, array_length(ett)); expert_pwfr = expert_register_protocol(proto_encaps); expert_register_field_array(expert_pwfr, ei, array_length(ei)); + pw_fr_mpls_handle = register_dissector("pw_fr", dissect_pw_fr, proto_encaps ); } void proto_reg_handoff_pw_fr(void) { - dissector_handle_t pw_fr_mpls_handle; - - pw_fr_mpls_handle = create_dissector_handle( dissect_pw_fr, proto_encaps ); dissector_add_for_decode_as("mpls.label", pw_fr_mpls_handle); - fr_stripped_address_handle = find_dissector_add_dependency("fr_stripped_address", proto_encaps); } diff --git a/epan/dissectors/packet-pw-hdlc.c b/epan/dissectors/packet-pw-hdlc.c index d323b7c328..915095141e 100644 --- a/epan/dissectors/packet-pw-hdlc.c +++ b/epan/dissectors/packet-pw-hdlc.c @@ -42,6 +42,8 @@ void proto_reg_handoff_pw_hdlc(void); static dissector_handle_t ppp_handle; static dissector_handle_t fr_handle; +static dissector_handle_t pw_hdlc_nocw_fr_handle; +static dissector_handle_t pw_ppp_handle; static gint proto_pw_hdlc_nocw_fr = -1; static gint proto_pw_hdlc_nocw_hdlc_ppp = -1; @@ -218,16 +220,14 @@ void proto_register_pw_hdlc(void) proto_register_field_array(proto_pw_hdlc_nocw_fr, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); + + pw_hdlc_nocw_fr_handle = register_dissector("pw_hdlc_nocw_fr", dissect_pw_hdlc_nocw_fr, proto_pw_hdlc_nocw_fr ); + pw_ppp_handle = register_dissector("pw_hdlc_nocw_hdlc_ppp", dissect_pw_hdlc_nocw_hdlc_ppp, proto_pw_hdlc_nocw_hdlc_ppp ); } void proto_reg_handoff_pw_hdlc(void) { - dissector_handle_t pw_fr_handle, pw_ppp_handle; - - pw_fr_handle = create_dissector_handle( dissect_pw_hdlc_nocw_fr, proto_pw_hdlc_nocw_fr ); - dissector_add_for_decode_as( "mpls.label", pw_fr_handle ); - - pw_ppp_handle = create_dissector_handle( dissect_pw_hdlc_nocw_hdlc_ppp, proto_pw_hdlc_nocw_hdlc_ppp ); + dissector_add_for_decode_as( "mpls.label", pw_hdlc_nocw_fr_handle ); dissector_add_for_decode_as( "mpls.label", pw_ppp_handle ); ppp_handle = find_dissector_add_dependency( "ppp", proto_pw_hdlc_nocw_hdlc_ppp ); diff --git a/epan/dissectors/packet-pw-satop.c b/epan/dissectors/packet-pw-satop.c index 36802d95c8..821d8a748b 100644 --- a/epan/dissectors/packet-pw-satop.c +++ b/epan/dissectors/packet-pw-satop.c @@ -63,6 +63,7 @@ static expert_field ei_cw_packet_size_too_small = EI_INIT; static dissector_handle_t pw_padding_handle; static dissector_handle_t pw_satop_udp_handle; +static dissector_handle_t pw_satop_mpls_handle; const char pwc_longname_pw_satop[] = "SAToP (no RTP support)"; @@ -461,19 +462,16 @@ void proto_register_pw_satop(void) proto_register_subtree_array(ett_array, array_length(ett_array)); expert_pwsatop = expert_register_protocol(proto); expert_register_field_array(expert_pwsatop, ei, array_length(ei)); + pw_satop_mpls_handle = register_dissector("pw_satop_mpls", dissect_pw_satop_mpls, proto); pw_satop_udp_handle = register_dissector("pw_satop_udp", dissect_pw_satop_udp, proto); } void proto_reg_handoff_pw_satop(void) { - dissector_handle_t pw_satop_mpls_handle; - pw_padding_handle = find_dissector_add_dependency("pw_padding", proto); /* For Decode As */ - pw_satop_mpls_handle = create_dissector_handle( dissect_pw_satop_mpls, proto ); dissector_add_for_decode_as("mpls.label", pw_satop_mpls_handle); - dissector_add_for_decode_as_with_preference("udp.port", pw_satop_udp_handle); } |