setSuffixDynamicRules(std::move(emptySMT));
}
+LockGuarded<std::vector<std::shared_ptr<DynBlockRulesGroup>>> s_registeredDynamicBlockGroups;
+
+void registerGroup(std::shared_ptr<DynBlockRulesGroup>& group)
+{
+ s_registeredDynamicBlockGroups.lock()->push_back(group);
+}
+
+void runRegisteredGroups(LuaContext& luaCtx)
+{
+ // only used to make sure we hold the Lua context lock
+ (void)luaCtx;
+ timespec now{};
+ gettime(&now);
+ for (auto& group : *s_registeredDynamicBlockGroups.lock()) {
+ group->apply(now);
+ }
+}
+
}
#endif /* DISABLE_DYNBLOCKS */
#include "dolog.hh"
#include "dnsdist-rings.hh"
+#include "gettime.hh"
#include "statnode.hh"
extern "C"
void setSuffixDynamicRules(SuffixDynamicRules&& rules);
void clearClientAddressDynamicRules();
void clearSuffixDynamicRules();
+
+void registerGroup(std::shared_ptr<DynBlockRulesGroup>& group);
+void runRegisteredGroups(LuaContext& luaCtx);
}
#endif /* DISABLE_DYNBLOCKS */
(*maintenanceCallback)();
}
dnsdist::lua::hooks::runMaintenanceHooks(*lua);
+#if !defined(DISABLE_DYNBLOCKS)
+ dnsdist::DynamicBlocks::runRegisteredGroups(*lua);
+#endif /* DISABLE_DYNBLOCKS */
secondsToWaitLog = 0;
}
catch (const std::exception& e) {