11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
23PROMEKI_NAMESPACE_BEGIN
57 static const char *DefaultFallbackServerCstr;
60 static constexpr int64_t DefaultTimeoutMs = 5000;
63 static constexpr int DefaultAttempts = 2;
66 static constexpr int DefaultNdots = 1;
69 static constexpr uint16_t DefaultPort = 53;
72 DnsConfig() =
default;
91 static Result<DnsConfig> loadSystem();
105 static DnsConfig fromResolvConfText(
const String &text);
108 bool isEmpty()
const {
return _nameservers.isEmpty(); }
111 const List<SocketAddress> &nameservers()
const {
return _nameservers; }
113 void setNameservers(
const List<SocketAddress> &servers) { _nameservers = servers; }
116 const StringList &searchDomains()
const {
return _searchDomains; }
118 void setSearchDomains(
const StringList &domains) { _searchDomains = domains; }
121 Duration timeout()
const {
return _timeout; }
123 void setTimeout(
const Duration &t) { _timeout = t; }
126 int attempts()
const {
return _attempts; }
128 void setAttempts(
int n) { _attempts = (n > 0) ? n : 1; }
131 int ndots()
const {
return _ndots; }
133 void setNdots(
int n) { _ndots = (n >= 0) ? n : 0; }
136 List<SocketAddress> _nameservers;
137 StringList _searchDomains;
138 Duration _timeout = Duration::fromMilliseconds(DefaultTimeoutMs);
139 int _attempts = DefaultAttempts;
140 int _ndots = DefaultNdots;