Annotate use of UnknownDomainID when it's safe to use.
{
public:
virtual unsigned int getCapabilities()=0;
- virtual void lookup(const QType &qtype, const string &qdomain, domainid_t zoneId=UnknownDomainID, DNSPacket *pkt_p=nullptr)=0;
+ virtual void lookup(const QType &qtype, const string &qdomain, domainid_t zoneId, DNSPacket *pkt_p=nullptr)=0;
virtual bool list(const string &target, domainid_t domain_id)=0;
virtual bool get(DNSResourceRecord &r)=0;
virtual bool getSOA(const string &name, domainid_t zoneId, SOAData &soadata);
* `CAP_DNSSEC` Backend implements :ref:`backend-dnssec`.
* `CAP_LIST` Backend implements `list`, for AXFR or `pdnsutil list-zone`
-.. cpp:function:: void DNSBackend::lookup(const QType &qtype, const string &qdomain, domainid_t zoneId=UnknownDomainID, DNSPacket *pkt=nullptr)
+.. cpp:function:: void DNSBackend::lookup(const QType &qtype, const string &qdomain, domainid_t zoneId, DNSPacket *pkt=nullptr)
This function is used to initiate a straight lookup for a record of name
'qdomain' and type 'qtype'. A QType can be converted into an integer by
~RemoteBackend() override;
unsigned int getCapabilities() override;
- void lookup(const QType& qtype, const DNSName& qdomain, domainid_t zoneId = UnknownDomainID, DNSPacket* pkt_p = nullptr) override;
- void APILookup(const QType& qtype, const DNSName& qdomain, domainid_t zoneId = UnknownDomainID, bool include_disabled = false) override;
+ void lookup(const QType& qtype, const DNSName& qdomain, domainid_t zoneId, DNSPacket* pkt_p = nullptr) override;
+ void APILookup(const QType& qtype, const DNSName& qdomain, domainid_t zoneId, bool include_disabled = false) override;
bool get(DNSResourceRecord& rr) override;
bool list(const ZoneName& target, domainid_t domain_id, bool include_disabled = false) override;
{
BOOST_TEST_MESSAGE("Testing lookup method");
DNSResourceRecord resourceRecord;
- backendUnderTest->lookup(QType(QType::SOA), DNSName("unit.test."));
+ backendUnderTest->lookup(QType(QType::SOA), DNSName("unit.test."), UnknownDomainID);
// then try to get()
BOOST_CHECK(backendUnderTest->get(resourceRecord)); // and this should be TRUE.
// then we check rr contains what we expect
{
BOOST_TEST_MESSAGE("Testing lookup method with empty result");
DNSResourceRecord resourceRecord;
- backendUnderTest->lookup(QType(QType::SOA), DNSName("empty.unit.test."));
+ backendUnderTest->lookup(QType(QType::SOA), DNSName("empty.unit.test."), UnknownDomainID);
// then try to get()
BOOST_CHECK(!backendUnderTest->get(resourceRecord)); // and this should be FALSE
}
this->resolve_name(&addresses, name);
if (b) {
- b->lookup(QType(QType::ANY), name, -1);
+ // Safe to pass UnknownDomainID here - name is obtained from NSRecordContent
+ b->lookup(QType(QType::ANY), name, UnknownDomainID);
DNSZoneRecord rr;
while (b->get(rr))
if (rr.dr.d_type == QType::A || rr.dr.d_type == QType::AAAA)
}
zoneId = domaininfo.id;
}
+ // Safe for zoneId to be -1 here - it won't be the case for variants, see above
this->lookup(QType(QType::SOA), domain.operator const DNSName&(), zoneId);
S.inc("backend-queries");
virtual unsigned int getCapabilities() = 0;
//! lookup() initiates a lookup. A lookup without results should not throw!
- virtual void lookup(const QType& qtype, const DNSName& qdomain, domainid_t zoneId = UnknownDomainID, DNSPacket* pkt_p = nullptr) = 0;
- virtual void APILookup(const QType& qtype, const DNSName& qdomain, domainid_t zoneId = UnknownDomainID, bool include_disabled = false);
+ virtual void lookup(const QType& qtype, const DNSName& qdomain, domainid_t zoneId, DNSPacket* pkt_p = nullptr) = 0;
+ virtual void APILookup(const QType& qtype, const DNSName& qdomain, domainid_t zoneId, bool include_disabled = false);
virtual bool get(DNSResourceRecord&) = 0; //!< retrieves one DNSResource record, returns false if no more were available
virtual bool get(DNSZoneRecord& zoneRecord);
unsigned int hits=0, misses=0;
for(; n < 10000; ++n) {
DNSName domain(domains[dns_random(domains.size())]);
- B.lookup(QType(QType::NS), domain, -1);
+ // Safe to pass UnknownDomainID here
+ B.lookup(QType(QType::NS), domain, UnknownDomainID);
while(B.get(rr)) {
hits++;
}
- B.lookup(QType(QType::A), DNSName(std::to_string(dns_random_uint32()))+domain, -1);
+ // Safe to pass UnknownDomainID here
+ B.lookup(QType(QType::A), DNSName(std::to_string(dns_random_uint32()))+domain, UnknownDomainID);
while(B.get(rr)) {
}
misses++;