11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
20#if PROMEKI_ENABLE_MDNS
24PROMEKI_NAMESPACE_BEGIN
48 bool unicastResponse =
false;
100 enum class Type : uint16_t {
126 enum class Section : uint8_t {
134 static constexpr int64_t DefaultTtlSeconds = 75 * 60;
138 Type type = Type::Unknown;
140 Section section = Section::Answer;
155 bool cacheFlush =
false;
165 uint16_t srvPriority = 0;
167 uint16_t srvWeight = 0;
169 uint16_t srvPort = 0;
173 uint16_t mxPreference = 0;
176#if PROMEKI_ENABLE_MDNS
201 uint32_t soaSerial = 0;
203 uint32_t soaRefresh = 0;
205 uint32_t soaRetry = 0;
207 uint32_t soaExpire = 0;
209 uint32_t soaMinimum = 0;
213 uint16_t naptrOrder = 0;
215 uint16_t naptrPreference = 0;
223 String naptrReplacement;
227 uint8_t caaFlags = 0;
243 List<uint8_t> rawRdata;
247 bool isGoodbye()
const {
return ttl == Duration::zero(); }
250 static DnsRecord makeA(
const String &owner,
const Ipv4Address &addr,
251 const Duration &ttl = Duration::fromSeconds(DefaultTtlSeconds));
254 static DnsRecord makeAaaa(
const String &owner,
const Ipv6Address &addr,
255 const Duration &ttl = Duration::fromSeconds(DefaultTtlSeconds));
258 static DnsRecord makePtr(
const String &owner,
const String &target,
259 const Duration &ttl = Duration::fromSeconds(DefaultTtlSeconds));
262 static DnsRecord makeSrv(
const String &owner,
const String &target, uint16_t port,
263 uint16_t priority = 0, uint16_t weight = 0,
264 const Duration &ttl = Duration::fromSeconds(DefaultTtlSeconds));
267 static DnsRecord makeCname(
const String &owner,
const String &target,
268 const Duration &ttl = Duration::fromSeconds(DefaultTtlSeconds));
271 static DnsRecord makeNs(
const String &owner,
const String &target,
272 const Duration &ttl = Duration::fromSeconds(DefaultTtlSeconds));
275 static DnsRecord makeMx(
const String &owner,
const String &exchange, uint16_t preference,
276 const Duration &ttl = Duration::fromSeconds(DefaultTtlSeconds));
279#if PROMEKI_ENABLE_MDNS
287using MdnsParsedRecord = DnsRecord;
294using MdnsParsedQuestion = DnsQuestion;