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.ntcp |
The NTCP transport allows passing I2P messages on top of TCP.
|
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 | 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 | 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 | Description |
---|---|---|
void |
GarlicClove.setData(I2NPMessage msg) |
|
void |
TunnelGatewayMessage.setMessage(I2NPMessage msg) |
Modifier and Type | Method | Description |
---|---|---|
I2NPMessage |
OutNetMessage.getMessage() |
Specifies the message to be sent.
|
Modifier and Type | Method | 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 | Description |
---|---|
OutNetMessage(RouterContext context,
I2NPMessage msg,
long expiration,
int priority,
RouterInfo target) |
Standard constructor
|
Modifier and Type | Method | Description |
---|---|---|
I2NPMessage |
PayloadGarlicConfig.getPayload() |
Modifier and Type | Method | 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 | 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 | Description |
---|---|---|
protected void |
HandleDatabaseLookupMessageJob.sendMessage(I2NPMessage message,
Hash toPeer,
TunnelId replyTunnel) |
Modifier and Type | Method | 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 | Description |
---|---|---|
Job |
FloodfillDatabaseLookupMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
|
Job |
FloodfillDatabaseStoreMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
|
boolean |
FloodOnlyLookupSelector.isMatch(I2NPMessage message) |
|
boolean |
IterativeLookupSelector.isMatch(I2NPMessage message) |
This only returns true for DSMs, not for DSRMs.
|
boolean |
SearchMessageSelector.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.
|
(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.
|
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.
|
Modifier and Type | Method | 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 |
TransportImpl.messageReceived(I2NPMessage inMsg,
RouterIdentity remoteIdent,
Hash remoteIdentHash,
long msToReceive,
int bytesReceived) |
Message received from the I2NPMessageReader - send it to the listener
|
void |
TransportManager.messageReceived(I2NPMessage message,
RouterIdentity fromRouter,
Hash fromRouterHash) |
Message received
|
Modifier and Type | Method | Description |
---|---|---|
void |
InboundEstablishState.gotI2NP(I2NPMessage msg) |
|
void |
NTCP2Payload.PayloadCallback.gotI2NP(I2NPMessage msg) |
Constructor | Description |
---|---|
I2NPBlock(I2NPMessage msg) |
Modifier and Type | Method | 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 | Description |
---|---|---|
(package private) void |
UDPTransport.send(List<I2NPMessage> msgs,
PeerState peer) |
"injected" messages from the EstablishmentManager.
|
Constructor | Description |
---|---|
OutboundMessageState(I2PAppContext context,
I2NPMessage msg,
PeerState peer) |
"injected" message from the establisher.
|
Modifier and Type | Method | 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 |
ThrottledPumpedTunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel) |
Possibly drop a message due to bandwidth before adding it to the preprocessor queue.
|
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 |
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 |
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 |
InboundMessageDistributor.distribute(I2NPMessage msg,
Hash target) |
|
void |
InboundMessageDistributor.distribute(I2NPMessage msg,
Hash target,
TunnelId tunnel) |
|
void |
OutboundMessageDistributor.distribute(I2NPMessage msg,
Hash target) |
|
void |
OutboundMessageDistributor.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 | Description |
---|---|
OutboundGatewayMessage(I2NPMessage message,
Hash toRouter,
TunnelId toTunnel) |
|
PendingGatewayMessage(I2NPMessage message,
Hash toRouter,
TunnelId toTunnel) |