| 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 |
DatabaseLookupMessage
Defines the message a router sends to another router to search for a
key in the network database.
|
class |
DatabaseSearchReplyMessage
Defines 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 |
DatabaseStoreMessage
Defines the message a router sends to another router to test the network
database reachability, as well as the reply message sent back.
|
class |
DataMessage
Defines a message containing arbitrary bytes of data
This is what goes in a GarlicClove.
|
class |
DeliveryStatusMessage
Defines the message sent back in reply to a message when requested, containing
the private ack id.
|
class |
FastI2NPMessageImpl
Ignore, but save, the SHA-256 checksum in the full 16-byte header when read in.
|
class |
GarlicMessage
Defines the wrapped garlic message
|
class |
I2NPMessageImpl
Defines the base message implementation.
|
class |
OutboundTunnelBuildReplyMessage
Sent from the OBEP to the tunnel creator via an inbound tunnel.
|
class |
ShortTunnelBuildMessage
Variable size, small records.
|
class |
ShortTunnelBuildReplyMessage
Internal use only, to convert an inbound STBM to a reply.
|
class |
TunnelBuildMessage
The basic build message with 8 records.
|
class |
TunnelBuildMessageBase
Base for TBM, TBRM, VTBM, VTBRM
Retrofitted over them.
|
class |
TunnelBuildReplyMessage
The basic build reply message with 8 records.
|
class |
TunnelDataMessage
Defines 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 |
TunnelGatewayMessage
Defines the message sent between one tunnel's endpoint and another's gateway.
|
class |
UnknownI2NPMessage
This is similar to DataMessage or GarlicMessage but with a variable message type.
|
class |
VariableTunnelBuildMessage
Variable number of records.
|
class |
VariableTunnelBuildReplyMessage
Transmitted 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) |
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) |
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) |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
int timeoutMs,
int priority,
long msgIDBloomXor) |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
Job onSend,
ReplyJob onSuccess,
Job onFail,
MessageSelector selector,
int timeoutMs,
int priority,
long msgIDBloomXor) |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
ReplyJob onSuccess,
Job onFail,
MessageSelector selector,
int timeoutMs,
int priority) |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
ReplyJob onSuccess,
Job onFail,
MessageSelector selector,
int timeoutMs,
int priority,
long msgIDBloomXor) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
HandleDatabaseLookupMessageJob.sendMessage(I2NPMessage message,
Hash toPeer,
TunnelId replyTunnel) |
| 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) |
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) |
| Constructor and Description |
|---|
I2NPBlock(I2NPMessage msg) |
| Modifier and Type | Method and Description |
|---|---|
void |
SSU2Payload.PayloadCallback.gotI2NP(I2NPMessage msg) |
void |
OutboundEstablishState2.gotI2NP(I2NPMessage msg) |
void |
InboundEstablishState2.gotI2NP(I2NPMessage msg) |
void |
PeerStateDestroyed.gotI2NP(I2NPMessage msg) |
void |
PeerState2.gotI2NP(I2NPMessage msg) |
void |
UDPTransport.messageReceived(I2NPMessage inMsg,
RouterIdentity remoteIdent,
Hash remoteIdentHash,
long msToReceive,
int bytesReceived) |
(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 |
|---|---|
void |
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). |
void |
PumpedTunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)
Adds a message to be sent down the tunnel.
|
void |
ThrottledPumpedTunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)
Adds a message to the inbound gateway after a bandwidth-based drop check.
|
void |
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).
|
void |
TunnelDispatcher.dispatchOutbound(I2NPMessage msg,
TunnelId outboundTunnel,
Hash targetPeer)
Dispatch an outbound message through a tunnel
|
void |
TunnelDispatcher.dispatchOutbound(I2NPMessage msg,
TunnelId outboundTunnel,
TunnelId targetTunnel,
Hash targetPeer) |
void |
InboundMessageDistributor.distribute(I2NPMessage msg,
Hash target) |
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) |
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) |
PendingGatewayMessage(I2NPMessage message,
Hash toRouter,
TunnelId toTunnel) |