Packages that use RouterInfo
Package
Description
Low-level messages sent between routers - the Invisible Internet Network Protocol (I2NP).
Router-specific data structures: RouterInfo and RouterIdentity with their transport addresses and capabilities, router key generation, and the optionally password-protected router private key file.
The I2P router application handles I2P network communication.
Router-specific cryptography: ElGamal+AES garlic encryption (ElGamalAESEngine), session key and tag caching for repeated peer communication (TransientSessionKeyManager), router-family shared keys (FamilyKeyCrypto), and the ratchet and pqc subpackages.
Simplified fake implementations of router interfaces (comm system and friends) for testing and embedded builds.
Garlic message creation, parsing and handling, and the outbound message jobs: one-shot sends, source routing and delivery status handling.
The Kademlia distributed hash table (DHT) network database: lookup, store and explore jobs, the data store, the floodfill variants, and lookup throttling.
Peer profiles and capacity calculation, peer test jobs, peer selection for tunnel building, and the database and tunnel history used for peer selection.
The I2P startup package loads configuration when I2P is started.
Offline analysis tools for detecting Sybil attacks and malicious peer coordination by correlating peer relationships.
Transport framework: the transport lifecycle and pool management, connection handling and bandwidth throttling for the transports (NTCP2 over TCP, SSU over UDP) that carry I2P messages between routers, plus NAT traversal via UPnP and GeoIP country lookups.
NTCP2, the TCP transport: framed, ratchet-encrypted and mutually authenticated connections between routers.
SSU2, the UDP transport: datagram sessions with Holepunch peer discovery, plus the older SSU compatibility code.
Tunnel messages and the tunnel layer: the
TunnelManagerFacade, tunnel build request and reply processing, and the inbound and outbound tunnel structures. Tunnel pool management: pool lifecycle, peer selection, build scheduling and failure handling for client and exploratory tunnels.
Router utility classes: CoDel active queue management, time-decaying collections, a diagnostics ring buffer, CIDR matching, and password management.
Helpers and handlers for the router console user interface, packaged in routerconsole.war and accessible only from JSP files.
Uses of RouterInfo in net.i2p.data.i2np
Methods in net.i2p.data.i2np with parameters of type RouterInfoModifier and TypeMethodDescriptionstatic booleanDatabaseLookupMessage.supportsEncryptedReplies(RouterInfo to) Does this router support encrypted replies?static booleanDatabaseLookupMessage.supportsRatchetReplies(RouterInfo to) Does this router support ratchet replies?Uses of RouterInfo in net.i2p.data.router
Constructors in net.i2p.data.router with parameters of type RouterInfoModifierConstructorDescriptionRouterInfo(RouterInfo old) Used only by Router and PublishLocalRouterInfoJob.Uses of RouterInfo in net.i2p.router
Fields in net.i2p.router declared as RouterInfoModifier and TypeFieldDescriptionprivate RouterInfoRouter._routerInfoOur router info, null until we have one.private final RouterInfoOutNetMessage._targetThe peer the message goes to.Methods in net.i2p.router that return RouterInfoModifier and TypeMethodDescriptionRouter.getRouterInfo()Our current router info.OutNetMessage.getTarget()Specifies the router to which the message should be delivered.abstract RouterInfoNetworkDatabaseFacade.lookupRouterInfoLocally(Hash key) Look up a RouterInfo in the local network database.abstract RouterInfoNetworkDatabaseFacade.store(Hash key, RouterInfo routerInfo) Store a RouterInfo in the network database.Methods in net.i2p.router that return types with arguments of type RouterInfoModifier and TypeMethodDescriptionNetworkDatabaseFacade.getRouters()Public for NetDbRenderer in routerconsole.Methods in net.i2p.router with parameters of type RouterInfoModifier and TypeMethodDescriptionprivate voidBlocklist.banlist(Hash peer, byte[] ip, RouterInfo ri) Queues a ban for a peer matching a blocklist entry.private voidBlocklist.banlistRouter(Hash peer, String reason, String comment, RouterInfo ri) Queues a ban for a router given its info.private voidBlocklist.banlistRouterWithRI(Hash peer, String reason, String comment, RouterInfo ri, String ip) Queues a ban for a router with its info and address.private List<byte[]> Blocklist.getAddresses(RouterInfo pinfo) Will not contain duplicates.private StringBanLogger.getIPFromRouterInfo(RouterInfo router) Extract IP address and port from RouterInfo.private static StringBanlist.getRouterIP(RouterInfo ri) Extract the first reachable IP from a RouterInfo's address list.booleanBlocklist.isBlocklisted(RouterInfo pinfo) Check if a peer is blocklisted by IP address.booleanCommSystemFacade.isInStrictCountry(RouterInfo ri) Whether the given router's country is blocked.voidBanLogger.logBan(Hash hash, String ip, String reason, long durationMs, RouterInfo ri) Log a ban withRouterInfofor direct caps extraction.voidBanLogger.logBanForever(Hash hash, String ip, String reason, RouterInfo ri) Log a permanent ban with RouterInfo for direct caps extraction.abstract voidNetworkDatabaseFacade.publish(RouterInfo localRouterInfo) Publish a RouterInfo to the network database.voidRouter.setRouterInfo(RouterInfo info) Caller must ensure info is valid - no validation done here.abstract RouterInfoNetworkDatabaseFacade.store(Hash key, RouterInfo routerInfo) Store a RouterInfo in the network database.Constructors in net.i2p.router with parameters of type RouterInfoModifierConstructorDescriptionOutNetMessage(RouterContext context, I2NPMessage msg, long expiration, int priority, RouterInfo target) Standard constructor.Uses of RouterInfo in net.i2p.router.crypto
Methods in net.i2p.router.crypto with parameters of type RouterInfoModifier and TypeMethodDescriptionFamilyKeyCrypto.verify(RouterInfo ri) Verify the family signature in a RouterInfo.private FamilyKeyCrypto.ResultFamilyKeyCrypto.verify(RouterInfo ri, String name) Verify the family in a RouterInfo, name already retrieved.booleanFamilyKeyCrypto.verifyOurFamily(RouterInfo ri) Verify the family in a RouterInfo matches ours and the signature is good.Uses of RouterInfo in net.i2p.router.dummy
Fields in net.i2p.router.dummy with type parameters of type RouterInfoModifier and TypeFieldDescriptionprivate final Map<Hash, RouterInfo> DummyNetworkDatabaseFacade._routersRouters this dummy database knows.Methods in net.i2p.router.dummy that return RouterInfoModifier and TypeMethodDescriptionDummyNetworkDatabaseFacade.lookupRouterInfoLocally(Hash key) Look up a router info in the in-memory store.DummyNetworkDatabaseFacade.store(Hash key, RouterInfo routerInfo) Store a key locally.Methods in net.i2p.router.dummy with parameters of type RouterInfoModifier and TypeMethodDescriptionvoidDummyNetworkDatabaseFacade.publish(RouterInfo localRouterInfo) Publish a key to the network.DummyNetworkDatabaseFacade.store(Hash key, RouterInfo routerInfo) Store a key locally.Uses of RouterInfo in net.i2p.router.message
Fields in net.i2p.router.message declared as RouterInfoModifier and TypeFieldDescriptionprivate RouterInfoGarlicConfig._recipientThe router the clove is for.private RouterInfoSendMessageDirectJob._routerThe target's router info, once found.Methods in net.i2p.router.message that return RouterInfoModifier and TypeMethodDescriptionGarlicConfig.getRecipient()The router that should receive and process this clove.Methods in net.i2p.router.message with parameters of type RouterInfoModifier and TypeMethodDescriptionvoidGarlicConfig.setRecipient(RouterInfo info) Router to receive and process this clove.Uses of RouterInfo in net.i2p.router.networkdb.kademlia
Fields in net.i2p.router.networkdb.kademlia declared as RouterInfoModifier and TypeFieldDescriptionprivate final RouterInfoFloodfillNetworkDatabaseFacade.DropLookupFoundJob._infoThe router info being stored.private final RouterInfoDirectLookupJob._oldRIThe entry as it was before the lookup.private final RouterInfoStoreJob.FailedJob._peerThe peer that failed to respond.private final RouterInfoStoreJob.SendSuccessJob._peerThe peer we sent to.private final RouterInfoFloodfillNetworkDatabaseFacade.DelayedPublish.localRouterInfoOur own router info.Fields in net.i2p.router.networkdb.kademlia with type parameters of type RouterInfoModifier and TypeFieldDescriptionprivate final Map<Hash, RouterInfo> FloodfillPeerSelector.FloodfillSelectionCollector._infoCacheRouter infos cached during the search.Methods in net.i2p.router.networkdb.kademlia that return RouterInfoModifier and TypeMethodDescriptionprivate RouterInfoFloodfillPeerSelector.FloodfillSelectionCollector.cachedInfo(Hash entry) Look up the RouterInfo for an entry, caching the result.private static RouterInfoIterativeSearchJob.lookupRIUnvalidated(RouterContext ctx, Hash peer) Look up a peer's RouterInfo in the router's main NetDb, skipping the full validation performed byNetworkDatabaseFacade.lookupRouterInfoLocally(Hash).(package private) RouterInfoKademliaNetworkDatabaseFacade.lookupRIUnvalidated(Hash key) Look up a peer's RouterInfo without running the fullKademliaNetworkDatabaseFacade.validate(RouterInfo)ban cascade.KademliaNetworkDatabaseFacade.lookupRouterInfoLocally(Hash key) This will return immediately with the result or null.KademliaNetworkDatabaseFacade.store(Hash key, RouterInfo routerInfo) Store the routerInfo.(package private) RouterInfoKademliaNetworkDatabaseFacade.store(Hash key, RouterInfo routerInfo, boolean persist) Store the routerInfo.Methods in net.i2p.router.networkdb.kademlia that return types with arguments of type RouterInfoModifier and TypeMethodDescriptionFloodfillNetworkDatabaseFacade.getKnownRouterData()Return all RouterInfo entries from the local data store.KademliaNetworkDatabaseFacade.getRouters()RouterInfos stored in the database.Methods in net.i2p.router.networkdb.kademlia with parameters of type RouterInfoModifier and TypeMethodDescriptionprivate voidKademliaNetworkDatabaseFacade.addContact(Hash key, RouterInfo routerInfo) Insert a newly-stored peer into the routing buckets, gated on two local-only checks (no wire-format change): verify-before-add — a peer merely named in someone else's DatabaseSearchReply has never answered us, so it waits inKademliaNetworkDatabaseFacade._unverifiedPeersuntil direct-contact evidence arrives (a reply, a successful send, or an established session).(package private) static booleanFloodfillPeerSelector.addSameIPFingerprint(Set<Long> maskedIPs, Set<Integer> ports, Set<String> families, RouterContext ctx, Hash peer, RouterInfo pinfo, int mask) Fingerprint a candidate peer into the exclusion accumulators, adding compact masked-IP keys, ports, and the claimed family option.private voidFloodfillPeerSelector.banAndDisconnect(Hash entry, RouterInfo info, String banReason, String logReason, String disconnectReason, long banDuration, long logDuration, long now) Ban, log, and disconnect from a floodfill peer, with separate texts for the banlist, the ban log, and the disconnect reason.private booleanKademliaNetworkDatabaseFacade.banInvalidNTCPAddresses(RouterInfo routerInfo, long now, String caps, String routerId) Checks for invalid NTCP2 addresses in the given RouterInfo and bans the router if any are found.protected I2NPMessageExploreJob.buildMessage(TunnelId replyTunnelId, Hash replyGateway, long expiration, RouterInfo peer) Builds the database lookup message to send to a peer.protected I2NPMessageSearchJob.buildMessage(TunnelId replyTunnelId, Hash replyGateway, long expiration, RouterInfo peer) Build the database search message.private StringKademliaNetworkDatabaseFacade.checkAddressesAndIntroducers(RouterInfo routerInfo, String caps, String routerId, boolean isUs, boolean dontFail) Checks if the router has no valid addresses or introducers and has been published too long ago.private booleanKademliaNetworkDatabaseFacade.checkCountryBlocking(RouterInfo routerInfo, String caps, String routerId, Hash h) Checks if the given router should be blocked due to country restrictions.private StringKademliaNetworkDatabaseFacade.checkExpirationBasedDrop(RouterInfo routerInfo, boolean upLongEnough, long adjustedExpiration, long now, String caps, String routerId, boolean isUs) Checks if the router has expired based on configured expiration time.private StringKademliaNetworkDatabaseFacade.checkFutureRouterInfo(RouterInfo routerInfo, long now, String caps, String routerId, Hash h, boolean isUs) Checks if the given router info was published in the future and bans it if so.private booleanKademliaNetworkDatabaseFacade.checkLU(RouterInfo routerInfo, String caps, String routerId, Hash h) Ban LU (low bandwidth) routers unconditionally for 1 hour.private voidKademliaNetworkDatabaseFacade.checkRouterInfoSigType(Hash h, RouterInfo ri) Reject RouterInfos with unsupported signature types; ban until restart.private StringKademliaNetworkDatabaseFacade.checkRouterVersion(RouterInfo routerInfo, String caps, String routerId, Hash h) Checks if the given router is running a version older than the minimum allowed.private StringKademliaNetworkDatabaseFacade.checkShortExpiration(RouterInfo routerInfo, String caps, String routerId, boolean isUs) Why the router's short expiration is disqualifying, or null.private booleanPersistentDataStore.checkSpoofAndBan(Hash key, RouterInfo ri, PersistentDataStore.RiFlags f) Detect IP spoofing and apply ban decisions for non-storeable peers.private StringKademliaNetworkDatabaseFacade.checkStaleRouterInfo(RouterInfo routerInfo, boolean upLongEnough, int existing, String routerId, boolean isUs) Whether an otherwise-acceptable RouterInfo has aged pastKademliaNetworkDatabaseFacade.computeAdjustedExpiration(int)and should now be dropped.private booleanKademliaNetworkDatabaseFacade.checkXG(RouterInfo routerInfo, String caps, String routerId, Hash h) Whether the router should be XG-banned: an X-tier (unlimited bandwidth) router advertising the G (no tunnels) capability.private FloodfillPeerSelector.PeerClassFloodfillPeerSelector.classifyFloodfillPeer(Hash entry, RouterInfo info, boolean sameIP, long now, boolean enforceHeard, double maxFailRate) Classify a single floodfill peer as GOOD, OK, or BAD for selection.FloodfillPeerSelector.classifyFloodfillPeerForDisplay(Hash entry, RouterInfo info, long now) Classify a floodfill peer for display purposes.private booleanKademliaNetworkDatabaseFacade.containsCapability(RouterInfo ri, char capability) Whether the router advertises the given capability.private booleanTransientDataStore.containsCapability(RouterInfo ri, char capability) True if the router offers the capability.private StringKademliaNetworkDatabaseFacade.dropSlowRouter(RouterInfo routerInfo, long now, int existing, String caps, String routerId) Checks if the given router should be dropped due to being a slow tier (K, L, or M) and outdated.private PersistentDataStore.RiFlagsPersistentDataStore.extractRiFlags(Hash key, RouterInfo ri) Extract classification flags from raw RouterInfo data.private StringFloodfillPeerSelector.getIPFromRouterInfo(RouterInfo ri) Extract IP:port from RouterInfo.private StringKademliaNetworkDatabaseFacade.getRouterId(RouterInfo routerInfo) Generates a short identifier for a router based on its hash.private voidKademliaNetworkDatabaseFacade.handleBanlistAndRemove(RouterInfo ri, Hash key, Job onFailedLookupJob) Banlist a router for one hour as an unreachable low-bandwidth peer older thanKademliaNetworkDatabaseFacade.MIN_VERSION, then drop it from the data store, the routing buckets and the unverified queue.private voidKademliaNetworkDatabaseFacade.handleCustomCapabilityBan(RouterInfo ri, Hash key, Job onFailedLookupJob) Handle banning a router that matches custom capability ban patterns, for four hours.private voidKademliaNetworkDatabaseFacade.handleHostileBlocklist(RouterInfo _ri, Hash key, Job onFailedLookupJob) Drop the RouterInfo of a router tagged hostile on the Banlist, without extending or adding a ban.private voidKademliaNetworkDatabaseFacade.handleIntroducerBan(RouterInfo ri, Hash key, Job onFailedLookupJob) Handle banning a router that advertises more introducers on one address than the SSU2 spec allows.private voidKademliaNetworkDatabaseFacade.handleInvalidRouterInfoBan(RouterInfo ri, Hash key, String reason, Job onFailedLookupJob) Handle banning a RouterInfo that breaks one of the RouterInfo validation rules - fabricated version, impossible publication date, or contradictory reachability flags.private voidKademliaNetworkDatabaseFacade.handlePermanentBlocklist(RouterInfo _ri, Hash key, Job onFailedLookupJob) Drop the RouterInfo of a router already on the permanent blocklist; no new ban entry is written, the existing one stands.(package private) StringKademliaNetworkDatabaseFacade.invalidRouterInfoBanReason(RouterInfo ri) The ban reason if this RouterInfo fails one of the RouterInfo validation rules - a version above every released version, an impossible publication date, or both the reachable and the unreachable flag at once - or null if it passes.(package private) static StringKademliaNetworkDatabaseFacade.invalidRouterInfoBanReason(RouterInfo ri, boolean banVersion, boolean banPubDate, boolean banCaps) The validation rule a RouterInfo breaks, given which of the three rules are switched on.(package private) booleanKademliaNetworkDatabaseFacade.ipDiversityAllows(Hash key, RouterInfo routerInfo) Would adding this peer to its bucket exceed the per-bucket or global IP-group caps? Peers with no literal-IP address are unconstrained.KademliaNetworkDatabaseFacade.ipGroups(RouterInfo ri) The distinct IP groups of a router's literal-IP addresses.static booleanFloodfillNetworkDatabaseFacade.isFloodfill(RouterInfo peer) Checks if a RouterInfo has floodfill capability.private booleanKademliaNetworkDatabaseFacade.isRouterXG(RouterInfo routerInfo, boolean isUs) Determines whether the given router qualifies as an XG router that should be blocked.(package private) static booleanIntroducerLookupJob.isUnreachablePeer(RouterInfo ri) Whether the peer publishes the unreachable capability ('U'), i.e.protected voidFloodfillNetworkDatabaseFacade.lookupBeforeDropping(Hash peer, RouterInfo info) Search for a newer router info, drop it from the db if the search fails, unless just started up or have bigger problems.protected voidKademliaNetworkDatabaseFacade.lookupBeforeDropping(Hash peer, RouterInfo info) Don't use directly - see F.N.D.F.private voidRefreshRoutersJob.performRouterRefresh(Hash routerHash, RouterInfo ri) Performs the router refresh operation by calling the facade search with proper timeout.(package private) voidFloodfillNetworkDatabaseFacade.probeStalePeer(Hash peer, RouterInfo ri) Fire a DirectLookupJob for a stale peer, deduplicated via _activeFloodQueries.voidFloodfillNetworkDatabaseFacade.publish(RouterInfo localRouterInfo) Send our RI to the closest floodfill.voidKademliaNetworkDatabaseFacade.publish(RouterInfo localRouterInfo) Stores to local db only.private booleanSearchJob.resend(RouterInfo toPeer, LeaseSet ls) Resend the leaseSet to the peer who had previously failed to provide us with the data when we asked them.(package private) static intProbeStalePeerJob.score(RouterInfo ri) Score a peer for startup probing priority.private voidStoreJob.sendDirect(DatabaseStoreMessage msg, RouterInfo peer, long expiration) Send a store message directly to a peer with direct reply.protected voidSearchJob.sendLeaseSearch(RouterInfo router) We're (probably) searching for a LeaseSet, so to be (overly) cautious, we're sending the request out through a tunnel w/ reply back through another tunnel.protected voidSearchJob.sendRouterSearch(RouterInfo router) We're searching for a router, so we can just send direct.protected voidSearchJob.sendSearch(RouterInfo router) Send a search to the given peer.private voidStoreJob.sendStore(DatabaseStoreMessage msg, RouterInfo peer, long expiration) Send a store message to a peer via the appropriate delivery method.private voidStoreJob.sendStore(RouterInfo router, int responseTime) Send a store message directly to a peer.private voidStoreJob.sendStoreThroughClient(DatabaseStoreMessage msg, RouterInfo peer, long expiration) Send a leaseset store message out the client tunnel, with the reply to come back through a client tunnel.private voidStoreJob.sendStoreThroughExploratory(DatabaseStoreMessage msg, RouterInfo peer, long expiration) Send it out through an exploratory tunnel, with the reply to come back through an exploratory tunnel.private voidStoreJob.sendWrappedStoreThroughExploratory(DatabaseStoreMessage msg, RouterInfo peer, long expiration) Send a leaseset store message out an exploratory tunnel, with the reply to come back through a exploratory tunnel.private booleanKademliaNetworkDatabaseFacade.shouldBanlistBasedOnCountry(RouterInfo _ri, Hash key) Should we banlist this router based on country restrictions? Checks if: - we are in strict country mode and router is in same country - blockMyCountry is enabled - router is in our country (strict country mode).private booleanKademliaNetworkDatabaseFacade.shouldBanlistByCapability(RouterInfo ri) Determine whether the given router should be banlisted based on custom capability patterns configured by the user.private booleanKademliaNetworkDatabaseFacade.shouldBanlistIntroducers(RouterInfo ri) Determine whether the given router should be banlisted for advertising more introducers on one transport address than the SSU2 spec allows.private booleanKademliaNetworkDatabaseFacade.shouldBanlistLU(RouterInfo ri) Determine whether the given router should be banlisted due to being: - an unreachable L-tier router (CAPABILITY_BW12),private booleanKademliaNetworkDatabaseFacade.shouldBanlistXG(RouterInfo ri) Determine whether the given router should be banlisted due to being an XG router that is neither reachable nor unreachable and the XG banlist option is enabled.private booleanFloodfillNetworkDatabaseFacade.shouldFloodTo(Hash key, int type, SigType lsSigType, Hash peer, RouterInfo target) Determines if we should flood the database store to a peer.private booleanRefreshRoutersJob.shouldRefreshRouter(RouterInfo ri, Hash _routerHash) Determines whether to refresh the given router info.(package private) static booleanStoreJob.shouldStoreEncLS2To(RouterInfo ri) Is it new enough?(package private) static booleanStoreJob.shouldStoreLS2To(RouterInfo ri) Is it new enough?(package private) static booleanStoreJob.shouldStoreTo(RouterInfo ri) Is it new enough?KademliaNetworkDatabaseFacade.store(Hash key, RouterInfo routerInfo) Store the routerInfo.(package private) RouterInfoKademliaNetworkDatabaseFacade.store(Hash key, RouterInfo routerInfo, boolean persist) Store the routerInfo.private StringKademliaNetworkDatabaseFacade.validate(Hash key, RouterInfo routerInfo) Determine whether this routerInfo will be accepted as valid and current given what we know now.(package private) StringKademliaNetworkDatabaseFacade.validate(RouterInfo routerInfo) Determine whether this routerInfo will be accepted as valid and current given what we know now.(package private) static MessageWrapper.WrappedMessageMessageWrapper.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 GarlicMessageMessageWrapper.wrap(RouterContext ctx, I2NPMessage m, RouterInfo to) Garlic wrap a message from nobody, destined for a router, to hide the contents from the OBEP.Constructors in net.i2p.router.networkdb.kademlia with parameters of type RouterInfoModifierConstructorDescriptionDelayedPublish(RouterInfo local) Publish this RouterInfo once the delay has elapsed.DirectLookupJob(RouterContext ctx, FloodfillNetworkDatabaseFacade facade, Hash peer, RouterInfo oldRI, Job onFind, Job onFail) Request is sent to; if null the job fails without sending anything.DropLookupFailedJob(RouterContext ctx, Hash peer, RouterInfo _info) Job to drop the peer after a lookup timeout.DropLookupFoundJob(RouterContext ctx, Hash peer, RouterInfo info) Job to verify a failing peer after a successful lookup.FailedJob(RouterContext enclosingContext, RouterInfo peer) Mark the peer as failed for this search.FailedJob(RouterContext enclosingContext, RouterInfo peer, boolean penalizePeer) Allow the choice as to whether failed searches should count against the peer (such as if we search for a random key).FailedJob(RouterContext enclosingContext, RouterInfo peer, long sendOn) Create a failed job for a peer.SearchMessageSelector(RouterContext context, RouterInfo peer, long expiration, SearchState state) Claims a selector id and records the peer, deadline and search state.SearchUpdateReplyFoundJob(RouterContext context, RouterInfo peer, SearchState state, KademliaNetworkDatabaseFacade facade, SearchJob job) Create job with no tunnel info.SearchUpdateReplyFoundJob(RouterContext context, RouterInfo peer, SearchState state, KademliaNetworkDatabaseFacade facade, SearchJob job, TunnelInfo outTunnel, TunnelInfo replyTunnel) Create job with tunnel info for reply routing.SendSuccessJob(RouterContext enclosingContext, RouterInfo peer) Create a success job for direct delivery.SendSuccessJob(RouterContext enclosingContext, RouterInfo peer, TunnelInfo sendThrough, int size) Create a success job for tunnel delivery.StoreMessageSelector(RouterContext ctx, long storeJobId, RouterInfo peer, long waitingForId, long expiration) Creates a new message selector for database store confirmations.Uses of RouterInfo in net.i2p.router.peermanager
Fields in net.i2p.router.peermanager declared as RouterInfoModifier and TypeFieldDescriptionprivate final RouterInfoPeerTestJob.PeerReplyFoundJob._peerThe peer that replied.private final RouterInfoPeerTestJob.PeerReplyTimeoutJob._peerThe peer whose test timed out.(package private) final RouterInfoPeerTestJob.PeerData.routerInfoThe peer's RouterInfo from the network database (null if not found locally).Methods in net.i2p.router.peermanager that return RouterInfoModifier and TypeMethodDescriptionprivate RouterInfoProfileOrganizer.lookupRouterInfoUnvalidated(Hash peer) Fetch a peer's local RouterInfo without re-running the network database'svalidate().(package private) static RouterInfoProfileOrganizer.lookupRouterInfoUnvalidated(RouterContext ctx, Hash peer) ProfileOrganizer.lookupRouterInfoUnvalidated(Hash)with the context passed in, so the fingerprint builder below is reachable from tests.Methods in net.i2p.router.peermanager that return types with arguments of type RouterInfoModifier and TypeMethodDescriptionprivate Set<RouterInfo> PeerTestJob.selectPeersToTest()Selects peers for testing based on performance and capability criteria.Methods in net.i2p.router.peermanager with parameters of type RouterInfoModifier and TypeMethodDescriptionprivate DatabaseStoreMessagePeerTestJob.buildMessage(RouterInfo peer, TunnelId replyTunnel, Hash replyGateway, long nonce, long expiration) Build a message to test the peer with.private booleanProfileOrganizer.hasUsableTransportAddress(RouterInfo info) Returns true when the RouterInfo has a reachable NTCP/NTCP2/SSU/SSU2 address.private booleanProfileOrganizer.hasValidRouterInfo(Hash peer, RouterInfo info, double buildSuccess, PeerProfile prof) Checks the RouterInfo for hidden flag, stale proof of life, usable transport address, bandwidth tier, and tunnel exclusion.(package private) static booleanProfileOrganizer.needsRouterInfoRefresh(RouterInfo info, PeerProfile profile, long now, long refreshAgeMs) Whether a RouterInfo is old enough that promoting on it risks a build failure: published before the threshold and no proof of life.private voidPeerTestJob.testPeer(RouterInfo peer) Fire off the necessary jobs and messages to test the given peer The message is a store of the peer's RI to itself, with a reply token.Constructors in net.i2p.router.peermanager with parameters of type RouterInfoModifierConstructorDescriptionPeerReplyFoundJob(RouterContext context, RouterInfo peer, TunnelInfo replyTunnel, TunnelInfo sendTunnel) Starts the clock when the tested peer's reply arrived.PeerReplyTimeoutJob(RouterContext context, RouterInfo peer, TunnelInfo replyTunnel, TunnelInfo sendTunnel, PeerTestJob.ReplySelector sel) Schedules timeout handling when no reply arrived in time.Uses of RouterInfo in net.i2p.router.startup
Fields in net.i2p.router.startup declared as RouterInfoModifier and TypeFieldDescriptionprivate RouterInfoLoadRouterInfoJob._usOur own router info, read once.Methods in net.i2p.router.startup that return RouterInfoModifier and TypeMethodDescription(package private) RouterInfoCreateRouterInfoJob.createRouterInfo()Writes 6 files:router.info(standard RI format),router.keys.dat, and 4 individual key files under keyBackup/Uses of RouterInfo in net.i2p.router.sybil
Subclasses with type arguments of type RouterInfo in net.i2p.router.sybilModifier and TypeClassDescriptionprivate static classA dummy list that always returns true on add.Classes in net.i2p.router.sybil that implement interfaces with type arguments of type RouterInfoModifier and TypeClassDescriptionprivate static classOrders router infos by distance from us in the keyspace.Fields in net.i2p.router.sybil declared as RouterInfoModifier and TypeFieldDescriptionfinal RouterInfoPair.r1First router.final RouterInfoPair.r2Second router.Methods in net.i2p.router.sybil that return types with arguments of type RouterInfoModifier and TypeMethodDescriptionMap<Integer, List<RouterInfo>> Analysis.calculateIPGroups16(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their /16 subnet to identify routers in the same /16 network.Map<Integer, List<RouterInfo>> Analysis.calculateIPGroups24(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their /24 subnet to identify routers in the same /24 network.Map<Integer, List<RouterInfo>> Analysis.calculateIPGroups32(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their IP address to identify routers sharing the same IP.Map<Long, List<RouterInfo>> Analysis.calculateIPGroups48(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their IPv6 /48 subnet to identify routers in the same /48 network.Map<Long, List<RouterInfo>> Analysis.calculateIPGroups64(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their IPv6 /64 subnet to identify routers in the same /64 network.Map<String, List<RouterInfo>> Analysis.calculateIPGroupsFamily(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their router family to identify routers in the same family.Analysis.getAllRouters(Hash us) Returns all routers in the network DB, excluding our own router.Analysis.getFloodfills(Hash us) Returns all floodfill routers, excluding our own router.Methods in net.i2p.router.sybil with parameters of type RouterInfoModifier and TypeMethodDescriptionbooleanAnalysis.DummyList.add(RouterInfo ri) intAnalysis.RouterInfoRoutingKeyComparator.compare(RouterInfo l, RouterInfo r) private static byte[]Analysis.getIP(RouterInfo ri) IPv4 only.private static byte[]Analysis.getIPv6(RouterInfo ri) IPv6 only.Method parameters in net.i2p.router.sybil with type arguments of type RouterInfoModifier and TypeMethodDescriptionvoidAnalysis.addProfilePoints(List<RouterInfo> ris, Map<Hash, Points> points) Analyzes router profiles and adds Sybil points for banlisted, newly observed, or poorly performing routers.voidAnalysis.addVersionPoints(List<RouterInfo> ris, Map<Hash, Points> points) Analyzes router versions and adds Sybil points for old, unreachable, or non-floodfill routers.Map<Integer, List<RouterInfo>> Analysis.calculateIPGroups16(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their /16 subnet to identify routers in the same /16 network.Map<Integer, List<RouterInfo>> Analysis.calculateIPGroups24(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their /24 subnet to identify routers in the same /24 network.Map<Integer, List<RouterInfo>> Analysis.calculateIPGroups32(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their IP address to identify routers sharing the same IP.Map<Long, List<RouterInfo>> Analysis.calculateIPGroups48(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their IPv6 /48 subnet to identify routers in the same /48 network.Map<Long, List<RouterInfo>> Analysis.calculateIPGroups64(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their IPv6 /64 subnet to identify routers in the same /64 network.Map<String, List<RouterInfo>> Analysis.calculateIPGroupsFamily(List<RouterInfo> ris, Map<Hash, Points> points) Categorize routers by their router family to identify routers in the same family.voidAnalysis.calculateIPGroupsUs(List<RouterInfo> ris, Map<Hash, Points> points, List<RouterInfo> ri32, List<RouterInfo> ri24, List<RouterInfo> ri16, List<RouterInfo> ri64, List<RouterInfo> ri48) Categorize routers by their proximity to our IP address, grouping them by /32, /24, /16 for IPv4 and /64, /48 for IPv6.doubleAnalysis.calculatePairDistance(List<RouterInfo> ris, Map<Hash, Points> points, List<Pair> pairs) Calculate average pairwise distance between floodfills and identifies routers that are unusually close to each other.voidAnalysis.calculateRouterInfo(Hash us, String usName, List<RouterInfo> ris, Map<Hash, Points> points) Build the version comparison report.private static doubleAnalysis.closestDistance(Hash h, List<RouterInfo> ris) Finds the keyspace distance to the nearest listed router.doubleAnalysis.getAvgMinDist(List<RouterInfo> ris) Calculates the average minimum distance from 200 random routing keys to the closest router in the provided list.Constructors in net.i2p.router.sybil with parameters of type RouterInfoModifierConstructorDescriptionPair(RouterInfo ri1, RouterInfo ri2, BigInteger distance) Holds the two routers and their Kademlia distance.Uses of RouterInfo in net.i2p.router.transport
Fields in net.i2p.router.transport with type parameters of type RouterInfoModifier and TypeFieldDescriptionprivate final Map<Hash, RouterInfo> PeerHTMLRenderer.routerInfoCacheThe cached router infos, by peer, to speed repeated lookups.Methods in net.i2p.router.transport that return RouterInfoModifier and TypeMethodDescriptionprivate RouterInfoPeerHTMLRenderer.getRouterInfoCached(Hash peer) Gets the router info from the cache.Methods in net.i2p.router.transport with parameters of type RouterInfoModifier and TypeMethodDescriptionTransport.bid(RouterInfo toAddress, int dataSize) Request to send a message to the specified router.static byte[]CommSystemFacadeImpl.getCompatibleIP(RouterInfo ri) IP address compatible with our capabilities (IPv4/IPv6).static byte[]CountryLookup.getCompatibleIP(RouterInfo ri) IP address compatible with our capabilities (IPv4/IPv6).(package private) static byte[]CountryLookup.getFirstValidIPOfType(RouterInfo ri, boolean wantIPv6) First valid IP of the specified type (IPv4 or IPv6).(package private) static byte[]CountryLookup.getIP(RouterInfo ri) Return first IP (v4 or v6) we find, any transport.static StringTransportImpl.getRouterIPPort(RouterInfo router) Best IP:port for a router, for ban logging: the direct connection IP from the transport layer, else a compatible address, else any announced address.TransportImpl.getTargetAddresses(RouterInfo target) All available addresses we can use, shuffled and then sorted by cost/preference.static byte[]CommSystemFacadeImpl.getValidIP(RouterInfo ri) Return first valid IP (v4 or v6) we find, any transport.static byte[]CountryLookup.getValidIP(RouterInfo ri) Return first valid IP (v4 or v6) we find, any transport.static booleanTransportUtil.hasUsableTransportAddress(RouterInfo ri) Does this RouterInfo carry at least one address we could still send to?booleanCommSystemFacadeImpl.isInStrictCountry(RouterInfo ri) Are they in a strict country.booleanCountryLookup.isInStrictCountry(RouterInfo ri) Are they in a strict country.(package private) static StringTransportManager.peerIPFromRI(RouterInfo ri) Build thehost:portstring for a peer's first usable transport address, for ban/ghost logging.Uses of RouterInfo in net.i2p.router.transport.ntcp
Fields in net.i2p.router.transport.ntcp declared as RouterInfoModifier and TypeFieldDescriptionprivate final RouterInfoOutboundNTCP2State._aliceRIAlice's router info.Methods in net.i2p.router.transport.ntcp with parameters of type RouterInfoModifier and TypeMethodDescriptionNTCPTransport.bid(RouterInfo toAddress, int dataSize) Bid on sending the message to the target.private NTCPConnectionNTCPTransport.getConnectionOrCreateNew(Hash ih, RouterInfo target) Retrieves an existing NTCPConnection for the given peer hash or creates a new one.private StringNTCPTransport.getIPPortFromRouterInfo(RouterInfo ri) Extract IP:port fromRouterInfofor NTCP transport.private RouterAddressNTCPTransport.getTargetAddress(RouterInfo target) Get first available address we can use.voidInboundEstablishState.gotRI(RouterInfo ri, boolean isHandshake, boolean flood) Validates Alice's RouterInfo and extracts the static key for comparison.voidNTCP2Payload.PayloadCallback.gotRI(RouterInfo ri, boolean isHandshake, boolean flood) Receive a RouterInfo block.voidNTCPConnection.NTCP2ReadState.gotRI(RouterInfo ri, boolean isHandshake, boolean flood) / PayloadCallbacks(package private) static booleanNTCPConnection.isNewerOrNew(RouterInfo old, RouterInfo ri) Whether a RouterInfo we just stored is strictly newer than whatever was stored before (or there was no previous copy, so the store is new).private voidNTCPConnection.sendRouterInfo(RouterInfo ri, boolean shouldFlood) NTCP2 only.private booleanInboundEstablishState.verifyInboundNetworkID(RouterInfo alice) Validates the network ID from a peer's RouterInfo.Constructors in net.i2p.router.transport.ntcp with parameters of type RouterInfoModifierConstructorDescriptionRIBlock(RouterInfo ri, boolean flood) Serializes the RouterInfo and records whether the receiver should flood it.Uses of RouterInfo in net.i2p.router.transport.udp
Methods in net.i2p.router.transport.udp that return RouterInfoModifier and TypeMethodDescriptionprivate RouterInfoPeerTestManager.lookupRIForTest(Hash h) Look up the RouterInfo a Peer Test message refers to, with a short negative cache.(package private) static RouterInfoSSU2Payload.parseRouterInfoSingle(I2PAppContext ctx, ByteArrayInputStream bais) Read a complete RouterInfo from the stream, falling back to an alternate signature verification when the strict parse fails.(package private) static RouterInfoSSU2Payload.recoverRouterInfo(I2PAppContext ctx, ByteArrayInputStream bais, DataFormatException dfe) Alternate verification of a RouterInfo whose strict parse failed: if the signed prefix is valid, return a partially filled-in RI (published = -1) so the session layer can still act on the identity.Methods in net.i2p.router.transport.udp with parameters of type RouterInfoModifier and TypeMethodDescriptionUDPTransport.bid(RouterInfo toAddress, int dataSize) Bid on a message to the given router.PacketBuilder2.buildSessionConfirmedPackets(OutboundEstablishState2 state, RouterInfo ourInfo) Build a new series of SessionConfirmed packets for the given peer, encrypting it as necessary.private RouterAddressIntroductionManager.getAddress(RouterInfo ri, boolean isIPv6) Address out of a RouterInfo.private RouterAddressPeerTestManager.getAddress(RouterInfo ri, boolean isIPv6) Get an address out of a RI.(package private) RouterAddressUDPTransport.getTargetAddress(RouterInfo target) First available address of the target that we can use.voidEstablishmentManager.HPCallback.gotRI(RouterInfo ri, boolean isHandshake, boolean flood) Got an RI block.voidInboundEstablishState2.gotRI(RouterInfo ri, boolean isHandshake, boolean flood) For most errors here we throw a RIException with a reason code, which is caught inInboundEstablishState2.processPayload(byte[], int, int, boolean)to create a PeerStateDestroyed and send a termination with that reason.voidOutboundEstablishState2.gotRI(RouterInfo ri, boolean isHandshake, boolean flood) voidPeerState2.gotRI(RouterInfo ri, boolean isHandshake, boolean flood) Process a received RouterInfo block, storing and possibly flooding it.voidPeerStateDestroyed.gotRI(RouterInfo ri, boolean isHandshake, boolean flood) Process a received RouterInfo block.voidPeerTestManager.PTCallback.gotRI(RouterInfo ri, boolean isHandshake, boolean flood) voidSSU2Payload.PayloadCallback.gotRI(RouterInfo ri, boolean isHandshake, boolean flood) Receive a complete RouterInfo block.private booleanIntroductionManager.receiveRelayIntro(PeerState2 bob, Hash alice, byte[] data, RouterInfo aliceRI) We are Charlie and we got this from Bob.private booleanUDPTransport.rejectFloodfill(Hash to, RouterInfo toAddress) Reject a floodfill router that we have no history with, or that has rejected tunnel creation far more often than it has agreed.private voidPeerTestManager.sendRIandPT(RouterInfo ri, int status, Hash hash, byte[] data, PeerState2 to, long now) Send RI and Peer Test.private voidInboundEstablishState2.validateRouterInfo(RouterInfo ri, RouterAddress ra, String mismatchMessage) Validates the RouterInfo for banning conditions and throws RIException if any issue is found.Uses of RouterInfo in net.i2p.router.tunnel
Fields in net.i2p.router.tunnel declared as RouterInfoModifier and TypeFieldDescriptionprivate RouterInfoOutboundReceiver._nextHopCacheThe cached next hop router info.private RouterInfoTunnelParticipant._nextHopCacheThe cached next hop router info.private RouterInfoInboundGatewayReceiver._targetThe router info of the next hop.Methods in net.i2p.router.tunnel with parameters of type RouterInfoModifier and TypeMethodDescriptionprivate voidOutboundMessageDistributor.distribute(I2NPMessage msg, RouterInfo target, TunnelId tunnel) Warning - as of 0.9.63, msg will be an UnknownI2NPMessage, and must be converted before handling locally.private voidOutboundReceiver.send(TunnelDataMessage msg, RouterInfo ri) Queues the message for sending to the next hop.private voidTunnelParticipant.send(HopConfig config, TunnelDataMessage msg, RouterInfo ri) Forward a tunnel message to the next hop.Uses of RouterInfo in net.i2p.router.tunnel.pool
Methods in net.i2p.router.tunnel.pool that return RouterInfoModifier and TypeMethodDescriptionprivate static RouterInfoTunnelPeerSelector.lookupRouterInfoUnvalidated(RouterContext ctx, Hash peer) Fetch a peer RouterInfo for a message we address to it, preferring the unvalidated store lookup.Methods in net.i2p.router.tunnel.pool with parameters of type RouterInfoModifier and TypeMethodDescriptionbooleanConnectChecker.canConnect(int ourMask, RouterInfo to) Can we connect to "to" based on published addresses?booleanConnectChecker.canConnect(RouterInfo from, int ourMask) Can "from" connect to us based on published addresses?private booleanParticipatingThrottler.checkLowShareAndVersion(String version, boolean isLU, boolean shouldBlockOldRouters, Hash h, boolean shouldDisconnect, boolean isBanned, String caps, int bantime, RouterInfo ri) Checks if a low-share, old-version router should be banned and disconnected.private booleanParticipatingThrottler.checkVersionAndCompressibility(String version, boolean isCompressible, boolean shouldDisconnect, Hash h, boolean isBanned, String caps, RouterInfo ri) Checks router version and compressibility of RouterInfo to decide on banning.private ParticipatingThrottler.ResultParticipatingThrottler.evaluateThrottleConditions(int count, int limit, boolean shouldThrottle, boolean isFast, boolean isLowShare, boolean isUnreachable, Hash h, String caps, boolean isBanned, int bantime, RouterInfo ri, boolean countRequest) Evaluates whether to accept, reject, or drop tunnel requests based on probabilistic rejection curve modulated by system load.intConnectChecker.getInboundMask(RouterInfo us) Our inbound mask.intConnectChecker.getOutboundMask(RouterInfo us) Our outbound mask.private voidParticipatingThrottler.handleExcessiveRequests(Hash h, String caps, int count, int limit, int bantime, RouterInfo ri) Handles excessive tunnel request counts by banning and scheduling disconnect.private voidParticipatingThrottler.handleNoVersion(boolean shouldDisconnect, Hash h, boolean isBanned, String caps, RouterInfo ri, String version) Handles joins from routers whose held RouterInfo carries no version.private voidBuildHandler.handleReq(RouterInfo nextPeerInfo, BuildHandler.BuildMessageState state, BuildRequestRecord req, Hash nextPeer) Actually process the request and send the reply.(package private) static booleanTunnelPeerSelector.hasValidTransportAddress(RouterInfo ri) Address half ofTunnelPeerSelector.hasValidTransportAddress(RouterContext, Hash), split out so a caller that already holds the RouterInfo does not have to probe the netdb a second time for the same entry.private booleanRequestThrottler.isFast(RouterInfo ri) Checks if router has high bandwidth capabilities.private booleanRequestThrottler.isLowShare(RouterInfo ri) Checks if router has low bandwidth sharing capabilities.private booleanRequestThrottler.isUnreachable(RouterInfo ri) Checks whether a router is known to be unreachable.static booleanTunnelPeerSelector.shouldExclude(RouterContext ctx, RouterInfo peer) Should the peer be excluded based on its published caps, crypto, and version?static booleanTunnelPeerSelector.shouldExclude(RouterContext ctx, RouterInfo peer, double buildSuccess) Should the peer be excluded based on its published caps, crypto, and version?private static booleanTunnelPeerSelector.shouldExclude(RouterContext ctx, RouterInfo peer, String excl, boolean isExploratory, double buildSuccess) Should the peer be excluded based on its published caps, crypto, and version?private booleanTunnelPeerSelector.shouldExcludeFloodfillPeer(RouterInfo routerInfo) Whether a floodfill is excluded from tunnel service.Uses of RouterInfo in net.i2p.router.util
Methods in net.i2p.router.util that return RouterInfoModifier and TypeMethodDescriptionprivate static RouterInfoMaskedIPSet.lookupRILocally(RouterContext ctx, Hash peer) This gets the peer from the netdb without validation, for efficiency and to avoid deadlocks.Constructors in net.i2p.router.util with parameters of type RouterInfoModifierConstructorDescriptionMaskedIPSet(RouterContext ctx, Hash peer, RouterInfo pinfo, int mask) The Set of IPs for this peer, with a given mask.MaskedIPSet(RouterContext ctx, RouterInfo pinfo, int mask) The Set of IPs for this peer, with a given mask.Uses of RouterInfo in net.i2p.router.web.helpers
Classes in net.i2p.router.web.helpers that implement interfaces with type arguments of type RouterInfoModifier and TypeClassDescription(package private) classSorts in true binary order, not Base64 string order.Fields in net.i2p.router.web.helpers with type parameters of type RouterInfoModifier and TypeFieldDescriptionprivate static List<RouterInfo> NetDbRouterCache._cachedRoutersThe routers read last time.private static List<RouterInfo> NetDbRenderer._cachedTalliesSourceTally source list the cached tallies were computed from.private final Map<K, List<RouterInfo>> SybilRenderer.FooComparator._oThe routers, by key.private final Map<String, List<RouterInfo>> SybilRenderer.FoofComparator._oThe routers, by name.private final TunnelRenderer.BoundedCache<Hash, RouterInfo> TunnelRenderer.routerInfoCacheCached router infos for the tunnel graph.Methods in net.i2p.router.web.helpers that return RouterInfoModifier and TypeMethodDescriptionprivate RouterInfoNetDbRenderer.lookupRouterInfoWithWait(NetworkDatabaseFacade networkDatabase, Hash hash, long timeout) Looks up a RouterInfo by its hash with a timeout.Methods in net.i2p.router.web.helpers that return types with arguments of type RouterInfoModifier and TypeMethodDescriptionNetDbRouterCache.getSortedRouters()Snapshot of the network database sorted by RouterInfoComparator, cached for the /netdb auto-refresh period.Methods in net.i2p.router.web.helpers with parameters of type RouterInfoModifier and TypeMethodDescriptionprivate voidTunnelRenderer.appendPeerIdentity(StringBuilder sb, Hash h, String hB64, String truncHash, String version, RouterInfo info, String ip, TunnelRenderer.ReverseLookupResult rl, String versionTip, String banlistedTip, String unknownLabel, boolean isBanned) Append the identity cells shared by the peer tables: country flag, router hash link, version with netdb link, tier caps, IP address, and reverse-lookup domain.private voidTunnelRenderer.appendPeerRow(StringBuilder chunkSb, Hash h, RouterInfo info, int tunnelCount, int partCount, int localTunnelCount, int transitTunnelCount, String versionTip, String unknownLabel, String configurePeerTip, String editLabel) Append one tunnel peer count row: identity cells plus local and transit tunnel bars and the edit link.private static intNetDbRenderer.classifyTransports(RouterInfo info) Classifies router transports into bit flags.static intRouterInfoComparator.comp(RouterInfo l, RouterInfo r) Static comparison of two RouterInfos by their hash.intRouterInfoComparator.compare(RouterInfo l, RouterInfo r) Compare two RouterInfos by their hash.TunnelRenderer.getReverseLookupInfo(Hash h, RouterInfo info, long uptime) Performs a cached reverse lookup for the given router hash and its RouterInfo, returning canonical hostname, domain, and cleaned WHOIS data if available.private booleanNetDbRenderer.isUnreachable(RouterInfo ri) Checks whether the router is marked unreachable.private booleanNetDbRenderer.matchesCapabilities(RouterInfo ri, String capabilities) Whether the router matches all capability characters in the filter.private voidNetDbRenderer.renderRouterInfo(StringBuilder buf, RouterInfo routerInfo, boolean isLocalRouter) Renders a single RouterInfo as HTML.private voidNetDbRenderer.renderRouterInfo(StringBuilder buf, RouterInfo routerInfo, boolean isLocalRouter, Map<String, String> rdnsLookups) Renders a single RouterInfo as HTML with optional pre-resolved reverse DNS lookups.private doubleSybilRenderer.renderRouterInfo(StringBuilder buf, RouterInfo info, Hash us, boolean isUs, boolean full) Be careful to use stripHTML for any displayed routerInfo data to prevent vulnerabilities.private voidNetDbRenderer.renderRouterInfoSafe(StringBuilder sb, RouterInfo ri, boolean isLocalRouter, Map<String, String> rdnsLookups) Renders a single RouterInfo, isolating any failure to this one entry.Method parameters in net.i2p.router.web.helpers with type arguments of type RouterInfoModifier and TypeMethodDescriptionprivate NetDbRenderer.RouterTalliesNetDbRenderer.cachedTallies(List<RouterInfo> routers) Overview tallies for the sorted router list, memoized for a few seconds.private voidNetDbRenderer.countFullRouterStats(List<RouterInfo> routers, ObjectCounterUnsafe<String> versions, ObjectCounterUnsafe<String> countries, int[] transportCount, Map<String, int[]> countryTiers) Counts the summary statistics for the /netdb overview in a single pass: versions, countries, transports, and per-country X-tier / floodfill totals.NetDbRenderer.precacheReverseDNSLookups(Collection<RouterInfo> routers) Pre-resolves reverse DNS for the given routers, returning the cached results and queuing the rest for background staggered lookups.private voidSybilRenderer.renderCloseSummary(Writer out, StringBuilder buf, Analysis analysis, double avgMinDist, List<RouterInfo> ris, Map<Hash, Points> points) Render the closest floodfills to our routing key.private voidSybilRenderer.renderCloseTmrwSummary(Writer out, StringBuilder buf, Analysis analysis, Hash us, double avgMinDist, List<RouterInfo> ris, Map<Hash, Points> points) Render the closest floodfills to tomorrow's routing key.private voidSybilRenderer.renderDestSummary(Writer out, StringBuilder buf, Analysis analysis, double avgMinDist, List<RouterInfo> ris, Map<Hash, Points> points) Render the closest floodfills to our published destinations.private voidSybilRenderer.renderDHTSummary(Writer out, StringBuilder buf, Analysis analysis, Hash us, double avgMinDist, List<RouterInfo> ris, Map<Hash, Points> points) Render the closest floodfills to our router hash.private voidSybilRenderer.renderFamilySummary(Writer out, StringBuilder buf, Analysis analysis, List<RouterInfo> ris, Map<Hash, Points> points) Render the family group summary section.private voidSybilRenderer.renderFFSummary(Writer out, StringBuilder buf, List<RouterInfo> ris, double avgMinDist) Render the floodfill summary section.private voidSybilRenderer.renderIP16Summary(Writer out, StringBuilder buf, Analysis analysis, List<RouterInfo> ris, Map<Hash, Points> points) Render the /16 IP group summary.private voidSybilRenderer.renderIP24Summary(Writer out, StringBuilder buf, Analysis analysis, List<RouterInfo> ris, Map<Hash, Points> points) Render the /24 IP group summary.private voidSybilRenderer.renderIP32Summary(Writer out, StringBuilder buf, Analysis analysis, List<RouterInfo> ris, Map<Hash, Points> points) Render the /32 IP group summary.private voidSybilRenderer.renderIP48Summary(Writer out, StringBuilder buf, Analysis analysis, List<RouterInfo> ris, Map<Hash, Points> points) Render the /48 IPv6 group summary.private voidSybilRenderer.renderIP64Summary(Writer out, StringBuilder buf, Analysis analysis, List<RouterInfo> ris, Map<Hash, Points> points) Render the /64 IPv6 group summary.private voidSybilRenderer.renderIPGroups16(Writer out, StringBuilder buf, Map<Integer, List<RouterInfo>> map) Render the HTML for /16 IP groups.private voidSybilRenderer.renderIPGroups24(Writer out, StringBuilder buf, Map<Integer, List<RouterInfo>> map) Render the HTML for /24 IP groups.private voidSybilRenderer.renderIPGroups32(Writer out, StringBuilder buf, Map<Integer, List<RouterInfo>> map) Render the HTML for /32 IP groups (same IPv4 address).private voidSybilRenderer.renderIPGroups48(Writer out, StringBuilder buf, Map<Long, List<RouterInfo>> map) Render the HTML for /48 IPv6 groups.private voidSybilRenderer.renderIPGroups64(Writer out, StringBuilder buf, Map<Long, List<RouterInfo>> map) Render the HTML for /64 IPv6 groups.private voidSybilRenderer.renderIPGroupsFamily(Writer out, StringBuilder buf, Map<String, List<RouterInfo>> map) Render the HTML for router family groups.private voidSybilRenderer.renderIPGroupsUs(Writer out, StringBuilder buf, List<RouterInfo> ri32, List<RouterInfo> ri24, List<RouterInfo> ri16, List<RouterInfo> ri64, List<RouterInfo> ri48) Render the HTML for IP groups matching our own IP address.private voidSybilRenderer.renderIPUsSummary(Writer out, StringBuilder buf, Analysis analysis, List<RouterInfo> ris, Map<Hash, Points> points) Render the IP group summary for our own IP address.private voidSybilRenderer.renderPairSummary(Writer out, StringBuilder buf, Analysis analysis, List<RouterInfo> ris, Map<Hash, Points> points) Render the pairwise distance summary.private voidSybilRenderer.renderRouterInfoHTML(Writer out, StringBuilder buf, Hash us, double avgMinDist, List<RouterInfo> ris) Render routers closer than MIN_CLOSE up to MAX routers.NetDbRenderer.renderRouterInfosInParallel(Collection<RouterInfo> routerInfos, boolean isLocalRouter) Renders multiple RouterInfo objects in parallel, in ordered chunks of BATCH_SIZE.voidNetDbRenderer.renderRoutersToWriter(Collection<RouterInfo> routers, Writer out, boolean isLocal, int page, int pageSize) Renders a list of RouterInfo objects to the given Writer.voidNetDbRenderer.renderRoutersToWriter(Collection<RouterInfo> routers, Writer out, boolean isLocal, int page, int pageSize, boolean applyPagination) Renders a list of RouterInfo objects to the given Writer.Constructor parameters in net.i2p.router.web.helpers with type arguments of type RouterInfoModifierConstructorDescriptionFooComparator(Map<K, List<RouterInfo>> o) Orders keys by how many routers share each, most first.FoofComparator(Map<String, List<RouterInfo>> o) Orders names by how many routers share each, most first.