llarp::dtls::LinkLayer

Inherits from llarp::ILinkLayer

Public Functions

Name
LinkLayer(std::shared_ptr< KeyManager > keyManager, std::shared_ptr< EventLoop > ev, GetRCFunc getrc, LinkMessageHandler h, SignBufferFunc sign, BeforeConnectFunc_t before, SessionEstablishedHandler est, SessionRenegotiateHandler reneg, TimeoutHandler timeout, SessionClosedHandler closed, PumpDoneHandler pumpDone, WorkerFunc_t dowork, bool permitInbound)
virtual std::shared_ptr< ILinkSession > NewOutboundSession(const RouterContact & rc, const AddressInfo & ai) override
virtual std::string_view Name() const override
virtual uint16_t Rank() const override
virtual void RecvFrom(const SockAddr & from, ILinkSession::Packet_t pkt) override

Additional inherited members

Protected Types inherited from llarp::ILinkLayer

Name
using util::NullLock Lock_t
using util::NullMutex Mutex_t
using std::unordered_multimap< RouterID, std::shared_ptr< ILinkSession > > AuthedLinks
using std::unordered_map< SockAddr, std::shared_ptr< ILinkSession > > Pending

Public Functions inherited from llarp::ILinkLayer

Name
ILinkLayer(std::shared_ptr< KeyManager > keyManager, EventLoop_ptr evloop, GetRCFunc getrc, LinkMessageHandler handler, SignBufferFunc signFunc, BeforeConnectFunc_t before, SessionEstablishedHandler sessionEstablish, SessionRenegotiateHandler renegotiate, TimeoutHandler timeout, SessionClosedHandler closed, PumpDoneHandler pumpDone, WorkerFunc_t doWork)
virtual ~ILinkLayer() =default
llarp_time_t Now() const
get current time via event loop
bool HasSessionTo(const RouterID & pk)
void ForEachSession(std::function< void(const ILinkSession *)> visit, bool randomize =false) const
void ForEachSession(std::function< void(ILinkSession *)> visit)
void UnmapAddr(const SockAddr & addr)
void SendTo_LL(const SockAddr & to, const llarp_buffer_t & pkt)
void Bind(AbstractRouter * router, SockAddr addr)
std::shared_ptr< ILinkSession > FindSessionByPubkey(RouterID pk)
fetch a session by the identity pubkey it claims
virtual void Pump()
bool PickAddress(const RouterContact & rc, AddressInfo & picked) const
bool TryEstablishTo(RouterContact rc)
bool Start()
virtual void Stop()
void CloseSessionTo(const RouterID & remote)
void KeepAliveSessionTo(const RouterID & remote)
virtual bool SendTo(const RouterID & remote, const llarp_buffer_t & buf, ILinkSession::CompletionHandler completed, uint16_t priority)
virtual bool GetOurAddressInfo(AddressInfo & addr) const
bool VisitSessionByPubkey(const RouterID & pk, std::function< bool(ILinkSession *)> visit)
const byte_t * TransportPubKey() const
const SecretKey & RouterEncryptionSecret() const
const SecretKey & TransportSecretKey() const
bool IsCompatable(const llarp::RouterContact & other) const
bool MapAddr(const RouterID & pk, ILinkSession * s)
void Tick(llarp_time_t now)
bool operator<(const ILinkLayer & other) const
size_t NumberOfPendingSessions() const
called by link session to remove a pending session who is timed out
std::optional< int > GetUDPFD() const
AbstractRouter * Router() const
const SockAddr & LocalSocketAddr() const
Get the local sock addr we are bound on.
void TriggerPump()

Protected Functions inherited from llarp::ILinkLayer

Name
bool PutSession(const std::shared_ptr< ILinkSession > & s)
DECLARE_LOCK(Mutex_t , m_AuthedLinksMutex , ACQUIRED_BEFORE(m_PendingMutex) )
AuthedLinks m_AuthedLinks GUARDED_BY(m_AuthedLinksMutex )
DECLARE_LOCK(Mutex_t , m_PendingMutex , ACQUIRED_AFTER(m_AuthedLinksMutex) )
Pending m_Pending GUARDED_BY(m_PendingMutex )

Public Attributes inherited from llarp::ILinkLayer

Name
LinkMessageHandler HandleMessage
TimeoutHandler HandleTimeout
SignBufferFunc Sign
GetRCFunc GetOurRC
BeforeConnectFunc_t BeforeConnect
SessionEstablishedHandler SessionEstablished
SessionClosedHandler SessionClosed
SessionRenegotiateHandler SessionRenegotiate
PumpDoneHandler PumpDone
std::shared_ptr< KeyManager > keyManager
WorkerFunc_t QueueWork

Protected Attributes inherited from llarp::ILinkLayer

Name
AbstractRouter * m_Router
SockAddr m_ourAddr
std::shared_ptr< llarp::UDPHandle > m_udp
SecretKey m_SecretKey
std::unordered_map< SockAddr, RouterID > m_AuthedAddrs
std::unordered_map< SockAddr, llarp_time_t > m_RecentlyClosed

Public Functions Documentation

function LinkLayer

LinkLayer(
    std::shared_ptr< KeyManager > keyManager,
    std::shared_ptr< EventLoop > ev,
    GetRCFunc getrc,
    LinkMessageHandler h,
    SignBufferFunc sign,
    BeforeConnectFunc_t before,
    SessionEstablishedHandler est,
    SessionRenegotiateHandler reneg,
    TimeoutHandler timeout,
    SessionClosedHandler closed,
    PumpDoneHandler pumpDone,
    WorkerFunc_t dowork,
    bool permitInbound
)

function NewOutboundSession

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

Reimplements: llarp::ILinkLayer::NewOutboundSession

function Name

virtual std::string_view Name() const override

Reimplements: llarp::ILinkLayer::Name

function Rank

virtual uint16_t Rank() const override

Reimplements: llarp::ILinkLayer::Rank

function RecvFrom

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

Reimplements: llarp::ILinkLayer::RecvFrom


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