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"));
+       }

 }


Reply via email to