| Package | Description |
|---|---|
| net.i2p.router | The I2P router application handles I2P network communication. |
| net.i2p.router.dummy | Dummy implementations and stub classes for testing purposes. |
| net.i2p.router.message | Garlic message creation, parsing, and source routing for I2P communications. |
| net.i2p.router.networkdb.kademlia | Kademlia DHT implementation and floodfill router functionality for I2P. |
| net.i2p.router.tunnel | Core tunnel management, message processing, and encryption for I2P's anonymous routing system. |
| net.i2p.router.tunnel.pool | Tunnel pool management, creation, and peer selection for I2P's anonymous routing system. |
| Modifier and Type | Method and Description |
|---|---|
TunnelInfo | TunnelManagerFacade.selectAnyInboundTunnel()Pick a random inbound tunnel from any pool — client pools first,
then exploratory. |
TunnelInfo | TunnelManagerFacade.selectAnyOutboundTunnel()Pick a random outbound tunnel from any pool — client pools first,
then exploratory. |
TunnelInfo | TunnelManagerFacade.selectInboundExploratoryTunnel(Hash closestTo)Pick the inbound exploratory tunnel with the gateway closest to the given hash. |
TunnelInfo | TunnelManagerFacade.selectInboundTunnel()Pick a random inbound exploratory tunnel |
TunnelInfo | TunnelManagerFacade.selectInboundTunnel(Hash destination)Pick a random inbound tunnel from the given destination's pool |
TunnelInfo | TunnelManagerFacade.selectInboundTunnel(Hash destination,
Hash closestTo)Pick the inbound tunnel with the gateway closest to the given hash
from the given destination's pool. |
TunnelInfo | TunnelManagerFacade.selectOutboundExploratoryTunnel(Hash closestTo)Pick the outbound exploratory tunnel with the endpoint closest to the given hash. |
TunnelInfo | TunnelManagerFacade.selectOutboundTunnel()Pick a random outbound exploratory tunnel |
TunnelInfo | TunnelManagerFacade.selectOutboundTunnel(Hash destination)Pick a random outbound tunnel from the given destination's pool |
TunnelInfo | TunnelManagerFacade.selectOutboundTunnel(Hash destination,
Hash closestTo)Pick the outbound tunnel with the endpoint closest to the given hash
from the given destination's pool. |
| Modifier and Type | Method and Description |
|---|---|
boolean | TunnelManagerFacade.isValidTunnel(Hash client,
TunnelInfo tunnel)Is a tunnel a valid member of the pool? |
void | MessageHistory.tunnelJoined(String state,
TunnelInfo tunnel)The local router has joined the given tunnel operating in the given state. |
void | MessageHistory.tunnelValid(TunnelInfo tunnel,
long timeToTest)Note that we have reason to believe that the given tunnel is valid, since we could do something
through it in the given amount of time |
| Modifier and Type | Method and Description |
|---|---|
TunnelInfo | DummyTunnelManagerFacade.selectAnyInboundTunnel() |
TunnelInfo | DummyTunnelManagerFacade.selectAnyOutboundTunnel() |
TunnelInfo | DummyTunnelManagerFacade.selectInboundExploratoryTunnel(Hash closestTo) |
TunnelInfo | DummyTunnelManagerFacade.selectInboundTunnel()Deprecated. unused |
TunnelInfo | DummyTunnelManagerFacade.selectInboundTunnel(Hash destination) |
TunnelInfo | DummyTunnelManagerFacade.selectInboundTunnel(Hash destination,
Hash closestTo) |
TunnelInfo | DummyTunnelManagerFacade.selectOutboundExploratoryTunnel(Hash closestTo) |
TunnelInfo | DummyTunnelManagerFacade.selectOutboundTunnel() |
TunnelInfo | DummyTunnelManagerFacade.selectOutboundTunnel(Hash destination) |
TunnelInfo | DummyTunnelManagerFacade.selectOutboundTunnel(Hash destination,
Hash closestTo) |
| Modifier and Type | Method and Description |
|---|---|
boolean | DummyTunnelManagerFacade.isValidTunnel(Hash client,
TunnelInfo tunnel) |
| Modifier and Type | Field and Description |
|---|---|
(package private) ConcurrentHashMap<OutboundCache.HashPair,TunnelInfo> | OutboundCache.backloggedTunnelCacheCache for backlogged tunnels per source-destination pair. |
(package private) ConcurrentHashMap<OutboundCache.HashPair,TunnelInfo> | OutboundCache.tunnelCacheCache for outbound tunnels per source-destination pair. |
| Modifier and Type | Method and Description |
|---|---|
(package private) void | OutboundCache.clearCaches(OutboundCache.HashPair hashPair,
Lease lease,
TunnelInfo inTunnel,
TunnelInfo outTunnel)Clears cache entries related to the provided key and elements upon failure,
allowing retries with fresh associations. |
(package private) static GarlicMessage | OutboundClientMessageJobHelper.createGarlicMessage(RouterContext ctx,
long replyToken,
long expiration,
PublicKey recipientPK,
PayloadGarlicConfig dataClove,
Hash from,
Destination dest,
TunnelInfo replyTunnel,
int tagsToSendOverride,
int lowTagsOverride,
SessionKey wrappedKey,
Set<SessionTag> wrappedTags,
boolean requireAck,
LeaseSet bundledReplyLeaseSet,
ReplyCallback callback)Build a garlic message that will be delivered to the router on which the target is located. |
| Constructor and Description |
|---|
SearchUpdateReplyFoundJob(RouterContext context,
RouterInfo peer,
SearchState state,
KademliaNetworkDatabaseFacade facade,
SearchJob job,
TunnelInfo outTunnel,
TunnelInfo replyTunnel)Create job with tunnel info for reply routing |
| Modifier and Type | Class and Description |
|---|---|
class | TunnelCreatorConfigCoordinate the info that the tunnel creator keeps track of, including what
peers are in the tunnel and what their configuration is
See PooledTunnelCreatorConfig for the non-abstract class |
| Modifier and Type | Class and Description |
|---|---|
class | PooledTunnelCreatorConfigData about a tunnel we created |
| Modifier and Type | Field and Description |
|---|---|
(package private) static Comparator<TunnelInfo> | TunnelPool.QUALITY_COMPARATORBest tunnels first for LeaseSet publication: freshest (longest remaining
life) so the lease survives floodfill propagation, then lowest average
latency, then fewest consecutive failures. |
| Modifier and Type | Method and Description |
|---|---|
TunnelInfo | AliasedTunnelPool.getTunnel(TunnelId gatewayId) |
TunnelInfo | TunnelPool.getTunnel(TunnelId gatewayId)Tunnel by its gateway tunnel ID. |
TunnelInfo | TunnelPoolManager.selectAnyInboundTunnel()Pick a random inbound tunnel from any pool — client pools first,
then exploratory. |
TunnelInfo | TunnelPoolManager.selectAnyOutboundTunnel()Pick a random outbound tunnel from any pool — client pools first,
then exploratory. |
TunnelInfo | TunnelPoolManager.selectInboundExploratoryTunnel(Hash closestTo)Pick the inbound exploratory tunnel with the gateway closest to the given hash. |
TunnelInfo | TunnelPoolManager.selectInboundTunnel()Pick a random inbound exploratory tunnel. |
TunnelInfo | TunnelPoolManager.selectInboundTunnel(Hash destination)Pick a random inbound tunnel from the given destination's pool. |
TunnelInfo | TunnelPoolManager.selectInboundTunnel(Hash destination,
Hash closestTo)Pick the inbound tunnel with the gateway closest to the given hash
from the given destination's pool. |
TunnelInfo | TunnelPoolManager.selectOutboundExploratoryTunnel(Hash closestTo)Pick the outbound exploratory tunnel with the endpoint closest to the given hash. |
TunnelInfo | TunnelPoolManager.selectOutboundTunnel()Pick a random outbound exploratory tunnel. |
TunnelInfo | TunnelPoolManager.selectOutboundTunnel(Hash destination)Pick a random outbound tunnel from the given destination's pool. |
TunnelInfo | TunnelPoolManager.selectOutboundTunnel(Hash destination,
Hash closestTo)Pick the outbound tunnel with the endpoint closest to the given hash
from the given destination's pool. |
(package private) TunnelInfo | AliasedTunnelPool.selectTunnel() |
(package private) TunnelInfo | TunnelPool.selectTunnel()Pull a random tunnel out of the pool. |
(package private) TunnelInfo | AliasedTunnelPool.selectTunnel(Hash closestTo) |
(package private) TunnelInfo | TunnelPool.selectTunnel(Hash closestTo)Return the tunnel from the pool that is XOR-closest to the target. |
| Modifier and Type | Method and Description |
|---|---|
List<TunnelInfo> | AliasedTunnelPool.listTunnels() |
List<TunnelInfo> | TunnelPool.listTunnels()List of tunnels currently in the pool. |
| Modifier and Type | Method and Description |
|---|---|
protected void | AliasedTunnelPool.addTunnel(TunnelInfo info) |
protected void | TunnelPool.addTunnel(TunnelInfo info)Add a tunnel to the pool. |
(package private) static int | TunnelPool.getTunnelAvgLatency(TunnelInfo t)Average test latency for a tunnel. |
boolean | TunnelPoolManager.isValidTunnel(Hash client,
TunnelInfo tunnel)Check if a tunnel is valid and belongs to the client's pool. |
(package private) static boolean | TunnelPeerSelector.matchesExistingTunnel(TunnelInfo existing,
List<Hash> newPeers,
boolean isInbound)Compare a newly selected peer sequence (excluding self) against one
existing tunnel. |
(package private) static boolean | TunnelPool.passesScanGates(TunnelInfo info,
long now,
boolean longTunnelsOnly)Whether a pooled tunnel passes the scan eligibility gates: not
failed, not over the consecutive-test-failure cap (test failures are
often reply-path problems, not tunnel quality), non-expired, and —
on the first pass — longer than a single hop. |
(package private) void | AliasedTunnelPool.removeTunnel(TunnelInfo info) |
(package private) void | TunnelPool.removeTunnel(TunnelInfo info)Remove a tunnel from the pool. |
(package private) boolean | TunnelPool.removeTunnelSynchronous(TunnelInfo info)Synchronous tunnel removal for use during recovery or critical situations. |
(package private) void | AliasedTunnelPool.tunnelFailed(TunnelInfo cfg) |
(package private) void | TunnelPool.tunnelFailed(TunnelInfo cfg)Remove tunnel and blame all peers (not necessarily equally). |
(package private) void | AliasedTunnelPool.tunnelFailed(TunnelInfo cfg,
Hash blamePeer) |
(package private) void | TunnelPool.tunnelFailed(TunnelInfo cfg,
Hash blamePeer)Remove the tunnel and blame only one peer. |
| Modifier and Type | Method and Description |
|---|---|
(package private) static BuildExecutor.ExpiryBuckets | BuildExecutor.countExpiryBuckets(List<TunnelInfo> tunnels,
long now,
boolean allowZeroHop)Count a pool's tunnels into cumulative expiry-window buckets. |