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

Side by Side Diff: net/dns/dns_response.cc

Issue 9716020: Add base::HostToNetXX() & NetToHostXX(), and use them to replace htonX() & ntohX() in Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 8 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « net/dns/dns_query.cc ('k') | net/dns/dns_test_util.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/dns/dns_response.h" 5 #include "net/dns/dns_response.h"
6 6
7 #include "base/string_util.h" 7 #include "base/string_util.h"
8 #include "base/sys_byteorder.h" 8 #include "base/sys_byteorder.h"
9 #include "net/base/address_list.h" 9 #include "net/base/address_list.h"
10 #include "net/base/big_endian.h" 10 #include "net/base/big_endian.h"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 142
143 DnsResponse::~DnsResponse() { 143 DnsResponse::~DnsResponse() {
144 } 144 }
145 145
146 bool DnsResponse::InitParse(int nbytes, const DnsQuery& query) { 146 bool DnsResponse::InitParse(int nbytes, const DnsQuery& query) {
147 // Response includes query, it should be at least that size. 147 // Response includes query, it should be at least that size.
148 if (nbytes < query.io_buffer()->size() || nbytes > dns_protocol::kMaxUDPSize) 148 if (nbytes < query.io_buffer()->size() || nbytes > dns_protocol::kMaxUDPSize)
149 return false; 149 return false;
150 150
151 // Match the query id. 151 // Match the query id.
152 if (ntohs(header()->id) != query.id()) 152 if (base::NetToHost16(header()->id) != query.id())
153 return false; 153 return false;
154 154
155 // Match question count. 155 // Match question count.
156 if (ntohs(header()->qdcount) != 1) 156 if (base::NetToHost16(header()->qdcount) != 1)
157 return false; 157 return false;
158 158
159 // Match the question section. 159 // Match the question section.
160 const size_t hdr_size = sizeof(dns_protocol::Header); 160 const size_t hdr_size = sizeof(dns_protocol::Header);
161 const base::StringPiece question = query.question(); 161 const base::StringPiece question = query.question();
162 if (question != base::StringPiece(io_buffer_->data() + hdr_size, 162 if (question != base::StringPiece(io_buffer_->data() + hdr_size,
163 question.size())) { 163 question.size())) {
164 return false; 164 return false;
165 } 165 }
166 166
167 // Construct the parser. 167 // Construct the parser.
168 parser_ = DnsRecordParser(io_buffer_->data(), 168 parser_ = DnsRecordParser(io_buffer_->data(),
169 nbytes, 169 nbytes,
170 hdr_size + question.size()); 170 hdr_size + question.size());
171 return true; 171 return true;
172 } 172 }
173 173
174 bool DnsResponse::IsValid() const { 174 bool DnsResponse::IsValid() const {
175 return parser_.IsValid(); 175 return parser_.IsValid();
176 } 176 }
177 177
178 uint16 DnsResponse::flags() const { 178 uint16 DnsResponse::flags() const {
179 DCHECK(parser_.IsValid()); 179 DCHECK(parser_.IsValid());
180 return ntohs(header()->flags) & ~(dns_protocol::kRcodeMask); 180 return base::NetToHost16(header()->flags) & ~(dns_protocol::kRcodeMask);
181 } 181 }
182 182
183 uint8 DnsResponse::rcode() const { 183 uint8 DnsResponse::rcode() const {
184 DCHECK(parser_.IsValid()); 184 DCHECK(parser_.IsValid());
185 return ntohs(header()->flags) & dns_protocol::kRcodeMask; 185 return base::NetToHost16(header()->flags) & dns_protocol::kRcodeMask;
186 } 186 }
187 187
188 unsigned DnsResponse::answer_count() const { 188 unsigned DnsResponse::answer_count() const {
189 DCHECK(parser_.IsValid()); 189 DCHECK(parser_.IsValid());
190 return ntohs(header()->ancount); 190 return base::NetToHost16(header()->ancount);
191 } 191 }
192 192
193 base::StringPiece DnsResponse::qname() const { 193 base::StringPiece DnsResponse::qname() const {
194 DCHECK(parser_.IsValid()); 194 DCHECK(parser_.IsValid());
195 // The response is HEADER QNAME QTYPE QCLASS ANSWER. 195 // The response is HEADER QNAME QTYPE QCLASS ANSWER.
196 // |parser_| is positioned at the beginning of ANSWER, so the end of QNAME is 196 // |parser_| is positioned at the beginning of ANSWER, so the end of QNAME is
197 // two uint16s before it. 197 // two uint16s before it.
198 const size_t hdr_size = sizeof(dns_protocol::Header); 198 const size_t hdr_size = sizeof(dns_protocol::Header);
199 const size_t qname_size = parser_.GetOffset() - 2 * sizeof(uint16) - hdr_size; 199 const size_t qname_size = parser_.GetOffset() - 2 * sizeof(uint16) - hdr_size;
200 return base::StringPiece(io_buffer_->data() + hdr_size, qname_size); 200 return base::StringPiece(io_buffer_->data() + hdr_size, qname_size);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 285
286 // getcanonname in eglibc returns the first owner name of an A or AAAA RR. 286 // getcanonname in eglibc returns the first owner name of an A or AAAA RR.
287 // If the response passed all the checks so far, then |expected_name| is it. 287 // If the response passed all the checks so far, then |expected_name| is it.
288 *addr_list = AddressList::CreateFromIPAddressList(ip_addresses, 288 *addr_list = AddressList::CreateFromIPAddressList(ip_addresses,
289 expected_name); 289 expected_name);
290 *ttl = base::TimeDelta::FromSeconds(std::min(cname_ttl_sec, addr_ttl_sec)); 290 *ttl = base::TimeDelta::FromSeconds(std::min(cname_ttl_sec, addr_ttl_sec));
291 return DNS_SUCCESS; 291 return DNS_SUCCESS;
292 } 292 }
293 293
294 } // namespace net 294 } // namespace net
OLDNEW
« no previous file with comments | « net/dns/dns_query.cc ('k') | net/dns/dns_test_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698