// !! This file has been generated by dnsdist-rules-generator.py, do not edit by hand!!
std::shared_ptr<DNSAction> getAllowAction()
{
  return std::shared_ptr<DNSAction>(new AllowAction());
}
std::shared_ptr<DNSAction> getDelayAction(uint32_t msec)
{
  return std::shared_ptr<DNSAction>(new DelayAction(msec));
}
std::shared_ptr<DNSAction> getDropAction()
{
  return std::shared_ptr<DNSAction>(new DropAction());
}
std::shared_ptr<DNSAction> getLogAction(const std::string& file_name, bool binary, bool append, bool buffered, bool verbose_only, bool include_timestamp)
{
  return std::shared_ptr<DNSAction>(new LogAction(file_name, binary, append, buffered, verbose_only, include_timestamp));
}
std::shared_ptr<DNSAction> getLuaFFIPerThreadAction(const std::string& code)
{
  return std::shared_ptr<DNSAction>(new LuaFFIPerThreadAction(code));
}
std::shared_ptr<DNSAction> getNoneAction()
{
  return std::shared_ptr<DNSAction>(new NoneAction());
}
std::shared_ptr<DNSAction> getPoolAction(const std::string& pool_name, bool stop_processing)
{
  return std::shared_ptr<DNSAction>(new PoolAction(pool_name, stop_processing));
}
std::shared_ptr<DNSAction> getQPSAction(uint32_t limit)
{
  return std::shared_ptr<DNSAction>(new QPSAction(limit));
}
std::shared_ptr<DNSAction> getQPSPoolAction(uint32_t limit, const std::string& pool_name, bool stop_processing)
{
  return std::shared_ptr<DNSAction>(new QPSPoolAction(limit, pool_name, stop_processing));
}
std::shared_ptr<DNSAction> getSetAdditionalProxyProtocolValueAction(uint8_t proxy_type, const std::string& value)
{
  return std::shared_ptr<DNSAction>(new SetAdditionalProxyProtocolValueAction(proxy_type, value));
}
std::shared_ptr<DNSAction> getSetDisableECSAction()
{
  return std::shared_ptr<DNSAction>(new SetDisableECSAction());
}
std::shared_ptr<DNSAction> getSetDisableValidationAction()
{
  return std::shared_ptr<DNSAction>(new SetDisableValidationAction());
}
std::shared_ptr<DNSAction> getSetECSOverrideAction(bool override_existing)
{
  return std::shared_ptr<DNSAction>(new SetECSOverrideAction(override_existing));
}
std::shared_ptr<DNSAction> getSetECSPrefixLengthAction(uint16_t ipv4, uint16_t ipv6)
{
  return std::shared_ptr<DNSAction>(new SetECSPrefixLengthAction(ipv4, ipv6));
}
std::shared_ptr<DNSAction> getSetEDNSOptionAction(uint32_t code, const std::string& data)
{
  return std::shared_ptr<DNSAction>(new SetEDNSOptionAction(code, data));
}
std::shared_ptr<DNSAction> getSetExtendedDNSErrorAction(uint16_t info_code, const std::string& extra_text, std::optional<bool> clear_existing_entries)
{
  return std::shared_ptr<DNSAction>(new SetExtendedDNSErrorAction(info_code, extra_text, clear_existing_entries ? *clear_existing_entries : true));
}
std::shared_ptr<DNSAction> getSetMacAddrAction(uint32_t code)
{
  return std::shared_ptr<DNSAction>(new SetMacAddrAction(code));
}
std::shared_ptr<DNSAction> getSetNoRecurseAction()
{
  return std::shared_ptr<DNSAction>(new SetNoRecurseAction());
}
std::shared_ptr<DNSAction> getSetSkipCacheAction()
{
  return std::shared_ptr<DNSAction>(new SetSkipCacheAction());
}
std::shared_ptr<DNSAction> getSetTagAction(const std::string& tag, const std::string& value)
{
  return std::shared_ptr<DNSAction>(new SetTagAction(tag, value));
}
std::shared_ptr<DNSAction> getSetTempFailureCacheTTLAction(uint32_t ttl)
{
  return std::shared_ptr<DNSAction>(new SetTempFailureCacheTTLAction(ttl));
}
std::shared_ptr<DNSAction> getSNMPTrapAction(const std::string& reason)
{
  return std::shared_ptr<DNSAction>(new SNMPTrapAction(reason));
}
std::shared_ptr<DNSAction> getTCAction()
{
  return std::shared_ptr<DNSAction>(new TCAction());
}
