diff options
author | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2015-03-16 14:54:03 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2015-03-16 18:28:25 +0000 |
commit | ce55eb3a5e867c80a33f5af74c7ccea4d04384fb (patch) | |
tree | 2c0ade20b0bd1d9312721845df8037c3b24bac96 /epan | |
parent | e32832441c2eb8e47ba45c425837123b83895446 (diff) |
DNS: Add CSYNC (Child-to-Parent Synchronization in DNS RFC7477)
Change-Id: Ida53904b4db1ca982055de267ce6f4fdcedd248b
Reviewed-on: https://code.wireshark.org/review/7701
Reviewed-by: Michael Mann <mmann78@netscape.net>
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>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-dns.c | 63 |
1 files changed, 60 insertions, 3 deletions
diff --git a/epan/dissectors/packet-dns.c b/epan/dissectors/packet-dns.c index ff147a24ae..2881b275ac 100644 --- a/epan/dissectors/packet-dns.c +++ b/epan/dissectors/packet-dns.c @@ -197,6 +197,11 @@ static int hf_dns_mx_preference = -1; static int hf_dns_mx_mail_exchange = -1; static int hf_dns_txt_length = -1; static int hf_dns_txt = -1; +static int hf_dns_csync_soa = -1; +static int hf_dns_csync_flags = -1; +static int hf_dns_csync_flags_immediate = -1; +static int hf_dns_csync_flags_soaminimum = -1; +static int hf_dns_csync_type_bitmap = -1; static int hf_dns_openpgpkey = -1; static int hf_dns_spf_length = -1; static int hf_dns_spf = -1; @@ -395,6 +400,7 @@ static gint ett_t_key = -1; static gint ett_dns_mac = -1; static gint ett_caa_flags = -1; static gint ett_caa_data = -1; +static gint ett_dns_csdync_flags = -1; static expert_field ei_dns_opt_bad_length = EI_INIT; static expert_field ei_dns_depr_opc = EI_INIT; @@ -515,9 +521,10 @@ typedef struct _dns_conv_info_t { #define T_NINFO 56 /* NINFO */ #define T_RKEY 57 /* RKEY */ #define T_TALINK 58 /* Trust Anchor LINK */ -#define T_CDS 59 /* Child DS (draft-ietf-dnsop-delegation-trust-maintainance)*/ -#define T_CDNSKEY 60 /* DNSKEY(s) the Child wants reflected in DS (draft-ietf-dnsop-delegation-trust-maintainance)*/ +#define T_CDS 59 /* Child DS (RFC7344)*/ +#define T_CDNSKEY 60 /* DNSKEY(s) the Child wants reflected in DS ( [RFC7344])*/ #define T_OPENPGPKEY 61 /* OPENPGPKEY draft-ietf-dane-openpgpkey-00 */ +#define T_CSYNC 62 /* Child To Parent Synchronization (RFC7477) */ #define T_SPF 99 /* SPF RR (RFC 4408) section 3 */ #define T_UINFO 100 /* [IANA-Reserved] */ #define T_UID 101 /* [IANA-Reserved] */ @@ -871,6 +878,7 @@ static const value_string dns_types_vals[] = { { T_CDS, "CDS" }, /* draft-ietf-dnsop-delegation-trust-maintainance-14 */ { T_CDNSKEY, "CDNSKEY" }, /* draft-ietf-dnsop-delegation-trust-maintainance-14 */ { T_OPENPGPKEY, "OPENPGPKEY" }, /* draft-ietf-dane-openpgpkey-00 */ + { T_CSYNC, "CSYNC " }, /* RFC 7477 */ { T_SPF, "SPF" }, /* RFC 4408 */ { T_UINFO, "UINFO" }, /* IANA reserved */ { T_UID, "UID" }, /* IANA reserved */ @@ -962,7 +970,8 @@ static const value_string dns_types_description_vals[] = { { T_TALINK, "TALINK (Trust Anchor LINK)" }, { T_CDS, "CDS (Child DS)" }, /* draft-ietf-dnsop-delegation-trust-maintainance-14 */ { T_CDNSKEY, "CDNSKEY (DNSKEY(s) the Child wants reflected in DS)" }, /* draft-ietf-dnsop-delegation-trust-maintainance-14 */ - { T_OPENPGPKEY, "OPENPGPKEY ( OpenPGP Key)" }, /* draft-ietf-dane-openpgpkey-00 */ + { T_OPENPGPKEY, "OPENPGPKEY (OpenPGP Key)" }, /* draft-ietf-dane-openpgpkey-00 */ + { T_CSYNC, "CSYNC (Child-to-Parent Synchronization)" }, /* RFC7477 */ { T_SPF, "SPF" }, /* RFC 4408 */ { T_UINFO, "UINFO" }, /* IANA reserved */ { T_UID, "UID" }, /* IANA reserved */ @@ -1073,6 +1082,11 @@ const value_string dns_classes[] = { {0,NULL} }; +static const int *dns_csync_flags[] = { + &hf_dns_csync_flags_immediate, + &hf_dns_csync_flags_soaminimum, + NULL +}; /* This function counts how many '.' are in the string, plus 1, in order to count the number * of labels @@ -3230,6 +3244,23 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset, proto_tree_add_item(rr_tree, hf_dns_openpgpkey, tvb, cur_offset, data_len, ENC_ASCII|ENC_NA); } + case T_CSYNC: /* Child-to-Parent Synchronization (62) */ + { + int rr_len, initial_offset = cur_offset; + + proto_tree_add_item(rr_tree, hf_dns_csync_soa, tvb, cur_offset, 4, ENC_ASCII|ENC_NA); + cur_offset += 4; + + proto_tree_add_bitmask_with_flags(rr_tree, tvb, cur_offset, + hf_dns_csync_flags, ett_dns_csdync_flags, dns_csync_flags, ENC_BIG_ENDIAN, BMT_NO_APPEND); + cur_offset += 2; + + rr_len = data_len - (cur_offset - initial_offset); + proto_tree_add_item(rr_tree, hf_dns_csync_type_bitmap, tvb, cur_offset, rr_len, ENC_NA); + + dissect_type_bitmap(rr_tree, tvb, cur_offset, rr_len); + + } break; case T_SPF: /* Sender Policy Framework (99) */ @@ -4562,6 +4593,31 @@ proto_register_dns(void) FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { &hf_dns_csync_soa, + { "SOA", "dns.csync.soa", + FT_UINT32, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + + { &hf_dns_csync_flags, + { "Flags", "dns.csync.flags", + FT_UINT16, BASE_HEX, NULL, 0x0, + NULL, HFILL }}, + + { &hf_dns_csync_flags_immediate, + { "immediate", "dns.csync.flags.immediate", + FT_BOOLEAN, 16, NULL, 0x0001, + NULL, HFILL }}, + + { &hf_dns_csync_flags_soaminimum, + { "soaminimum", "dns.csync.flags.soaminimum", + FT_BOOLEAN, 16, NULL, 0x0002, + NULL, HFILL }}, + + { &hf_dns_csync_type_bitmap, + { "Type Bitmap", "dns.csync.type_bitmap", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_dns_spf_length, { "SPF Length", "dns.spf.length", FT_UINT8, BASE_DEC, NULL, 0x0, @@ -5524,6 +5580,7 @@ proto_register_dns(void) &ett_dns_mac, &ett_caa_flags, &ett_caa_data, + &ett_dns_csdync_flags, }; module_t *dns_module; |