Author: toad
Date: 2007-07-28 20:56:14 +0000 (Sat, 28 Jul 2007)
New Revision: 14414
Modified:
trunk/freenet/src/freenet/node/DarknetPeerNode.java
trunk/freenet/src/freenet/node/FNPPacketMangler.java
trunk/freenet/src/freenet/node/NodeCryptoConfig.java
trunk/freenet/src/freenet/node/OutgoingPacketMangler.java
trunk/freenet/src/freenet/node/PeerNode.java
Log:
Add alwaysAllowLocalAddresses option for darknet and opennet.
Convenient if you have lots of peers on a LAN, and essential if you want to
connect to opennet peers on a LAN.
Modified: trunk/freenet/src/freenet/node/DarknetPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/DarknetPeerNode.java 2007-07-28 18:19:35 UTC
(rev 14413)
+++ trunk/freenet/src/freenet/node/DarknetPeerNode.java 2007-07-28 20:56:14 UTC
(rev 14414)
@@ -310,8 +310,11 @@
return isBurstOnly;
}
- public synchronized boolean allowLocalAddresses() {
- return allowLocalAddresses;
+ public boolean allowLocalAddresses() {
+ synchronized(this) {
+ if(allowLocalAddresses) return true;
+ }
+ return super.allowLocalAddresses();
}
public void setAllowLocalAddresses(boolean setting) {
Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-07-28
18:19:35 UTC (rev 14413)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-07-28
20:56:14 UTC (rev 14414)
@@ -1568,4 +1568,8 @@
public byte[] getCompressedNoderef() {
return crypto.myCompressedFullRef();
}
+
+ public boolean alwaysAllowLocalAddresses() {
+ return crypto.config.alwaysAllowLocalAddresses();
+ }
}
Modified: trunk/freenet/src/freenet/node/NodeCryptoConfig.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeCryptoConfig.java 2007-07-28
18:19:35 UTC (rev 14413)
+++ trunk/freenet/src/freenet/node/NodeCryptoConfig.java 2007-07-28
20:56:14 UTC (rev 14414)
@@ -42,6 +42,10 @@
* NodeCrypto's - this will usually be set for opennet but not for
darknet). */
private boolean oneConnectionPerAddress;
+ /** If true, we will allow to connect to nodes via local (LAN etc) IP
addresses,
+ * regardless of any per-peer setting. */
+ private boolean alwaysAllowLocalAddresses;
+
NodeCryptoConfig(SubConfig config, int sortOrder, boolean onePerIP)
throws NodeInitException {
config.register("listenPort", -1 /* means random */,
sortOrder++, true, true, "Node.port", "Node.portLong", new IntCallback() {
@@ -128,6 +132,21 @@
});
+ config.register("alwaysAllowLocalAddresses", false,
sortOrder++, true, false, "Node.alwaysAllowLocalAddresses",
"Node.alwaysAllowLocalAddressesLong",
+ new BooleanCallback() {
+
+ public boolean get() {
+
synchronized(NodeCryptoConfig.this) {
+ return
alwaysAllowLocalAddresses;
+ }
+ }
+
+ public void set(boolean val) throws
InvalidConfigValueException {
+
synchronized(NodeCryptoConfig.this) {
+
alwaysAllowLocalAddresses = val;
+ }
+ }
+ });
}
/** The number of config options i.e. the amount to increment sortOrder
by */
@@ -153,7 +172,7 @@
crypto = null;
}
- public int getPort() {
+ public synchronized int getPort() {
return portNumber;
}
@@ -170,7 +189,7 @@
}
}
- public FreenetInetAddress getBindTo() {
+ public synchronized FreenetInetAddress getBindTo() {
return bindTo;
}
@@ -182,7 +201,11 @@
return dropProbability;
}
- public boolean oneConnectionPerAddress() {
+ public synchronized boolean oneConnectionPerAddress() {
return oneConnectionPerAddress;
}
+
+ public synchronized boolean alwaysAllowLocalAddresses() {
+ return alwaysAllowLocalAddresses;
+ }
}
Modified: trunk/freenet/src/freenet/node/OutgoingPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/OutgoingPacketMangler.java 2007-07-28
18:19:35 UTC (rev 14413)
+++ trunk/freenet/src/freenet/node/OutgoingPacketMangler.java 2007-07-28
20:56:14 UTC (rev 14414)
@@ -101,4 +101,9 @@
* Get our compressed noderef
*/
public byte[] getCompressedNoderef();
+
+ /**
+ * Always allow local addresses?
+ */
+ public boolean alwaysAllowLocalAddresses();
}
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2007-07-28 18:19:35 UTC
(rev 14413)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2007-07-28 20:56:14 UTC
(rev 14414)
@@ -2651,7 +2651,7 @@
* a local address even if it advertises them.
*/
public boolean allowLocalAddresses() {
- return false;
+ return this.outgoingMangler.alwaysAllowLocalAddresses();
}
/** Is this peer set to ignore source address? If so, we will always
reply to the peer's official