llarp::path::Path
A path we made.
#include <path.hpp>
Inherits from llarp::path::IHopHandler, llarp::routing::IMessageHandler, std::enable_shared_from_this< Path >
Public Classes
| Name | |
|---|---|
| struct | Endpoint_Equals comparision for equal endpoints |
| struct | Endpoint_Hash hash for std::shared_ptr |
| struct | Hash |
| struct | Ptr_Hash hash for std::shared_ptr |
Public Types
| Name | |
|---|---|
| using std::function< void(Path_ptr)> | BuildResultHookFunc |
| using std::function< bool(Path_ptr, llarp_time_t)> | CheckForDeadFunc |
| using std::function< bool(Path_ptr, const PathID_t &, uint64_t)> | DropHandlerFunc |
| using std::vector< PathHopConfig > | HopList |
| using std::function< bool(Path_ptr, const service::ProtocolFrame &)> | DataHandlerFunc |
| using std::function< bool(Path_ptr)> | ExitUpdatedFunc |
| using std::function< bool(Path_ptr)> | ExitClosedFunc |
| using std::function< bool(Path_ptr, const llarp_buffer_t &, uint64_t, service::ProtocolType)> | ExitTrafficHandlerFunc |
| using std::function< bool(Path_ptr, llarp_time_t)> | ObtainedExitHandler (path, backoff) backoff is 0 on success |
| using std::unordered_set< Path_ptr, Endpoint_Hash, Endpoint_Equals > | UniqueEndpointSet_t unordered set of paths with unique endpoints |
Public Functions
| Name | |
|---|---|
| Path(const std::vector< RouterContact > & routers, std::weak_ptr< PathSet > parent, PathRole startingRoles, std::string shortName) | |
| PathRole | Role() const |
| bool | operator<(const Path & other) const |
| void | MarkActive(llarp_time_t now) |
| bool | SupportsAllRoles(PathRole roles) const return true if ALL of the specified roles are supported |
| bool | SupportsAnyRoles(PathRole roles) const return true if ANY of the specified roles are supported |
| void | ClearRoles(PathRole roles) clear role bits |
| PathStatus | Status() const |
| virtual bool | HandleUpstream(const llarp_buffer_t & X, const TunnelNonce & Y, AbstractRouter * ) override |
| virtual bool | HandleDownstream(const llarp_buffer_t & X, const TunnelNonce & Y, AbstractRouter * ) override |
| const std::string & | ShortName() const |
| std::string | HopsString() const |
| virtual llarp_time_t | LastRemoteActivityAt() const override return timestamp last remote activity happened at |
| virtual bool | HandleLRSM(uint64_t status, std::array< EncryptedFrame, 8 > & frames, AbstractRouter * r) override |
| void | SetBuildResultHook(BuildResultHookFunc func) |
| void | SetExitTrafficHandler(ExitTrafficHandlerFunc handler) |
| void | SetCloseExitFunc(ExitClosedFunc handler) |
| void | SetUpdateExitFunc(ExitUpdatedFunc handler) |
| void | SetDataHandler(DataHandlerFunc func) |
| void | SetDropHandler(DropHandlerFunc func) |
| void | SetDeadChecker(CheckForDeadFunc func) |
| void | EnterState(PathStatus st, llarp_time_t now) |
| llarp_time_t | ExpireTime() const |
| virtual bool | ExpiresSoon(llarp_time_t now, llarp_time_t dlt =5s) const override |
| virtual bool | Expired(llarp_time_t now) const override |
| void | Rebuild() build a new path on the same set of hops as us regenerates keys |
| void | Tick(llarp_time_t now, AbstractRouter * r) |
| virtual bool | SendRoutingMessage(const routing::IMessage & msg, AbstractRouter * r) override send routing message and increment sequence number |
| virtual bool | HandleObtainExitMessage(const routing::ObtainExitMessage & msg, AbstractRouter * r) override |
| virtual bool | HandleUpdateExitVerifyMessage(const routing::UpdateExitVerifyMessage & msg, AbstractRouter * r) override |
| virtual bool | HandleTransferTrafficMessage(const routing::TransferTrafficMessage & msg, AbstractRouter * r) override |
| virtual bool | HandleUpdateExitMessage(const routing::UpdateExitMessage & msg, AbstractRouter * r) override |
| virtual bool | HandleCloseExitMessage(const routing::CloseExitMessage & msg, AbstractRouter * r) override |
| virtual bool | HandleGrantExitMessage(const routing::GrantExitMessage & msg, AbstractRouter * r) override |
| virtual bool | HandleRejectExitMessage(const routing::RejectExitMessage & msg, AbstractRouter * r) override |
| virtual bool | HandleDataDiscardMessage(const routing::DataDiscardMessage & msg, AbstractRouter * r) override |
| bool | HandlePathConfirmMessage(AbstractRouter * r) |
| virtual bool | HandlePathConfirmMessage(const routing::PathConfirmMessage & msg, AbstractRouter * r) override |
| virtual bool | HandlePathLatencyMessage(const routing::PathLatencyMessage & msg, AbstractRouter * r) override |
| virtual bool | HandlePathTransferMessage(const routing::PathTransferMessage & msg, AbstractRouter * r) override |
| virtual bool | HandleHiddenServiceFrame(const service::ProtocolFrame & frame) override |
| bool | HandleGotIntroMessage(const dht::GotIntroMessage & msg) |
| virtual bool | HandleDHTMessage(const dht::IMessage & msg, AbstractRouter * r) override |
| bool | HandleRoutingMessage(const llarp_buffer_t & buf, AbstractRouter * r) |
| bool | IsReady() const |
| PathID_t | TXID() const |
| RouterID | Endpoint() const |
| PubKey | EndpointPubKey() const |
| bool | IsEndpoint(const RouterID & router, const PathID_t & path) const |
| virtual PathID_t | RXID() const override |
| RouterID | Upstream() const |
| std::string | Name() const |
| void | AddObtainExitHandler(ObtainedExitHandler handler) |
| bool | SendExitRequest(const routing::ObtainExitMessage & msg, AbstractRouter * r) |
| bool | SendExitClose(const routing::CloseExitMessage & msg, AbstractRouter * r) |
| virtual void | FlushUpstream(AbstractRouter * r) override |
| virtual void | FlushDownstream(AbstractRouter * r) override |
Protected Functions
| Name | |
|---|---|
| virtual void | UpstreamWork(TrafficQueue_t queue, AbstractRouter * r) override |
| virtual void | DownstreamWork(TrafficQueue_t queue, AbstractRouter * r) override |
| virtual void | HandleAllUpstream(std::vector< RelayUpstreamMessage > msgs, AbstractRouter * r) override |
| virtual void | HandleAllDownstream(std::vector< RelayDownstreamMessage > msgs, AbstractRouter * r) override |
Public Attributes
| Name | |
|---|---|
| HopList | hops |
| std::weak_ptr< PathSet > | m_PathSet |
| service::Introduction | intro |
| llarp_time_t | buildStarted |
Additional inherited members
Public Types inherited from llarp::path::IHopHandler
| Name | |
|---|---|
| using std::pair< std::vector< byte_t >, TunnelNonce > | TrafficEvent_t |
| using std::list< TrafficEvent_t > | TrafficQueue_t |
Public Functions inherited from llarp::path::IHopHandler
| Name | |
|---|---|
| virtual | ~IHopHandler() =default |
| void | DecayFilters(llarp_time_t now) |
| uint64_t | NextSeqNo() |
Protected Attributes inherited from llarp::path::IHopHandler
| Name | |
|---|---|
| uint64_t | m_SequenceNum |
| TrafficQueue_t | m_UpstreamQueue |
| TrafficQueue_t | m_DownstreamQueue |
| util::DecayingHashSet< TunnelNonce > | m_UpstreamReplayFilter |
| util::DecayingHashSet< TunnelNonce > | m_DownstreamReplayFilter |
Public Types Documentation
using BuildResultHookFunc
using llarp::path::Path::BuildResultHookFunc = std::function<void(Path_ptr)>;
using CheckForDeadFunc
using llarp::path::Path::CheckForDeadFunc = std::function<bool(Path_ptr, llarp_time_t)>;
using DropHandlerFunc
using llarp::path::Path::DropHandlerFunc = std::function<bool(Path_ptr, const PathID_t&, uint64_t)>;
using HopList
using llarp::path::Path::HopList = std::vector<PathHopConfig>;
using DataHandlerFunc
using llarp::path::Path::DataHandlerFunc = std::function<bool(Path_ptr, const service::ProtocolFrame&)>;
using ExitUpdatedFunc
using llarp::path::Path::ExitUpdatedFunc = std::function<bool(Path_ptr)>;
using ExitClosedFunc
using llarp::path::Path::ExitClosedFunc = std::function<bool(Path_ptr)>;
using ExitTrafficHandlerFunc
using llarp::path::Path::ExitTrafficHandlerFunc = std::function<bool(Path_ptr, const llarp_buffer_t&, uint64_t, service::ProtocolType)>;
using ObtainedExitHandler
using llarp::path::Path::ObtainedExitHandler = std::function<bool(Path_ptr, llarp_time_t)>;
(path, backoff) backoff is 0 on success
using UniqueEndpointSet_t
using llarp::path::Path::UniqueEndpointSet_t = std::unordered_set<Path_ptr, Endpoint_Hash, Endpoint_Equals>;
unordered set of paths with unique endpoints
Public Functions Documentation
function Path
Path(
const std::vector< RouterContact > & routers,
std::weak_ptr< PathSet > parent,
PathRole startingRoles,
std::string shortName
)
function Role
inline PathRole Role() const
function operator<
inline bool operator<(
const Path & other
) const
function MarkActive
inline void MarkActive(
llarp_time_t now
)
function SupportsAllRoles
inline bool SupportsAllRoles(
PathRole roles
) const
return true if ALL of the specified roles are supported
function SupportsAnyRoles
inline bool SupportsAnyRoles(
PathRole roles
) const
return true if ANY of the specified roles are supported
function ClearRoles
inline void ClearRoles(
PathRole roles
)
clear role bits
function Status
inline PathStatus Status() const
function HandleUpstream
virtual bool HandleUpstream(
const llarp_buffer_t & X,
const TunnelNonce & Y,
AbstractRouter *
) override
Reimplements: llarp::path::IHopHandler::HandleUpstream
function HandleDownstream
virtual bool HandleDownstream(
const llarp_buffer_t & X,
const TunnelNonce & Y,
AbstractRouter *
) override
Reimplements: llarp::path::IHopHandler::HandleDownstream
function ShortName
const std::string & ShortName() const
function HopsString
std::string HopsString() const
function LastRemoteActivityAt
inline virtual llarp_time_t LastRemoteActivityAt() const override
return timestamp last remote activity happened at
Reimplements: llarp::path::IHopHandler::LastRemoteActivityAt
function HandleLRSM
virtual bool HandleLRSM(
uint64_t status,
std::array< EncryptedFrame, 8 > & frames,
AbstractRouter * r
) override
Reimplements: llarp::path::IHopHandler::HandleLRSM
function SetBuildResultHook
void SetBuildResultHook(
BuildResultHookFunc func
)
function SetExitTrafficHandler
inline void SetExitTrafficHandler(
ExitTrafficHandlerFunc handler
)
function SetCloseExitFunc
inline void SetCloseExitFunc(
ExitClosedFunc handler
)
function SetUpdateExitFunc
inline void SetUpdateExitFunc(
ExitUpdatedFunc handler
)
function SetDataHandler
inline void SetDataHandler(
DataHandlerFunc func
)
function SetDropHandler
inline void SetDropHandler(
DropHandlerFunc func
)
function SetDeadChecker
inline void SetDeadChecker(
CheckForDeadFunc func
)
function EnterState
void EnterState(
PathStatus st,
llarp_time_t now
)
function ExpireTime
inline llarp_time_t ExpireTime() const
function ExpiresSoon
inline virtual bool ExpiresSoon(
llarp_time_t now,
llarp_time_t dlt =5s
) const override
Reimplements: llarp::path::IHopHandler::ExpiresSoon
function Expired
virtual bool Expired(
llarp_time_t now
) const override
Reimplements: llarp::path::IHopHandler::Expired
function Rebuild
void Rebuild()
build a new path on the same set of hops as us regenerates keys
function Tick
void Tick(
llarp_time_t now,
AbstractRouter * r
)
function SendRoutingMessage
virtual bool SendRoutingMessage(
const routing::IMessage & msg,
AbstractRouter * r
) override
send routing message and increment sequence number
Reimplements: llarp::path::IHopHandler::SendRoutingMessage
function HandleObtainExitMessage
virtual bool HandleObtainExitMessage(
const routing::ObtainExitMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandleObtainExitMessage
function HandleUpdateExitVerifyMessage
virtual bool HandleUpdateExitVerifyMessage(
const routing::UpdateExitVerifyMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandleUpdateExitVerifyMessage
function HandleTransferTrafficMessage
virtual bool HandleTransferTrafficMessage(
const routing::TransferTrafficMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandleTransferTrafficMessage
function HandleUpdateExitMessage
virtual bool HandleUpdateExitMessage(
const routing::UpdateExitMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandleUpdateExitMessage
function HandleCloseExitMessage
virtual bool HandleCloseExitMessage(
const routing::CloseExitMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandleCloseExitMessage
function HandleGrantExitMessage
virtual bool HandleGrantExitMessage(
const routing::GrantExitMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandleGrantExitMessage
function HandleRejectExitMessage
virtual bool HandleRejectExitMessage(
const routing::RejectExitMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandleRejectExitMessage
function HandleDataDiscardMessage
virtual bool HandleDataDiscardMessage(
const routing::DataDiscardMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandleDataDiscardMessage
function HandlePathConfirmMessage
bool HandlePathConfirmMessage(
AbstractRouter * r
)
function HandlePathConfirmMessage
virtual bool HandlePathConfirmMessage(
const routing::PathConfirmMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandlePathConfirmMessage
function HandlePathLatencyMessage
virtual bool HandlePathLatencyMessage(
const routing::PathLatencyMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandlePathLatencyMessage
function HandlePathTransferMessage
virtual bool HandlePathTransferMessage(
const routing::PathTransferMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandlePathTransferMessage
function HandleHiddenServiceFrame
virtual bool HandleHiddenServiceFrame(
const service::ProtocolFrame & frame
) override
Reimplements: llarp::routing::IMessageHandler::HandleHiddenServiceFrame
function HandleGotIntroMessage
bool HandleGotIntroMessage(
const dht::GotIntroMessage & msg
)
function HandleDHTMessage
virtual bool HandleDHTMessage(
const dht::IMessage & msg,
AbstractRouter * r
) override
Reimplements: llarp::routing::IMessageHandler::HandleDHTMessage
function HandleRoutingMessage
bool HandleRoutingMessage(
const llarp_buffer_t & buf,
AbstractRouter * r
)
function IsReady
bool IsReady() const
function TXID
PathID_t TXID() const
function Endpoint
RouterID Endpoint() const
function EndpointPubKey
PubKey EndpointPubKey() const
function IsEndpoint
bool IsEndpoint(
const RouterID & router,
const PathID_t & path
) const
function RXID
virtual PathID_t RXID() const override
Reimplements: llarp::path::IHopHandler::RXID
function Upstream
RouterID Upstream() const
function Name
std::string Name() const
function AddObtainExitHandler
inline void AddObtainExitHandler(
ObtainedExitHandler handler
)
function SendExitRequest
bool SendExitRequest(
const routing::ObtainExitMessage & msg,
AbstractRouter * r
)
function SendExitClose
bool SendExitClose(
const routing::CloseExitMessage & msg,
AbstractRouter * r
)
function FlushUpstream
virtual void FlushUpstream(
AbstractRouter * r
) override
Reimplements: llarp::path::IHopHandler::FlushUpstream
function FlushDownstream
virtual void FlushDownstream(
AbstractRouter * r
) override
Reimplements: llarp::path::IHopHandler::FlushDownstream
Protected Functions Documentation
function UpstreamWork
virtual void UpstreamWork(
TrafficQueue_t queue,
AbstractRouter * r
) override
Reimplements: llarp::path::IHopHandler::UpstreamWork
function DownstreamWork
virtual void DownstreamWork(
TrafficQueue_t queue,
AbstractRouter * r
) override
Reimplements: llarp::path::IHopHandler::DownstreamWork
function HandleAllUpstream
virtual void HandleAllUpstream(
std::vector< RelayUpstreamMessage > msgs,
AbstractRouter * r
) override
Reimplements: llarp::path::IHopHandler::HandleAllUpstream
function HandleAllDownstream
virtual void HandleAllDownstream(
std::vector< RelayDownstreamMessage > msgs,
AbstractRouter * r
) override
Reimplements: llarp::path::IHopHandler::HandleAllDownstream
Public Attributes Documentation
variable hops
HopList hops;
variable m_PathSet
std::weak_ptr< PathSet > m_PathSet;
variable intro
service::Introduction intro;
variable buildStarted
llarp_time_t buildStarted = 0s;
Updated on 2026-01-10 at 22:49:45 +0000