llarp/dns/platform.hpp

Namespaces

Name
llarp
[crypto.hpp]
llarp::dns

Classes

Name
class llarp::dns::I_Platform
sets dns settings in a platform dependant way
class llarp::dns::Null_Platform
a dns platform does silently does nothing, successfully
class llarp::dns::Multi_Platform
a collection of dns platforms that are tried in order when setting dns

Source code

#pragma once
#include <string>
#include <memory>
#include <llarp/net/sock_addr.hpp>
#include <llarp/util/logging.hpp>
#include <stdexcept>

#include <net/if.h>

namespace llarp::dns
{
  class I_Platform
  {
   public:
    virtual ~I_Platform() = default;

    virtual void
    set_resolver(unsigned int if_index, llarp::SockAddr dns, bool global) = 0;
  };

  class Null_Platform : public I_Platform
  {
   public:
    ~Null_Platform() override = default;
    void
    set_resolver(unsigned int, llarp::SockAddr, bool) override
    {}
  };

  class Multi_Platform : public I_Platform
  {
    std::vector<std::unique_ptr<I_Platform>> m_Impls;

   public:
    ~Multi_Platform() override = default;
    void
    add_impl(std::unique_ptr<I_Platform> impl);

    void
    set_resolver(unsigned int if_index, llarp::SockAddr dns, bool global) override;
  };
}  // namespace llarp::dns

Updated on 2026-01-10 at 22:49:45 +0000