Index: net/dns/record_rdata.cc |
diff --git a/net/dns/record_rdata.cc b/net/dns/record_rdata.cc |
deleted file mode 100644 |
index 0c605593ab7d337b1edf18ebda380d1a0d6e0ead..0000000000000000000000000000000000000000 |
--- a/net/dns/record_rdata.cc |
+++ /dev/null |
@@ -1,287 +0,0 @@ |
-// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "net/dns/record_rdata.h" |
- |
-#include "base/big_endian.h" |
-#include "net/base/dns_util.h" |
-#include "net/dns/dns_protocol.h" |
-#include "net/dns/dns_response.h" |
- |
-namespace net { |
- |
-static const size_t kSrvRecordMinimumSize = 6; |
- |
-RecordRdata::RecordRdata() { |
-} |
- |
-SrvRecordRdata::SrvRecordRdata() : priority_(0), weight_(0), port_(0) { |
-} |
- |
-SrvRecordRdata::~SrvRecordRdata() {} |
- |
-// static |
-scoped_ptr<SrvRecordRdata> SrvRecordRdata::Create( |
- const base::StringPiece& data, |
- const DnsRecordParser& parser) { |
- if (data.size() < kSrvRecordMinimumSize) return scoped_ptr<SrvRecordRdata>(); |
- |
- scoped_ptr<SrvRecordRdata> rdata(new SrvRecordRdata); |
- |
- base::BigEndianReader reader(data.data(), data.size()); |
- // 2 bytes for priority, 2 bytes for weight, 2 bytes for port. |
- reader.ReadU16(&rdata->priority_); |
- reader.ReadU16(&rdata->weight_); |
- reader.ReadU16(&rdata->port_); |
- |
- if (!parser.ReadName(data.substr(kSrvRecordMinimumSize).begin(), |
- &rdata->target_)) |
- return scoped_ptr<SrvRecordRdata>(); |
- |
- return rdata.Pass(); |
-} |
- |
-uint16 SrvRecordRdata::Type() const { |
- return SrvRecordRdata::kType; |
-} |
- |
-bool SrvRecordRdata::IsEqual(const RecordRdata* other) const { |
- if (other->Type() != Type()) return false; |
- const SrvRecordRdata* srv_other = static_cast<const SrvRecordRdata*>(other); |
- return weight_ == srv_other->weight_ && |
- port_ == srv_other->port_ && |
- priority_ == srv_other->priority_ && |
- target_ == srv_other->target_; |
-} |
- |
-ARecordRdata::ARecordRdata() { |
-} |
- |
-ARecordRdata::~ARecordRdata() { |
-} |
- |
-// static |
-scoped_ptr<ARecordRdata> ARecordRdata::Create( |
- const base::StringPiece& data, |
- const DnsRecordParser& parser) { |
- if (data.size() != kIPv4AddressSize) |
- return scoped_ptr<ARecordRdata>(); |
- |
- scoped_ptr<ARecordRdata> rdata(new ARecordRdata); |
- |
- rdata->address_.resize(kIPv4AddressSize); |
- for (unsigned i = 0; i < kIPv4AddressSize; ++i) { |
- rdata->address_[i] = data[i]; |
- } |
- |
- return rdata.Pass(); |
-} |
- |
-uint16 ARecordRdata::Type() const { |
- return ARecordRdata::kType; |
-} |
- |
-bool ARecordRdata::IsEqual(const RecordRdata* other) const { |
- if (other->Type() != Type()) return false; |
- const ARecordRdata* a_other = static_cast<const ARecordRdata*>(other); |
- return address_ == a_other->address_; |
-} |
- |
-AAAARecordRdata::AAAARecordRdata() { |
-} |
- |
-AAAARecordRdata::~AAAARecordRdata() { |
-} |
- |
-// static |
-scoped_ptr<AAAARecordRdata> AAAARecordRdata::Create( |
- const base::StringPiece& data, |
- const DnsRecordParser& parser) { |
- if (data.size() != kIPv6AddressSize) |
- return scoped_ptr<AAAARecordRdata>(); |
- |
- scoped_ptr<AAAARecordRdata> rdata(new AAAARecordRdata); |
- |
- rdata->address_.resize(kIPv6AddressSize); |
- for (unsigned i = 0; i < kIPv6AddressSize; ++i) { |
- rdata->address_[i] = data[i]; |
- } |
- |
- return rdata.Pass(); |
-} |
- |
-uint16 AAAARecordRdata::Type() const { |
- return AAAARecordRdata::kType; |
-} |
- |
-bool AAAARecordRdata::IsEqual(const RecordRdata* other) const { |
- if (other->Type() != Type()) return false; |
- const AAAARecordRdata* a_other = static_cast<const AAAARecordRdata*>(other); |
- return address_ == a_other->address_; |
-} |
- |
-CnameRecordRdata::CnameRecordRdata() { |
-} |
- |
-CnameRecordRdata::~CnameRecordRdata() { |
-} |
- |
-// static |
-scoped_ptr<CnameRecordRdata> CnameRecordRdata::Create( |
- const base::StringPiece& data, |
- const DnsRecordParser& parser) { |
- scoped_ptr<CnameRecordRdata> rdata(new CnameRecordRdata); |
- |
- if (!parser.ReadName(data.begin(), &rdata->cname_)) |
- return scoped_ptr<CnameRecordRdata>(); |
- |
- return rdata.Pass(); |
-} |
- |
-uint16 CnameRecordRdata::Type() const { |
- return CnameRecordRdata::kType; |
-} |
- |
-bool CnameRecordRdata::IsEqual(const RecordRdata* other) const { |
- if (other->Type() != Type()) return false; |
- const CnameRecordRdata* cname_other = |
- static_cast<const CnameRecordRdata*>(other); |
- return cname_ == cname_other->cname_; |
-} |
- |
-PtrRecordRdata::PtrRecordRdata() { |
-} |
- |
-PtrRecordRdata::~PtrRecordRdata() { |
-} |
- |
-// static |
-scoped_ptr<PtrRecordRdata> PtrRecordRdata::Create( |
- const base::StringPiece& data, |
- const DnsRecordParser& parser) { |
- scoped_ptr<PtrRecordRdata> rdata(new PtrRecordRdata); |
- |
- if (!parser.ReadName(data.begin(), &rdata->ptrdomain_)) |
- return scoped_ptr<PtrRecordRdata>(); |
- |
- return rdata.Pass(); |
-} |
- |
-uint16 PtrRecordRdata::Type() const { |
- return PtrRecordRdata::kType; |
-} |
- |
-bool PtrRecordRdata::IsEqual(const RecordRdata* other) const { |
- if (other->Type() != Type()) return false; |
- const PtrRecordRdata* ptr_other = static_cast<const PtrRecordRdata*>(other); |
- return ptrdomain_ == ptr_other->ptrdomain_; |
-} |
- |
-TxtRecordRdata::TxtRecordRdata() { |
-} |
- |
-TxtRecordRdata::~TxtRecordRdata() { |
-} |
- |
-// static |
-scoped_ptr<TxtRecordRdata> TxtRecordRdata::Create( |
- const base::StringPiece& data, |
- const DnsRecordParser& parser) { |
- scoped_ptr<TxtRecordRdata> rdata(new TxtRecordRdata); |
- |
- for (size_t i = 0; i < data.size(); ) { |
- uint8 length = data[i]; |
- |
- if (i + length >= data.size()) |
- return scoped_ptr<TxtRecordRdata>(); |
- |
- rdata->texts_.push_back(data.substr(i + 1, length).as_string()); |
- |
- // Move to the next string. |
- i += length + 1; |
- } |
- |
- return rdata.Pass(); |
-} |
- |
-uint16 TxtRecordRdata::Type() const { |
- return TxtRecordRdata::kType; |
-} |
- |
-bool TxtRecordRdata::IsEqual(const RecordRdata* other) const { |
- if (other->Type() != Type()) return false; |
- const TxtRecordRdata* txt_other = static_cast<const TxtRecordRdata*>(other); |
- return texts_ == txt_other->texts_; |
-} |
- |
-NsecRecordRdata::NsecRecordRdata() { |
-} |
- |
-NsecRecordRdata::~NsecRecordRdata() { |
-} |
- |
-// static |
-scoped_ptr<NsecRecordRdata> NsecRecordRdata::Create( |
- const base::StringPiece& data, |
- const DnsRecordParser& parser) { |
- scoped_ptr<NsecRecordRdata> rdata(new NsecRecordRdata); |
- |
- // Read the "next domain". This part for the NSEC record format is |
- // ignored for mDNS, since it has no semantic meaning. |
- unsigned next_domain_length = parser.ReadName(data.data(), NULL); |
- |
- // If we did not succeed in getting the next domain or the data length |
- // is too short for reading the bitmap header, return. |
- if (next_domain_length == 0 || data.length() < next_domain_length + 2) |
- return scoped_ptr<NsecRecordRdata>(); |
- |
- struct BitmapHeader { |
- uint8 block_number; // The block number should be zero. |
- uint8 length; // Bitmap length in bytes. Between 1 and 32. |
- }; |
- |
- const BitmapHeader* header = reinterpret_cast<const BitmapHeader*>( |
- data.data() + next_domain_length); |
- |
- // The block number must be zero in mDns-specific NSEC records. The bitmap |
- // length must be between 1 and 32. |
- if (header->block_number != 0 || header->length == 0 || header->length > 32) |
- return scoped_ptr<NsecRecordRdata>(); |
- |
- base::StringPiece bitmap_data = data.substr(next_domain_length + 2); |
- |
- // Since we may only have one block, the data length must be exactly equal to |
- // the domain length plus bitmap size. |
- if (bitmap_data.length() != header->length) |
- return scoped_ptr<NsecRecordRdata>(); |
- |
- rdata->bitmap_.insert(rdata->bitmap_.begin(), |
- bitmap_data.begin(), |
- bitmap_data.end()); |
- |
- return rdata.Pass(); |
-} |
- |
-uint16 NsecRecordRdata::Type() const { |
- return NsecRecordRdata::kType; |
-} |
- |
-bool NsecRecordRdata::IsEqual(const RecordRdata* other) const { |
- if (other->Type() != Type()) |
- return false; |
- const NsecRecordRdata* nsec_other = |
- static_cast<const NsecRecordRdata*>(other); |
- return bitmap_ == nsec_other->bitmap_; |
-} |
- |
-bool NsecRecordRdata::GetBit(unsigned i) const { |
- unsigned byte_num = i/8; |
- if (bitmap_.size() < byte_num + 1) |
- return false; |
- |
- unsigned bit_num = 7 - i % 8; |
- return (bitmap_[byte_num] & (1 << bit_num)) != 0; |
-} |
- |
-} // namespace net |