}
#endif /* HAVE_PROTOBUF */
-//! returns -2 for OS limits error, -1 for permanent error that has to do with remote **transport**, 0 for timeout, 1 for success
/** lwr is only filled out in case 1 was returned, and even when returning 1 for 'success', lwr might contain DNS errors
Never throws!
*/
-int asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult *lwr, bool* chained)
+LWResult::Result asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult *lwr, bool* chained)
{
size_t len;
size_t bufsize=g_outgoingEDNSBufsize;
}
lwr->d_rcode = 0;
lwr->d_haveEDNS = false;
- int ret;
+ LWResult::Result ret;
DTime dt;
dt.set();
if(!doTCP) {
int queryfd;
- if(ip.sin4.sin_family==AF_INET6)
+ if (ip.sin4.sin_family==AF_INET6) {
g_stats.ipv6queries++;
+ }
+
+ ret = asendto((const char*)&*vpacket.begin(), vpacket.size(), 0, ip, qid,
+ domain, type, &queryfd);
- if((ret=asendto((const char*)&*vpacket.begin(), vpacket.size(), 0, ip, qid,
- domain, type, &queryfd)) < 0) {
- return ret; // passes back the -2 EMFILE
+ if (ret != LWResult::Result::Success) {
+ return ret;
}
if (queryfd == -1) {
}
// sleep until we see an answer to this, interface to mtasker
-
- ret=arecvfrom(buf, 0, ip, &len, qid,
- domain, type, queryfd, now);
+ ret = arecvfrom(buf, 0, ip, &len, qid,
+ domain, type, queryfd, now);
}
else {
try {
char *lenP=(char*)&tlen;
const char *msgP=(const char*)&*vpacket.begin();
string packet=string(lenP, lenP+2)+string(msgP, msgP+vpacket.size());
-
- ret=asendtcp(packet, &s);
- if(!(ret>0))
+ ret = asendtcp(packet, &s);
+ if (ret != LWResult::Result::Success) {
return ret;
+ }
packet.clear();
- ret=arecvtcp(packet, 2, &s, false);
- if(!(ret > 0))
+ ret = arecvtcp(packet, 2, &s, false);
+ if (ret != LWResult::Result::Success) {
return ret;
-
+ }
+
memcpy(&tlen, packet.c_str(), sizeof(tlen));
len=ntohs(tlen); // switch to the 'len' shared with the rest of the function
-
- ret=arecvtcp(packet, len, &s, false);
- if(!(ret > 0))
+
+ ret = arecvtcp(packet, len, &s, false);
+ if (ret != LWResult::Result::Success) {
return ret;
-
+ }
+
buf.resize(len);
memcpy(const_cast<char*>(buf.data()), packet.c_str(), len);
- ret=1;
+ ret = LWResult::Result::Success;
}
- catch(NetworkError& ne) {
- ret = -2; // OS limits error
+ catch (const NetworkError& ne) {
+ ret = LWResult::Result::OSLimitError; // OS limits error
}
}
lwr->d_usec=dt.udiff();
*now=dt.getTimeval();
- if(ret <= 0) { // includes 'timeout'
+ if (ret != LWResult::Result::Success) { // includes 'timeout'
#ifdef HAVE_PROTOBUF
if (outgoingLoggers) {
logIncomingResponse(outgoingLoggers, pbMessage, context ? context->d_initialRequestId : boost::none, uuid, ip, domain, type, qid, doTCP, srcmask, 0, -1, {}, queryTime, exportTypes);
logIncomingResponse(outgoingLoggers, pbMessage, context ? context->d_initialRequestId : boost::none, uuid, ip, domain, type, qid, doTCP, srcmask, len, lwr->d_rcode, lwr->d_records, queryTime, exportTypes);
}
#endif
- lwr->d_validpacket=true;
- return 1; // this is "success", the error is set in lwr->d_rcode
+ lwr->d_validpacket = true;
+ return LWResult::Result::Success; // this is "success", the error is set in lwr->d_rcode
}
if(domain != mdp.d_qname) {
logIncomingResponse(outgoingLoggers, pbMessage, context ? context->d_initialRequestId : boost::none, uuid, ip, domain, type, qid, doTCP, srcmask, len, lwr->d_rcode, lwr->d_records, queryTime, exportTypes);
}
#endif
- lwr->d_validpacket=true;
- return 1;
+
+ lwr->d_validpacket = true;
+ return LWResult::Result::Success;
}
- catch(std::exception &mde) {
- if(::arg().mustDo("log-common-errors"))
+ catch (const std::exception &mde) {
+ if (::arg().mustDo("log-common-errors")) {
g_log<<Logger::Notice<<"Unable to parse packet from remote server "<<ip.toString()<<": "<<mde.what()<<endl;
+ }
+
lwr->d_rcode = RCode::FormErr;
+ lwr->d_validpacket = false;
g_stats.serverParseError++;
+
#ifdef HAVE_PROTOBUF
if(outgoingLoggers) {
logIncomingResponse(outgoingLoggers, pbMessage, context ? context->d_initialRequestId : boost::none, uuid, ip, domain, type, qid, doTCP, srcmask, len, lwr->d_rcode, lwr->d_records, queryTime, exportTypes);
}
#endif
- lwr->d_validpacket=false;
- return 1; // success - oddly enough
+
+ return LWResult::Result::Success; // success - oddly enough
}
- catch(...) {
+ catch (...) {
g_log<<Logger::Notice<<"Unknown error parsing packet from remote server"<<endl;
}
g_stats.serverParseError++;
out:
- if(!lwr->d_rcode)
+ if (!lwr->d_rcode) {
lwr->d_rcode=RCode::ServFail;
+ }
- return -1;
+ return LWResult::Result::PermanentError;
}
#include "fstrm_logger.hh"
#include "resolve-context.hh"
-
-int asendto(const char *data, size_t len, int flags, const ComboAddress& ip, uint16_t id,
- const DNSName& domain, uint16_t qtype, int* fd);
-int arecvfrom(std::string& packet, int flags, const ComboAddress& ip, size_t *d_len, uint16_t id,
- const DNSName& domain, uint16_t qtype, int fd, const struct timeval* now);
-
class LWResException : public PDNSException
{
public:
public:
LWResult() : d_usec(0) {}
+ enum class Result : uint8_t { Timeout=0, Success=1, PermanentError=2 /* not transport related */, OSLimitError=3 };
+
vector<DNSRecord> d_records;
int d_rcode{0};
bool d_validpacket{false};
bool d_haveEDNS{false};
};
-int asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult* res, bool* chained);
+LWResult::Result asendto(const char *data, size_t len, int flags, const ComboAddress& ip, uint16_t id,
+ const DNSName& domain, uint16_t qtype, int* fd);
+LWResult::Result arecvfrom(std::string& packet, int flags, const ComboAddress& ip, size_t *d_len, uint16_t id,
+ const DNSName& domain, uint16_t qtype, int fd, const struct timeval* now);
+
+LWResult::Result asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult* res, bool* chained);
static void handleTCPClientWritable(int fd, FDMultiplexer::funcparam_t& var);
-// -1 is error, 0 is timeout, 1 is success
-int asendtcp(const string& data, Socket* sock)
+LWResult::Result asendtcp(const string& data, Socket* sock)
{
PacketID pident;
pident.sock=sock;
t_fdm->addWriteFD(sock->getHandle(), handleTCPClientWritable, pident);
string packet;
- int ret=MT->waitEvent(pident, &packet, g_networkTimeoutMsec);
-
- if(!ret || ret==-1) { // timeout
+ int ret = MT->waitEvent(pident, &packet, g_networkTimeoutMsec);
+ if (ret == 0) { //timeout
t_fdm->removeWriteFD(sock->getHandle());
+ return LWResult::Result::Timeout;
}
- else if(packet.size() !=data.size()) { // main loop tells us what it sent out, or empty in case of an error
- return -1;
+ else if (ret == -1) { // error
+ t_fdm->removeWriteFD(sock->getHandle());
+ return LWResult::Result::PermanentError;
}
- return ret;
+ else if (packet.size() != data.size()) { // main loop tells us what it sent out, or empty in case of an error
+ return LWResult::Result::PermanentError;
+ }
+
+ return LWResult::Result::Success;
}
static void handleTCPClientReadable(int fd, FDMultiplexer::funcparam_t& var);
-// -1 is error, 0 is timeout, 1 is success
-int arecvtcp(string& data, size_t len, Socket* sock, bool incompleteOkay)
+LWResult::Result arecvtcp(string& data, const size_t len, Socket* sock, const bool incompleteOkay)
{
data.clear();
PacketID pident;
pident.inIncompleteOkay=incompleteOkay;
t_fdm->addReadFD(sock->getHandle(), handleTCPClientReadable, pident);
- int ret=MT->waitEvent(pident,&data, g_networkTimeoutMsec);
- if(!ret || ret==-1) { // timeout
+ int ret = MT->waitEvent(pident,&data, g_networkTimeoutMsec);
+ if (ret == 0) {
t_fdm->removeReadFD(sock->getHandle());
+ return LWResult::Result::Timeout;
}
- else if(data.empty()) {// error, EOF or other
- return -1;
+ else if (ret == -1) {
+ t_fdm->removeWriteFD(sock->getHandle());
+ return LWResult::Result::PermanentError;
+ }
+ else if (data.empty()) {// error, EOF or other
+ return LWResult::Result::PermanentError;
}
- return ret;
+ return LWResult::Result::Success;
}
static void handleGenUDPQueryResponse(int fd, FDMultiplexer::funcparam_t& var)
{
}
- // returning -2 means: temporary OS error (ie, out of files), -1 means error related to remote
- int getSocket(const ComboAddress& toaddr, int* fd)
+ LWResult::Result getSocket(const ComboAddress& toaddr, int* fd)
{
- *fd=makeClientSocket(toaddr.sin4.sin_family);
- if(*fd < 0) // temporary error - receive exception otherwise
- return -2;
+ *fd = makeClientSocket(toaddr.sin4.sin_family);
+ if(*fd < 0) { // temporary error - receive exception otherwise
+ return LWResult::Result::OSLimitError;
+ }
if(connect(*fd, (struct sockaddr*)(&toaddr), toaddr.getSocklen()) < 0) {
int err = errno;
g_log<<Logger::Error<<"Error closing UDP socket after connect() failed: "<<e.reason<<endl;
}
- if(err==ENETUNREACH) // Seth "My Interfaces Are Like A Yo Yo" Arnold special
- return -2;
- return -1;
+ if (err == ENETUNREACH) { // Seth "My Interfaces Are Like A Yo Yo" Arnold special
+ return LWResult::Result::OSLimitError;
+ }
+
+ return LWResult::Result::PermanentError;
}
d_numsocks++;
- return 0;
+ return LWResult::Result::Success;
}
// return a socket to the pool, or simply erase it
static thread_local std::unique_ptr<UDPClientSocks> t_udpclientsocks;
/* these two functions are used by LWRes */
-// -2 is OS error, -1 is error that depends on the remote, > 0 is success
-int asendto(const char *data, size_t len, int flags,
- const ComboAddress& toaddr, uint16_t id, const DNSName& domain, uint16_t qtype, int* fd)
+LWResult::Result asendto(const char *data, size_t len, int flags,
+ const ComboAddress& toaddr, uint16_t id, const DNSName& domain, uint16_t qtype, int* fd)
{
PacketID pident;
*/
chain.first->key.chain.insert(id); // we can chain
*fd=-1; // gets used in waitEvent / sendEvent later on
- return 1;
+ return LWResult::Result::Success;
}
}
- int ret=t_udpclientsocks->getSocket(toaddr, fd);
- if(ret < 0)
+ auto ret = t_udpclientsocks->getSocket(toaddr, fd);
+ if (ret != LWResult::Result::Success) {
return ret;
+ }
pident.fd=*fd;
pident.id=id;
t_fdm->addReadFD(*fd, handleUDPServerResponse, pident);
- ret = send(*fd, data, len, 0);
+ ssize_t sent = send(*fd, data, len, 0);
int tmp = errno;
- if(ret < 0)
+ if (sent < 0) {
t_udpclientsocks->returnSocket(*fd);
+ errno = tmp; // this is for logging purposes only
+ return LWResult::Result::PermanentError;
+ }
- errno = tmp; // this is for logging purposes only
- return ret;
+ return LWResult::Result::Success;
}
-// -1 is error, 0 is timeout, 1 is success
-int arecvfrom(std::string& packet, int flags, const ComboAddress& fromaddr, size_t *d_len,
- uint16_t id, const DNSName& domain, uint16_t qtype, int fd, const struct timeval* now)
+LWResult::Result arecvfrom(std::string& packet, int flags, const ComboAddress& fromaddr, size_t *d_len,
+ uint16_t id, const DNSName& domain, uint16_t qtype, int fd, const struct timeval* now)
{
static optional<unsigned int> nearMissLimit;
if(!nearMissLimit)
int ret=MT->waitEvent(pident, &packet, g_networkTimeoutMsec, now);
/* -1 means error, 0 means timeout, 1 means a result from handleUDPServerResponse() which might still be an error */
- if(ret > 0) {
+ if (ret > 0) {
/* handleUDPServerResponse() will close the socket for us no matter what */
- if(packet.empty()) // means "error"
- return -1;
+ if (packet.empty()) { // means "error"
+ return LWResult::Result::PermanentError;
+ }
*d_len=packet.size();
- if(*nearMissLimit && pident.nearMisses > *nearMissLimit) {
+ if (*nearMissLimit && pident.nearMisses > *nearMissLimit) {
g_log<<Logger::Error<<"Too many ("<<pident.nearMisses<<" > "<<*nearMissLimit<<") bogus answers for '"<<domain<<"' from "<<fromaddr.toString()<<", assuming spoof attempt."<<endl;
g_stats.spoofCount++;
- return -1;
+ return LWResult::Result::PermanentError;
}
+
+ return LWResult::Result::Success;
}
else {
/* getting there means error or timeout, it's up to us to close the socket */
- if(fd >= 0)
+ if (fd >= 0) {
t_udpclientsocks->returnSocket(fd);
+ }
}
- return ret;
+
+ return ret == 0 ? LWResult::Result::Timeout : LWResult::Result::PermanentError;
}
static void writePid(void)
msg = str.str();
}
- int ret=asendtcp(msg, &s); // this will actually do the right thing waiting on the connect
- if(ret < 0)
- g_log<<Logger::Warning<<"Error writing carbon data to "<<remote.toStringWithPort()<<": "<<stringerror()<<endl;
- if(ret==0)
+ auto ret = asendtcp(msg, &s); // this will actually do the right thing waiting on the connect
+ if (ret == LWResult::Result::Timeout) {
g_log<<Logger::Warning<<"Timeout connecting/writing carbon data to "<<remote.toStringWithPort()<<endl;
+ }
+ else if (ret != LWResult::Result::Success) {
+ g_log<<Logger::Warning<<"Error writing carbon data to "<<remote.toStringWithPort()<<": "<<stringerror()<<endl;
+ }
}
}
catch(PDNSException& e)
return false;
}
-int asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult* res, bool* chained)
+LWResult::Result asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult* res, bool* chained)
{
- return 0;
+ return LWResult::Result::Timeout;
}
/* primeHints() is only here for now because it
dsAnchors[name].insert(keys[name].second);
}
-int genericDSAndDNSKEYHandler(LWResult* res, const DNSName& domain, DNSName auth, int type, const testkeysset_t& keys, bool proveCut, boost::optional<time_t> now, bool nsec3, bool optOut)
+LWResult::Result genericDSAndDNSKEYHandler(LWResult* res, const DNSName& domain, DNSName auth, int type, const testkeysset_t& keys, bool proveCut, boost::optional<time_t> now, bool nsec3, bool optOut)
{
if (type == QType::DS) {
auth.chopOff();
}
}
- return 1;
+ return LWResult::Result::Success;
}
if (type == QType::DNSKEY) {
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
}
-int basicRecordsForQnameMinimization(LWResult* res, const DNSName& domain, int type)
+LWResult::Result basicRecordsForQnameMinimization(LWResult* res, const DNSName& domain, int type)
{
if (domain == DNSName(".") && type == QType::A) {
setLWResult(res, 0, true);
addRecordToLW(res, DNSName("."), QType::SOA, "a.root-servers.net. nstld.verisign-grs.com. 2019042400 1800 900 604800 86400", DNSResourceRecord::AUTHORITY);
- return 1;
+ return LWResult::Result::Success;
}
if (domain == DNSName("com") && type == QType::A) {
setLWResult(res, 0, true);
addRecordToLW(res, DNSName("com"), QType::NS, "ns1.com", DNSResourceRecord::AUTHORITY);
addRecordToLW(res, DNSName("ns1.com"), QType::A, "1.2.3.4", DNSResourceRecord::ADDITIONAL);
- return 1;
+ return LWResult::Result::Success;
}
if (domain == DNSName("ns1.com") && type == QType::A) {
setLWResult(res, 0, true);
addRecordToLW(res, DNSName("ns1.com"), QType::A, "1.2.3.4");
- return 1;
+ return LWResult::Result::Success;
}
if (domain == DNSName("powerdns.com") && type == QType::A) {
setLWResult(res, 0, true);
addRecordToLW(res, domain, QType::NS, "ns1.powerdns.com", DNSResourceRecord::AUTHORITY);
addRecordToLW(res, DNSName("ns1.powerdns.com"), QType::A, "4.5.6.7", DNSResourceRecord::ADDITIONAL);
- return 1;
+ return LWResult::Result::Success;
}
if (domain == DNSName("powerdns.com") && type == QType::NS) {
setLWResult(res, 0, true);
addRecordToLW(res, domain, QType::NS, "ns1.powerdns.com");
addRecordToLW(res, DNSName("ns1.powerdns.com"), QType::A, "4.5.6.7", DNSResourceRecord::ADDITIONAL);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
}
void generateKeyMaterial(const DNSName& name, unsigned int algo, uint8_t digest, testkeysset_t& keys, map<DNSName, dsmap_t>& dsAnchors);
-int genericDSAndDNSKEYHandler(LWResult* res, const DNSName& domain, DNSName auth, int type, const testkeysset_t& keys, bool proveCut = true, boost::optional<time_t> now = boost::none, bool nsec3 = false, bool optOut = false);
+LWResult::Result genericDSAndDNSKEYHandler(LWResult* res, const DNSName& domain, DNSName auth, int type, const testkeysset_t& keys, bool proveCut = true, boost::optional<time_t> now = boost::none, bool nsec3 = false, bool optOut = false);
-int basicRecordsForQnameMinimization(LWResult* res, const DNSName& domain, int type);
+LWResult::Result basicRecordsForQnameMinimization(LWResult* res, const DNSName& domain, int type);
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* we are not primed yet, so SyncRes will have to call primeHints()
*/
sr->setAsyncCallback([&downServers](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
downServers.insert(ip);
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
noEDNSServer = ip;
setLWResult(res, RCode::FormErr);
- return 1;
+ return LWResult::Result::Success;
}
queriesWithoutEDNS++;
if (domain == DNSName("powerdns.com") && type == QType::A && !doTCP) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
}
- return sample ? basicRecordsForQnameMinimization(res, domain, type) : 0;
+ return sample ? basicRecordsForQnameMinimization(res, domain, type) : LWResult::Result::Timeout;
});
primeHints();
if (EDNS0Level > 0) {
res->d_haveEDNS = true;
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
primeHints();
sr->setAsyncCallback([&queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
primeHints();
sr->setAsyncCallback([](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
if (!doTCP) {
setLWResult(res, 0, false, true, false);
- return 1;
+ return LWResult::Result::Success;
}
if (domain == DNSName("powerdns.com") && type == QType::A && doTCP) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
primeHints();
sr->setAsyncCallback([&tcpQueriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
if (!doTCP) {
setLWResult(res, 0, true, true, false);
- return 1;
+ return LWResult::Result::Success;
}
/* first TCP query is answered with a TC response */
}
addRecordToLW(res, domain, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
});
primeHints();
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.gtld-servers.net.", QType::AAAA, "2001:DB8::1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53") || ip == ComboAddress("[2001:DB8::1]:53")) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "pdns-public-ns1.powerdns.com.", QType::AAAA, "2001:DB8::2", DNSResourceRecord::ADDITIONAL, 172800);
addRecordToLW(res, "pdns-public-ns2.powerdns.com.", QType::A, "192.0.2.3", DNSResourceRecord::ADDITIONAL, 172800);
addRecordToLW(res, "pdns-public-ns2.powerdns.com.", QType::AAAA, "2001:DB8::3", DNSResourceRecord::ADDITIONAL, 172800);
- return 1;
+ return LWResult::Result::Success;
}
else {
downServers.insert(ip);
- return 0;
+ return LWResult::Result::Timeout;
}
});
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.gtld-servers.net.", QType::AAAA, "2001:DB8::1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53") || ip == ComboAddress("[2001:DB8::1]:53")) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "pdns-public-ns1.powerdns.com.", QType::AAAA, "2001:DB8::2", DNSResourceRecord::ADDITIONAL, 172800);
addRecordToLW(res, "pdns-public-ns2.powerdns.com.", QType::A, "192.0.2.3", DNSResourceRecord::ADDITIONAL, 172800);
addRecordToLW(res, "pdns-public-ns2.powerdns.com.", QType::AAAA, "2001:DB8::3", DNSResourceRecord::ADDITIONAL, 172800);
- return 1;
+ return LWResult::Result::Success;
}
else {
downServers.insert(ip);
- return 0;
+ return LWResult::Result::Timeout;
}
});
addRecordToLW(res, "pdns-public-ns2.powerdns.net.", QType::A, "192.0.2.3", DNSResourceRecord::ADDITIONAL, 172800);
addRecordToLW(res, "pdns-public-ns2.powerdns.net.", QType::AAAA, "2001:DB8::3", DNSResourceRecord::ADDITIONAL, 172800);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.3:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::AAAA, "2001:DB8::1");
}
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.gtld-servers.net.", QType::AAAA, "2001:DB8::1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53") || ip == ComboAddress("[2001:DB8::1]:53")) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "pdns-public-ns1.powerdns.com.", QType::AAAA, "2001:DB8::2", DNSResourceRecord::ADDITIONAL, 172800);
addRecordToLW(res, "pdns-public-ns2.powerdns.com.", QType::A, "192.0.2.3", DNSResourceRecord::ADDITIONAL, 172800);
addRecordToLW(res, "pdns-public-ns2.powerdns.com.", QType::AAAA, "2001:DB8::3", DNSResourceRecord::ADDITIONAL, 172800);
- return 1;
+ return LWResult::Result::Success;
}
else {
if (downServers.size() < 3) {
/* only the last one will answer */
downServers.insert(ip);
- return -2;
+ return LWResult::Result::OSLimitError;
}
else {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, "powerdns.com.", QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
}
}
});
sr->setAsyncCallback([target](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
/* this will cause issue with qname minimization if we ever implement it */
if (domain != target) {
- return 0;
+ return LWResult::Result::Timeout;
}
if (isRootServer(ip)) {
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.gtld-servers.net.", QType::AAAA, "2001:DB8::1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53") || ip == ComboAddress("[2001:DB8::1]:53")) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "pdns-public-ns1.powerdns.com.", QType::AAAA, "2001:DB8::2", DNSResourceRecord::ADDITIONAL, 172800);
addRecordToLW(res, "pdns-public-ns2.powerdns.com.", QType::A, "192.0.2.3", DNSResourceRecord::ADDITIONAL, 172800);
addRecordToLW(res, "pdns-public-ns2.powerdns.com.", QType::AAAA, "2001:DB8::3", DNSResourceRecord::ADDITIONAL, 172800);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53") || ip == ComboAddress("192.0.2.3:53") || ip == ComboAddress("[2001:DB8::2]:53") || ip == ComboAddress("[2001:DB8::3]:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.4");
- return 1;
+ return LWResult::Result::Success;
}
else {
- return 0;
+ return LWResult::Result::Timeout;
}
});
}
else {
setLWResult(res, RCode::NXDomain, false, false, true);
- return 1;
+ return LWResult::Result::Success;
}
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.gtld-servers.net.", QType::AAAA, "2001:DB8::1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53") || ip == ComboAddress("[2001:DB8::1]:53")) {
if (domain == target) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "powerdns.com.", QType::NS, "pdns-public-ns1.powerdns.org.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "powerdns.com.", QType::NS, "pdns-public-ns2.powerdns.org.", DNSResourceRecord::AUTHORITY, 172800);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == DNSName("pdns-public-ns1.powerdns.org.")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, "pdns-public-ns1.powerdns.org.", QType::A, "192.0.2.2");
addRecordToLW(res, "pdns-public-ns1.powerdns.org.", QType::AAAA, "2001:DB8::2");
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == DNSName("pdns-public-ns2.powerdns.org.")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, "pdns-public-ns2.powerdns.org.", QType::A, "192.0.2.3");
addRecordToLW(res, "pdns-public-ns2.powerdns.org.", QType::AAAA, "2001:DB8::3");
- return 1;
+ return LWResult::Result::Success;
}
setLWResult(res, RCode::NXDomain, false, false, true);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53") || ip == ComboAddress("192.0.2.3:53") || ip == ComboAddress("[2001:DB8::2]:53") || ip == ComboAddress("[2001:DB8::3]:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.4");
- return 1;
+ return LWResult::Result::Success;
}
else {
- return 0;
+ return LWResult::Result::Timeout;
}
});
/* this one did not use the ECS info */
srcmask = boost::none;
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
/* this one did, but only up to a precision of /16, not the full /24 */
srcmask = Netmask("192.0.0.0/16");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
SyncRes::s_ecsqueries = 0;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
SyncRes::s_ecsqueries = 0;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == target) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::CNAME, cnameTarget.toString());
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == cnameTarget) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "powerdns.com.", QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
else if (domain == cnameTarget) {
setLWResult(res, RCode::NXDomain, true, false, false);
addRecordToLW(res, "powerdns.com.", QType::SOA, "a.powerdns.com. nstld.verisign-grs.com. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
- return 1;
+ return LWResult::Result::Success;
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::CNAME, cnameTarget.toString());
addRecordToLW(res, cnameTarget, QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == cnameTarget) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, cnameTarget, QType::A, "192.0.2.3");
- return 1;
+ return LWResult::Result::Success;
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == target) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::CNAME, domain.toString());
- return 1;
+ return LWResult::Result::Success;
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == target1) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::CNAME, target2.toString());
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target2) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::CNAME, target3.toString());
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target3) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::CNAME, target4.toString());
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target4) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::CNAME, target1.toString());
- return 1;
+ return LWResult::Result::Success;
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::CNAME, std::to_string(depth) + "-cname.powerdns.com");
depth++;
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* Set the maximum time to 1 ms */
setLWResult(res, 0, false, false, true);
addRecordToLW(res, dnameOwner, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (domain.isPartOf(dnameTarget)) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, dnameTarget, QType::NS, "b.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "b.gtld-servers.net.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, dnameOwner, QType::DNAME, dnameTarget.toString());
addRecordToLW(res, domain, QType::CNAME, cnameTarget.toString());
- return 1;
+ return LWResult::Result::Success;
}
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.3");
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
if (domain.countLabels() == 1 && type == QType::DS) { // powerdns|DS or example|DS
setLWResult(res, 0, true, false, true);
addDS(domain, 300, res->d_records, keys, DNSResourceRecord::ANSWER);
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
// For the rest, delegate!
if (domain.isPartOf(dnameOwner)) {
addDS(dnameOwner, 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (domain.isPartOf(dnameTarget)) {
setLWResult(res, 0, false, false, true);
addDS(dnameTarget, 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "b.gtld-servers.net.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
if (domain == target && type == QType::DS) { // dname.powerdns|DS
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys, false);
addRecordToLW(res, dnameOwner, QType::DNAME, dnameTarget.toString());
addRRSIG(keys, res->d_records, dnameOwner, 300);
addRecordToLW(res, domain, QType::CNAME, cnameTarget.toString()); // CNAME from a DNAME is not signed
- return 1;
+ return LWResult::Result::Success;
}
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
if (domain == cnameTarget && type == QType::DS) { // dname.example|DS
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
addRRSIG(keys, res->d_records, dnameTarget, 300);
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
if (domain == dnameOwner && type == QType::DS) { // powerdns|DS
setLWResult(res, 0, true, false, true);
addDS(domain, 300, res->d_records, keys, DNSResourceRecord::ANSWER);
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
if (domain == dnameTarget && type == QType::DS) { // example|DS
return genericDSAndDNSKEYHandler(res, domain, DNSName("."), type, keys);
addDS(dnameOwner, 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (domain.isPartOf(dnameTarget)) {
setLWResult(res, 0, false, false, true);
addDS(dnameTarget, 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "b.gtld-servers.net.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
if (domain == target && type == QType::DS) { // dname.powerdns|DS
return genericDSAndDNSKEYHandler(res, domain, dnameOwner, type, keys, false);
addRecordToLW(res, dnameOwner, QType::DNAME, dnameTarget.toString());
addRRSIG(keys, res->d_records, dnameOwner, 300);
addRecordToLW(res, domain, QType::CNAME, cnameTarget.toString()); // CNAME from a DNAME is not signed
- return 1;
+ return LWResult::Result::Success;
}
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, dnameOwner, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (domain.isPartOf(dnameTarget)) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, dnameTarget, QType::NS, "b.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "b.gtld-servers.net.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, dnameOwner, QType::DNAME, dnameTarget.toString());
// No CNAME, recursor should synth
- return 1;
+ return LWResult::Result::Success;
}
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "ns1.powerdns.com.", QType::AAAA, "2001:DB8:1::53", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
if (domain == DNSName("powerdns.com.")) {
addRecordToLW(res, domain, QType::A, "192.0.2.2");
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("[2001:DB8:1::53]:53")) {
setLWResult(res, 0, true, false, false);
if (domain == DNSName("powerdns.com.")) {
addRecordToLW(res, domain, QType::A, "192.0.2.2");
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, domain, QType::NS, "ns1.powerdns.com.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "ns1.powerdns.com.", QType::AAAA, "2001:DB8:1::53", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("[2001:DB8:1::53]:53")) {
setLWResult(res, 0, true, false, false);
if (domain == DNSName("powerdns.com.")) {
addRecordToLW(res, domain, QType::A, "192.0.2.2");
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, domain, QType::NS, "ns1.powerdns.com.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
if (domain == DNSName("powerdns.com.")) {
addRecordToLW(res, domain, QType::A, "192.0.2.2");
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "ns4.powerdns.org.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
else {
addRecordToLW(res, domain, QType::A, "192.0.2.1");
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
if (limited) {
}
else {
setLWResult(res, RCode::NXDomain, false, false, true);
- return 1;
+ return LWResult::Result::Success;
}
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.gtld-servers.net.", QType::AAAA, "2001:DB8::1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53") || ip == ComboAddress("[2001:DB8::1]:53")) {
if (domain.isPartOf(target1)) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "powerdns.com.", QType::NS, "ns1.powerdns.org.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "powerdns.com.", QType::NS, "ns2.powerdns.org.", DNSResourceRecord::AUTHORITY, 172800);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain.isPartOf(target2)) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "powerdns.org.", QType::NS, "ns1.powerdns.com.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "powerdns.org.", QType::NS, "ns2.powerdns.com.", DNSResourceRecord::AUTHORITY, 172800);
- return 1;
+ return LWResult::Result::Success;
}
setLWResult(res, RCode::NXDomain, false, false, true);
- return 1;
+ return LWResult::Result::Success;
}
else {
- return 0;
+ return LWResult::Result::Timeout;
}
});
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::CNAME, std::to_string(queries) + "-cname.powerdns.com");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* Set the maximum number of questions very low */
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* mark ns as down */
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* prevent querying this NS */
addRecordToLW(res, "a.gtld-servers.net.", QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
SyncRes::s_maxnegttl = 3600;
addRecordToLW(res, "a.gtld-servers.net.", QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.gtld-servers.net.", QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
SyncRes::s_rootNXTrust = false;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "powerdns.com.", QType::NS, "ns1.powerdns.com.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, RCode::NXDomain, true, false, false);
addRecordToLW(res, "powerdns.com.", QType::SOA, "ns1.powerdns.com. hostmaster.powerdns.com. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, auth, 300);
addNSECRecordToLW(DNSName("wwa.powerdns.com."), DNSName("wwz.powerdns.com."), {QType::RRSIG, QType::NSEC}, 600, res->d_records);
addRRSIG(keys, res->d_records, auth, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, auth, type, keys);
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
if (type == QType::NS) {
addNSECRecordToLW(DNSName("powerdns.com."), DNSName("a.powerdns.com."), {QType::RRSIG, QType::NSEC}, 600, res->d_records);
addRRSIG(keys, res->d_records, auth, 300);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "powerdns.com.", QType::NS, "ns1.powerdns.com.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
if (domain == target1) { // NODATA for TXT, NOERROR for A
if (type == QType::TXT) {
setLWResult(res, RCode::NoError, true);
addRecordToLW(res, "powerdns.com.", QType::SOA, "ns1.powerdns.com. hostmaster.powerdns.com. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
- return 1;
+ return LWResult::Result::Success;
}
if (type == QType::A) {
setLWResult(res, RCode::NoError, true);
addRecordToLW(res, domain, QType::A, "192.0.2.1", DNSResourceRecord::ANSWER, 86400);
- return 1;
+ return LWResult::Result::Success;
}
}
if (domain == target2 || domain == target3) {
setLWResult(res, RCode::NXDomain, true);
addRecordToLW(res, "powerdns.com.", QType::SOA, "ns1.powerdns.com. hostmaster.powerdns.com. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "powerdns.com.", QType::NS, "ns1.powerdns.com.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
if (domain == target1) { // NODATA for TXT, NOERROR for A
if (type == QType::TXT) {
setLWResult(res, RCode::NoError, true);
addRecordToLW(res, "powerdns.com.", QType::SOA, "ns1.powerdns.com. hostmaster.powerdns.com. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
- return 1;
+ return LWResult::Result::Success;
}
if (type == QType::A) {
setLWResult(res, RCode::NoError, true);
addRecordToLW(res, domain, QType::A, "192.0.2.1", DNSResourceRecord::ANSWER, 86400);
- return 1;
+ return LWResult::Result::Success;
}
}
if (domain == target2 || domain == target3) {
setLWResult(res, RCode::NXDomain, true);
addRecordToLW(res, "powerdns.com.", QType::SOA, "ns1.powerdns.com. hostmaster.powerdns.com. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
srcmask = boost::none;
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == target) {
addRecordToLW(res, "powerdns.com", QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
});
const time_t now = sr->getNow().tv_sec;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
});
const time_t now = sr->getNow().tv_sec;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
});
const time_t now = sr->getNow().tv_sec;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
});
const time_t now = sr->getNow().tv_sec;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
});
const time_t now = sr->getNow().tv_sec;
addRecordToLW(res, "pdns-public-ns3.powerdns.com.", QType::A, "192.0.2.3", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "pdns-public-ns3.powerdns.com.", QType::AAAA, "2001:DB8::3", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else {
nsCounts[ip]++;
BOOST_CHECK_LT(nsCounts.size(), 3U);
/* let's time out on pdns-public-ns2.powerdns.com. */
- return 0;
+ return LWResult::Result::Timeout;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
BOOST_CHECK_EQUAL(nsCounts.size(), 3U);
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.254");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
}
- return 0;
+ return LWResult::Result::Timeout;
});
struct timeval now = sr->getNow();
addRecordToLW(res, "pdns-public-ns1.powerdns.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.254");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* we populate the cache with a flawed NSset, i.e. there is a NS entry but no corresponding glue */
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "pdns-public-ns2.powerdns.com.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, domain, QType::NS, "pdns-public-ns3.powerdns.com.", DNSResourceRecord::AUTHORITY, 172800);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == DNSName("pdns-public-ns2.powerdns.com.") || domain == DNSName("pdns-public-ns3.powerdns.com.")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, ".", QType::SOA, "a.root-servers.net. nstld.verisign-grs.com. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
string n = string("pdns-public-ns") + std::to_string(i) + string(".powerdns.com.");
addRecordToLW(res, domain, QType::NS, n, DNSResourceRecord::AUTHORITY, 172800);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (domain.toString().length() > 14 && domain.toString().substr(0, 14) == "pdns-public-ns") {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, ".", QType::SOA, "a.root-servers.net. nstld.verisign-grs.com. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
const DNSName target("powerdns.com.");
sr->setAsyncCallback([target](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
- return 0;
+ return LWResult::Result::Timeout;
});
/* we populate the cache with everything we need */
sr->setAsyncCallback([target, &queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 7200);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2", DNSResourceRecord::ANSWER, 10);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
const time_t now = sr->getNow().tv_sec;
addRecordToLW(res, "a.gtld-servers.net.", QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 20);
srcmask = boost::none;
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2", DNSResourceRecord::ANSWER, 10);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
const time_t now = sr->getNow().tv_sec;
addRecordToLW(res, "pdns-public-ns1.powerdns.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* we populate the cache with entries that expired 60s ago*/
addRecordToLW(res, domain, QType::A, "192.0.2.2", DNSResourceRecord::ANSWER, 10);
addRecordToLW(res, domain, QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 10);
- return 1;
+ return LWResult::Result::Success;
});
const time_t now = sr->getNow().tv_sec;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context,
LWResult* res, bool* chained) {
setLWResult(res, 0, true, false, true);
- return 1;
+ return LWResult::Result::Success;
});
vector<DNSRecord> ret;
addRecordToLW(res, domain, QType::A, "192.0.2.42");
addRecordToLW(res, domain, QType::ANY, "\\# 0");
addRecordToLW(res, domain, QType::OPT, "");
- return 1;
+ return LWResult::Result::Success;
});
vector<DNSRecord> ret;
addRecordToLW(res, domain, QType::NSEC, "deadbeef", DNSResourceRecord::AUTHORITY);
addRecordToLW(res, domain, QType::RRSIG, "NSEC 5 2 600 2100010100000000 2100010100000000 24567 dummy data", DNSResourceRecord::AUTHORITY);
addRecordToLW(res, domain, QType::RRSIG, "SOA 5 3 600 2100010100000000 2100010100000000 24567 dummy data", DNSResourceRecord::AUTHORITY);
- return 1;
+ return LWResult::Result::Success;
});
vector<DNSRecord> ret;
addRecordToLW(res, domain, QType::NSEC, "deadbeef", DNSResourceRecord::AUTHORITY);
addRecordToLW(res, domain, QType::RRSIG, "NSEC 5 2 600 2100010100000000 2100010100000000 24567 dummy data", DNSResourceRecord::AUTHORITY);
addRecordToLW(res, domain, QType::RRSIG, "SOA 5 3 600 2100010100000000 2100010100000000 24567 dummy data", DNSResourceRecord::AUTHORITY);
- return 1;
+ return LWResult::Result::Success;
});
vector<DNSRecord> ret;
addRecordToLW(res, domain, QType::NSEC, "deadbeef", DNSResourceRecord::AUTHORITY);
addRecordToLW(res, domain, QType::RRSIG, "NSEC 5 2 600 2100010100000000 2100010100000000 24567 dummy data", DNSResourceRecord::AUTHORITY);
addRecordToLW(res, domain, QType::RRSIG, "SOA 5 3 600 2100010100000000 2100010100000000 24567 dummy data", DNSResourceRecord::AUTHORITY);
- return 1;
+ return LWResult::Result::Success;
});
vector<DNSRecord> ret;
addRecordToLW(res, domain, QType::NSEC, "deadbeef", DNSResourceRecord::AUTHORITY);
addRecordToLW(res, domain, QType::RRSIG, "NSEC 5 2 600 2100010100000000 2100010100000000 24567 dummy data", DNSResourceRecord::AUTHORITY);
addRecordToLW(res, domain, QType::RRSIG, "SOA 5 3 600 2100010100000000 2100010100000000 24567 dummy data", DNSResourceRecord::AUTHORITY);
- return 1;
+ return LWResult::Result::Success;
});
vector<DNSRecord> ret;
sr->setAsyncCallback([&queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
const DNSName target("powerdns.com.");
sr->setAsyncCallback([target](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
});
const time_t now = sr->getNow().tv_sec;
sr->setAsyncCallback([&queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
cerr << "asyncresolve called to ask " << ip.toStringWithPort() << " about " << domain.toString() << " / " << QType(type).getName() << " over " << (doTCP ? "TCP" : "UDP") << " (rd: " << sendRDQuery << ", EDNS0 level: " << EDNS0Level << ")" << endl;
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
const DNSName target("powerdns.com.");
sr->setAsyncCallback([&queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, false, true, false, true);
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
DNSFilterEngine::Policy pol;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::AAAA, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
DNSFilterEngine::Policy pol;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, nsName.toString(), DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, nsName, QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
DNSFilterEngine::Policy pol;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::NS, nsName.toString(), DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, nsName, QType::A, ns.toString(), DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ns) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
DNSFilterEngine::Policy pol;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* simulate a no-RD query */
/* set AA=0, we are a recursor */
setLWResult(res, 0, false, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* simulate a no-RD query */
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
BOOST_CHECK_EQUAL(sendRDQuery, true);
if (ip != forwardedNS) {
- return 0;
+ return LWResult::Result::Timeout;
}
if (type == QType::DS || type == QType::DNSKEY) {
addRRSIG(keys, res->d_records, domain, 300);
addRecordToLW(res, cnameTarget, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
}
if (ip != forwardedNS) {
- return 0;
+ return LWResult::Result::Timeout;
}
if (domain == target1 && type == QType::A) {
addRecordToLW(res, target1, QType::A, "192.0.2.1");
addRRSIG(keys, res->d_records, parent, 300);
- return 1;
+ return LWResult::Result::Success;
}
if (domain == target2 && type == QType::A) {
addRecordToLW(res, target2, QType::A, "192.0.2.2");
addRRSIG(keys, res->d_records, parent, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
BOOST_CHECK_EQUAL(sendRDQuery, true);
if (ip != forwardedNS) {
- return 0;
+ return LWResult::Result::Timeout;
}
if (type == QType::DS || type == QType::DNSKEY) {
addRecordToLW(res, cnameTarget, QType::A, "192.0.2.1");
/* no RRSIG in a signed zone, Bogus ! */
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
BOOST_CHECK_EQUAL(sendRDQuery, true);
if (ip != forwardedNS) {
- return 0;
+ return LWResult::Result::Timeout;
}
if (type == QType::DS || type == QType::DNSKEY) {
else {
setLWResult(res, 0, false, false, true);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
sr->setAsyncCallback([&queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
sr->setAsyncCallback([&queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
queriesCount++;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
});
vector<DNSRecord> ret;
if (domain == target) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::CNAME, authZone.toString(), DNSResourceRecord::ANSWER, 3600);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
if (domain == externalCNAME) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, externalCNAME, QType::A, addr.toString(), DNSResourceRecord::ANSWER, 3600);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
sr->setAsyncCallback([&queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
sr->setAsyncCallback([&queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
if (ip == ComboAddress(nsAddr.toString(), 53) && domain == target) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
sr->setDNSSECValidationRequested(true);
if (ip == ComboAddress(nsAddr.toString(), 53) && domain == target) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
sr->setAsyncCallback([&queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
sr->setAsyncCallback([&queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
sr->setAsyncCallback([&queriesCount](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult* res, bool* chained) {
queriesCount++;
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
queriesCount++;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
- return 1;
+ return LWResult::Result::Success;
});
/* simulate a no-RD query */
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
addDNSKEY(zskeys, domain, 300, res->d_records);
addRRSIG(kskeys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
/* No DNSKEY */
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* === with validation enabled === */
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(rrsigkeys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
SyncRes::s_maxcachettl = 86400;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
DNSName auth = domain;
if (type == QType::DS || type == QType::DNSKEY) {
- if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys) == 0) {
- return 0;
+ if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys) == LWResult::Result::Timeout) {
+ return LWResult::Result::Timeout;
}
if (type == QType::DS && domain == target) {
res->d_records.pop_back();
}
- return 1;
+ return LWResult::Result::Success;
}
if (isRootServer(ip)) {
/* Include the DS but omit the RRSIG*/
addDS(DNSName("com."), 300, res->d_records, keys);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, RCode::NoError, true, false, true);
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
addRRSIG(keys, res->d_records, auth, 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
DNSName auth = domain;
if (type == QType::DS || type == QType::DNSKEY) {
- if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys) == 0) {
- return 0;
+ if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys) == LWResult::Result::Timeout) {
+ return LWResult::Result::Timeout;
}
if (type == QType::DS && domain == target) {
res->d_records.pop_back();
}
- return 1;
+ return LWResult::Result::Success;
}
if (isRootServer(ip)) {
/* Include the DS but omit the RRSIG*/
addDS(DNSName("com."), 300, res->d_records, keys);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300, false, boost::none, boost::none, fixedNow);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.1:53")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300, false, boost::none, boost::none, fixedNow);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.2:53")) {
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
addRRSIG(keys, res->d_records, auth, 300, false, boost::none, boost::none, fixedNow);
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.1:53")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.2:53")) {
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
addRRSIG(keys, res->d_records, auth, 300);
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.1:53")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, RCode::NoError, true, false, true);
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.1:53")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.2:53")) {
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
addRRSIG(keys, res->d_records, auth, 300);
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
if (type == QType::DS || type == QType::DNSKEY) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else {
if (isRootServer(ip)) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.com.", DNSResourceRecord::AUTHORITY, 3600);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRecordToLW(res, domain, QType::NS, "ns1.powerdns.com.", DNSResourceRecord::AUTHORITY, 3600);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
if (type == QType::NS) {
setLWResult(res, RCode::NoError, true, false, true);
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* There is TA for root but no DS/DNSKEY/RRSIG, should be Bogus, but.. */
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
if (type == QType::NS) {
addNSECRecordToLW(domain, DNSName("z.powerdns.com."), {QType::NS, QType::DNSKEY}, 600, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, auth, 300);
addNSECRecordToLW(DNSName("nw.powerdns.com."), DNSName("ny.powerdns.com."), {QType::RRSIG, QType::NSEC}, 600, res->d_records);
addRRSIG(keys, res->d_records, auth, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, auth, type, keys);
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
if (type == QType::NS) {
addNSECRecordToLW(DNSName("powerdns.com."), DNSName("a.powerdns.com."), {QType::RRSIG, QType::NSEC}, 600, res->d_records);
addRRSIG(keys, res->d_records, auth, 300);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, DNSName("powerdns.com."), 300);
addNSECRecordToLW(DNSName("www.powerdns.com."), DNSName("wwz.powerdns.com."), {QType::A, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addNSECRecordToLW(DNSName("a.powerdns.com."), DNSName("wwz.powerdns.com."), {QType::A, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
/* add a NSEC denying the DS AND the existence of a cut (no NS) */
addNSECRecordToLW(domain, DNSName("z") + domain, {QType::NSEC}, 600, res->d_records);
addRRSIG(keys, res->d_records, auth, 300);
- return 1;
+ return LWResult::Result::Success;
}
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
}
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, true);
/* a wildcard matches but has no record for this type */
addNSECRecordToLW(DNSName("*.com."), DNSName("com."), {QType::AAAA, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("com"), 300, false, boost::none, DNSName("*.com"));
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
/* a wildcard matches but has no record for this type */
addNSEC3UnhashedRecordToLW(DNSName("*.com."), DNSName("com."), "whatever", {QType::AAAA, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("com"), 300, false, boost::none, DNSName("*.com"));
- return 1;
+ return LWResult::Result::Success;
}
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
}
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, true);
/* a wildcard matches but has no record for this type */
addNSEC3UnhashedRecordToLW(DNSName("*.com."), DNSName("com."), "whatever", {QType::AAAA, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("com"), 300, false, boost::none, DNSName("*.com"));
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
/* a wildcard matches but has no record for this type */
addNSEC3UnhashedRecordToLW(DNSName("*.com."), DNSName("com."), "whatever", {QType::AAAA, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("com"), 300, false, boost::none, DNSName("*.com"));
- return 1;
+ return LWResult::Result::Success;
}
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
}
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, true);
/* a wildcard matches but has no record for this type */
addNSEC3UnhashedRecordToLW(DNSName("*.com."), DNSName("com."), "whatever", {QType::AAAA, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("com"), 300, false, boost::none, DNSName("*.com"));
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
/* a wildcard matches but has no record for this type */
addNSEC3UnhashedRecordToLW(DNSName("*.com."), DNSName("com."), "whatever", {QType::AAAA, QType::NSEC, QType::RRSIG}, 600, res->d_records, g_maxNSEC3Iterations + 100);
addRRSIG(keys, res->d_records, DNSName("com"), 300, false, boost::none, DNSName("*.com"));
- return 1;
+ return LWResult::Result::Success;
}
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
}
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, true, false, true);
/* a wildcard matches but has no record for this type */
addNSEC3UnhashedRecordToLW(DNSName("*.com."), DNSName("com."), "whatever", {QType::AAAA, QType::NSEC, QType::RRSIG}, 600, res->d_records, g_maxNSEC3Iterations + 100);
addRRSIG(keys, res->d_records, DNSName("com"), 300, false, boost::none, DNSName("*.com"));
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* we are generating NSEC3 with more iterations than we allow, so we should go Insecure */
addNSECRecordToLW(DNSName("www.sub.powerdns.com."), DNSName("wwz.sub.powerdns.com."), {QType::A, QType::NSEC, QType::RRSIG}, 600, res->d_records);
}
addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addNSEC3NarrowRecordToLW(DNSName("sub.powerdns.com."), DNSName("powerdns.com."), {QType::A, QType::TXT, QType::RRSIG, QType::NSEC}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("powerdns.com."), 300);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, DNSName("powerdns.com."), 300);
addNSECRecordToLW(DNSName("www.powerdns.com."), DNSName("wwz.powerdns.com."), {QType::A, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addNSEC3NarrowRecordToLW(DNSName("www.powerdns.com."), DNSName("powerdns.com."), {QType::A, QType::TXT, QType::RRSIG, QType::NSEC}, 600, res->d_records, g_maxNSEC3Iterations + 100);
addRRSIG(keys, res->d_records, DNSName("powerdns.com."), 300);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* the NSEC3 providing the denial of existence proof for the next closer has too many iterations,
addRRSIG(keys, res->d_records, DNSName("powerdns.com."), 300);
addNSECRecordToLW(DNSName("www.powerdns.com."), DNSName("wwz.powerdns.com."), {QType::A, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.42");
addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300, false, boost::none, DNSName("*.powerdns.com"));
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
std::set<uint16_t> types = {QType::NSEC};
addNSECRecordToLW(domain, DNSName("z") + domain, types, 600, res->d_records);
addRRSIG(keys, res->d_records, auth, 300);
- return 1;
+ return LWResult::Result::Success;
}
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
}
it's the wildcard itself, but let's do it so other validators don't choke on it */
addNSECRecordToLW(DNSName("*.powerdns.com."), DNSName("wwz.powerdns.com."), {QType::A, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300, false, boost::none, DNSName("*.powerdns.com"));
- return 1;
+ return LWResult::Result::Success;
}
});
addRRSIG(keys, res->d_records, auth, 300);
addNSECRecordToLW(DNSName("*.powerdns.com."), DNSName("wwz.powerdns.com."), {QType::A, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300, false, boost::none, DNSName("*.powerdns.com"));
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == DNSName("sub.powerdns.com.")) {
const auto auth = DNSName("powerdns.com.");
/* add a NSEC denying the DS */
addNSECRecordToLW(DNSName("*.powerdns.com."), DNSName("wwz.powerdns.com."), {QType::A, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300, false, boost::none, DNSName("*.powerdns.com"));
- return 1;
+ return LWResult::Result::Success;
}
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
}
addRRSIG(keys, res->d_records, DNSName("powerdns.com."), 300, false, boost::none, DNSName("*.powerdns.com"));
addNSECRecordToLW(DNSName("*.powerdns.com."), DNSName("wwz.powerdns.com."), {QType::A, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300, false, boost::none, DNSName("*.powerdns.com"));
- return 1;
+ return LWResult::Result::Success;
}
});
else {
BOOST_ASSERT(0);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
else {
BOOST_ASSERT(0);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
DNSName hero("herokuapp.com.");
else {
BOOST_ASSERT(0);
}
- return 1;
+ return LWResult::Result::Success;
}
BOOST_ASSERT(0);
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
if (type == QType::DS && domain == DNSName("powerdns.com.")) {
/* time out */
- return 0;
+ return LWResult::Result::Timeout;
}
if (type == QType::DS || type == QType::DNSKEY) {
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300, false, boost::none, boost::none, fixedNow);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.1:53")) {
//addRRSIG(keys, res->d_records, DNSName("com."), 300, false, boost::none, boost::none, fixedNow);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.2:53")) {
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
addRRSIG(keys, res->d_records, auth, 300, false, boost::none, boost::none, fixedNow);
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
if (type == QType::DNSKEY && domain == DNSName("powerdns.com.")) {
/* time out */
- return 0;
+ return LWResult::Result::Timeout;
}
if (type == QType::DS || type == QType::DNSKEY) {
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300, false, boost::none, boost::none, fixedNow);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.1:53")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300, false, boost::none, boost::none, fixedNow);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
if (ip == ComboAddress("192.0.2.2:53")) {
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
addRRSIG(keys, res->d_records, auth, 300, false, boost::none, boost::none, fixedNow);
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
dsQueriesCount++;
if (domain == target) {
- if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys, false) == 0) {
- return 0;
+ if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys, false) == LWResult::Result::Timeout) {
+ return LWResult::Result::Timeout;
}
- return 1;
+ return LWResult::Result::Success;
}
setLWResult(res, 0, true, false, true);
addDS(domain, 300, res->d_records, keys, DNSResourceRecord::ANSWER);
addRRSIG(keys, res->d_records, auth, 300);
- return 1;
+ return LWResult::Result::Success;
}
else if (type == QType::DNSKEY) {
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
if (isRootServer(ip)) {
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.com.", DNSResourceRecord::AUTHORITY, 3600);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
/* No DS on referral, and no denial of the DS either */
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
/* No DS on referral, and no denial of the DS either */
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addDS(domain, 300, res->d_records, keys, DNSResourceRecord::ANSWER);
addRRSIG(keys, res->d_records, auth, 300);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (type == QType::DNSKEY) {
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
if (isRootServer(ip)) {
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
if (type == QType::NS) {
addRRSIG(keys, res->d_records, DNSName("www.powerdns.com"), 300);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, DNSName("."), 300);
addNSECRecordToLW(domain, DNSName("aaa."), {QType::DNSKEY, QType::SOA, QType::NS, QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, true, false, true);
addDS(domain, 300, res->d_records, keys, DNSResourceRecord::ANSWER);
addRRSIG(keys, res->d_records, auth, 300);
- return 1;
+ return LWResult::Result::Success;
}
else if (type == QType::DNSKEY) {
setLWResult(res, 0, true, false, true);
else {
addRRSIG(keys, res->d_records, domain, 300);
}
- return 1;
+ return LWResult::Result::Success;
}
else {
if (isRootServer(ip)) {
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
if (type == QType::NS) {
addRRSIG(keys, res->d_records, domain, 300);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addNSECRecordToLW(domain, DNSName("powerdnt.com."), {QType::NS}, 600, res->d_records);
}
addRRSIG(keys, res->d_records, auth, 300);
- return 1;
+ return LWResult::Result::Success;
}
else if (type == QType::DNSKEY) {
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
if (isRootServer(ip)) {
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.com.", DNSResourceRecord::AUTHORITY, 3600);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
/* No DS on referral, and no denial of the DS either */
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
/* No DS on referral, and no denial of the DS either */
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
else {
addRecordToLW(res, domain, QType::A, "192.0.2.42");
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addNSECRecordToLW(domain, DNSName("z.powerdns.com."), {QType::NS, QType::DNSKEY}, 600, res->d_records);
/* NO RRSIG for the NSEC record! */
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* NSEC record without the corresponding RRSIG in a secure zone, should be Bogus! */
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
/* NO NSEC record! */
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
/* no NSEC record in a secure zone, should be Bogus! */
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addNSECRecordToLW(domain, DNSName("z.powerdns.com."), {QType::NS}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("com."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else {
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
else {
addRecordToLW(res, domain, QType::A, targetAddr.toString());
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
/* next closer */
addNSEC3UnhashedRecordToLW(DNSName("oowerdns.com."), DNSName("com."), DNSName("qowerdns.com.").toStringNoDot(), {QType::NS}, 600, res->d_records, 10, true);
addRRSIG(keys, res->d_records, DNSName("com."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys, true, boost::none, true, true);
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else {
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
else {
addRecordToLW(res, domain, QType::A, targetAddr.toString());
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
/* next closer */
addNSEC3UnhashedRecordToLW(DNSName("oowerdns.com."), DNSName("com."), DNSName("qowerdns.com.").toStringNoDot(), {QType::NS}, 600, res->d_records, 10, true);
addRRSIG(keys, res->d_records, DNSName("com."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys, true, boost::none, true, true);
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, DNSName("com."), QType::SOA, "a.gtld-servers.com. hostmastercom. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else {
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addNSEC3UnhashedRecordToLW(DNSName("oowerdns.com."), DNSName("com."), DNSName("qowerdns.com.").toStringNoDot(), {QType::NS}, 600, res->d_records, 10, true);
addRRSIG(keys, res->d_records, DNSName("com."), 300);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, DNSName("powerdns.com."), 300);
addNSECRecordToLW(domain, DNSName("z.powerdns.com."), {QType::NS}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("powerdns.com."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == DNSName("www.sub.powerdns.com.")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, DNSName("sub.powerdns.com."), QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else {
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
else {
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
}
}
- return 1;
+ return LWResult::Result::Success;
}
else if (type == QType::DNSKEY) {
if (domain == g_rootdnsname || domain == DNSName("sub.powerdns.com.")) {
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
}
else {
addNSECRecordToLW(DNSName("com."), DNSName("dom."), {QType::NS}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRecordToLW(res, DNSName("powerdns.com."), QType::NS, "ns1.powerdns.com.", DNSResourceRecord::AUTHORITY, 3600);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
addRRSIG(keys, res->d_records, DNSName("sub.powerdns.com."), 300);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addNSECRecordToLW(domain, DNSName("z.powerdns.com."), {QType::NS}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("com."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else {
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
if (type == QType::NS) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addNSECRecordToLW(domain, DNSName("z.power-dns.com."), {QType::NS}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("com."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else {
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
}
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addNSECRecordToLW(domain, DNSName("z.power-dns.com."), {QType::NS}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("com."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
}
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addNSECRecordToLW(domain, DNSName("z.power-dns.com."), {QType::NS}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("com."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else {
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addRRSIG(keys, res->d_records, domain, 300);
}
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addRRSIG(keys, res->d_records, domain, 300);
}
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
/* No RRSIG, leading to bogus */
}
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addRRSIG(keys, res->d_records, domain, 300);
}
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addNSECRecordToLW(domain, DNSName("z.power-dns.com."), {QType::NS}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("com."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else {
addDS(DNSName("com."), 300, res->d_records, keys);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == DNSName("com.")) {
addRRSIG(keys, res->d_records, DNSName("com."), 300);
addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, targetCNameAddr.toString());
}
}
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == DNSName("com.")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::SOA, ". yop. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else {
addNSECRecordToLW(DNSName("com."), DNSName("com."), {QType::NS}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (target == domain) {
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.com.");
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
}
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, true, false, true);
addDNSKEY(keys, domain, 300, res->d_records);
addRRSIG(keys, res->d_records, domain, 300);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == DNSName("com.")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::SOA, ". yop. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else {
addNSECRecordToLW(DNSName("com."), DNSName("com."), {QType::NS}, 600, res->d_records);
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (target == domain) {
addRecordToLW(res, domain, QType::NS, "a.gtld-servers.com.");
addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
}
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && ip == ComboAddress("192.0.2.2:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
}
/* No RRSIG in a now (thanks to TA) Secure zone -> Bogus*/
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::DNSKEY) {
/* No DNSKEY */
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, "a.root-servers.net.", QType::A, "198.41.0.4", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.root-servers.net.", QType::AAAA, "2001:503:ba3e::2:30", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
else {
setLWResult(res, 0, true, false, true);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
else {
setLWResult(res, RCode::NXDomain, true, false, true);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, domain, 300);
addNSECRecordToLW(domain, DNSName("z."), {QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, domain, 1, false, boost::none, boost::none, fixedNow);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, domain, 86400);
addNSECRecordToLW(domain, DNSName("z."), {QType::NSEC, QType::RRSIG}, 86400, res->d_records);
/* no RRSIG */
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
SyncRes::s_maxnegttl = 3600;
setLWResult(res, RCode::NoError, true, false, true);
addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600);
addRRSIG(keys, res->d_records, domain, 1, false, boost::none, boost::none, tnow);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.1");
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
if (domain == target && type == QType::A) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.1", DNSResourceRecord::ANSWER, 86400);
/* no RRSIG */
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
SyncRes::s_maxbogusttl = 3600;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.1");
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == target && type == QType::AAAA) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::AAAA, "2001:db8::1");
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, cnameTarget, QType::A, "192.0.2.1");
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == cnameTarget && type == QType::A) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, cnameTarget, QType::A, "192.0.2.1");
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::CNAME, cnameTarget.toString());
addRecordToLW(res, cnameTarget, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == cnameTarget && type == QType::A) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, cnameTarget, QType::A, "192.0.2.1");
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, target, QType::CNAME, cnameTarget.toString(), DNSResourceRecord::ANSWER, 86400);
addRecordToLW(res, cnameTarget, QType::A, "192.0.2.1", DNSResourceRecord::ANSWER, 86400);
/* no RRSIG */
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == cnameTarget && type == QType::A) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, cnameTarget, QType::A, "192.0.2.1", DNSResourceRecord::ANSWER, 86400);
/* no RRSIG */
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
SyncRes::s_maxbogusttl = 60;
addRRSIG(keys, res->d_records, DNSName("."), 300);
addRecordToLW(res, addTarget, QType::A, "192.0.2.42", DNSResourceRecord::ADDITIONAL);
/* no RRSIG for the additional record */
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == addTarget && type == QType::A) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, addTarget, QType::A, "192.0.2.42");
addRRSIG(keys, res->d_records, DNSName("."), 300);
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRRSIG(keys, res->d_records, domain, 300);
addNSECRecordToLW(domain, DNSName("z."), {QType::NSEC, QType::RRSIG}, 600, res->d_records);
addRRSIG(keys, res->d_records, domain, 1, false, boost::none, boost::none, fixedNow);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
else {
setLWResult(res, RCode::NoError, true, false, true);
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 3600);
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
addRecordToLW(res, domain, QType::SOA, "pdns-public-ns1.powerdns.com. pieter\\.lexis.powerdns.com. 2017032301 10800 3600 604800 3600", DNSResourceRecord::AUTHORITY, 86400);
addRRSIG(keys, res->d_records, domain, 86400);
/* no denial */
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
SyncRes::s_maxbogusttl = 60;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "powerdns.com.", QType::NS, "pdns-public-ns1.powerdns.com.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "pdns-public-ns1.powerdns.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
if (domain == cname) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "powerdns.org.", QType::NS, "pdns-public-ns1.powerdns.org.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "pdns-public-ns1.powerdns.org.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == target) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::CNAME, cname.toString());
- return 1;
+ return LWResult::Result::Success;
}
}
else if (ip == ComboAddress("192.0.2.2:53")) {
if (domain == cname) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "127.0.0.1");
- return 1;
+ return LWResult::Result::Success;
}
}
- return 0;
+ return LWResult::Result::Timeout;
});
vector<DNSRecord> ret;
auth.chopOff();
if (type == QType::DS || type == QType::DNSKEY) {
if (domain == target) {
- if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys2) != 1) {
- return 0;
+ if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys2) != LWResult::Result::Success) {
+ return LWResult::Result::Timeout;
}
}
return genericDSAndDNSKEYHandler(res, domain, auth, type, keys);
}
- return 0;
+ return LWResult::Result::Timeout;
});
dsmap_t ds;
auth.chopOff();
if (type == QType::DS || type == QType::DNSKEY) {
if (domain == target) {
- if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys2) != 1) {
- return 0;
+ if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys2) != LWResult::Result::Success) {
+ return LWResult::Result::Timeout;
}
- if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys3) != 1) {
- return 0;
+ if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys3) != LWResult::Result::Success) {
+ return LWResult::Result::Timeout;
}
}
return genericDSAndDNSKEYHandler(res, domain, auth, type, keys);
}
- return 0;
+ return LWResult::Result::Timeout;
});
dsmap_t ds;
auth.chopOff();
if (type == QType::DS || type == QType::DNSKEY) {
if (domain == target) {
- if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys2) != 1) {
- return 0;
+ if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys2) != LWResult::Result::Success) {
+ return LWResult::Result::Timeout;
}
- if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys3) != 1) {
- return 0;
+ if (genericDSAndDNSKEYHandler(res, domain, auth, type, keys3) != LWResult::Result::Success) {
+ return LWResult::Result::Timeout;
}
}
return genericDSAndDNSKEYHandler(res, domain, auth, type, keys);
}
- return 0;
+ return LWResult::Result::Timeout;
});
dsmap_t ds;
setLWResult(res, 0, false, false, true);
addRecordToLW(res, DNSName("powerdns.com"), QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 42);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53")) {
if (domain == target) {
addRecordToLW(res, cnameTarget, QType::A, "192.0.2.2");
addRecordToLW(res, DNSName("powerdns.com."), QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, DNSName("a.gtld-servers.net."), QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (domain == cnameTarget) {
setLWResult(res, 0, true, false, false);
addRecordToLW(res, domain, QType::A, "192.0.2.2");
}
- return 1;
+ return LWResult::Result::Success;
}
- return 0;
+ return LWResult::Result::Timeout;
});
const time_t now = sr->getNow().tv_sec;
addRecordToLW(res, domain, QType::TXT, "TXT", DNSResourceRecord::ADDITIONAL);
/* should be scrubbed because it doesn't match any of the accepted names in this answer (mostly 'domain') */
addRecordToLW(res, DNSName("powerdns.com."), QType::AAAA, "2001:db8::1", DNSResourceRecord::ADDITIONAL);
- return 1;
+ return LWResult::Result::Success;
});
const time_t now = sr->getNow().tv_sec;
setLWResult(res, 0, true, false, true);
addRecordToLW(res, domain, QType::A, "192.0.2.1");
addRecordToLW(res, domain, QType::AAAA, "2001:db8::1", DNSResourceRecord::ADDITIONAL);
- return 1;
+ return LWResult::Result::Success;
});
const time_t now = sr->getNow().tv_sec;
addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.net.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "a.gtld-servers.net.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "a.gtld-servers.net.", QType::AAAA, "2001:DB8::1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.1:53") || ip == ComboAddress("[2001:DB8::1]:53")) {
setLWResult(res, 0, false, false, true);
addRecordToLW(res, "pdns-public-ns1.powerdns.com.", QType::AAAA, "2001:DB8::2", DNSResourceRecord::ADDITIONAL, 172800);
addRecordToLW(res, "pdns-public-ns2.powerdns.com.", QType::A, "192.0.2.3", DNSResourceRecord::ADDITIONAL, 172800);
addRecordToLW(res, "pdns-public-ns2.powerdns.com.", QType::AAAA, "2001:DB8::3", DNSResourceRecord::ADDITIONAL, 172800);
- return 1;
+ return LWResult::Result::Success;
}
else if (ip == ComboAddress("192.0.2.2:53") || ip == ComboAddress("192.0.2.3:53") || ip == ComboAddress("[2001:DB8::2]:53") || ip == ComboAddress("[2001:DB8::3]:53")) {
setLWResult(res, 0, true, false, true);
addRecordToLW(res, target, QType::A, "192.0.2.4");
addRecordToLW(res, "powerdns.com.", QType::DS, "2 8 2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBB", DNSResourceRecord::AUTHORITY);
- return 1;
+ return LWResult::Result::Success;
}
else {
- return 0;
+ return LWResult::Result::Timeout;
}
});
addRecordToLW(res, "powerdns.com.", QType::NS, "spoofed.ns.", DNSResourceRecord::AUTHORITY, 172800);
addRecordToLW(res, "spoofed.ns.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
addRecordToLW(res, "spoofed.ns.", QType::AAAA, "2001:DB8::1", DNSResourceRecord::ADDITIONAL, 3600);
- return 1;
+ return LWResult::Result::Success;
});
const time_t now = sr->getNow().tv_sec;
For now this means we can't be clever, but will turn off DNSSEC if you reply with FormError or gibberish.
*/
-int SyncRes::asyncresolveWrapper(const ComboAddress& ip, bool ednsMANDATORY, const DNSName& domain, const DNSName& auth, int type, bool doTCP, bool sendRDQuery, struct timeval* now, boost::optional<Netmask>& srcmask, LWResult* res, bool* chained) const
+LWResult::Result SyncRes::asyncresolveWrapper(const ComboAddress& ip, bool ednsMANDATORY, const DNSName& domain, const DNSName& auth, int type, bool doTCP, bool sendRDQuery, struct timeval* now, boost::optional<Netmask>& srcmask, LWResult* res, bool* chained) const
{
/* what is your QUEST?
the goal is to get as many remotes as possible on the highest level of EDNS support
ctx.d_auth = auth;
#endif
- int ret;
+ LWResult::Result ret;
for(int tries = 0; tries < 3; ++tries) {
// cerr<<"Remote '"<<ip.toString()<<"' currently in mode "<<mode<<endl;
ret = d_asyncResolve(ip, sendQname, type, doTCP, sendRDQuery, EDNSLevel, now, srcmask, ctx, res, chained);
}
else {
- ret=asyncresolve(ip, sendQname, type, doTCP, sendRDQuery, EDNSLevel, now, srcmask, ctx, d_outgoingProtobufServers, d_frameStreamServers, luaconfsLocal->outgoingProtobufExportConfig.exportTypes, res, chained);
+ ret = asyncresolve(ip, sendQname, type, doTCP, sendRDQuery, EDNSLevel, now, srcmask, ctx, d_outgoingProtobufServers, d_frameStreamServers, luaconfsLocal->outgoingProtobufExportConfig.exportTypes, res, chained);
}
// ednsstatus might be cleared, so do a new lookup
ednsstatus = t_sstorage.ednsstatus.insert(ip).first;
mode = &ednsstatus->mode;
- if(ret < 0) {
+ if (ret == LWResult::Result::PermanentError || ret == LWResult::Result::OSLimitError) {
return ret; // transport error, nothing to learn here
}
- if(ret == 0) { // timeout, not doing anything with it now
+ if(ret == LWResult::Result::Timeout) { // timeout, not doing anything with it now
return ret;
}
else if (*mode == EDNSStatus::UNKNOWN || *mode == EDNSStatus::EDNSOK || *mode == EDNSStatus::EDNSIGNORANT ) {
if (oldmode != *mode || !ednsstatus->modeSetAt)
t_sstorage.ednsstatus.setTS(ind, ednsstatus, d_now.tv_sec);
// cerr<<"Result: ret="<<ret<<", EDNS-level: "<<EDNSLevel<<", haveEDNS: "<<res->d_haveEDNS<<", new mode: "<<mode<<endl;
- return ret;
+ return LWResult::Result::Success;
}
return ret;
}
boost::optional<Netmask> nm;
bool chained = false;
- res=asyncresolveWrapper(remoteIP, d_doDNSSEC, qname, authname, qtype.getCode(), false, false, &d_now, nm, &lwr, &chained);
+ auto resolveRet = asyncresolveWrapper(remoteIP, d_doDNSSEC, qname, authname, qtype.getCode(), false, false, &d_now, nm, &lwr, &chained);
d_totUsec += lwr.d_usec;
accountAuthLatency(lwr.d_usec, remoteIP.sin4.sin_family);
*fromCache = true;
// filter out the good stuff from lwr.result()
- if (res == 1) {
+ if (resolveRet == LWResult::Result::Success) {
for(const auto& rec : lwr.d_records) {
if(rec.d_place == DNSResourceRecord::ANSWER)
ret.push_back(rec);
bool SyncRes::doResolveAtThisIP(const std::string& prefix, const DNSName& qname, const QType& qtype, LWResult& lwr, boost::optional<Netmask>& ednsmask, const DNSName& auth, bool const sendRDQuery, const DNSName& nsName, const ComboAddress& remoteIP, bool doTCP, bool* truncated)
{
bool chained = false;
- int resolveret = RCode::NoError;
+ LWResult::Result resolveret = LWResult::Result::Success;
s_outqueries++;
d_outqueries++;
d_tcpoutqueries++;
}
- if(d_pdl && d_pdl->preoutquery(remoteIP, d_requestor, qname, qtype, doTCP, lwr.d_records, resolveret)) {
+ int preOutQueryRet = RCode::NoError;
+ if(d_pdl && d_pdl->preoutquery(remoteIP, d_requestor, qname, qtype, doTCP, lwr.d_records, preOutQueryRet)) {
LOG(prefix<<qname<<": query handled by Lua"<<endl);
}
else {
}
/* preoutquery killed the query by setting dq.rcode to -3 */
- if(resolveret==-3) {
+ if (preOutQueryRet == -3) {
throw ImmediateServFailException("Query killed by policy");
}
dontThrottle = dontThrottleNames->check(nsName) || dontThrottleNetmasks->match(remoteIP);
}
- if(resolveret != 1) {
+ if (resolveret != LWResult::Result::Success) {
/* Error while resolving */
- if(resolveret == 0) {
+ if (resolveret == LWResult::Result::Timeout) {
/* Time out */
LOG(prefix<<qname<<": timeout resolving after "<<lwr.d_usec/1000.0<<"msec "<< (doTCP ? "over TCP" : "")<<endl);
if(t_timeouts)
t_timeouts->push_back(remoteIP);
}
- else if(resolveret == -2) {
+ else if(resolveret == LWResult::Result::OSLimitError) {
/* OS resource limit reached */
LOG(prefix<<qname<<": hit a local resource limit resolving"<< (doTCP ? " over TCP" : "")<<", probable error: "<<stringerror()<<endl);
g_stats.resourceLimits++;
LOG(prefix<<qname<<": error resolving from "<<remoteIP.toString()<< (doTCP ? " over TCP" : "") <<", possible error: "<<stringerror()<< endl);
}
- if(resolveret != -2 && !chained && !dontThrottle) {
+ if (resolveret != LWResult::Result::OSLimitError && !chained && !dontThrottle) {
// don't account for resource limits, they are our own fault
// And don't throttle when the IP address is on the dontThrottleNetmasks list or the name is part of dontThrottleNames
t_sstorage.nsSpeeds[nsName.empty()? DNSName(remoteIP.toStringWithPort()) : nsName].submit(remoteIP, 1000000, d_now); // 1 sec
// mark server as down
t_sstorage.throttle.throttle(d_now.tv_sec, boost::make_tuple(remoteIP, "", 0), s_serverdownthrottletime, 10000);
}
- else if (resolveret == -1) {
+ else if (resolveret == LWResult::Result::Timeout) {
// unreachable, 1 minute or 100 queries
t_sstorage.throttle.throttle(d_now.tv_sec, boost::make_tuple(remoteIP, qname, qtype.getCode()), 60, 100);
}
{
public:
enum LogMode { LogNone, Log, Store};
- typedef std::function<int(const ComboAddress& ip, const DNSName& qdomain, int qtype, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult *lwr, bool* chained)> asyncresolve_t;
+ typedef std::function<LWResult::Result(const ComboAddress& ip, const DNSName& qdomain, int qtype, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, LWResult *lwr, bool* chained)> asyncresolve_t;
enum class HardenNXD { No, DNSSEC, Yes };
bool doSpecialNamesResolve(const DNSName &qname, const QType &qtype, const uint16_t qclass, vector<DNSRecord> &ret);
- int asyncresolveWrapper(const ComboAddress& ip, bool ednsMANDATORY, const DNSName& domain, const DNSName& auth, int type, bool doTCP, bool sendRDQuery, struct timeval* now, boost::optional<Netmask>& srcmask, LWResult* res, bool* chained) const;
+ LWResult::Result asyncresolveWrapper(const ComboAddress& ip, bool ednsMANDATORY, const DNSName& domain, const DNSName& auth, int type, bool doTCP, bool sendRDQuery, struct timeval* now, boost::optional<Netmask>& srcmask, LWResult* res, bool* chained) const;
boost::optional<Netmask> getEDNSSubnetMask(const DNSName&dn, const ComboAddress& rem);
class Socket;
/* external functions, opaque to us */
-int asendtcp(const string& data, Socket* sock);
-int arecvtcp(string& data, size_t len, Socket* sock, bool incompleteOkay);
-
+LWResult::Result asendtcp(const string& data, Socket* sock);
+LWResult::Result arecvtcp(string& data, size_t len, Socket* sock, bool incompleteOkay);
struct PacketID
{
string data;
try {
while(!req.complete) {
- int bytes = arecvtcp(data, 16384, client.get(), true);
- if (bytes > 0) {
+ auto ret = arecvtcp(data, 16384, client.get(), true);
+ if (ret == LWResult::Result::Success) {
req.complete = yarl.feed(data);
} else {
// read error OR EOF
logResponse(resp, remote, logprefix);
// now send the reply
- if (asendtcp(reply, client.get()) == -1 || reply.empty()) {
+ if (asendtcp(reply, client.get()) != LWResult::Result::Success || reply.empty()) {
g_log<<Logger::Error<<logprefix<<"Failed sending reply to HTTP client"<<endl;
}
}