llarp::iwp
Classes
| Name | |
|---|---|
| struct | llarp::iwp::Hasher |
| struct | llarp::iwp::InboundMessage |
| struct | llarp::iwp::LinkLayer |
| struct | llarp::iwp::OutboundMessage |
| struct | llarp::iwp::Session |
Types
| Name | |
|---|---|
| enum | Command { ePING = 0, eXMIT = 1, eDATA = 2, eACKS = 3, eNACK = 4, eMACK = 5, eCLOS = 0xff} |
| using std::shared_ptr< LinkLayer > | LinkLayer_ptr |
Functions
| Name | |
|---|---|
| LinkLayer_ptr | NewInboundLink(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) |
| LinkLayer_ptr | NewOutboundLink(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) |
| ILinkSession::Packet_t | CreatePacket(Command cmd, size_t plainsize, size_t min_pad =16, size_t pad_variance =16) creates a packet with plaintext size + wire overhead + random pad |
Attributes
| Name | |
|---|---|
| constexpr size_t | FragmentSize max size of data fragments |
| constexpr size_t | CommandOverhead plaintext header overhead size |
| constexpr size_t | PacketOverhead packet crypto overhead size |
| constexpr std::chrono::milliseconds | DeliveryTimeout Time how long we try delivery for. |
| constexpr auto | ReceivalTimeout Time how long we wait to recieve a message. |
| constexpr auto | ReplayWindow How long to keep a replay window for. |
| constexpr auto | ACKResendInterval How often to acks RX messages. |
| constexpr auto | TXFlushInterval How often to retransmit TX fragments. |
| constexpr std::chrono::milliseconds | PingInterval How often we send a keepalive. |
| constexpr auto | SessionAliveTimeout How long we wait for a session to die with no tx from them. |
Types Documentation
enum Command
| Enumerator | Value | Description |
|---|---|---|
| ePING | 0 | keep alive message |
| eXMIT | 1 | begin transission |
| eDATA | 2 | fragment data |
| eACKS | 3 | acknolege fragments |
| eNACK | 4 | negative ack |
| eMACK | 5 | multiack |
| eCLOS | 0xff | close session |
using LinkLayer_ptr
using llarp::iwp::LinkLayer_ptr = typedef std::shared_ptr<LinkLayer>;
Functions Documentation
function NewInboundLink
LinkLayer_ptr NewInboundLink(
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
)
function NewOutboundLink
LinkLayer_ptr NewOutboundLink(
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
)
function CreatePacket
ILinkSession::Packet_t CreatePacket(
Command cmd,
size_t plainsize,
size_t min_pad =16,
size_t pad_variance =16
)
creates a packet with plaintext size + wire overhead + random pad
Attributes Documentation
variable FragmentSize
static constexpr size_t FragmentSize = 1024;
max size of data fragments
variable CommandOverhead
static constexpr size_t CommandOverhead = 2;
plaintext header overhead size
variable PacketOverhead
static constexpr size_t PacketOverhead = HMACSIZE + TUNNONCESIZE;
packet crypto overhead size
variable DeliveryTimeout
static constexpr std::chrono::milliseconds DeliveryTimeout = 500ms;
Time how long we try delivery for.
variable ReceivalTimeout
static constexpr auto ReceivalTimeout = (DeliveryTimeout * 8) / 5;
Time how long we wait to recieve a message.
variable ReplayWindow
static constexpr auto ReplayWindow = (ReceivalTimeout * 3) / 2;
How long to keep a replay window for.
variable ACKResendInterval
static constexpr auto ACKResendInterval = DeliveryTimeout / 2;
How often to acks RX messages.
variable TXFlushInterval
static constexpr auto TXFlushInterval = (DeliveryTimeout / 5) * 4;
How often to retransmit TX fragments.
variable PingInterval
static constexpr std::chrono::milliseconds PingInterval = 5s;
How often we send a keepalive.
variable SessionAliveTimeout
static constexpr auto SessionAliveTimeout = PingInterval * 5;
How long we wait for a session to die with no tx from them.
Updated on 2026-01-10 at 22:49:45 +0000