| Package | Description |
|---|---|
| net.i2p.data.i2np | This package defines the low-level messages sent between routers,
called Invisible Internet Network Protocol (I2NP). |
| net.i2p.router | The I2P router application handles I2P network communication. |
| net.i2p.router.message | Garlic message creation, parsing, and source routing for I2P communications. |
| net.i2p.router.networkdb | Network database management and coordination for the I2P distributed hash table. |
| net.i2p.router.networkdb.kademlia | Kademlia DHT implementation and floodfill router functionality for I2P. |
| net.i2p.router.transport | Transport layer implementations and management for I2P network communication. |
| net.i2p.router.transport.ntcp | The NTCP (New TCP) transport for I2P, allowing I2P messages to be passed
over TCP connections. |
| net.i2p.router.transport.udp | The UDP transport (also known as 'SSU' or Secure Semi-reliable UDP transport)
for I2P, allowing I2P messages to be passed over UDP connections. |
| net.i2p.router.tunnel | Core tunnel management, message processing, and encryption for I2P's anonymous routing system. |
| Modifier and Type | Class and Description |
|---|---|
class | DatabaseLookupMessageDefines the message a router sends to another router to search for a
key in the network database. |
class | DatabaseSearchReplyMessageDefines the message a router sends to another router in response to a
search (DatabaseFindNearest or DatabaseLookup) when it doesn't have the value,
specifying what routers it would search. |
class | DatabaseStoreMessageDefines the message a router sends to another router to test the network
database reachability, as well as the reply message sent back. |
class | DataMessageDefines a message containing arbitrary bytes of data
This is what goes in a GarlicClove. |
class | DeliveryStatusMessageDefines the message sent back in reply to a message when requested, containing
the private ack id. |
class | FastI2NPMessageImplIgnore, but save, the SHA-256 checksum in the full 16-byte header when read in. |
class | GarlicMessageDefines the wrapped garlic message |
class | I2NPMessageImplDefines the base message implementation. |
class | OutboundTunnelBuildReplyMessageSent from the OBEP to the tunnel creator via an inbound tunnel. |
class | ShortTunnelBuildMessageVariable size, small records. |
class | ShortTunnelBuildReplyMessageInternal use only, to convert an inbound STBM to a reply. |
class | TunnelBuildMessageThe basic build message with 8 records. |
class | TunnelBuildMessageBaseBase for TBM, TBRM, VTBM, VTBRM
Retrofitted over them. |
class | TunnelBuildReplyMessageThe basic build reply message with 8 records. |
class | TunnelDataMessageDefines the message sent between routers as part of the tunnel delivery
The tunnel ID is changed in-place by TunnelParticipant.send(), so
we can't reuse the checksum on output, but we still subclass
FastI2NPMessageImpl so we don't verify the checksum on input... |
class | TunnelGatewayMessageDefines the message sent between one tunnel's endpoint and another's gateway. |
class | UnknownI2NPMessageThis is similar to DataMessage or GarlicMessage but with a variable message type. |
class | VariableTunnelBuildMessageVariable number of records. |
class | VariableTunnelBuildReplyMessageTransmitted from the new outbound endpoint to the creator through a
reply tunnel. |
| Modifier and Type | Method and Description |
|---|---|
I2NPMessage | I2NPMessageImpl.Builder.build(I2PAppContext ctx)instantiate a new I2NPMessage to be populated shortly |
I2NPMessage | UnknownI2NPMessage.convert()Attempt to convert this message to a known message class. |
static I2NPMessage | I2NPMessageImpl.createMessage(I2PAppContext context,
int type)Yes, this is fairly ugly, but its the only place it ever happens. |
static I2NPMessage | I2NPMessageImpl.fromRawByteArray(I2PAppContext ctx,
byte[] buffer,
int offset,
int len,
I2NPMessageHandler handler)Read the message with a short 5-byte header. |
static I2NPMessage | I2NPMessageImpl.fromRawByteArrayNTCP2(I2PAppContext ctx,
byte[] buffer,
int offset,
int len,
I2NPMessageHandler handler)Read the message with a short 9-byte header. |
I2NPMessage | GarlicClove.getData() |
I2NPMessage | TunnelGatewayMessage.getMessage()Warning, at the IBGW, where the message was read in,
this will be an UnknownI2NPMessage. |
I2NPMessage | I2NPMessageHandler.lastRead()clear the last message read from a byte array with an offset |
I2NPMessage | I2NPMessageHandler.readMessage(byte[] data)Read an I2NPMessage from the byte array and return the fully populated object. |
| Modifier and Type | Method and Description |
|---|---|
void | GarlicClove.setData(I2NPMessage msg)setData. |
void | TunnelGatewayMessage.setMessage(I2NPMessage msg) |
| Modifier and Type | Method and Description |
|---|---|
I2NPMessage | OutNetMessage.getMessage()Specifies the message to be sent. |
| Modifier and Type | Method and Description |
|---|---|
int | InNetMessagePool.add(I2NPMessage messageBody,
RouterIdentity fromRouter,
Hash fromRouterHash)Adds a new inbound message to be processed. |
int | InNetMessagePool.add(I2NPMessage messageBody,
RouterIdentity fromRouter,
Hash fromRouterHash,
long msgIDBloomXor)Adds a new inbound message with optional bloom filter XOR id. |
Job | HandlerJobBuilder.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash)Create a new job to handle the received message. |
void | MessageHistory.droppedOtherMessage(I2NPMessage message,
Hash from)We received another message we weren't waiting for and don't know how to handle |
int | InNetMessagePool.handleReplies(I2NPMessage messageBody)Handles replies for outbound messages that correspond to this inbound message. |
boolean | MessageSelector.isMatch(I2NPMessage message)Returns true if the received message matches the selector. |
void | ReplyJob.setMessage(I2NPMessage message)Called by InNetMessagePool when an I2NPMessage
matching a MessageSelector registered with the OutboundMessageRegistry
is received |
| Constructor and Description |
|---|
OutNetMessage(RouterContext context,
I2NPMessage msg,
long expiration,
int priority,
RouterInfo target)Standard constructor |
| Modifier and Type | Method and Description |
|---|---|
I2NPMessage | PayloadGarlicConfig.getPayload()Specify the I2NP message to be sent - if this is set, no other cloves can be included
in this block |
| Modifier and Type | Method and Description |
|---|---|
Job | GarlicMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash)Create and return a job to handle this message |
void | GarlicMessageReceiver.CloveReceiver.handleClove(DeliveryInstructions instructions,
I2NPMessage data)Handles a decrypted garlic clove. |
void | HandleGarlicMessageJob.handleClove(DeliveryInstructions instructions,
I2NPMessage data)Handle each garlic clove based on its delivery instructions. |
| Constructor and Description |
|---|
PayloadGarlicConfig(Certificate cert,
long id,
long expiration,
DeliveryInstructions di,
I2NPMessage message) |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
int timeoutMs,
int priority)Send a message directly to a peer. |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
int timeoutMs,
int priority,
long msgIDBloomXor)Send a message directly to a peer with an XOR mask. |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
Job onSend,
ReplyJob onSuccess,
Job onFail,
MessageSelector selector,
int timeoutMs,
int priority,
long msgIDBloomXor)Send a message directly to a peer with full options. |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
ReplyJob onSuccess,
Job onFail,
MessageSelector selector,
int timeoutMs,
int priority)Send a message directly to a peer with reply handling. |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
ReplyJob onSuccess,
Job onFail,
MessageSelector selector,
int timeoutMs,
int priority,
long msgIDBloomXor)Send a message directly to a peer with reply handling and XOR mask. |
| Modifier and Type | Method and Description |
|---|---|
protected void | HandleDatabaseLookupMessageJob.sendMessage(I2NPMessage message,
Hash toPeer,
TunnelId replyTunnel)Send an I2NP message to the specified peer. |
| Modifier and Type | Method and Description |
|---|---|
protected I2NPMessage | ExploreJob.buildMessage(TunnelId replyTunnelId,
Hash replyGateway,
long expiration,
RouterInfo peer)Builds the database lookup message to send to a peer. |
protected I2NPMessage | SearchJob.buildMessage(TunnelId replyTunnelId,
Hash replyGateway,
long expiration,
RouterInfo peer)Build the database search message |
| Modifier and Type | Method and Description |
|---|---|
Job | FloodfillDatabaseStoreMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
Job | FloodfillDatabaseLookupMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash)Creates a job to handle an incoming DatabaseLookupMessage, or returns null if the lookup should be dropped. |
boolean | SearchMessageSelector.isMatch(I2NPMessage message) |
boolean | StoreMessageSelector.isMatch(I2NPMessage message) |
boolean | FloodOnlyLookupSelector.isMatch(I2NPMessage message) |
boolean | IterativeLookupSelector.isMatch(I2NPMessage message)This only returns true for DSMs, not for DSRMs. |
void | SearchUpdateReplyFoundJob.setMessage(I2NPMessage message)setMessage. |
void | FloodOnlyLookupMatchJob.setMessage(I2NPMessage message) |
void | DirectLookupMatchJob.setMessage(I2NPMessage message)Override to not call failed() in setMessage(),
as it will be called from runJob() |
(package private) static MessageWrapper.WrappedMessage | MessageWrapper.wrap(RouterContext ctx,
I2NPMessage m,
Hash from,
RouterInfo to)Garlic wrap a message from a client or this router, destined for a router,
to hide the contents from the OBEP. |
static GarlicMessage | MessageWrapper.wrap(RouterContext ctx,
I2NPMessage m,
MessageWrapper.OneTimeSession session)Garlic wrap a message from nobody, destined for an unknown router,
to hide the contents from the IBGW. |
static GarlicMessage | MessageWrapper.wrap(RouterContext ctx,
I2NPMessage m,
RouterInfo to)Garlic wrap a message from nobody, destined for a router,
to hide the contents from the OBEP. |
static GarlicMessage | MessageWrapper.wrap(RouterContext ctx,
I2NPMessage m,
SessionKey encryptKey,
RatchetSessionTag encryptTag)Garlic wrap a message from nobody, destined for an unknown router,
to hide the contents from the IBGW. |
static GarlicMessage | MessageWrapper.wrap(RouterContext ctx,
I2NPMessage m,
SessionKey encryptKey,
SessionTag encryptTag)Garlic wrap a message from nobody, destined for an unknown router,
to hide the contents from the IBGW. |
| Modifier and Type | Method and Description |
|---|---|
List<OutNetMessage> | OutboundMessageRegistry.getOriginalMessages(I2NPMessage message)Retrieve all messages that are waiting for the specified message. |
void | TransportEventListener.messageReceived(I2NPMessage message,
RouterIdentity fromRouter,
Hash fromRouterHash)Message received |
void | TransportManager.messageReceived(I2NPMessage message,
RouterIdentity fromRouter,
Hash fromRouterHash)Handle incoming I2NP message from a peer. |
void | TransportImpl.messageReceived(I2NPMessage inMsg,
RouterIdentity remoteIdent,
Hash remoteIdentHash,
long msToReceive,
int bytesReceived)Message received from the I2NPMessageReader - send it to the listener |
| Modifier and Type | Method and Description |
|---|---|
void | InboundEstablishState.gotI2NP(I2NPMessage msg)Illegal during handshake - I2NP messages are only in the data phase. |
void | NTCP2Payload.PayloadCallback.gotI2NP(I2NPMessage msg)gotI2NP. |
| Constructor and Description |
|---|
I2NPBlock(I2NPMessage msg)I2NPBlock. |
| Modifier and Type | Method and Description |
|---|---|
void | SSU2Payload.PayloadCallback.gotI2NP(I2NPMessage msg)Receive an I2NP message block. |
void | OutboundEstablishState2.gotI2NP(I2NPMessage msg) |
void | InboundEstablishState2.gotI2NP(I2NPMessage msg)gotI2NP. |
void | PeerStateDestroyed.gotI2NP(I2NPMessage msg)gotI2NP. |
void | PeerState2.gotI2NP(I2NPMessage msg)gotI2NP. |
void | UDPTransport.messageReceived(I2NPMessage inMsg,
RouterIdentity remoteIdent,
Hash remoteIdentHash,
long msToReceive,
int bytesReceived)messageReceived. |
(package private) void | UDPTransport.send(I2NPMessage msg,
List<OutNetMessage> msgs,
PeerState peer)"injected" message from the EstablishmentManager, plus pending messages to send,
so the messages may be bundled efficiently. |
(package private) void | UDPTransport.send(I2NPMessage msg,
PeerState peer)"injected" message from the EstablishmentManager. |
| Modifier and Type | Method and Description |
|---|---|
(package private) void | UDPTransport.send(List<I2NPMessage> msgs,
PeerState peer)"injected" messages from the EstablishmentManager. |
| Constructor and Description |
|---|
OutboundMessageState(I2PAppContext context,
I2NPMessage msg,
PeerState peer)"injected" message from the establisher. |
| Modifier and Type | Method and Description |
|---|---|
boolean | TunnelGatewayZeroHop.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)Add a message to be sent down the tunnel (immediately forwarding it to the
InboundMessageDistributor or OutboundMessageDistributor, as
necessary). |
boolean | PumpedTunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)Adds a message to be sent down the tunnel. |
boolean | ThrottledPumpedTunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)Adds a message to the inbound gateway after a bandwidth-based drop check. |
boolean | TunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)Add a message to be sent down the tunnel, either sending it now (perhaps
coalesced with other pending messages) or after a brief pause (_flushFrequency). |
boolean | TunnelDispatcher.dispatchOutbound(I2NPMessage msg,
TunnelId outboundTunnel,
Hash targetPeer)Dispatch an outbound message through a tunnel. |
boolean | TunnelDispatcher.dispatchOutbound(I2NPMessage msg,
TunnelId outboundTunnel,
TunnelId targetTunnel,
Hash targetPeer)Dispatch an outbound message through a tunnel. |
void | InboundMessageDistributor.distribute(I2NPMessage msg,
Hash target)distribute. |
void | OutboundMessageDistributor.distribute(I2NPMessage msg,
Hash target)Warning - as of 0.9.63, msg will be an UnknownI2NPMessage,
and must be converted before handling locally. |
void | InboundMessageDistributor.distribute(I2NPMessage msg,
Hash target,
TunnelId tunnel)distribute. |
void | OutboundMessageDistributor.distribute(I2NPMessage msg,
Hash target,
TunnelId tunnel)Warning - as of 0.9.63, msg will be an UnknownI2NPMessage,
and must be converted before handling locally. |
void | InboundMessageDistributor.handleClove(DeliveryInstructions instructions,
I2NPMessage data)Handle a clove removed from the garlic message |
void | FragmentHandler.DefragmentedReceiver.receiveComplete(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)Receive a fully formed I2NPMessage out of the tunnel |
| Constructor and Description |
|---|
OutboundGatewayMessage(I2NPMessage message,
Hash toRouter,
TunnelId toTunnel)OutboundGatewayMessage. |
PendingGatewayMessage(I2NPMessage message,
Hash toRouter,
TunnelId toTunnel)PendingGatewayMessage. |