diff options
author | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2013-09-03 06:35:01 +0000 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2013-09-03 06:35:01 +0000 |
commit | 800359d7712fa10178c639950c539d3b6542c121 (patch) | |
tree | fb814c9e0657134245f17df268ccb32987e0575c /epan/dissectors/packet-dns.c | |
parent | 7f64348cc55cbad28b8a8aab347c1fd4b097f36e (diff) |
Enhance default DNS type... (and expert info)
Convert proto_tree_add_text calls to proto_tree_add_item
svn path=/trunk/; revision=51708
Diffstat (limited to 'epan/dissectors/packet-dns.c')
-rw-r--r-- | epan/dissectors/packet-dns.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/epan/dissectors/packet-dns.c b/epan/dissectors/packet-dns.c index e46abd0c1e..c9b0e9dba9 100644 --- a/epan/dissectors/packet-dns.c +++ b/epan/dissectors/packet-dns.c @@ -311,6 +311,8 @@ static int hf_dns_winsr_lookup_timeout = -1; static int hf_dns_winsr_cache_timeout = -1; static int hf_dns_winsr_name_result_domain = -1; +static int hf_dns_data = -1; + static gint ett_dns = -1; static gint ett_dns_qd = -1; static gint ett_dns_rr = -1; @@ -329,6 +331,7 @@ static expert_field ei_dns_rr_opt_bad_length = EI_INIT; static expert_field ei_dns_depr_opc = EI_INIT; static expert_field ei_ttl_negative = EI_INIT; static expert_field ei_dns_tsig_alg = EI_INIT; +static expert_field ei_dns_undecoded_option = EI_INIT; static dissector_table_t dns_tsig_dissector_table=NULL; @@ -1617,7 +1620,7 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset, const guchar *name; gchar *name_out; int name_len; - int type; + int dns_type; int dns_class; int flush; const char *class_name; @@ -1634,7 +1637,7 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset, cur_offset = offsetx; len = get_dns_name_type_class(tvb, offsetx, dns_data_offset, &name, &name_len, - &type, &dns_class); + &dns_type, &dns_class); data_offset += len; cur_offset += len; if (is_mdns) { @@ -1644,7 +1647,7 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset, } else { flush = 0; } - type_name = dns_type_name(type); + type_name = dns_type_name(dns_type); class_name = dns_class_name(dns_class); ttl = tvb_get_ntohl(tvb, data_offset); @@ -1667,19 +1670,19 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset, * format it for display. */ name_out = format_text(name, strlen(name)); - if (type != T_OPT) { + if (dns_type != T_OPT) { trr = proto_tree_add_text(dns_tree, tvb, offsetx, (data_offset - data_start) + data_len, "%s: type %s, class %s", name_out, type_name, class_name); rr_tree = add_rr_to_tree(trr, ett_dns_rr, tvb, offsetx, name, name_len, - type, dns_class, flush, ttl, data_len, pinfo, is_mdns); + dns_type, dns_class, flush, ttl, data_len, pinfo, is_mdns); } else { trr = proto_tree_add_text(dns_tree, tvb, offsetx, (data_offset - data_start) + data_len, "%s: type %s", name_out, type_name); rr_tree = add_opt_rr_to_tree(trr, ett_dns_rr, tvb, offsetx, name, name_len, - type, dns_class, flush, ttl, data_len, is_mdns); + dns_type, dns_class, flush, ttl, data_len, is_mdns); } if (is_mdns && flush) { proto_item_append_text(trr, ", cache flush"); @@ -1690,7 +1693,7 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset, return data_offset - data_start; } - switch (type) { + switch (dns_type) { case T_A: { @@ -3563,7 +3566,11 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset, default: - proto_tree_add_text(rr_tree, tvb, cur_offset, data_len, "Data"); + expert_add_info_format_text(pinfo, trr, &ei_dns_undecoded_option, + "Dissector for DNS Type (%d)" + " code not implemented, Contact Wireshark developers" + " if you want this supported", dns_type); + proto_tree_add_item(rr_tree, hf_dns_data, tvb, cur_offset, data_len, ENC_NA); break; } @@ -5283,10 +5290,16 @@ proto_register_dns(void) { "Name Result Domain", "dns.winsr.name_result_domain", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + + { &hf_dns_data, + { "Data", "dns.data", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, }; static ei_register_info ei[] = { { &ei_dns_rr_opt_bad_length, { "dns.rr.opt.bad_length", PI_MALFORMED, PI_ERROR, "Length too long for any type of IP address.", EXPFILL }}, + { &ei_dns_undecoded_option, { "dns.undecoded.type", PI_UNDECODED, PI_NOTE, "Undecoded option", EXPFILL }}, { &ei_dns_depr_opc, { "dns.depr.opc", PI_PROTOCOL, PI_WARN, "Deprecated opcode", EXPFILL }}, { &ei_ttl_negative, { "dns.ttl.negative", PI_PROTOCOL, PI_WARN, "TTL can't be negative", EXPFILL }}, { &ei_dns_tsig_alg, { "dns.tsig.noalg", PI_UNDECODED, PI_WARN, "No dissector for algorithm", EXPFILL }}, |