Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(871)

Side by Side Diff: net/dns/record_rdata.h

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/dns/record_parsed_unittest.cc ('k') | net/dns/record_rdata.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef NET_DNS_RECORD_RDATA_H_
6 #define NET_DNS_RECORD_RDATA_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/basictypes.h"
12 #include "base/compiler_specific.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "base/strings/string_piece.h"
15 #include "net/base/net_export.h"
16 #include "net/base/net_util.h"
17 #include "net/dns/dns_protocol.h"
18
19 namespace net {
20
21 class DnsRecordParser;
22
23 // Parsed represenation of the extra data in a record. Does not include standard
24 // DNS record data such as TTL, Name, Type and Class.
25 class NET_EXPORT_PRIVATE RecordRdata {
26 public:
27 virtual ~RecordRdata() {}
28
29 virtual bool IsEqual(const RecordRdata* other) const = 0;
30 virtual uint16 Type() const = 0;
31
32 protected:
33 RecordRdata();
34
35 DISALLOW_COPY_AND_ASSIGN(RecordRdata);
36 };
37
38 // SRV record format (http://www.ietf.org/rfc/rfc2782.txt):
39 // 2 bytes network-order unsigned priority
40 // 2 bytes network-order unsigned weight
41 // 2 bytes network-order unsigned port
42 // target: domain name (on-the-wire representation)
43 class NET_EXPORT_PRIVATE SrvRecordRdata : public RecordRdata {
44 public:
45 static const uint16 kType = dns_protocol::kTypeSRV;
46
47 ~SrvRecordRdata() override;
48 static scoped_ptr<SrvRecordRdata> Create(const base::StringPiece& data,
49 const DnsRecordParser& parser);
50
51 bool IsEqual(const RecordRdata* other) const override;
52 uint16 Type() const override;
53
54 uint16 priority() const { return priority_; }
55 uint16 weight() const { return weight_; }
56 uint16 port() const { return port_; }
57
58 const std::string& target() const { return target_; }
59
60 private:
61 SrvRecordRdata();
62
63 uint16 priority_;
64 uint16 weight_;
65 uint16 port_;
66
67 std::string target_;
68
69 DISALLOW_COPY_AND_ASSIGN(SrvRecordRdata);
70 };
71
72 // A Record format (http://www.ietf.org/rfc/rfc1035.txt):
73 // 4 bytes for IP address.
74 class NET_EXPORT_PRIVATE ARecordRdata : public RecordRdata {
75 public:
76 static const uint16 kType = dns_protocol::kTypeA;
77
78 ~ARecordRdata() override;
79 static scoped_ptr<ARecordRdata> Create(const base::StringPiece& data,
80 const DnsRecordParser& parser);
81 bool IsEqual(const RecordRdata* other) const override;
82 uint16 Type() const override;
83
84 const IPAddressNumber& address() const { return address_; }
85
86 private:
87 ARecordRdata();
88
89 IPAddressNumber address_;
90
91 DISALLOW_COPY_AND_ASSIGN(ARecordRdata);
92 };
93
94 // AAAA Record format (http://www.ietf.org/rfc/rfc1035.txt):
95 // 16 bytes for IP address.
96 class NET_EXPORT_PRIVATE AAAARecordRdata : public RecordRdata {
97 public:
98 static const uint16 kType = dns_protocol::kTypeAAAA;
99
100 ~AAAARecordRdata() override;
101 static scoped_ptr<AAAARecordRdata> Create(const base::StringPiece& data,
102 const DnsRecordParser& parser);
103 bool IsEqual(const RecordRdata* other) const override;
104 uint16 Type() const override;
105
106 const IPAddressNumber& address() const { return address_; }
107
108 private:
109 AAAARecordRdata();
110
111 IPAddressNumber address_;
112
113 DISALLOW_COPY_AND_ASSIGN(AAAARecordRdata);
114 };
115
116 // CNAME record format (http://www.ietf.org/rfc/rfc1035.txt):
117 // cname: On the wire representation of domain name.
118 class NET_EXPORT_PRIVATE CnameRecordRdata : public RecordRdata {
119 public:
120 static const uint16 kType = dns_protocol::kTypeCNAME;
121
122 ~CnameRecordRdata() override;
123 static scoped_ptr<CnameRecordRdata> Create(const base::StringPiece& data,
124 const DnsRecordParser& parser);
125 bool IsEqual(const RecordRdata* other) const override;
126 uint16 Type() const override;
127
128 std::string cname() const { return cname_; }
129
130 private:
131 CnameRecordRdata();
132
133 std::string cname_;
134
135 DISALLOW_COPY_AND_ASSIGN(CnameRecordRdata);
136 };
137
138 // PTR record format (http://www.ietf.org/rfc/rfc1035.txt):
139 // domain: On the wire representation of domain name.
140 class NET_EXPORT_PRIVATE PtrRecordRdata : public RecordRdata {
141 public:
142 static const uint16 kType = dns_protocol::kTypePTR;
143
144 ~PtrRecordRdata() override;
145 static scoped_ptr<PtrRecordRdata> Create(const base::StringPiece& data,
146 const DnsRecordParser& parser);
147 bool IsEqual(const RecordRdata* other) const override;
148 uint16 Type() const override;
149
150 std::string ptrdomain() const { return ptrdomain_; }
151
152 private:
153 PtrRecordRdata();
154
155 std::string ptrdomain_;
156
157 DISALLOW_COPY_AND_ASSIGN(PtrRecordRdata);
158 };
159
160 // TXT record format (http://www.ietf.org/rfc/rfc1035.txt):
161 // texts: One or more <character-string>s.
162 // a <character-string> is a length octet followed by as many characters.
163 class NET_EXPORT_PRIVATE TxtRecordRdata : public RecordRdata {
164 public:
165 static const uint16 kType = dns_protocol::kTypeTXT;
166
167 ~TxtRecordRdata() override;
168 static scoped_ptr<TxtRecordRdata> Create(const base::StringPiece& data,
169 const DnsRecordParser& parser);
170 bool IsEqual(const RecordRdata* other) const override;
171 uint16 Type() const override;
172
173 const std::vector<std::string>& texts() const { return texts_; }
174
175 private:
176 TxtRecordRdata();
177
178 std::vector<std::string> texts_;
179
180 DISALLOW_COPY_AND_ASSIGN(TxtRecordRdata);
181 };
182
183 // Only the subset of the NSEC record format required by mDNS is supported.
184 // Nsec record format is described in http://www.ietf.org/rfc/rfc3845.txt and
185 // the limited version required for mDNS described in
186 // http://www.rfc-editor.org/rfc/rfc6762.txt Section 6.1.
187 class NET_EXPORT_PRIVATE NsecRecordRdata : public RecordRdata {
188 public:
189 static const uint16 kType = dns_protocol::kTypeNSEC;
190
191 ~NsecRecordRdata() override;
192 static scoped_ptr<NsecRecordRdata> Create(const base::StringPiece& data,
193 const DnsRecordParser& parser);
194 bool IsEqual(const RecordRdata* other) const override;
195 uint16 Type() const override;
196
197 // Length of the bitmap in bits.
198 unsigned bitmap_length() const { return bitmap_.size() * 8; }
199
200 // Returns bit i-th bit in the bitmap, where bits withing a byte are organized
201 // most to least significant. If it is set, a record with rrtype i exists for
202 // the domain name of this nsec record.
203 bool GetBit(unsigned i) const;
204
205 private:
206 NsecRecordRdata();
207
208 std::vector<uint8> bitmap_;
209
210 DISALLOW_COPY_AND_ASSIGN(NsecRecordRdata);
211 };
212
213
214 } // namespace net
215
216 #endif // NET_DNS_RECORD_RDATA_H_
OLDNEW
« no previous file with comments | « net/dns/record_parsed_unittest.cc ('k') | net/dns/record_rdata.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698