Class TunnelPoolSettings

java.lang.Object
net.i2p.router.TunnelPoolSettings

public class TunnelPoolSettings extends Object
Wrap up the settings for a pool of tunnels.
  • Field Details

  • Constructor Details

    • TunnelPoolSettings

      public TunnelPoolSettings(boolean isInbound)
      Exploratory tunnel
    • TunnelPoolSettings

      public TunnelPoolSettings(Hash dest, boolean isInbound)
      Client tunnel unless dest == null
  • Method Details

    • getQuantity

      public int getQuantity()
      how many tunnels should be available at all times
    • setQuantity

      public void setQuantity(int quantity)
    • getBackupQuantity

      public int getBackupQuantity()
      how many backup tunnels should be kept waiting in the wings
    • setBackupQuantity

      public void setBackupQuantity(int quantity)
    • getTotalQuantity

      public int getTotalQuantity()
      Convenience
      Returns:
      getQuantity() + getBackupQuantity()
      Since:
      0.8.11
    • getLength

      public int getLength()
      How many remote hops should be in the tunnel NOT including us
      Returns:
      0 to 7
    • setLength

      public void setLength(int length)
      How many remote hops should be in the tunnel NOT including us
      Parameters:
      length - 0 to 7 (not enforced here)
    • getAllowZeroHop

      public boolean getAllowZeroHop()
      If there are no tunnels to build with, will this pool allow 0 hop tunnels? As of 0.9.44, same goes for exploratory: Prior to 0.9.35, generally true for client. As of 0.9.35, generally false for client, but true if getLength() + Math.min(getLengthVariance(), 0) <= 0, OR if getLengthOverride() == 0 OR if setAllowZeroHop(true) was called or set in properties.
    • setAllowZeroHop

      @Deprecated public void setAllowZeroHop(boolean ok)
      Deprecated.
      unused
      If there are no tunnels to build with, will this pool allow 0 hop tunnels? No effect on exploratory (always true)
      Parameters:
      ok - if true, getAllowZeroHop() will always return true if false, getAllowZeroHop will return as documented.
    • getLengthVariance

      public int getLengthVariance()
      how should the length be varied. if negative, this randomly skews from (length - variance) to (length + variance), or if positive, from length to (length + variance), inclusive.
    • setLengthVariance

      public void setLengthVariance(int variance)
    • getLengthOverride

      public int getLengthOverride()
      A temporary length to be used due to network conditions. If less than zero, the standard length should be used. Unused until 0.8.11
    • setLengthOverride

      public void setLengthOverride(int length)
      A temporary length to be used due to network conditions. If less than zero, the standard length will be used. Unused until 0.8.11
    • isInbound

      public boolean isInbound()
      is this an inbound tunnel?
    • isExploratory

      public boolean isExploratory()
      is this an exploratory tunnel (or a client tunnel)
    • getDestination

      public Hash getDestination()
      what destination is this a client tunnel for (or null if exploratory)
    • getAliases

      public Set<Hash> getAliases()
      Other destinations that use the same tunnel (or null if exploratory) Modifiable, concurrent, not a copy
      Since:
      0.9.21
    • getAliasOf

      public Hash getAliasOf()
      Other destination that this is an alias of (or null). If non-null, don't build tunnels.
      Since:
      0.9.21
    • setAliasOf

      public void setAliasOf(Hash h)
      Set other destination that this is an alias of (or null). If non-null, don't build tunnels.
      Since:
      0.9.21
    • getRandomKey

      public SessionKey getRandomKey()
      random key used for peer ordering
      Returns:
      non-null
    • getDestinationNickname

      public String getDestinationNickname()
      what user supplied name was given to the client connected (can be null)
    • setDestinationNickname

      public void setDestinationNickname(String name)
    • getIPRestriction

      public int getIPRestriction()
      How many bytes to match to determine if a router's IP is too close to another's to be in the same tunnel (1-4, 0 to disable) Support removed in the ClientPeerSelector in 0.8.6; restored in 0.9.53
      Returns:
      0-4 Number of bytes to match to determine if peers in the same IP range should not be in the same tunnel. 0 = disable check; 1 = /8; 2 = /16; 3 = /24; 4 = exact IP match
    • getPriority

      public int getPriority()
      Outbound message priority - for outbound tunnels only
      Returns:
      -25 to +30, default 30 for outbound exploratory and 0 for others
      Since:
      0.9.4
    • getUnknownOptions

      public Properties getUnknownOptions()
      Returns:
      non-null
    • readFromProperties

      public void readFromProperties(String prefix, Properties props)
      Defaults in props are NOT honored. In-JVM client side must promote defaults to the primary map.
      Parameters:
      prefix - non-null
    • writeToProperties

      public void writeToProperties(String prefix, Properties props)
      Parameters:
      prefix - non-null
    • toString

      public String toString()
      Overrides:
      toString in class Object