const vector<string>&getCommands();
void gatherIncludes(std::vector<std::string> &extraConfigs);
#ifdef RECURSOR
- void setSLog(std::shared_ptr<Logr::Logger>& log)
+ void setSLog(Logr::log_t log)
{
d_log = log;
}
}
#ifdef NOD_ENABLED
-static bool nodCheckNewDomain(const shared_ptr<Logr::Logger>& nodlogger, const DNSName& dname)
+static bool nodCheckNewDomain(Logr::log_t nodlogger, const DNSName& dname)
{
bool ret = false;
// First check the (sub)domain isn't ignored for NOD purposes
return ret;
}
-static void sendNODLookup(const shared_ptr<Logr::Logger>& nodlogger, const DNSName& dname)
+static void sendNODLookup(Logr::log_t nodlogger, const DNSName& dname)
{
if (!(g_nodLookupDomain.isRoot())) {
// Send a DNS A query to <domain>.g_nodLookupDomain
}
}
-static bool udrCheckUniqueDNSRecord(const shared_ptr<Logr::Logger>& nodlogger, const DNSName& dname, uint16_t qtype, const DNSRecord& record)
+static bool udrCheckUniqueDNSRecord(Logr::log_t nodlogger, const DNSName& dname, uint16_t qtype, const DNSRecord& record)
{
bool ret = false;
if (record.d_place == DNSResourceRecord::ANSWER || record.d_place == DNSResourceRecord::ADDITIONAL) {
}
}
-void makeUDPServerSockets(deferredAdd_t& deferredAdds, std::shared_ptr<Logr::Logger>& log)
+void makeUDPServerSockets(deferredAdd_t& deferredAdds, Logr::log_t log)
{
int one = 1;
vector<string> locals;
return;
}
};
+
+using log_t = const std::shared_ptr<Logger>&;
}
unsigned int RecThreadInfo::s_numWorkerThreads;
thread_local unsigned int RecThreadInfo::t_id;
-static std::map<unsigned int, std::set<int>> parseCPUMap(std::shared_ptr<Logr::Logger>& log)
+static std::map<unsigned int, std::set<int>> parseCPUMap(Logr::log_t log)
{
std::map<unsigned int, std::set<int>> result;
return result;
}
-static void setCPUMap(const std::map<unsigned int, std::set<int>>& cpusMap, unsigned int n, pthread_t tid, std::shared_ptr<Logr::Logger>& log)
+static void setCPUMap(const std::map<unsigned int, std::set<int>>& cpusMap, unsigned int n, pthread_t tid, Logr::log_t log)
{
const auto& cpuMapping = cpusMap.find(n);
if (cpuMapping == cpusMap.cend()) {
static void recursorThread();
-void RecThreadInfo::start(unsigned int id, const string& tname, const std::map<unsigned int, std::set<int>>& cpusMap, std::shared_ptr<Logr::Logger>& log)
+void RecThreadInfo::start(unsigned int id, const string& tname, const std::map<unsigned int, std::set<int>>& cpusMap, Logr::log_t log)
{
name = tname;
thread = std::thread([id, tname] {
setCPUMap(cpusMap, id, thread.native_handle(), log);
}
-int RecThreadInfo::runThreads(std::shared_ptr<Logr::Logger>& log)
+int RecThreadInfo::runThreads(Logr::log_t log)
{
int ret = EXIT_SUCCESS;
unsigned int currentThreadId = 1;
return ret;
}
-void RecThreadInfo::makeThreadPipes(std::shared_ptr<Logr::Logger>& log)
+void RecThreadInfo::makeThreadPipes(Logr::log_t log)
{
auto pipeBufferSize = ::arg().asNum("distribution-pipe-buffer-size");
if (pipeBufferSize > 0) {
return theArg;
}
-static FDMultiplexer* getMultiplexer(std::shared_ptr<Logr::Logger>& log)
+static FDMultiplexer* getMultiplexer(Logr::log_t log)
{
FDMultiplexer* ret;
for (const auto& i : FDMultiplexer::getMultiplexerMap()) {
}
}
-static void writePid(std::shared_ptr<Logr::Logger>& log)
+static void writePid(Logr::log_t log)
{
if (!::arg().mustDo("write-pid"))
return;
}
}
-static void checkSocketDir(std::shared_ptr<Logr::Logger>& log)
+static void checkSocketDir(Logr::log_t log)
{
struct stat st;
string dir(::arg()["socket-dir"]);
}
#ifdef NOD_ENABLED
-static void setupNODThread(std::shared_ptr<Logr::Logger>& log)
+static void setupNODThread(Logr::log_t log)
{
if (g_nodEnabled) {
uint32_t num_cells = ::arg().asNum("new-domain-db-size");
}
#endif /* NOD_ENABLED */
-static void daemonize(std::shared_ptr<Logr::Logger>& log)
+static void daemonize(Logr::log_t log)
{
if (fork())
exit(0); // bye bye
::arg().set("quiet") = g_quiet ? "" : "no";
}
-static void checkLinuxIPv6Limits(std::shared_ptr<Logr::Logger>& log)
+static void checkLinuxIPv6Limits(Logr::log_t log)
{
#ifdef __linux__
string line;
#endif
}
-static void checkOrFixFDS(std::shared_ptr<Logr::Logger>& log)
+static void checkOrFixFDS(Logr::log_t log)
{
unsigned int availFDs = getFilenumLimit();
unsigned int wantFDs = g_maxMThreads * RecThreadInfo::numWorkers() + 25; // even healthier margin then before
statsWanted = false;
}
-static std::shared_ptr<NetmaskGroup> parseACL(const std::string& aclFile, const std::string& aclSetting, std::shared_ptr<Logr::Logger>& log)
+static std::shared_ptr<NetmaskGroup> parseACL(const std::string& aclFile, const std::string& aclSetting, Logr::log_t log)
{
auto result = std::make_shared<NetmaskGroup>();
template vector<pair<DNSName, uint16_t>> broadcastAccFunction(const std::function<vector<pair<DNSName, uint16_t>>*()>& fun); // explicit instantiation
template ThreadTimes broadcastAccFunction(const std::function<ThreadTimes*()>& fun);
-static int serviceMain(int argc, char* argv[], std::shared_ptr<Logr::Logger>& log)
+static int serviceMain(int argc, char* argv[], Logr::log_t log)
{
g_log.setName(g_programname);
g_log.disableSyslog(::arg().mustDo("disable-syslog"));
return numHandlers() + numDistributors() + numWorkers() + numTaskThreads();
}
- static int runThreads(std::shared_ptr<Logr::Logger>&);
- static void makeThreadPipes(std::shared_ptr<Logr::Logger>&);
+ static int runThreads(Logr::log_t);
+ static void makeThreadPipes(Logr::log_t);
void setExitCode(int e)
{
uint64_t numberOfDistributedQueries{0};
private:
- void start(unsigned int id, const string& name, const std::map<unsigned int, std::set<int>>& cpusMap, std::shared_ptr<Logr::Logger>&);
+ void start(unsigned int id, const string& name, const std::map<unsigned int, std::set<int>>& cpusMap, Logr::log_t);
std::string name;
std::thread thread;
void finishTCPReply(std::unique_ptr<DNSComboWriter>& dc, bool hadError, bool updateInFlight);
void checkFastOpenSysctl(bool active);
void checkTFOconnect();
-void makeTCPServerSockets(deferredAdd_t& deferredAdds, std::set<int>& tcpSockets, std::shared_ptr<Logr::Logger>&);
+void makeTCPServerSockets(deferredAdd_t& deferredAdds, std::set<int>& tcpSockets, Logr::log_t);
void handleNewTCPQuestion(int fd, FDMultiplexer::funcparam_t&);
-void makeUDPServerSockets(deferredAdd_t& deferredAdds, std::shared_ptr<Logr::Logger>&);
+void makeUDPServerSockets(deferredAdd_t& deferredAdds, Logr::log_t);
#define LOCAL_NETS "127.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 169.254.0.0/16, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fc00::/7, fe80::/10"
#define LOCAL_NETS_INVERSE "!127.0.0.0/8, !10.0.0.0/8, !100.64.0.0/10, !169.254.0.0/16, !192.168.0.0/16, !172.16.0.0/12, !::1/128, !fc00::/7, !fe80::/10"
return LWResult::Result::Success;
}
-void makeTCPServerSockets(deferredAdd_t& deferredAdds, std::set<int>& tcpSockets, std::shared_ptr<Logr::Logger>& log)
+void makeTCPServerSockets(deferredAdd_t& deferredAdds, std::set<int>& tcpSockets, Logr::log_t log)
{
int fd;
vector<string> locals;
struct ZoneData
{
- ZoneData(shared_ptr<Logr::Logger>& log, const std::string& zone) :
+ ZoneData(Logr::log_t log, const std::string& zone) :
d_log(log),
d_zone(zone),
d_now(time(nullptr)) {}
// Maybe use a SuffixMatchTree?
std::set<DNSName> d_delegations;
- shared_ptr<Logr::Logger>& d_log;
+ Logr::log_t d_log;
DNSName d_zone;
time_t d_now;
}
}
-static void makeNameToIPZone(std::shared_ptr<SyncRes::domainmap_t> newMap, const DNSName& hostname, const string& ip, std::shared_ptr<Logr::Logger>& log)
+static void makeNameToIPZone(std::shared_ptr<SyncRes::domainmap_t> newMap, const DNSName& hostname, const string& ip, Logr::log_t log)
{
SyncRes::AuthDomain ad;
ad.d_rdForward = false;
}
//! parts[0] must be an IP address, the rest must be host names
-static void makeIPToNamesZone(std::shared_ptr<SyncRes::domainmap_t> newMap, const vector<string>& parts, std::shared_ptr<Logr::Logger>& log)
+static void makeIPToNamesZone(std::shared_ptr<SyncRes::domainmap_t> newMap, const vector<string>& parts, Logr::log_t log)
{
string address = parts[0];
vector<string> ipparts;
}
}
-static void convertServersForAD(const std::string& zone, const std::string& input, SyncRes::AuthDomain& ad, const char* sepa, std::shared_ptr<Logr::Logger>& log, bool verbose = true)
+static void convertServersForAD(const std::string& zone, const std::string& input, SyncRes::AuthDomain& ad, const char* sepa, Logr::log_t log, bool verbose = true)
{
vector<string> servers;
stringtok(servers, input, sepa);
}
}
-static shared_ptr<SOARecordContent> loadRPZFromServer(const shared_ptr<Logr::Logger>& plogger, const ComboAddress& primary, const DNSName& zoneName, std::shared_ptr<DNSFilterEngine::Zone> zone, const boost::optional<DNSFilterEngine::Policy>& defpol, bool defpolOverrideLocal, uint32_t maxTTL, const TSIGTriplet& tt, size_t maxReceivedBytes, const ComboAddress& localAddress, uint16_t axfrTimeout)
+static shared_ptr<SOARecordContent> loadRPZFromServer(Logr::log_t plogger, const ComboAddress& primary, const DNSName& zoneName, std::shared_ptr<DNSFilterEngine::Zone> zone, const boost::optional<DNSFilterEngine::Policy>& defpol, bool defpolOverrideLocal, uint32_t maxTTL, const TSIGTriplet& tt, size_t maxReceivedBytes, const ComboAddress& localAddress, uint16_t axfrTimeout)
{
auto logger = plogger->withValues("primary", Logging::Loggable(primary));
return sr;
}
-static bool dumpZoneToDisk(const shared_ptr<Logr::Logger>& plogger, const DNSName& zoneName, const std::shared_ptr<DNSFilterEngine::Zone>& newZone, const std::string& dumpZoneFileName)
+static bool dumpZoneToDisk(Logr::log_t plogger, const DNSName& zoneName, const std::shared_ptr<DNSFilterEngine::Zone>& newZone, const std::string& dumpZoneFileName)
{
auto logger = plogger->v(1);
logger->info("Dumping zone to disk", "destination_file", Logging::Loggable(dumpZoneFileName));
uint32_t g_security_status;
string g_security_message;
-void doSecPoll(time_t* last_secpoll, std::shared_ptr<Logr::Logger>& log)
+void doSecPoll(time_t* last_secpoll, Logr::log_t log)
{
if (::arg()["security-poll-suffix"].empty())
return;
#include "logr.hh"
#include <stdint.h>
-void doSecPoll(time_t*, std::shared_ptr<Logr::Logger>&);
+void doSecPoll(time_t*, Logr::log_t);
extern uint32_t g_security_status;
extern std::string g_security_message;
return res;
}
-int SyncRes::getRootNS(struct timeval now, asyncresolve_t asyncCallback, unsigned int depth, std::shared_ptr<Logr::Logger>& log) {
+int SyncRes::getRootNS(struct timeval now, asyncresolve_t asyncCallback, unsigned int depth, Logr::log_t log) {
SyncRes sr(now);
sr.setDoEDNS0(true);
sr.setUpdatingRootNS();
static uint64_t doDumpSavedParentNSSets(int fd);
static uint64_t doDumpDoTProbeMap(int fd);
- static int getRootNS(struct timeval now, asyncresolve_t asyncCallback, unsigned int depth, std::shared_ptr<Logr::Logger>&);
+ static int getRootNS(struct timeval now, asyncresolve_t asyncCallback, unsigned int depth, Logr::log_t);
static void addDontQuery(const std::string& mask)
{
if (!s_dontQuery)
}
// Returns true if dsAnchors were modified
-bool updateTrustAnchorsFromFile(const std::string& fname, map<DNSName, dsmap_t>& dsAnchors, std::shared_ptr<Logr::Logger>& log)
+bool updateTrustAnchorsFromFile(const std::string& fname, map<DNSName, dsmap_t>& dsAnchors, Logr::log_t log)
{
map<DNSName, dsmap_t> newDSAnchors;
try {
bool warnIfDNSSECDisabled(const string& msg);
vState increaseDNSSECStateCounter(const vState& state);
vState increaseXDNSSECStateCounter(const vState& state);
-bool updateTrustAnchorsFromFile(const std::string& fname, map<DNSName, dsmap_t>& dsAnchors, std::shared_ptr<Logr::Logger>&);
+bool updateTrustAnchorsFromFile(const std::string& fname, map<DNSName, dsmap_t>& dsAnchors, Logr::log_t);