func_t d_func;
};
+thread_local std::default_random_engine SpoofAction::t_randomEngine;
+
DNSAction::Action SpoofAction::operator()(DNSQuestion* dq, std::string* ruleresult) const
{
uint16_t qtype = dq->qtype;
}
}
- if(addrs.size() > 1)
- random_shuffle(addrs.begin(), addrs.end());
+ if (addrs.size() > 1) {
+ shuffle(addrs.begin(), addrs.end(), t_randomEngine);
+ }
unsigned int consumed=0;
DNSName ignore((char*)dq->dh, dq->len, sizeof(dnsheader), false, 0, 0, &consumed);
*/
#pragma once
+#include <random>
+
struct ResponseConfig
{
boost::optional<bool> setAA{boost::none};
ResponseConfig d_responseConfig;
private:
+ static thread_local std::default_random_engine t_randomEngine;
std::vector<ComboAddress> d_addrs;
std::set<uint16_t> d_types;
std::string d_rawResponse;