net.i2p.router
Class TunnelPoolSettings

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

public class TunnelPoolSettings
extends Object

Wrap up the settings for a pool of tunnels.


Field Summary
static boolean DEFAULT_ALLOW_ZERO_HOP
           
static int DEFAULT_BACKUP_QUANTITY
           
static int DEFAULT_DURATION
           
static int DEFAULT_IP_RESTRICTION
           
static int DEFAULT_QUANTITY
           
static String PREFIX_INBOUND_EXPLORATORY
          prefix used to configure the inbound exploratory pool
static String PREFIX_OUTBOUND_EXPLORATORY
          prefix used to configure the outbound exploratory pool
static String PROP_ALLOW_ZERO_HOP
          don't trust this, always true
static String PROP_BACKUP_QUANTITY
           
static String PROP_DURATION
           
static String PROP_IP_RESTRICTION
           
static String PROP_LENGTH
           
static String PROP_LENGTH_VARIANCE
           
static String PROP_NICKNAME
           
static String PROP_PRIORITY
           
static String PROP_QUANTITY
           
static String PROP_RANDOM_KEY
           
 
Constructor Summary
TunnelPoolSettings(boolean isInbound)
          Exploratory tunnel
TunnelPoolSettings(Hash dest, boolean isInbound)
          Client tunnel unless dest == null
 
Method Summary
 Set<Hash> getAliases()
          Other destinations that use the same tunnel (or null if exploratory) Modifiable, concurrent, not a copy
 Hash getAliasOf()
          Other destination that this is an alias of (or null).
 boolean getAllowZeroHop()
          If there are no tunnels to build with, will this pool allow 0 hop tunnels? Always true for exploratory.
 int getBackupQuantity()
          how many backup tunnels should be kept waiting in the wings
 Hash getDestination()
          what destination is this a client tunnel for (or null if exploratory)
 String getDestinationNickname()
          what user supplied name was given to the client connected (can be null)
 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)
 int getLength()
          How many remote hops should be in the tunnel NOT including us
 int getLengthOverride()
          A temporary length to be used due to network conditions.
 int getLengthVariance()
          how should the length be varied.
 int getPriority()
          Outbound message priority - for outbound tunnels only
 int getQuantity()
          how many tunnels should be available at all times
 Hash getRandomKey()
          random key used for peer ordering
 int getTotalQuantity()
          Convenience
 Properties getUnknownOptions()
           
 boolean isExploratory()
          is this an exploratory tunnel (or a client tunnel)
 boolean isInbound()
          is this an inbound tunnel?
 void readFromProperties(String prefix, Properties props)
          Defaults in props are NOT honored.
 void setAliasOf(Hash h)
          Set other destination that this is an alias of (or null).
 void setAllowZeroHop(boolean ok)
          If there are no tunnels to build with, will this pool allow 0 hop tunnels? No effect on exploratory (always true)
 void setBackupQuantity(int quantity)
           
 void setDestinationNickname(String name)
           
 void setIPRestriction(int b)
           
 void setLength(int length)
          How many remote hops should be in the tunnel NOT including us
 void setLengthOverride(int length)
          A temporary length to be used due to network conditions.
 void setLengthVariance(int variance)
           
 void setQuantity(int quantity)
           
 String toString()
           
 void writeToProperties(String prefix, Properties props)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

PREFIX_INBOUND_EXPLORATORY

public static final String PREFIX_INBOUND_EXPLORATORY
prefix used to configure the inbound exploratory pool

See Also:
Constant Field Values

PREFIX_OUTBOUND_EXPLORATORY

public static final String PREFIX_OUTBOUND_EXPLORATORY
prefix used to configure the outbound exploratory pool

See Also:
Constant Field Values

PROP_NICKNAME

public static final String PROP_NICKNAME
See Also:
Constant Field Values

PROP_QUANTITY

public static final String PROP_QUANTITY
See Also:
Constant Field Values

PROP_BACKUP_QUANTITY

public static final String PROP_BACKUP_QUANTITY
See Also:
Constant Field Values

PROP_DURATION

public static final String PROP_DURATION
See Also:
Constant Field Values

PROP_LENGTH

public static final String PROP_LENGTH
See Also:
Constant Field Values

PROP_LENGTH_VARIANCE

public static final String PROP_LENGTH_VARIANCE
See Also:
Constant Field Values

PROP_ALLOW_ZERO_HOP

public static final String PROP_ALLOW_ZERO_HOP
don't trust this, always true

See Also:
Constant Field Values

PROP_IP_RESTRICTION

public static final String PROP_IP_RESTRICTION
See Also:
Constant Field Values

PROP_PRIORITY

public static final String PROP_PRIORITY
See Also:
Constant Field Values

PROP_RANDOM_KEY

public static final String PROP_RANDOM_KEY
Since:
0.9.17
See Also:
Constant Field Values

DEFAULT_QUANTITY

public static final int DEFAULT_QUANTITY
See Also:
Constant Field Values

DEFAULT_BACKUP_QUANTITY

public static final int DEFAULT_BACKUP_QUANTITY
See Also:
Constant Field Values

DEFAULT_DURATION

public static final int DEFAULT_DURATION
See Also:
Constant Field Values

DEFAULT_ALLOW_ZERO_HOP

public static final boolean DEFAULT_ALLOW_ZERO_HOP
See Also:
Constant Field Values

DEFAULT_IP_RESTRICTION

public static final int DEFAULT_IP_RESTRICTION
See Also:
Constant Field Values
Constructor Detail

TunnelPoolSettings

public TunnelPoolSettings(boolean isInbound)
Exploratory tunnel


TunnelPoolSettings

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

Method Detail

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? Always true for exploratory. Generally true for client, but should probably be ignored... use getLength() + getLengthVariance() > 0 instead.


setAllowZeroHop

public void setAllowZeroHop(boolean ok)
If there are no tunnels to build with, will this pool allow 0 hop tunnels? No effect on exploratory (always true)


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 Hash 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)


setIPRestriction

public void setIPRestriction(int b)

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()

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