Package net.i2p.router.transport.udp
Class IntroductionManager
java.lang.Object
net.i2p.router.transport.udp.IntroductionManager
Keep track of inbound and outbound introductions.
See http://i2p-projekt.i2p/spec/ssu2 for documentation.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enum
See receiveRelayIntro() -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
This is enforced in EstablishmentManager -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
cleanup()
Loop and cleanup _nonceToAlice Called from EstablishmentManager doFailSafe() so we don't need a cleaner timer here.(package private) int
Combined IPv4 and IPv6(package private) int
introducerCount
(boolean ipv6) Not as elaborate as pickInbound() above.boolean
isInboundTagValid
(long tag) Is this inbound tag currently valid, i.e.int
pickInbound
(RouterAddress current, boolean ipv6, Properties ssuOptions, int howMany) Grab a bunch of peers who are willing to be introducers for us that are locally known (duh) and have published their own SSU address (duh^2).void
Was part of pickInbound(), moved out so we can call it more often(package private) void
receiveHolePunch
(RemoteHostId charlie, byte[] data) We are Alice and we got this from Charlie.(package private) IntroductionManager.RelayIntroResult
receiveRelayIntro
(PeerState2 bob, Hash alice, byte[] data) We are Charlie and we got this from Bob.(package private) void
receiveRelayRequest
(PeerState2 alice, byte[] data) We are Bob and we got this from Alice.(package private) void
receiveRelayResponse
(PeerState2 peer, int status, byte[] data) We are Bob and we got this from Charlie, OR we are Alice and we got this from Bob.void
void
reset()
-
Field Details
-
MAX_OUTBOUND
public static final int MAX_OUTBOUNDThis is enforced in EstablishmentManager- Since:
- 0.8.11
- See Also:
-
-
Constructor Details
-
IntroductionManager
-
-
Method Details
-
reset
public void reset() -
add
-
remove
-
isInboundTagValid
public boolean isInboundTagValid(long tag) Is this inbound tag currently valid, i.e. is the peer still connected?- Since:
- 0.9.50
-
pickInbound
Grab a bunch of peers who are willing to be introducers for us that are locally known (duh) and have published their own SSU address (duh^2). The picked peers have their info tacked on to the ssuOptions parameter for use in the SSU RouterAddress. Try to use "good" peers (i.e. reachable, active) Also, ping all idle peers that were introducers in the last 2 hours, to keep the connection up, since the netDb can have quite stale information, and we want to keep our introducers valid.- Parameters:
current
- current router address, may be nullipv6
- what type is the current address we need introducers for?ssuOptions
- out parameter, options are added- Returns:
- number of introducers added
-
pingIntroducers
public void pingIntroducers()Was part of pickInbound(), moved out so we can call it more often- Since:
- 0.8.11
-
introducerCount
int introducerCount(boolean ipv6) Not as elaborate as pickInbound() above. Just a quick check to see how many volunteers we know, which the Transport uses to see if we need more.- Parameters:
ipv6
- what type of address are they introducing us for- Returns:
- number of peers that have volunteered to introduce us
-
introducedCount
int introducedCount()Combined IPv4 and IPv6- Returns:
- number of peers we have volunteered to introduce
- Since:
- 0.9.3
-
receiveRelayRequest
We are Bob and we got this from Alice. Send Alice's RI and a RelayIntro to Charlie, or reject with a RelayResponse to Alice. We should already have a session with Charlie and definitely with Alice. SSU 2 only.- Since:
- 0.9.55
-
receiveRelayIntro
We are Charlie and we got this from Bob. Send a HolePunch to Alice, who will soon be sending us a SessionRequest. And send a RelayResponse to bob. SSU 2 only.- Returns:
- DELAYED if awaiting Alice RI, DROPPED on fatal error, or REPLIED if we replied to Bob with a RelayResponse
- Since:
- 0.9.55
-
receiveRelayResponse
We are Bob and we got this from Charlie, OR we are Alice and we got this from Bob. If we are Bob, send to Alice. If we are Alice, send a SessionRequest to Charlie. We should already have a session with Charlie, but not necessarily with Alice. SSU 2 only.- Since:
- 0.9.55
-
receiveHolePunch
We are Alice and we got this from Charlie. Send a SessionRequest to Charlie, whether or not we got the Relay Response already. SSU 2 only, out-of-session.- Since:
- 0.9.55
-
cleanup
public void cleanup()Loop and cleanup _nonceToAlice Called from EstablishmentManager doFailSafe() so we don't need a cleaner timer here.- Since:
- 0.9.57
-