Author: nextgens
Date: 2007-12-15 23:17:02 +0000 (Sat, 15 Dec 2007)
New Revision: 16587
Modified:
trunk/freenet/src/freenet/io/AddressIdentifier.java
trunk/freenet/test/freenet/io/AddressIdentifierTest.java
Log:
AddressIdentifier: add a method to detect ISATAP addresses
Modified: trunk/freenet/src/freenet/io/AddressIdentifier.java
===================================================================
--- trunk/freenet/src/freenet/io/AddressIdentifier.java 2007-12-15 23:13:08 UTC
(rev 16586)
+++ trunk/freenet/src/freenet/io/AddressIdentifier.java 2007-12-15 23:17:02 UTC
(rev 16587)
@@ -31,7 +31,7 @@
* @version $Id$
*/
public class AddressIdentifier {
- public static final Pattern ipv4Pattern, ipv6Pattern,
ipv6PatternWithPercentScopeID;
+ public static final Pattern ipv4Pattern, ipv6Pattern,
ipv6PatternWithPercentScopeID, ipv6ISATAPPattern;
static {
String byteRegex = "([01]?[0-9]?[0-9]?|2[0-4][0-9]|25[0-5])";
@@ -39,9 +39,12 @@
ipv4Pattern = Pattern.compile(ipv4AddressRegex);
String wordRegex = "([0-9a-fA-F]{1,4})";
+ String percentScopeIDRegex = "(?:%[0-9]{1,3})?";
String ipv6AddressRegex = wordRegex + "?:" + wordRegex + ':' +
wordRegex + ':' + wordRegex + ':' + wordRegex + ':' + wordRegex + ':' +
wordRegex + ':' + wordRegex;
+ String ipv6ISATAPAddressRegex = wordRegex + "?:" + wordRegex +
':' + wordRegex + ':' + wordRegex + ":(0){1,4}:5(efe|EFE):" + wordRegex + ':' +
wordRegex;
ipv6Pattern = Pattern.compile(ipv6AddressRegex);
- ipv6PatternWithPercentScopeID =
Pattern.compile(ipv6AddressRegex + "(?:%[0-9]{1,3})?");
+ ipv6PatternWithPercentScopeID =
Pattern.compile(ipv6AddressRegex + percentScopeIDRegex);
+ ipv6ISATAPPattern = Pattern.compile(ipv6ISATAPAddressRegex);
}
public static class AddressType {
@@ -95,4 +98,7 @@
return AddressType.OTHER;
}
+ public static boolean isAnISATAPIPv6Address(String address) {
+ return ipv6ISATAPPattern.matcher(address).matches();
+ }
}
Modified: trunk/freenet/test/freenet/io/AddressIdentifierTest.java
===================================================================
--- trunk/freenet/test/freenet/io/AddressIdentifierTest.java 2007-12-15
23:13:08 UTC (rev 16586)
+++ trunk/freenet/test/freenet/io/AddressIdentifierTest.java 2007-12-15
23:17:02 UTC (rev 16587)
@@ -17,7 +17,6 @@
package freenet.io;
import junit.framework.TestCase;
-import freenet.io.AddressIdentifier;
import freenet.io.AddressIdentifier.AddressType;
/**
@@ -50,5 +49,11 @@
assertEquals(AddressType.OTHER,
AddressIdentifier.getAddressType("1:2:3:4:5:6:7:8:9"));
assertEquals(AddressType.OTHER,
AddressIdentifier.getAddressType("12345:6:7:8:9"));
}
+
+ public void testIsAnISATAPIPv6Address() {
+
assertFalse(AddressIdentifier.isAnISATAPIPv6Address("fe80:0:0:0:203:dff:fe22:420f"));
+
assertFalse(AddressIdentifier.isAnISATAPIPv6Address("fe80:0:5efe:0:203:dff:fe22:420f"));
+
assertTrue(AddressIdentifier.isAnISATAPIPv6Address("2001:1:2:3:0:5efe:c801:20a"));
+ }
}