Author: toad
Date: 2008-09-03 22:29:26 +0000 (Wed, 03 Sep 2008)
New Revision: 22393
Modified:
trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
trunk/freenet/src/freenet/node/NodeCryptoConfig.java
trunk/freenet/src/freenet/node/NodeIPDetector.java
trunk/freenet/src/freenet/node/NodeIPPortDetector.java
trunk/freenet/src/freenet/support/transport/ip/IPAddressDetector.java
Log:
Make includeLocalAddressesInNoderefs per-port i.e. one for opennet, one for
darknet.
Modified: trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
===================================================================
--- trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2008-09-03
22:20:01 UTC (rev 22392)
+++ trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2008-09-03
22:29:26 UTC (rev 22393)
@@ -423,7 +423,7 @@
PeerNode[] peers = node.getPeerNodes();
PeerNode[] conns = node.getConnectedPeers();
int peerCount = node.peers.countValidPeers();
- FreenetInetAddress[] nodeAddrs = detector.getPrimaryIPAddress();
+ FreenetInetAddress[] nodeAddrs =
detector.getPrimaryIPAddress(true);
long now = System.currentTimeMillis();
synchronized(this) {
if(plugins.length == 0) {
Modified: trunk/freenet/src/freenet/node/NodeCryptoConfig.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeCryptoConfig.java 2008-09-03
22:20:01 UTC (rev 22392)
+++ trunk/freenet/src/freenet/node/NodeCryptoConfig.java 2008-09-03
22:29:26 UTC (rev 22393)
@@ -51,6 +51,9 @@
* aggressive handshakes (every 10-30 seconds). */
private boolean assumeNATed;
+ /** If true, include local addresses on noderefs */
+ public boolean includeLocalAddressesInNoderefs;
+
NodeCryptoConfig(SubConfig config, int sortOrder, boolean isOpennet,
SecurityLevels securityLevels) throws NodeInitException {
this.isOpennet = isOpennet;
@@ -199,6 +202,22 @@
}
});
assumeNATed = config.getBoolean("assumeNATed");
+
+ // Include local IPs in noderef file
+
+ config.register("includeLocalAddressesInNoderefs", false,
sortOrder++, true, false, "NodeIPDectector.inclLocalAddress",
"NodeIPDectector.inclLocalAddressLong", new BooleanCallback() {
+
+ public Boolean get() {
+ return includeLocalAddressesInNoderefs;
+ }
+
+ public void set(Boolean val) throws
InvalidConfigValueException {
+ includeLocalAddressesInNoderefs = val;
+ }
+ });
+
+ includeLocalAddressesInNoderefs =
config.getBoolean("includeLocalAddressesInNoderefs");
+
}
/** The number of config options i.e. the amount to increment sortOrder
by */
@@ -264,4 +283,9 @@
public boolean alwaysHandshakeAggressively() {
return assumeNATed;
}
+
+ public boolean includeLocalAddressesInNoderefs() {
+ return includeLocalAddressesInNoderefs;
+ }
+
}
Modified: trunk/freenet/src/freenet/node/NodeIPDetector.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeIPDetector.java 2008-09-03 22:20:01 UTC
(rev 22392)
+++ trunk/freenet/src/freenet/node/NodeIPDetector.java 2008-09-03 22:29:26 UTC
(rev 22393)
@@ -2,6 +2,7 @@
import java.net.InetAddress;
import java.net.UnknownHostException;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
@@ -61,8 +62,6 @@
private static IPUndetectedUserAlert primaryIPUndetectedAlert;
// FIXME redundant? see lastIPAddress
FreenetInetAddress[] lastIP;
- /** If true, include local addresses on noderefs */
- public boolean includeLocalAddressesInNoderefs;
/** Set when we have grounds to believe that we may be behind a
symmetric NAT. */
boolean maybeSymmetric;
private boolean hasDetectedPM;
@@ -97,7 +96,7 @@
*
* Will warn the user with a UserAlert if we don't have sufficient
information.
*/
- FreenetInetAddress[] detectPrimaryIPAddress() {
+ FreenetInetAddress[] detectPrimaryIPAddress(boolean dumpLocalAddresses)
{
boolean addedValidIP = false;
Logger.minor(this, "Redetecting IPs...");
Vector addresses = new Vector();
@@ -131,6 +130,14 @@
hasValidIP = addedValidIP;
}
lastIPAddress = (FreenetInetAddress[]) addresses.toArray(new
FreenetInetAddress[addresses.size()]);
+ if(dumpLocalAddresses) {
+ ArrayList filtered = new
ArrayList(lastIPAddress.length);
+ for(int i=0;i<lastIPAddress.length;i++) {
+
if(IPUtil.isValidAddress(lastIPAddress[i].getAddress(), false))
+ filtered.add(lastIPAddress[i]);
+ }
+ return (FreenetInetAddress[]) filtered.toArray(new
FreenetInetAddress[filtered.size()]);
+ }
return lastIPAddress;
}
@@ -283,8 +290,8 @@
return L10n.getString("NodeIPDetector."+key, pattern, value);
}
- FreenetInetAddress[] getPrimaryIPAddress() {
- if(lastIPAddress == null) return detectPrimaryIPAddress();
+ FreenetInetAddress[] getPrimaryIPAddress(boolean dumpLocal) {
+ if(lastIPAddress == null) return
detectPrimaryIPAddress(dumpLocal);
return lastIPAddress;
}
@@ -321,7 +328,7 @@
}
public void redetectAddress() {
- FreenetInetAddress[] newIP = detectPrimaryIPAddress();
+ FreenetInetAddress[] newIP = detectPrimaryIPAddress(false);
NodeIPPortDetector[] detectors;
synchronized(this) {
if(Arrays.equals(newIP, lastIP)) return;
@@ -337,10 +344,6 @@
this.oldIPAddress = freenetAddress;
}
- public boolean includeLocalAddressesInNoderefs() {
- return includeLocalAddressesInNoderefs;
- }
-
public int registerConfigs(SubConfig nodeConfig, int sortOrder) {
// IP address override
nodeConfig.register("ipAddressOverride", "", sortOrder++, true,
false, "NodeIPDectector.ipOverride",
@@ -444,23 +447,6 @@
}
}
- // Include local IPs in noderef file
-
- nodeConfig.register("includeLocalAddressesInNoderefs", false,
sortOrder++, true, false, "NodeIPDectector.inclLocalAddress",
"NodeIPDectector.inclLocalAddressLong", new BooleanCallback() {
-
- public Boolean get() {
- return includeLocalAddressesInNoderefs;
- }
-
- public void set(Boolean val) throws
InvalidConfigValueException {
- includeLocalAddressesInNoderefs = val;
- lastIPAddress = null;
- ipDetector.clearCached();
- }
- });
-
- includeLocalAddressesInNoderefs =
nodeConfig.getBoolean("includeLocalAddressesInNoderefs");
-
return sortOrder;
}
Modified: trunk/freenet/src/freenet/node/NodeIPPortDetector.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeIPPortDetector.java 2008-09-03
22:20:01 UTC (rev 22392)
+++ trunk/freenet/src/freenet/node/NodeIPPortDetector.java 2008-09-03
22:29:26 UTC (rev 22393)
@@ -49,7 +49,7 @@
// he is on a multi-homed box where only one IP can be
used for Freenet.
return new FreenetInetAddress[] { addr };
}
- return ipDetector.detectPrimaryIPAddress();
+ return
ipDetector.detectPrimaryIPAddress(crypto.config.includeLocalAddressesInNoderefs);
}
/**
Modified: trunk/freenet/src/freenet/support/transport/ip/IPAddressDetector.java
===================================================================
--- trunk/freenet/src/freenet/support/transport/ip/IPAddressDetector.java
2008-09-03 22:20:01 UTC (rev 22392)
+++ trunk/freenet/src/freenet/support/transport/ip/IPAddressDetector.java
2008-09-03 22:29:26 UTC (rev 22393)
@@ -187,9 +187,8 @@
// Wildcard address, 0.0.0.0,
ignore.
} else if(i.isLinkLocalAddress() ||
i.isLoopbackAddress() ||
i.isSiteLocalAddress())
{
-
if(detector.includeLocalAddressesInNoderefs()) {
- output.add(i);
- }
+ // Will be filtered out later
if necessary.
+ output.add(i);
} else if(i.isMulticastAddress()) {
// Ignore
} else {