diff options
-rw-r--r-- | epan/dissectors/packet-lapd.c | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/epan/dissectors/packet-lapd.c b/epan/dissectors/packet-lapd.c index 672e3a8f9e..467977cd8b 100644 --- a/epan/dissectors/packet-lapd.c +++ b/epan/dissectors/packet-lapd.c @@ -81,12 +81,16 @@ static gint ett_lapd = -1; static gint ett_lapd_address = -1; static gint ett_lapd_control = -1; static gint ett_lapd_checksum = -1; -static gint pref_lapd_rtp_payload_type = 0; -static guint pref_lapd_sctp_payload_protocol_identifier = 0; + +static guint pref_lapd_rtp_payload_type = 0; +static guint pref_lapd_sctp_ppi = 0; static expert_field ei_lapd_abort = EI_INIT; static expert_field ei_lapd_checksum_bad = EI_INIT; +static dissector_handle_t lapd_handle; +static dissector_handle_t lapd_bitstream_handle; + static dissector_table_t lapd_sapi_dissector_table; static dissector_table_t lapd_gsm_sapi_dissector_table; @@ -728,7 +732,8 @@ proto_register_lapd(void) expert_lapd = expert_register_protocol(proto_lapd); expert_register_field_array(expert_lapd, ei, array_length(ei)); - register_dissector("lapd", dissect_lapd, proto_lapd); + lapd_handle = register_dissector("lapd", dissect_lapd, proto_lapd); + lapd_bitstream_handle = register_dissector("lapd-bitstream", dissect_lapd_bitstream, proto_lapd); lapd_sapi_dissector_table = register_dissector_table("lapd.sapi", "LAPD SAPI", proto_lapd, FT_UINT16, BASE_DEC, DISSECTOR_TABLE_NOT_ALLOW_DUPLICATE); @@ -748,27 +753,20 @@ proto_register_lapd(void) "from 96 to 127. Set it to 0 to disable.", 10, &pref_lapd_rtp_payload_type); prefs_register_uint_preference(lapd_module, "sctp_payload_protocol_identifier", - "SCTP Payload protocol Identifier for LAPD", - "SCTP Payload protocol Identifier for LAPD. Its a " + "SCTP Payload Protocol Identifier for LAPD", + "SCTP Payload Protocol Identifier for LAPD. It is a " "32 bits value from 0 to 4294967295. Set it to 0 to disable.", - 10, &pref_lapd_sctp_payload_protocol_identifier); - - + 10, &pref_lapd_sctp_ppi); } void proto_reg_handoff_lapd(void) { static gboolean init = FALSE; - static dissector_handle_t lapd_bitstream_handle; - static gint lapd_rtp_payload_type; - static guint lapd_sctp_payload_protocol_identifier; - - dissector_handle_t lapd_handle; - lapd_handle = find_dissector("lapd"); + static guint lapd_rtp_payload_type; + static guint lapd_sctp_ppi; if (!init) { - dissector_add_uint("wtap_encap", WTAP_ENCAP_LINUX_LAPD, lapd_handle); dissector_add_uint("wtap_encap", WTAP_ENCAP_LAPD, lapd_handle); dissector_add_uint("l2tp.pw_type", L2TPv3_PROTOCOL_LAPD, lapd_handle); @@ -777,27 +775,22 @@ proto_reg_handoff_lapd(void) dissector_add_for_decode_as("sctp.ppi", lapd_handle); dissector_add_for_decode_as("sctp.port", lapd_handle); - register_dissector("lapd-bitstream", dissect_lapd_bitstream, proto_lapd); - lapd_bitstream_handle = find_dissector("lapd-bitstream"); - init = TRUE; } else { if ((lapd_rtp_payload_type > 95) && (lapd_rtp_payload_type < 128)) dissector_delete_uint("rtp.pt", lapd_rtp_payload_type, lapd_bitstream_handle); - /* If "previous" value is a valid protocol id, then clean up the dissector preference mapping. */ - if (lapd_sctp_payload_protocol_identifier != 0) - dissector_delete_uint("sctp.ppi", lapd_sctp_payload_protocol_identifier, lapd_handle); + if (lapd_sctp_ppi > 0) + dissector_delete_uint("sctp.ppi", lapd_sctp_ppi, lapd_handle); } lapd_rtp_payload_type = pref_lapd_rtp_payload_type; if ((lapd_rtp_payload_type > 95) && (lapd_rtp_payload_type < 128)) dissector_add_uint("rtp.pt", lapd_rtp_payload_type, lapd_bitstream_handle); - /* Only update the protocol identifier preference if there is a valid identifier (value > 0). */ - lapd_sctp_payload_protocol_identifier = pref_lapd_sctp_payload_protocol_identifier; - if ( lapd_sctp_payload_protocol_identifier > 0) - dissector_add_uint("sctp.ppi", lapd_sctp_payload_protocol_identifier, lapd_handle); + lapd_sctp_ppi = pref_lapd_sctp_ppi; + if (lapd_sctp_ppi > 0) + dissector_add_uint("sctp.ppi", lapd_sctp_ppi, lapd_handle); } /* |