| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "cloud_print/gcp20/prototype/dns_packet_parser.h" | 5 #include "cloud_print/gcp20/prototype/dns_packet_parser.h" |
| 6 | 6 |
| 7 #include "net/base/big_endian.h" | 7 #include "base/big_endian.h" |
| 8 | 8 |
| 9 DnsPacketParser::DnsPacketParser(const char* packet, size_t length) | 9 DnsPacketParser::DnsPacketParser(const char* packet, size_t length) |
| 10 : packet_(packet), | 10 : packet_(packet), |
| 11 length_(length), | 11 length_(length), |
| 12 record_parser_(packet, length, sizeof(header_)) { | 12 record_parser_(packet, length, sizeof(header_)) { |
| 13 net::BigEndianReader reader(packet, length); | 13 base::BigEndianReader reader(packet, length); |
| 14 is_header_read_ = reader.ReadU16(&header_.id) && | 14 is_header_read_ = reader.ReadU16(&header_.id) && |
| 15 reader.ReadU16(&header_.flags) && | 15 reader.ReadU16(&header_.flags) && |
| 16 reader.ReadU16(&header_.qdcount) && | 16 reader.ReadU16(&header_.qdcount) && |
| 17 reader.ReadU16(&header_.ancount) && | 17 reader.ReadU16(&header_.ancount) && |
| 18 reader.ReadU16(&header_.nscount) && | 18 reader.ReadU16(&header_.nscount) && |
| 19 reader.ReadU16(&header_.arcount); | 19 reader.ReadU16(&header_.arcount); |
| 20 } | 20 } |
| 21 | 21 |
| 22 bool DnsPacketParser::ReadRecord(DnsQueryRecord* out) { | 22 bool DnsPacketParser::ReadRecord(DnsQueryRecord* out) { |
| 23 DCHECK(packet_); | 23 DCHECK(packet_); |
| 24 DnsQueryRecord result; | 24 DnsQueryRecord result; |
| 25 size_t consumed = ReadName(&result.qname); | 25 size_t consumed = ReadName(&result.qname); |
| 26 if (!consumed) | 26 if (!consumed) |
| 27 return false; | 27 return false; |
| 28 net::BigEndianReader reader(packet_ + GetOffset() + consumed, | 28 base::BigEndianReader reader(packet_ + GetOffset() + consumed, |
| 29 length_ - (GetOffset() + consumed)); | 29 length_ - (GetOffset() + consumed)); |
| 30 if (reader.ReadU16(&result.qtype) && reader.ReadU16(&result.qclass) && | 30 if (reader.ReadU16(&result.qtype) && reader.ReadU16(&result.qclass) && |
| 31 record_parser_.SkipQuestion()) { // instead of |cur_ = reader.ptr();| | 31 record_parser_.SkipQuestion()) { // instead of |cur_ = reader.ptr();| |
| 32 *out = result; | 32 *out = result; |
| 33 return true; | 33 return true; |
| 34 } | 34 } |
| 35 | 35 |
| 36 return false; | 36 return false; |
| 37 } | 37 } |
| 38 | 38 |
| OLD | NEW |