// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_DNS_RECORD_RDATA_H_ #define NET_DNS_RECORD_RDATA_H_ #include <stdint.h> #include <map> #include <memory> #include <optional> #include <string> #include <string_view> #include <vector> #include "base/check_op.h" #include "base/compiler_specific.h" #include "net/base/io_buffer.h" #include "net/base/ip_address.h" #include "net/base/net_export.h" #include "net/dns/public/dns_protocol.h" #include "third_party/boringssl/src/include/openssl/sha.h" namespace net { class DnsRecordParser; // Parsed represenation of the extra data in a record. Does not include standard // DNS record data such as TTL, Name, Type and Class. class NET_EXPORT RecordRdata { … }; // SRV record format (http://www.ietf.org/rfc/rfc2782.txt): // 2 bytes network-order unsigned priority // 2 bytes network-order unsigned weight // 2 bytes network-order unsigned port // target: domain name (on-the-wire representation) class NET_EXPORT_PRIVATE SrvRecordRdata : public RecordRdata { … }; // A Record format (http://www.ietf.org/rfc/rfc1035.txt): // 4 bytes for IP address. class NET_EXPORT ARecordRdata : public RecordRdata { … }; // AAAA Record format (http://www.ietf.org/rfc/rfc1035.txt): // 16 bytes for IP address. class NET_EXPORT AAAARecordRdata : public RecordRdata { … }; // CNAME record format (http://www.ietf.org/rfc/rfc1035.txt): // cname: On the wire representation of domain name. class NET_EXPORT_PRIVATE CnameRecordRdata : public RecordRdata { … }; // PTR record format (http://www.ietf.org/rfc/rfc1035.txt): // domain: On the wire representation of domain name. class NET_EXPORT_PRIVATE PtrRecordRdata : public RecordRdata { … }; // TXT record format (http://www.ietf.org/rfc/rfc1035.txt): // texts: One or more <character-string>s. // a <character-string> is a length octet followed by as many characters. class NET_EXPORT_PRIVATE TxtRecordRdata : public RecordRdata { … }; // Only the subset of the NSEC record format required by mDNS is supported. // Nsec record format is described in http://www.ietf.org/rfc/rfc3845.txt and // the limited version required for mDNS described in // http://www.rfc-editor.org/rfc/rfc6762.txt Section 6.1. class NET_EXPORT_PRIVATE NsecRecordRdata : public RecordRdata { … }; } // namespace net #endif // NET_DNS_RECORD_RDATA_H_