d_lw->registerMember("udpQueryDest", &DNSQuestion::udpQueryDest);
d_lw->registerMember("udpCallback", &DNSQuestion::udpCallback);
d_lw->registerMember("appliedPolicy", &DNSQuestion::appliedPolicy);
+ d_lw->registerMember("queryTime", &DNSQuestion::queryTime);
d_lw->registerMember<DNSFilterEngine::Policy, std::string>("policyName",
[](const DNSFilterEngine::Policy& pol) -> std::string {
bool& addPaddingToResponse;
unsigned int tag{0};
std::map<std::string, MetaValue> meta;
+ struct timeval queryTime;
void addAnswer(uint16_t type, const std::string& content, boost::optional<int> ttl, boost::optional<string> name);
void addRecord(uint16_t type, const std::string& content, DNSResourceRecord::Place place, boost::optional<int> ttl, boost::optional<string> name);
dq.extendedErrorExtra = &dc->d_extendedErrorExtra;
dq.meta = std::move(dc->d_meta);
dq.fromAuthIP = &sr.d_fromAuthIP;
+ if (g_useKernelTimestamp && dc->d_kernelTimestamp.tv_sec != 0) {
+ dq.queryTime = dc->d_kernelTimestamp;
+ }
+ else {
+ dq.queryTime = dc->d_now;
+ }
sr.d_slog = sr.d_slog->withValues("qname", Logging::Loggable(dc->d_mdp.d_qname),
"qtype", Logging::Loggable(QType(dc->d_mdp.d_qtype)),