Author: toad
Date: 2006-09-01 18:04:40 +0000 (Fri, 01 Sep 2006)
New Revision: 10326
Modified:
trunk/freenet/src/freenet/io/comm/FreenetInetAddress.java
trunk/freenet/src/freenet/io/comm/Peer.java
trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
trunk/freenet/src/freenet/node/NodeIPDetector.java
trunk/freenet/src/freenet/transport/IPAddressDetector.java
trunk/freenet/src/freenet/transport/IPUtil.java
Log:
Remove old checkAddress code. Java provides methods to classify IP addresses,
use them.
Modified: trunk/freenet/src/freenet/io/comm/FreenetInetAddress.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/FreenetInetAddress.java 2006-09-01
17:54:51 UTC (rev 10325)
+++ trunk/freenet/src/freenet/io/comm/FreenetInetAddress.java 2006-09-01
18:04:40 UTC (rev 10326)
@@ -260,12 +260,12 @@
public boolean isRealInternetAddress(boolean lookup, boolean
defaultVal) {
if(_address != null) {
- return IPUtil.checkAddress(_address);
+ return IPUtil.isValidAddress(_address, false);
} else {
if(lookup) {
InetAddress a = getAddress();
if(a != null)
- return IPUtil.checkAddress(a);
+ return IPUtil.isValidAddress(a, false);
}
return defaultVal;
}
Modified: trunk/freenet/src/freenet/io/comm/Peer.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/Peer.java 2006-09-01 17:54:51 UTC (rev
10325)
+++ trunk/freenet/src/freenet/io/comm/Peer.java 2006-09-01 18:04:40 UTC (rev
10326)
@@ -155,7 +155,7 @@
public InetAddress getAddress(boolean doDNSRequest, boolean allowLocal)
throws LocalAddressException {
InetAddress a = addr.getAddress(doDNSRequest);
if(a == null) return null;
- if(allowLocal || IPUtil.checkAddress(a)) return a;
+ if(allowLocal || IPUtil.isValidAddress(a, false)) return a;
throw new LocalAddressException();
}
Modified: trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
===================================================================
--- trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2006-09-01
17:54:51 UTC (rev 10325)
+++ trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2006-09-01
18:04:40 UTC (rev 10326)
@@ -189,7 +189,7 @@
// Unique IP address?
Peer peer = p.getPeer();
InetAddress addr =
peer.getAddress(false);
- if(p.isConnected() && (peer !=
null) && (addr != null) && IPUtil.checkAddress(peer.getAddress())) {
+ if(p.isConnected() && (peer !=
null) && (addr != null) && IPUtil.isValidAddress(peer.getAddress(), false)) {
// Connected node, on a
real internet IP address.
// Is it internal?
boolean internal =
false;
@@ -380,7 +380,7 @@
failed = true;
for(int i=0;i<v.size();i++) {
DetectedIP ip =
(DetectedIP) v.get(i);
- if(!((ip.publicAddress
== null) || !IPUtil.checkAddress(ip.publicAddress))) {
+ if(!((ip.publicAddress
== null) || !IPUtil.isValidAddress(ip.publicAddress, false))) {
if(logMINOR)
Logger.minor(this, "Address checked out");
failed = false;
}
Modified: trunk/freenet/src/freenet/node/NodeIPDetector.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeIPDetector.java 2006-09-01 17:54:51 UTC
(rev 10325)
+++ trunk/freenet/src/freenet/node/NodeIPDetector.java 2006-09-01 18:04:40 UTC
(rev 10326)
@@ -121,7 +121,7 @@
if((p == null) || p.isNull()) continue;
// DNSRequester doesn't deal with our own node
InetAddress ip = p.getAddress(true);
- if(!IPUtil.checkAddress(ip)) continue;
+ if(!IPUtil.isValidAddress(ip, false)) continue;
Logger.normal(this, "Peer
"+peerList[i].getPeer()+" thinks we are "+p);
if(countsByPeer.containsKey(ip)) {
Integer count = (Integer)
countsByPeer.get(p);
@@ -220,7 +220,7 @@
InetAddress[] addrs = ipDetector.getAddress();
if(addrs == null || addrs.length == 0) return false;
for(int i=0;i<addrs.length;i++) {
- if(IPAddressDetector.isValidAddress(addrs[i], false)) {
+ if(IPUtil.isValidAddress(addrs[i], false)) {
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Has a directly
detected IP: "+addrs[i]);
return true;
Modified: trunk/freenet/src/freenet/transport/IPAddressDetector.java
===================================================================
--- trunk/freenet/src/freenet/transport/IPAddressDetector.java 2006-09-01
17:54:51 UTC (rev 10325)
+++ trunk/freenet/src/freenet/transport/IPAddressDetector.java 2006-09-01
18:04:40 UTC (rev 10326)
@@ -189,7 +189,7 @@
Logger.debug(
this,
"Address " + x + ": " +
i);
- if(isValidAddress(i,
detector.includeLocalAddressesInNoderefs)) {
+ if(IPUtil.isValidAddress(i,
detector.includeLocalAddressesInNoderefs)) {
output.add(i);
}
if(i.isAnyLocalAddress()) {
@@ -210,27 +210,6 @@
lastAddressList = (InetAddress[]) output.toArray(new
InetAddress[output.size()]);
}
- public static boolean isValidAddress(InetAddress i, boolean
includeLocalAddressesInNoderefs) {
- if(i.isAnyLocalAddress()) {
- // Wildcard address, 0.0.0.0, ignore.
- return false;
- } else if(i.isLinkLocalAddress() || i.isLoopbackAddress() ||
- i.isSiteLocalAddress()) {
- if(includeLocalAddressesInNoderefs) {
- return true;
- } else return false;
- } else if(i.isMulticastAddress()) {
- // Ignore
- return false;
- } else {
- return true;
- }
- }
-
- protected boolean isInternetAddress(InetAddress addr) {
- return detector.includeLocalAddressesInNoderefs() ||
IPUtil.checkAddress(addr);
- }
-
public void run() {
while(true) {
try {
Modified: trunk/freenet/src/freenet/transport/IPUtil.java
===================================================================
--- trunk/freenet/src/freenet/transport/IPUtil.java 2006-09-01 17:54:51 UTC
(rev 10325)
+++ trunk/freenet/src/freenet/transport/IPUtil.java 2006-09-01 18:04:40 UTC
(rev 10326)
@@ -1,141 +1,25 @@
package freenet.transport;
import java.net.InetAddress;
-import java.util.StringTokenizer;
-import freenet.support.Logger;
-
public class IPUtil {
static final boolean strict = true;
- /**
- * Is this a valid address? Specifically, return false if it
- * is in an RFC3330 reserved space.
- */
- public static boolean checkAddress(int[] i) {
- // ip address (IPV6 is not supported by this transport)
- boolean logDEBUG = Logger.shouldLog(Logger.DEBUG,IPUtil.class);
- if(logDEBUG)
- Logger.debug(IPUtil.class, "Checking
"+i[0]+"."+i[1]+"."+i[2]+
- "."+i[3]);
- if (i.length != 4)
+ public static boolean isValidAddress(InetAddress i, boolean
includeLocalAddressesInNoderefs) {
+ if(i.isAnyLocalAddress()) {
+ // Wildcard address, 0.0.0.0, ignore.
return false;
-
- for (int j = 0 ; j < 4 ; j++)
- if ((i[j] < 0) || (i[j] > 255))
- return false;
-
- if ((i[0] == 10) || ((i[0] == 172) && (i[1] >= 16) && (i[1] <
31))
- || ((i[0] == 192) && (i[1] == 168))) // local
network
+ } else if(i.isLinkLocalAddress() || i.isLoopbackAddress() ||
+ i.isSiteLocalAddress()) {
+ if(includeLocalAddressesInNoderefs) {
+ return true;
+ } else return false;
+ } else if(i.isMulticastAddress()) {
+ // Ignore
return false;
-
- if ((i[0] == 169) && (i[1] == 254))
- return false; // link local
-
- if ((i[0] == 198) && ((i[1] == 18) || (i[1] == 19)))
- return false; // RFC2544
-
- if ((i[0] == 192) && (i[1] == 0) && (i[2] == 2))
- return false; // test-net, see RFC3330
-
- if (i[0] == 127) // loopback
- return false;
-
- if (i[0] == 0) // "this" net
- return false;
-
- if ((i[0] >= 224) && (i[0] < 240))
- return false; // multicast
-
- return true;
- }
-
- public static boolean checkAddress(InetAddress addr) {
- if(Logger.shouldLog(Logger.DEBUG,IPUtil.class))
Logger.debug(IPUtil.class, "Checking "+addr);
- int[] i = new int[4];
- byte[] bytes = addr.getAddress();
- if(bytes.length != 4) {
- return false;
- }
- for(int x=0;x<4;x++) {
- byte b = bytes[x];
- int ii = b;
- if(ii < 0) ii += 256;
- i[x] = ii;
- }
- return checkAddress(i);
- }
-
- public static boolean checkAddress(byte[] b) {
- if(b.length != 4) {
- return false;
- }
- int[] i = new int[4];
- for(int x=0;x<4;x++) i[x] = b[x] & 0xff;
- return checkAddress(i);
- }
-
- public static boolean checkAddress(String s) {
- return checkAddress(s, false);
- }
-
- public static boolean checkAddress(String s, boolean noPort) {
- boolean logDEBUG = Logger.shouldLog(Logger.DEBUG,IPUtil.class);
- if(logDEBUG)
- Logger.debug(IPUtil.class, "Checking "+s);
- String a = s;
- if(!noPort) {
- StringTokenizer st = new StringTokenizer(s, ":");
- if (st.countTokens() != 2)
- return false;
-
- a = st.nextToken();
- try {
- int p = Integer.parseInt(st.nextToken());
- if ((p < 0) || (p >= (1 << 16)))
- return false;
- } catch (NumberFormatException e) {
- return false;
- }
- }
- if (!strict)
+ } else {
return true;
-
- // strict check
- if(logDEBUG)
- Logger.debug(IPUtil.class, "Strict check");
-
- StringTokenizer at = new StringTokenizer(a, ".");
- int n = at.countTokens();
-
- try {
- int[] i = new int[4];
- for (int j = 0 ; j < 4 ; j++) {
- if (!at.hasMoreTokens()) {
- if(logDEBUG)
- Logger.debug(IPUtil.class,
"Only "+j+" tokens.");
- return false;
- }
- String tok = at.nextToken();
- if(logDEBUG)
- Logger.debug(IPUtil.class, "Trying to
parseInt: "+tok);
- i[j] = Integer.parseInt(tok);
- }
- return checkAddress(i);
- } catch (NumberFormatException e) {
- // dns address
- if (n < 2) {
- if(Logger.shouldLog(Logger.MINOR, IPUtil.class))
- Logger.minor(IPUtil.class, a+": Not a
DNS address, too short!");
- return false;
- }
-
- if(logDEBUG)
- Logger.debug(IPUtil.class, "Apparently valid
DNS address: "+a);
- return true;
- // maybe we should actually look up the IP address here,
- // but I'm concerned about revealing ourselves.
}
}