llarp/dtls/linklayer.hpp

Namespaces

Name
llarp
[crypto.hpp]
llarp::dtls

Classes

Name
struct llarp::dtls::LinkLayer

Source code

#pragma once

#include <llarp/link/server.hpp>
#include <llarp/config/key_manager.hpp>
#include <llarp/ev/ev.hpp>
#include "session.hpp"
#include <memory>

namespace llarp::dtls
{
  struct LinkLayer final : public ILinkLayer
  {
    LinkLayer(
        std::shared_ptr<KeyManager> keyManager,
        std::shared_ptr<EventLoop> loop,
        GetRCFunc getrc,
        LinkMessageHandler h,
        SignBufferFunc sign,
        BeforeConnectFunc_t before,
        SessionEstablishedHandler est,
        SessionRenegotiateHandler reneg,
        TimeoutHandler timeout,
        SessionClosedHandler closed,
        PumpDoneHandler pumpDone,
        WorkerFunc_t work,
        bool permitInbound);

    std::shared_ptr<ILinkSession>
    NewOutboundSession(const RouterContact& rc, const AddressInfo& ai) override;

    std::string_view
    Name() const override;

    uint16_t
    Rank() const override;

    void
    RecvFrom(const SockAddr& from, ILinkSession::Packet_t pkt) override;

   private:
    bool m_Inbound;

    std::shared_ptr<Session>
    SessionForAddr(const SockAddr& addr) const;
  };

  using LinkLayer_ptr = std::shared_ptr<LinkLayer>;
}  // namespace llarp::dtls

Updated on 2026-08-23 at 15:46:34 +0000