ret->checkType=boost::get<string>(vars["checkType"]);
}
+ if(vars.count("checkClass")) {
+ ret->checkClass=std::stoi(boost::get<string>(vars["checkClass"]));
+ }
+
if(vars.count("setCD")) {
ret->setCD=boost::get<bool>(vars["setCD"]);
}
try
{
vector<uint8_t> packet;
- DNSPacketWriter dpw(packet, ds.checkName, ds.checkType.getCode());
+ DNSPacketWriter dpw(packet, ds.checkName, ds.checkType.getCode(), ds.checkClass);
dnsheader * requestHeader = dpw.getHeader();
requestHeader->rd=true;
if (ds.setCD) {
ComboAddress sourceAddr;
DNSName checkName{"a.root-servers.net."};
QType checkType{QType::A};
+ uint16_t checkClass{QClass::IN};
std::atomic<uint64_t> idOffset{0};
std::atomic<uint64_t> sendErrors{0};
std::atomic<uint64_t> outstanding{0};
dnsdist uses a health check, sent once every second, to determine the availability of a backend server.
By default, an A query for "a.root-servers.net." is sent.
-A different query type and target can be specified by passing, respectively, the ``checkType`` and ``checkName`` parameters to :func:`newServer`.
+A different query type, class and target can be specified by passing, respectively, the ``checkType``, ``checkClass`` and ``checkName`` parameters to :func:`newServer`.
The default behavior is to consider any valid response with an RCODE different from ServFail as valid.
If the ``mustResolve`` parameter of :func:`newServer` is set to ``true``, a response will only be considered valid if its RCODE differs from NXDomain, ServFail and Refused.
The CD flag can be set on the query by setting ``setCD`` to true.
e.g.::
- newServer({address="192.0.2.1", checkType="AAAA", checkName="a.root-servers.net.", mustResolve=true})
+ newServer({address="192.0.2.1", checkType="AAAA", checkType=DNSClass.CHAOS, checkName="a.root-servers.net.", mustResolve=true})
Source address selection
------------------------
tcpFastOpen=BOOL, -- Whether to enable TCP Fast Open
ipBindAddrNoPort=BOOL, -- Whether to enable IP_BIND_ADDRESS_NO_PORT if available, default: true
name=STRING, -- The name associated to this backend, for display purpose
+ checkClass=NUM, -- Use NUM as QCLASS in the health-check query, default: DNSClass.IN
checkName=STRING, -- Use STRING as QNAME in the health-check query, default: "a.root-servers.net."
checkType=STRING, -- Use STRING as QTYPE in the health-check query, default: "A"
setCD=BOOL, -- Set the CD (Checking Disabled) flag in the health-check query, default: false