#pragma once #include "name.hpp" #include "serialize.hpp" #include #include #include namespace llarp { namespace dns { using RRClass_t = uint16_t; using RRType_t = uint16_t; using RR_RData_t = std::vector; using RR_TTL_t = uint32_t; struct ResourceRecord : public Serialize { ResourceRecord() = default; ResourceRecord(const ResourceRecord& other); ResourceRecord(ResourceRecord&& other); explicit ResourceRecord(Name_t name, RRType_t type, RR_RData_t rdata); bool Encode(llarp_buffer_t* buf) const override; bool Decode(llarp_buffer_t* buf) override; util::StatusObject ToJSON() const override; std::ostream& print(std::ostream& stream, int level, int spaces) const; std::string ToString() const; bool HasCNameForTLD(const std::string& tld) const; Name_t rr_name; RRType_t rr_type; RRClass_t rr_class; RR_TTL_t ttl; RR_RData_t rData; }; } // namespace dns } // namespace llarp template <> constexpr inline bool llarp::IsToStringFormattable = true;