Index: net/dns/dns_response.h |
diff --git a/net/dns/dns_response.h b/net/dns/dns_response.h |
deleted file mode 100644 |
index 57abecf62536da8b056c0acbe6c89e7c90445fe8..0000000000000000000000000000000000000000 |
--- a/net/dns/dns_response.h |
+++ /dev/null |
@@ -1,169 +0,0 @@ |
-// Copyright (c) 2012 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. |
- |
-#ifndef NET_DNS_DNS_RESPONSE_H_ |
-#define NET_DNS_DNS_RESPONSE_H_ |
- |
-#include <string> |
- |
-#include "base/basictypes.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/strings/string_piece.h" |
-#include "base/time/time.h" |
-#include "net/base/net_export.h" |
-#include "net/base/net_util.h" |
- |
-namespace net { |
- |
-class AddressList; |
-class DnsQuery; |
-class IOBufferWithSize; |
- |
-namespace dns_protocol { |
-struct Header; |
-} |
- |
-// Parsed resource record. |
-struct NET_EXPORT_PRIVATE DnsResourceRecord { |
- DnsResourceRecord(); |
- ~DnsResourceRecord(); |
- |
- std::string name; // in dotted form |
- uint16 type; |
- uint16 klass; |
- uint32 ttl; |
- base::StringPiece rdata; // points to the original response buffer |
-}; |
- |
-// Iterator to walk over resource records of the DNS response packet. |
-class NET_EXPORT_PRIVATE DnsRecordParser { |
- public: |
- // Construct an uninitialized iterator. |
- DnsRecordParser(); |
- |
- // Construct an iterator to process the |packet| of given |length|. |
- // |offset| points to the beginning of the answer section. |
- DnsRecordParser(const void* packet, size_t length, size_t offset); |
- |
- // Returns |true| if initialized. |
- bool IsValid() const { return packet_ != NULL; } |
- |
- // Returns |true| if no more bytes remain in the packet. |
- bool AtEnd() const { return cur_ == packet_ + length_; } |
- |
- // Returns current offset into the packet. |
- size_t GetOffset() const { return cur_ - packet_; } |
- |
- // Parses a (possibly compressed) DNS name from the packet starting at |
- // |pos|. Stores output (even partial) in |out| unless |out| is NULL. |out| |
- // is stored in the dotted form, e.g., "example.com". Returns number of bytes |
- // consumed or 0 on failure. |
- // This is exposed to allow parsing compressed names within RRDATA for TYPEs |
- // such as NS, CNAME, PTR, MX, SOA. |
- // See RFC 1035 section 4.1.4. |
- unsigned ReadName(const void* pos, std::string* out) const; |
- |
- // Parses the next resource record into |record|. Returns true if succeeded. |
- bool ReadRecord(DnsResourceRecord* record); |
- |
- // Skip a question section, returns true if succeeded. |
- bool SkipQuestion(); |
- |
- private: |
- const char* packet_; |
- size_t length_; |
- // Current offset within the packet. |
- const char* cur_; |
-}; |
- |
-// Buffer-holder for the DNS response allowing easy access to the header fields |
-// and resource records. After reading into |io_buffer| must call InitParse to |
-// position the RR parser. |
-class NET_EXPORT_PRIVATE DnsResponse { |
- public: |
- // Possible results from ParseToAddressList. |
- enum Result { |
- DNS_PARSE_OK = 0, |
- DNS_MALFORMED_RESPONSE, // DnsRecordParser failed before the end of |
- // packet. |
- DNS_MALFORMED_CNAME, // Could not parse CNAME out of RRDATA. |
- DNS_NAME_MISMATCH, // Got an address but no ordered chain of CNAMEs |
- // leads there. |
- DNS_SIZE_MISMATCH, // Got an address but size does not match. |
- DNS_CNAME_AFTER_ADDRESS, // Found CNAME after an address record. |
- DNS_ADDRESS_TTL_MISMATCH, // OBSOLETE. No longer used. |
- DNS_NO_ADDRESSES, // OBSOLETE. No longer used. |
- // Only add new values here. |
- DNS_PARSE_RESULT_MAX, // Bounding value for histograms. |
- }; |
- |
- // Constructs a response buffer large enough to store one byte more than |
- // largest possible response, to detect malformed responses. |
- DnsResponse(); |
- |
- // Constructs a response buffer of given length. Used for TCP transactions. |
- explicit DnsResponse(size_t length); |
- |
- // Constructs a response from |data|. Used for testing purposes only! |
- DnsResponse(const void* data, size_t length, size_t answer_offset); |
- |
- ~DnsResponse(); |
- |
- // Internal buffer accessor into which actual bytes of response will be |
- // read. |
- IOBufferWithSize* io_buffer() { return io_buffer_.get(); } |
- |
- // Assuming the internal buffer holds |nbytes| bytes, returns true iff the |
- // packet matches the |query| id and question. |
- bool InitParse(int nbytes, const DnsQuery& query); |
- |
- // Assuming the internal buffer holds |nbytes| bytes, initialize the parser |
- // without matching it against an existing query. |
- bool InitParseWithoutQuery(int nbytes); |
- |
- // Returns true if response is valid, that is, after successful InitParse. |
- bool IsValid() const; |
- |
- // All of the methods below are valid only if the response is valid. |
- |
- // Accessors for the header. |
- uint16 flags() const; // excluding rcode |
- uint8 rcode() const; |
- |
- unsigned answer_count() const; |
- unsigned additional_answer_count() const; |
- |
- // Accessors to the question. The qname is unparsed. |
- base::StringPiece qname() const; |
- uint16 qtype() const; |
- |
- // Returns qname in dotted format. |
- std::string GetDottedName() const; |
- |
- // Returns an iterator to the resource records in the answer section. |
- // The iterator is valid only in the scope of the DnsResponse. |
- // This operation is idempotent. |
- DnsRecordParser Parser() const; |
- |
- // Extracts an AddressList from this response. Returns SUCCESS if succeeded. |
- // Otherwise returns a detailed error number. |
- Result ParseToAddressList(AddressList* addr_list, base::TimeDelta* ttl) const; |
- |
- private: |
- // Convenience for header access. |
- const dns_protocol::Header* header() const; |
- |
- // Buffer into which response bytes are read. |
- scoped_refptr<IOBufferWithSize> io_buffer_; |
- |
- // Iterator constructed after InitParse positioned at the answer section. |
- // It is never updated afterwards, so can be used in accessors. |
- DnsRecordParser parser_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DnsResponse); |
-}; |
- |
-} // namespace net |
- |
-#endif // NET_DNS_DNS_RESPONSE_H_ |