// !! This file has been generated by dnsdist-settings-generator.py, do not edit by hand!!
std::shared_ptr<DNSActionWrapper> getAllowAction(const AllowActionConfiguration& config)
{
  auto action = dnsdist::actions::getAllowAction();
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getDelayAction(const DelayActionConfiguration& config)
{
  auto action = dnsdist::actions::getDelayAction(config.msec);
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getDropAction(const DropActionConfiguration& config)
{
  auto action = dnsdist::actions::getDropAction();
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetEDNSOptionAction(const SetEDNSOptionActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetEDNSOptionAction(config.code, std::string(config.data));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getERCodeAction(const ERCodeActionConfiguration& config)
{
  auto action = dnsdist::actions::getERCodeAction(dnsdist::configuration::yaml::strToRCode("config", "rcode", config.rcode), convertResponseConfig(config.vars));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getHTTPStatusAction(const HTTPStatusActionConfiguration& config)
{
  auto action = dnsdist::actions::getHTTPStatusAction(config.status, PacketBuffer(config.body.data(), config.body.data() + config.body.size()), std::string(config.content_type), convertResponseConfig(config.vars));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getLogAction(const LogActionConfiguration& config)
{
  auto action = dnsdist::actions::getLogAction(std::string(config.file_name), config.binary, config.append, config.buffered, config.verbose_only, config.include_timestamp);
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getLuaFFIPerThreadAction(const LuaFFIPerThreadActionConfiguration& config)
{
  auto action = dnsdist::actions::getLuaFFIPerThreadAction(std::string(config.code));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getNegativeAndSOAAction(const NegativeAndSOAActionConfiguration& config)
{
  auto action = dnsdist::actions::getNegativeAndSOAAction(config.nxd, DNSName(std::string(config.zone)), config.ttl, DNSName(std::string(config.mname)), DNSName(std::string(config.rname)), convertSOAParams(config.soa_parameters), config.soa_in_authority, convertResponseConfig(config.vars));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getNoneAction(const NoneActionConfiguration& config)
{
  auto action = dnsdist::actions::getNoneAction();
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getPoolAction(const PoolActionConfiguration& config)
{
  auto action = dnsdist::actions::getPoolAction(std::string(config.pool_name), config.stop_processing);
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getQPSAction(const QPSActionConfiguration& config)
{
  auto action = dnsdist::actions::getQPSAction(config.limit);
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getQPSPoolAction(const QPSPoolActionConfiguration& config)
{
  auto action = dnsdist::actions::getQPSPoolAction(config.limit, std::string(config.pool_name), config.stop_processing);
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getRCodeAction(const RCodeActionConfiguration& config)
{
  auto action = dnsdist::actions::getRCodeAction(dnsdist::configuration::yaml::strToRCode("config", "rcode", config.rcode), convertResponseConfig(config.vars));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetAdditionalProxyProtocolValueAction(const SetAdditionalProxyProtocolValueActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetAdditionalProxyProtocolValueAction(config.proxy_type, std::string(config.value));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetDisableECSAction(const SetDisableECSActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetDisableECSAction();
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetDisableValidationAction(const SetDisableValidationActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetDisableValidationAction();
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetECSAction(const SetECSActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetECSAction(std::string(config.ipv4), std::string(config.ipv6));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetECSOverrideAction(const SetECSOverrideActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetECSOverrideAction(config.override_existing);
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetECSPrefixLengthAction(const SetECSPrefixLengthActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetECSPrefixLengthAction(config.ipv4, config.ipv6);
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetExtendedDNSErrorAction(const SetExtendedDNSErrorActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetExtendedDNSErrorAction(config.info_code, std::string(config.extra_text));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetMacAddrAction(const SetMacAddrActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetMacAddrAction(config.code);
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetMaxReturnedTTLAction(const SetMaxReturnedTTLActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetMaxReturnedTTLAction(config.max);
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetNoRecurseAction(const SetNoRecurseActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetNoRecurseAction();
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetSkipCacheAction(const SetSkipCacheActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetSkipCacheAction();
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetTagAction(const SetTagActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetTagAction(std::string(config.tag), std::string(config.value));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSetTempFailureCacheTTLAction(const SetTempFailureCacheTTLActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetTempFailureCacheTTLAction(config.ttl);
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSNMPTrapAction(const SNMPTrapActionConfiguration& config)
{
  auto action = dnsdist::actions::getSNMPTrapAction(std::string(config.reason));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getSpoofSVCAction(const SpoofSVCActionConfiguration& config)
{
  auto action = dnsdist::actions::getSpoofSVCAction(convertSVCRecordParameters(config.parameters), convertResponseConfig(config.vars));
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getTCAction(const TCActionConfiguration& config)
{
  auto action = dnsdist::actions::getTCAction();
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSActionWrapper> getTeeAction(const TeeActionConfiguration& config)
{
  auto action = dnsdist::actions::getTeeAction(ComboAddress(std::string(config.rca)), ComboAddress(std::string(config.lca)), config.add_ecs, config.add_proxy_protocol);
  return newDNSActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getAllowResponseAction(const AllowResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getAllowResponseAction();
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getDelayResponseAction(const DelayResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getDelayResponseAction(config.msec);
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getDropResponseAction(const DropResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getDropResponseAction();
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getLogResponseAction(const LogResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getLogResponseAction(std::string(config.file_name), config.append, config.buffered, config.verbose_only, config.include_timestamp);
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getLuaFFIPerThreadResponseAction(const LuaFFIPerThreadResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getLuaFFIPerThreadResponseAction(std::string(config.code));
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getSetEDNSOptionResponseAction(const SetEDNSOptionResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetEDNSOptionResponseAction(config.code, std::string(config.data));
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getSetExtendedDNSErrorResponseAction(const SetExtendedDNSErrorResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetExtendedDNSErrorResponseAction(config.info_code, std::string(config.extra_text));
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getSetMaxReturnedTTLResponseAction(const SetMaxReturnedTTLResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetMaxReturnedTTLResponseAction(config.max);
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getSetReducedTTLResponseAction(const SetReducedTTLResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetReducedTTLResponseAction(config.percentage);
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getSetSkipCacheResponseAction(const SetSkipCacheResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetSkipCacheResponseAction();
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getSetTagResponseAction(const SetTagResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getSetTagResponseAction(std::string(config.tag), std::string(config.value));
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getSNMPTrapResponseAction(const SNMPTrapResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getSNMPTrapResponseAction(std::string(config.reason));
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
std::shared_ptr<DNSResponseActionWrapper> getTCResponseAction(const TCResponseActionConfiguration& config)
{
  auto action = dnsdist::actions::getTCResponseAction();
  return newDNSResponseActionWrapper(std::move(action), config.name);
}
