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


Reply via email to