Index: net/dns/record_rdata.h |
diff --git a/net/dns/record_rdata.h b/net/dns/record_rdata.h |
index 13a2b1e35ae284f5d256af895a7156a5f0fc4c68..30c5784013e00a4f1d4ade73bbe00787d0e58ec0 100644 |
--- a/net/dns/record_rdata.h |
+++ b/net/dns/record_rdata.h |
@@ -181,6 +181,40 @@ class NET_EXPORT_PRIVATE TxtRecordRdata : public RecordRdata { |
DISALLOW_COPY_AND_ASSIGN(TxtRecordRdata); |
}; |
+// Only the subset of the nsec record format required by mDNS is supported. |
+// Nsec (limited) record format (http://www.ietf.org/rfc/rfc3845.txt and |
+// http://www.rfc-editor.org/rfc/rfc6762.txt): |
+// next-domain (ignored): A domain name. |
+// one bit-map: |
+// - one byte zeroed out to represent the zeroth window |
+// - one byte from 0-32 representing the length of the bitmap in bytes |
+// - the bitmap, each bit representing whether or not the record |
+// corresponding to the bit number exists for that domain. |
+class NET_EXPORT_PRIVATE NsecRecordRdata : public RecordRdata { |
+ public: |
+ static const uint16 kType = dns_protocol::kTypeNSEC; |
+ |
+ virtual ~NsecRecordRdata(); |
+ static scoped_ptr<NsecRecordRdata> Create(const base::StringPiece& data, |
+ const DnsRecordParser& parser); |
+ virtual bool IsEqual(const RecordRdata* other) const OVERRIDE; |
+ virtual uint16 Type() const OVERRIDE; |
+ |
+ const std::vector<uint8>& bitmap() { return bitmap_; } |
+ |
+ // Returns bit i-th bit in the bitmap, where bits withing a byte are organized |
+ // most to least significant. |
+ bool GetBit(unsigned i); |
+ |
+ private: |
+ NsecRecordRdata(); |
+ |
+ std::vector<uint8> bitmap_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(NsecRecordRdata); |
+}; |
+ |
+ |
} // namespace net |
#endif // NET_DNS_RECORD_RDATA_H_ |