From: Remi Gacogne Date: Mon, 4 Mar 2024 14:45:30 +0000 (+0100) Subject: dnsdist: Delint dnsdist-lua-bindings.cc X-Git-Tag: dnsdist-1.10.0-alpha0~8^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa74fa6798d3cd258a8b4d162f8f6fe71d663157;p=thirdparty%2Fpdns.git dnsdist: Delint dnsdist-lua-bindings.cc --- diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings.cc b/pdns/dnsdistdist/dnsdist-lua-bindings.cc index 8f15f197ed..ba63b54692 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings.cc @@ -59,19 +59,19 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } } catch (const std::exception& e) { - return string(e.what()); + return {e.what()}; } catch (const PDNSException& e) { return e.reason; } catch (...) { - return string("Unknown exception"); + return {"Unknown exception"}; } - return string("No exception"); + return {"No exception"}; }); #ifndef DISABLE_POLICIES_BINDINGS /* ServerPolicy */ - luaCtx.writeFunction("newServerPolicy", [](string name, ServerPolicy::policyfunc_t policy) { return std::make_shared(name, policy, true); }); + luaCtx.writeFunction("newServerPolicy", [](const string& name, const ServerPolicy::policyfunc_t& policy) { return std::make_shared(name, policy, true); }); luaCtx.registerMember("name", &ServerPolicy::d_name); luaCtx.registerMember("policy", &ServerPolicy::d_policy); luaCtx.registerMember("ffipolicy", &ServerPolicy::d_ffipolicy); @@ -95,13 +95,13 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) #endif /* DISABLE_POLICIES_BINDINGS */ /* ServerPool */ - luaCtx.registerFunction::*)(std::shared_ptr)>("setCache", [](std::shared_ptr pool, std::shared_ptr cache) { + luaCtx.registerFunction::*)(std::shared_ptr)>("setCache", [](const std::shared_ptr& pool, std::shared_ptr cache) { if (pool) { pool->packetCache = std::move(cache); } }); luaCtx.registerFunction("getCache", &ServerPool::getCache); - luaCtx.registerFunction::*)()>("unsetCache", [](std::shared_ptr pool) { + luaCtx.registerFunction::*)()>("unsetCache", [](const std::shared_ptr& pool) { if (pool) { pool->packetCache = nullptr; } @@ -154,68 +154,69 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) [](const DownstreamState& state) -> int { return state.d_config.order; }, [](DownstreamState& state, int newOrder) { state.d_config.order = newOrder; }); luaCtx.registerMember( - "name", [](const DownstreamState& backend) -> const std::string { return backend.getName(); }, [](DownstreamState& backend, const std::string& newName) { backend.setName(newName); }); + "name", [](const DownstreamState& backend) -> std::string { return backend.getName(); }, [](DownstreamState& backend, const std::string& newName) { backend.setName(newName); }); luaCtx.registerFunction("getID", [](const DownstreamState& state) { return boost::uuids::to_string(*state.d_config.id); }); #endif /* DISABLE_DOWNSTREAM_BINDINGS */ #ifndef DISABLE_DNSHEADER_BINDINGS /* dnsheader */ - luaCtx.registerFunction("setRD", [](dnsheader& dh, bool v) { - dh.rd = v; + luaCtx.registerFunction("setRD", [](dnsheader& dnsHeader, bool value) { + dnsHeader.rd = value; }); - luaCtx.registerFunction("getRD", [](const dnsheader& dh) { - return (bool)dh.rd; + luaCtx.registerFunction("getRD", [](const dnsheader& dnsHeader) { + return (bool)dnsHeader.rd; }); - luaCtx.registerFunction("setRA", [](dnsheader& dh, bool v) { - dh.ra = v; + luaCtx.registerFunction("setRA", [](dnsheader& dnsHeader, bool value) { + dnsHeader.ra = value; }); - luaCtx.registerFunction("getRA", [](const dnsheader& dh) { - return (bool)dh.ra; + luaCtx.registerFunction("getRA", [](const dnsheader& dnsHeader) { + return (bool)dnsHeader.ra; }); - luaCtx.registerFunction("setAD", [](dnsheader& dh, bool v) { - dh.ad = v; + luaCtx.registerFunction("setAD", [](dnsheader& dnsHeader, bool value) { + dnsHeader.ad = value; }); - luaCtx.registerFunction("getAD", [](const dnsheader& dh) { - return (bool)dh.ad; + luaCtx.registerFunction("getAD", [](const dnsheader& dnsHeader) { + return (bool)dnsHeader.ad; }); - luaCtx.registerFunction("setAA", [](dnsheader& dh, bool v) { - dh.aa = v; + luaCtx.registerFunction("setAA", [](dnsheader& dnsHeader, bool value) { + dnsHeader.aa = value; }); - luaCtx.registerFunction("getAA", [](const dnsheader& dh) { - return (bool)dh.aa; + luaCtx.registerFunction("getAA", [](const dnsheader& dnsHeader) { + return (bool)dnsHeader.aa; }); - luaCtx.registerFunction("setCD", [](dnsheader& dh, bool v) { - dh.cd = v; + luaCtx.registerFunction("setCD", [](dnsheader& dnsHeader, bool value) { + dnsHeader.cd = value; }); - luaCtx.registerFunction("getCD", [](const dnsheader& dh) { - return (bool)dh.cd; + luaCtx.registerFunction("getCD", [](const dnsheader& dnsHeader) { + return (bool)dnsHeader.cd; }); - luaCtx.registerFunction("getID", [](const dnsheader& dh) { - return ntohs(dh.id); + luaCtx.registerFunction("getID", [](const dnsheader& dnsHeader) { + return ntohs(dnsHeader.id); }); - luaCtx.registerFunction("getTC", [](const dnsheader& dh) { - return (bool)dh.tc; + luaCtx.registerFunction("getTC", [](const dnsheader& dnsHeader) { + return (bool)dnsHeader.tc; }); - luaCtx.registerFunction("setTC", [](dnsheader& dh, bool v) { - dh.tc = v; - if (v) - dh.ra = dh.rd; // you'll always need this, otherwise TC=1 gets ignored + luaCtx.registerFunction("setTC", [](dnsheader& dnsHeader, bool value) { + dnsHeader.tc = value; + if (value) { + dnsHeader.ra = dnsHeader.rd; // you'll always need this, otherwise TC=1 gets ignored + } }); - luaCtx.registerFunction("setQR", [](dnsheader& dh, bool v) { - dh.qr = v; + luaCtx.registerFunction("setQR", [](dnsheader& dnsHeader, bool value) { + dnsHeader.qr = value; }); #endif /* DISABLE_DNSHEADER_BINDINGS */ @@ -224,7 +225,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) luaCtx.writeFunction("newCA", [](const std::string& name) { return ComboAddress(name); }); luaCtx.writeFunction("newCAFromRaw", [](const std::string& raw, boost::optional port) { if (raw.size() == 4) { - struct sockaddr_in sin4; + sockaddr_in sin4{}; memset(&sin4, 0, sizeof(sin4)); sin4.sin_family = AF_INET; memcpy(&sin4.sin_addr.s_addr, raw.c_str(), raw.size()); @@ -233,8 +234,8 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } return ComboAddress(&sin4); } - else if (raw.size() == 16) { - struct sockaddr_in6 sin6; + if (raw.size() == 16) { + sockaddr_in6 sin6{}; memset(&sin6, 0, sizeof(sin6)); sin6.sin6_family = AF_INET6; memcpy(&sin6.sin6_addr.s6_addr, raw.c_str(), raw.size()); @@ -245,33 +246,33 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } return ComboAddress(); }); - luaCtx.registerFunction("tostring", [](const ComboAddress& ca) { return ca.toString(); }); - luaCtx.registerFunction("tostringWithPort", [](const ComboAddress& ca) { return ca.toStringWithPort(); }); - luaCtx.registerFunction("__tostring", [](const ComboAddress& ca) { return ca.toString(); }); - luaCtx.registerFunction("toString", [](const ComboAddress& ca) { return ca.toString(); }); - luaCtx.registerFunction("toStringWithPort", [](const ComboAddress& ca) { return ca.toStringWithPort(); }); - luaCtx.registerFunction("getPort", [](const ComboAddress& ca) { return ntohs(ca.sin4.sin_port); }); - luaCtx.registerFunction("truncate", [](ComboAddress& ca, unsigned int bits) { ca.truncate(bits); }); - luaCtx.registerFunction("isIPv4", [](const ComboAddress& ca) { return ca.sin4.sin_family == AF_INET; }); - luaCtx.registerFunction("isIPv6", [](const ComboAddress& ca) { return ca.sin4.sin_family == AF_INET6; }); - luaCtx.registerFunction("isMappedIPv4", [](const ComboAddress& ca) { return ca.isMappedIPv4(); }); - luaCtx.registerFunction("mapToIPv4", [](const ComboAddress& ca) { return ca.mapToIPv4(); }); - luaCtx.registerFunction("match", [](nmts_t& s, const ComboAddress& ca) { return s.match(ca); }); + luaCtx.registerFunction("tostring", [](const ComboAddress& addr) { return addr.toString(); }); + luaCtx.registerFunction("tostringWithPort", [](const ComboAddress& addr) { return addr.toStringWithPort(); }); + luaCtx.registerFunction("__tostring", [](const ComboAddress& addr) { return addr.toString(); }); + luaCtx.registerFunction("toString", [](const ComboAddress& addr) { return addr.toString(); }); + luaCtx.registerFunction("toStringWithPort", [](const ComboAddress& addr) { return addr.toStringWithPort(); }); + luaCtx.registerFunction("getPort", [](const ComboAddress& addr) { return ntohs(addr.sin4.sin_port); }); + luaCtx.registerFunction("truncate", [](ComboAddress& addr, unsigned int bits) { addr.truncate(bits); }); + luaCtx.registerFunction("isIPv4", [](const ComboAddress& addr) { return addr.sin4.sin_family == AF_INET; }); + luaCtx.registerFunction("isIPv6", [](const ComboAddress& addr) { return addr.sin4.sin_family == AF_INET6; }); + luaCtx.registerFunction("isMappedIPv4", [](const ComboAddress& addr) { return addr.isMappedIPv4(); }); + luaCtx.registerFunction("mapToIPv4", [](const ComboAddress& addr) { return addr.mapToIPv4(); }); + luaCtx.registerFunction("match", [](nmts_t& set, const ComboAddress& addr) { return set.match(addr); }); #endif /* DISABLE_COMBO_ADDR_BINDINGS */ #ifndef DISABLE_DNSNAME_BINDINGS /* DNSName */ luaCtx.registerFunction("isPartOf", &DNSName::isPartOf); - luaCtx.registerFunction("chopOff", [](DNSName& dn) { return dn.chopOff(); }); + luaCtx.registerFunction("chopOff", [](DNSName& name) { return name.chopOff(); }); luaCtx.registerFunction("countLabels", [](const DNSName& name) { return name.countLabels(); }); luaCtx.registerFunction("hash", [](const DNSName& name) { return name.hash(); }); luaCtx.registerFunction("wirelength", [](const DNSName& name) { return name.wirelength(); }); - luaCtx.registerFunction("tostring", [](const DNSName& dn) { return dn.toString(); }); - luaCtx.registerFunction("toString", [](const DNSName& dn) { return dn.toString(); }); - luaCtx.registerFunction("toStringNoDot", [](const DNSName& dn) { return dn.toStringNoDot(); }); - luaCtx.registerFunction("__tostring", [](const DNSName& dn) { return dn.toString(); }); - luaCtx.registerFunction("toDNSString", [](const DNSName& dn) { return dn.toDNSString(); }); - luaCtx.registerFunction("makeRelative", [](const DNSName& dn, const DNSName& to) { return dn.makeRelative(to); }); + luaCtx.registerFunction("tostring", [](const DNSName& name) { return name.toString(); }); + luaCtx.registerFunction("toString", [](const DNSName& name) { return name.toString(); }); + luaCtx.registerFunction("toStringNoDot", [](const DNSName& name) { return name.toStringNoDot(); }); + luaCtx.registerFunction("__tostring", [](const DNSName& name) { return name.toString(); }); + luaCtx.registerFunction("toDNSString", [](const DNSName& name) { return name.toDNSString(); }); + luaCtx.registerFunction("makeRelative", [](const DNSName& name, const DNSName& relTo) { return name.makeRelative(relTo); }); luaCtx.writeFunction("newDNSName", [](const std::string& name) { return DNSName(name); }); luaCtx.writeFunction("newDNSNameFromRaw", [](const std::string& name) { return DNSName(name.c_str(), name.size(), 0, false); }); luaCtx.writeFunction("newSuffixMatchNode", []() { return SuffixMatchNode(); }); @@ -280,12 +281,12 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) /* DNSNameSet */ luaCtx.registerFunction("toString", [](const DNSNameSet& dns) { return dns.toString(); }); luaCtx.registerFunction("__tostring", [](const DNSNameSet& dns) { return dns.toString(); }); - luaCtx.registerFunction("add", [](DNSNameSet& dns, DNSName& dn) { dns.insert(dn); }); - luaCtx.registerFunction("check", [](DNSNameSet& dns, DNSName& dn) { return dns.find(dn) != dns.end(); }); - luaCtx.registerFunction("delete", (size_t(DNSNameSet::*)(const DNSName&)) & DNSNameSet::erase); - luaCtx.registerFunction("size", (size_t(DNSNameSet::*)() const) & DNSNameSet::size); - luaCtx.registerFunction("clear", (void(DNSNameSet::*)()) & DNSNameSet::clear); - luaCtx.registerFunction("empty", (bool(DNSNameSet::*)() const) & DNSNameSet::empty); + luaCtx.registerFunction("add", [](DNSNameSet& dns, DNSName& name) { dns.insert(name); }); + luaCtx.registerFunction("check", [](DNSNameSet& dns, DNSName& name) { return dns.find(name) != dns.end(); }); + luaCtx.registerFunction("delete", (size_t (DNSNameSet::*)(const DNSName&)) &DNSNameSet::erase); + luaCtx.registerFunction("size", (size_t (DNSNameSet::*)() const) &DNSNameSet::size); + luaCtx.registerFunction("clear", (void (DNSNameSet::*)()) &DNSNameSet::clear); + luaCtx.registerFunction("empty", (bool (DNSNameSet::*)() const) &DNSNameSet::empty); #endif /* DISABLE_DNSNAME_BINDINGS */ #ifndef DISABLE_SUFFIX_MATCH_BINDINGS @@ -345,7 +346,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } }); - luaCtx.registerFunction("check", (bool(SuffixMatchNode::*)(const DNSName&) const) & SuffixMatchNode::check); + luaCtx.registerFunction("check", (bool (SuffixMatchNode::*)(const DNSName&) const) &SuffixMatchNode::check); luaCtx.registerFunction (SuffixMatchNode::*)(const DNSName&) const>("getBestMatch", [](const SuffixMatchNode& smn, const DNSName& needle) { boost::optional result{boost::none}; auto res = smn.getBestMatch(needle); @@ -374,13 +375,13 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) }); luaCtx.registerFunction("empty", &Netmask::empty); luaCtx.registerFunction("getBits", &Netmask::getBits); - luaCtx.registerFunction("getNetwork", [](const Netmask& nm) { return nm.getNetwork(); }); // const reference makes this necessary - luaCtx.registerFunction("getMaskedNetwork", [](const Netmask& nm) { return nm.getMaskedNetwork(); }); + luaCtx.registerFunction("getNetwork", [](const Netmask& netmask) { return netmask.getNetwork(); }); // const reference makes this necessary + luaCtx.registerFunction("getMaskedNetwork", [](const Netmask& netmask) { return netmask.getMaskedNetwork(); }); luaCtx.registerFunction("isIpv4", &Netmask::isIPv4); luaCtx.registerFunction("isIPv4", &Netmask::isIPv4); luaCtx.registerFunction("isIpv6", &Netmask::isIPv6); luaCtx.registerFunction("isIPv6", &Netmask::isIPv6); - luaCtx.registerFunction("match", (bool(Netmask::*)(const string&) const) & Netmask::match); + luaCtx.registerFunction("match", (bool (Netmask::*)(const string&) const) &Netmask::match); luaCtx.registerFunction("toString", &Netmask::toString); luaCtx.registerFunction("__tostring", &Netmask::toString); luaCtx.registerEqFunction(&Netmask::operator==); @@ -404,7 +405,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } }); - luaCtx.registerFunction("match", (bool(NetmaskGroup::*)(const ComboAddress&) const) & NetmaskGroup::match); + luaCtx.registerFunction("match", (bool (NetmaskGroup::*)(const ComboAddress&) const) &NetmaskGroup::match); luaCtx.registerFunction("size", &NetmaskGroup::size); luaCtx.registerFunction("clear", &NetmaskGroup::clear); luaCtx.registerFunction("toString", [](const NetmaskGroup& nmg) { return "NetmaskGroup " + nmg.toString(); }); @@ -419,34 +420,34 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) #ifndef DISABLE_CLIENT_STATE_BINDINGS /* ClientState */ - luaCtx.registerFunction("toString", [](const ClientState& fe) { + luaCtx.registerFunction("toString", [](const ClientState& frontend) { setLuaNoSideEffect(); - return fe.local.toStringWithPort(); + return frontend.local.toStringWithPort(); }); - luaCtx.registerFunction("__tostring", [](const ClientState& fe) { + luaCtx.registerFunction("__tostring", [](const ClientState& frontend) { setLuaNoSideEffect(); - return fe.local.toStringWithPort(); + return frontend.local.toStringWithPort(); }); - luaCtx.registerFunction("getType", [](const ClientState& fe) { + luaCtx.registerFunction("getType", [](const ClientState& frontend) { setLuaNoSideEffect(); - return fe.getType(); + return frontend.getType(); }); - luaCtx.registerFunction("getConfiguredTLSProvider", [](const ClientState& fe) { + luaCtx.registerFunction("getConfiguredTLSProvider", [](const ClientState& frontend) { setLuaNoSideEffect(); - if (fe.tlsFrontend != nullptr) { - return fe.tlsFrontend->getRequestedProvider(); + if (frontend.tlsFrontend != nullptr) { + return frontend.tlsFrontend->getRequestedProvider(); } - else if (fe.dohFrontend != nullptr) { + if (frontend.dohFrontend != nullptr) { return std::string("openssl"); } return std::string(); }); - luaCtx.registerFunction("getEffectiveTLSProvider", [](const ClientState& fe) { + luaCtx.registerFunction("getEffectiveTLSProvider", [](const ClientState& frontend) { setLuaNoSideEffect(); - if (fe.tlsFrontend != nullptr) { - return fe.tlsFrontend->getEffectiveProvider(); + if (frontend.tlsFrontend != nullptr) { + return frontend.tlsFrontend->getEffectiveProvider(); } - else if (fe.dohFrontend != nullptr) { + if (frontend.dohFrontend != nullptr) { return std::string("openssl"); } return std::string(); @@ -504,12 +505,13 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) BPFFilter::MapFormat format = BPFFilter::MapFormat::Legacy; bool external = false; - if (opts.count("external")) { + if (opts.count("external") != 0) { const auto& tmp = opts.at("external"); if (tmp.type() != typeid(bool)) { throw std::runtime_error("params is invalid"); } - if ((external = boost::get(tmp))) { + external = boost::get(tmp); + if (external) { format = BPFFilter::MapFormat::WithActions; } } @@ -517,36 +519,34 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) return std::make_shared(mapsConfig, format, external); }); - luaCtx.registerFunction::*)(const ComboAddress& ca, boost::optional action)>("block", [](std::shared_ptr bpf, const ComboAddress& ca, boost::optional action) { + luaCtx.registerFunction::*)(const ComboAddress& addr, boost::optional action)>("block", [](const std::shared_ptr& bpf, const ComboAddress& addr, boost::optional action) { if (bpf) { if (!action) { - return bpf->block(ca, BPFFilter::MatchAction::Drop); + return bpf->block(addr, BPFFilter::MatchAction::Drop); } - else { - BPFFilter::MatchAction match; - - switch (*action) { - case 0: - match = BPFFilter::MatchAction::Pass; - break; - case 1: - match = BPFFilter::MatchAction::Drop; - break; - case 2: - match = BPFFilter::MatchAction::Truncate; - break; - default: - throw std::runtime_error("Unsupported action for BPFFilter::block"); - } - return bpf->block(ca, match); + BPFFilter::MatchAction match{}; + + switch (*action) { + case 0: + match = BPFFilter::MatchAction::Pass; + break; + case 1: + match = BPFFilter::MatchAction::Drop; + break; + case 2: + match = BPFFilter::MatchAction::Truncate; + break; + default: + throw std::runtime_error("Unsupported action for BPFFilter::block"); } + return bpf->block(addr, match); } }); - luaCtx.registerFunction::*)(const string& range, uint32_t action, boost::optional force)>("addRangeRule", [](std::shared_ptr bpf, const string& range, uint32_t action, boost::optional force) { + luaCtx.registerFunction::*)(const string& range, uint32_t action, boost::optional force)>("addRangeRule", [](const std::shared_ptr& bpf, const string& range, uint32_t action, boost::optional force) { if (!bpf) { return; } - BPFFilter::MatchAction match; + BPFFilter::MatchAction match{}; switch (action) { case 0: match = BPFFilter::MatchAction::Pass; @@ -562,44 +562,42 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } return bpf->addRangeRule(Netmask(range), force ? *force : false, match); }); - luaCtx.registerFunction::*)(const DNSName& qname, boost::optional qtype, boost::optional action)>("blockQName", [](std::shared_ptr bpf, const DNSName& qname, boost::optional qtype, boost::optional action) { + luaCtx.registerFunction::*)(const DNSName& qname, boost::optional qtype, boost::optional action)>("blockQName", [](const std::shared_ptr& bpf, const DNSName& qname, boost::optional qtype, boost::optional action) { if (bpf) { if (!action) { return bpf->block(qname, BPFFilter::MatchAction::Drop, qtype ? *qtype : 255); } - else { - BPFFilter::MatchAction match; - - switch (*action) { - case 0: - match = BPFFilter::MatchAction::Pass; - break; - case 1: - match = BPFFilter::MatchAction::Drop; - break; - case 2: - match = BPFFilter::MatchAction::Truncate; - break; - default: - throw std::runtime_error("Unsupported action for BPFFilter::blockQName"); - } - return bpf->block(qname, match, qtype ? *qtype : 255); + BPFFilter::MatchAction match{}; + + switch (*action) { + case 0: + match = BPFFilter::MatchAction::Pass; + break; + case 1: + match = BPFFilter::MatchAction::Drop; + break; + case 2: + match = BPFFilter::MatchAction::Truncate; + break; + default: + throw std::runtime_error("Unsupported action for BPFFilter::blockQName"); } + return bpf->block(qname, match, qtype ? *qtype : 255); } }); - luaCtx.registerFunction::*)(const ComboAddress& ca)>("unblock", [](std::shared_ptr bpf, const ComboAddress& ca) { + luaCtx.registerFunction::*)(const ComboAddress& addr)>("unblock", [](const std::shared_ptr& bpf, const ComboAddress& addr) { if (bpf) { - return bpf->unblock(ca); + return bpf->unblock(addr); } }); - luaCtx.registerFunction::*)(const string& range)>("rmRangeRule", [](std::shared_ptr bpf, const string& range) { + luaCtx.registerFunction::*)(const string& range)>("rmRangeRule", [](const std::shared_ptr& bpf, const string& range) { if (!bpf) { return; } bpf->rmRangeRule(Netmask(range)); }); - luaCtx.registerFunction::*)() const>("lsRangeRule", [](const std::shared_ptr bpf) { + luaCtx.registerFunction::*)() const>("lsRangeRule", [](const std::shared_ptr& bpf) { setLuaNoSideEffect(); std::string res; if (!bpf) { @@ -616,13 +614,13 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } return res; }); - luaCtx.registerFunction::*)(const DNSName& qname, boost::optional qtype)>("unblockQName", [](std::shared_ptr bpf, const DNSName& qname, boost::optional qtype) { + luaCtx.registerFunction::*)(const DNSName& qname, boost::optional qtype)>("unblockQName", [](const std::shared_ptr& bpf, const DNSName& qname, boost::optional qtype) { if (bpf) { return bpf->unblock(qname, qtype ? *qtype : 255); } }); - luaCtx.registerFunction::*)() const>("getStats", [](const std::shared_ptr bpf) { + luaCtx.registerFunction::*)() const>("getStats", [](const std::shared_ptr& bpf) { setLuaNoSideEffect(); std::string res; if (bpf) { @@ -652,7 +650,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) return res; }); - luaCtx.registerFunction::*)()>("attachToAllBinds", [](std::shared_ptr bpf) { + luaCtx.registerFunction::*)()>("attachToAllBinds", [](std::shared_ptr& bpf) { std::string res; if (!g_configurationDone) { throw std::runtime_error("attachToAllBinds() cannot be used at configuration time!"); @@ -665,31 +663,31 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } }); - luaCtx.writeFunction("newDynBPFFilter", [client](std::shared_ptr bpf) { + luaCtx.writeFunction("newDynBPFFilter", [client](std::shared_ptr& bpf) { if (client) { return std::shared_ptr(nullptr); } return std::make_shared(bpf); }); - luaCtx.registerFunction::*)(const ComboAddress& addr, boost::optional seconds)>("block", [](std::shared_ptr dbpf, const ComboAddress& addr, boost::optional seconds) { + luaCtx.registerFunction::*)(const ComboAddress& addr, boost::optional seconds)>("block", [](const std::shared_ptr& dbpf, const ComboAddress& addr, boost::optional seconds) { if (dbpf) { - struct timespec until; + timespec until{}; clock_gettime(CLOCK_MONOTONIC, &until); until.tv_sec += seconds ? *seconds : 10; dbpf->block(addr, until); } }); - luaCtx.registerFunction::*)()>("purgeExpired", [](std::shared_ptr dbpf) { + luaCtx.registerFunction::*)()>("purgeExpired", [](const std::shared_ptr& dbpf) { if (dbpf) { - struct timespec now; + timespec now{}; clock_gettime(CLOCK_MONOTONIC, &now); dbpf->purgeExpired(now); } }); - luaCtx.registerFunction::*)(LuaTypeOrArrayOf)>("excludeRange", [](std::shared_ptr dbpf, LuaTypeOrArrayOf ranges) { + luaCtx.registerFunction::*)(LuaTypeOrArrayOf)>("excludeRange", [](const std::shared_ptr& dbpf, LuaTypeOrArrayOf ranges) { if (!dbpf) { return; } @@ -704,7 +702,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } }); - luaCtx.registerFunction::*)(LuaTypeOrArrayOf)>("includeRange", [](std::shared_ptr dbpf, LuaTypeOrArrayOf ranges) { + luaCtx.registerFunction::*)(LuaTypeOrArrayOf)>("includeRange", [](const std::shared_ptr& dbpf, LuaTypeOrArrayOf ranges) { if (!dbpf) { return; } @@ -728,7 +726,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) if (client) { return std::shared_ptr(nullptr); } - uint32_t queue_id; + uint32_t queue_id{}; uint32_t frameNums{65536}; std::string ifName; std::string path("/sys/fs/bpf/dnsdist/xskmap"); @@ -767,8 +765,9 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) }); luaCtx.registerFunction (EDNSOptionView::*)() const>("getValues", [](const EDNSOptionView& option) { std::vector values; + values.reserve(values.size()); for (const auto& value : option.values) { - values.push_back(std::string(value.content, value.size)); + values.emplace_back(value.content, value.size); } return values; }); @@ -802,7 +801,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) auto itfs = getListOfNetworkInterfaces(); int counter = 1; for (const auto& itf : itfs) { - result.push_back({counter++, itf}); + result.emplace_back(counter++, itf); } return result; }); @@ -812,7 +811,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) auto addrs = getListOfAddressesOfNetworkInterface(itf); int counter = 1; for (const auto& addr : addrs) { - result.push_back({counter++, addr.toString()}); + result.emplace_back(counter++, addr.toString()); } return result; }); @@ -822,17 +821,17 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) auto addrs = getListOfRangesOfNetworkInterface(itf); int counter = 1; for (const auto& addr : addrs) { - result.push_back({counter++, addr.toString()}); + result.emplace_back(counter++, addr.toString()); } return result; }); - luaCtx.writeFunction("getMACAddress", [](const std::string& ip) { - return getMACAddress(ComboAddress(ip)); + luaCtx.writeFunction("getMACAddress", [](const std::string& addr) { + return getMACAddress(ComboAddress(addr)); }); luaCtx.writeFunction("getCurrentTime", []() -> timespec { - timespec now; + timespec now{}; if (gettime(&now, true) < 0) { unixDie("Getting timestamp"); }