Package | Description |
---|---|
net.i2p.data.i2np |
This package defines the low-level messages sent between routers,
called the Invisible Internet Network Protocol (I2NP).
|
net.i2p.router |
The I2P router application handles the I2P network communication.
|
net.i2p.router.message |
Creates and parses garlic messages.
|
net.i2p.router.networkdb |
A couple of classes, but most things are in kademlia.
|
net.i2p.router.networkdb.kademlia |
The network database, including implementation of floodfills.
|
net.i2p.router.transport |
The transport system allows the usage of communication layers that are below I2P in the stack, on which I2P messages are sent.
|
net.i2p.router.transport.udp |
The UDP transport (also known as 'SSU transport') allows passing I2P messages on top of UDP.
|
net.i2p.router.tunnel |
All the work of managing locally created and participating tunnels,
creating and handling tunnel messages, and their encryption.
|
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 |
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.
|
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.
|
I2NPMessage |
I2NPMessageHandler.readMessage(InputStream in)
Deprecated.
use the byte array method to avoid an extra copy if you have it
|
Modifier and Type | Method and Description |
---|---|
void |
I2NPMessageReader.I2NPMessageEventListener.messageReceived(I2NPMessageReader reader,
I2NPMessage message,
long msToRead,
int bytesRead)
Notify the listener that a message has been received from the given
reader
|
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)
Add a new message to the pool.
|
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) |
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() |
Modifier and Type | Method and Description |
---|---|
Job |
GarlicMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
void |
GarlicMessageReceiver.CloveReceiver.handleClove(DeliveryInstructions instructions,
I2NPMessage data) |
void |
HandleGarlicMessageJob.handleClove(DeliveryInstructions instructions,
I2NPMessage data) |
void |
PayloadGarlicConfig.setPayload(I2NPMessage message)
Specify the I2NP message to be sent - if this is set, no other cloves can be included
in this block
|
Constructor and Description |
---|
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
int timeoutMs,
int priority) |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
Job onSend,
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) |
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)
Build the database search message, but unlike the normal searches, we're more explicit in
what we /dont/ want.
|
protected I2NPMessage |
SearchJob.buildMessage(TunnelId replyTunnelId,
Hash replyGateway,
long expiration,
RouterInfo peer)
Build the database search message
|
Modifier and Type | Method and Description |
---|---|
Job |
FloodfillDatabaseLookupMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
Job |
FloodfillDatabaseStoreMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
boolean |
SearchMessageSelector.isMatch(I2NPMessage message) |
boolean |
IterativeLookupSelector.isMatch(I2NPMessage message)
This only returns true for DSMs, not for DSRMs.
|
boolean |
FloodOnlyLookupSelector.isMatch(I2NPMessage message) |
boolean |
StoreMessageSelector.isMatch(I2NPMessage message) |
void |
FloodOnlyLookupMatchJob.setMessage(I2NPMessage message) |
void |
SearchUpdateReplyFoundJob.setMessage(I2NPMessage message) |
(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.
|
(package private) 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,
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 |
TransportManager.messageReceived(I2NPMessage message,
RouterIdentity fromRouter,
Hash fromRouterHash)
Message received
|
void |
TransportEventListener.messageReceived(I2NPMessage message,
RouterIdentity fromRouter,
Hash fromRouterHash)
Message received
|
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 |
UDPTransport.messageReceived(I2NPMessage inMsg,
RouterIdentity remoteIdent,
Hash remoteIdentHash,
long msToReceive,
int bytesReceived)
infinite loop
public RouterAddress getCurrentAddress() {
if (needsRebuild())
rebuildExternalAddress(false);
return super.getCurrentAddress();
}
|
(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 |
PumpedTunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)
Add a message to be sent down the tunnel, either sending it now (perhaps
coallesced with other pending messages) or after a brief pause (_flushFrequency).
|
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 |
TunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)
Add a message to be sent down the tunnel, either sending it now (perhaps
coallesced with other pending messages) or after a brief pause (_flushFrequency).
|
void |
ThrottledPumpedTunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)
Possibly drop a message due to bandwidth before adding it to the preprocessor queue.
|
void |
TunnelDispatcher.dispatchOutbound(I2NPMessage msg,
TunnelId outboundTunnel,
Hash targetPeer)
We are the outbound tunnel gateway (we created it), so wrap up this message
with instructions to be forwarded to the targetPeer when it reaches the
endpoint.
|
void |
TunnelDispatcher.dispatchOutbound(I2NPMessage msg,
TunnelId outboundTunnel,
TunnelId targetTunnel,
Hash targetPeer)
We are the outbound tunnel gateway (we created it), so wrap up this message
with instructions to be forwarded to the targetTunnel on the targetPeer when
it reaches the endpoint.
|
void |
OutboundMessageDistributor.distribute(I2NPMessage msg,
Hash target) |
void |
InboundMessageDistributor.distribute(I2NPMessage msg,
Hash target) |
void |
OutboundMessageDistributor.distribute(I2NPMessage msg,
Hash target,
TunnelId tunnel) |
void |
InboundMessageDistributor.distribute(I2NPMessage msg,
Hash target,
TunnelId tunnel) |
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) |