You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ya...@apache.org on 2013/01/30 04:13:17 UTC

[2/2] git commit: IPv6: Verify if requested IPv4/IPv6 addresses are valid

Updated Branches:
  refs/heads/ipv6 1f2147d3e -> 0b62fc4c1


IPv6: Verify if requested IPv4/IPv6 addresses are valid

Also rename NetUtils.isValidIPv6() to NetUtils.isValidIpv6()


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/0b62fc4c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/0b62fc4c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/0b62fc4c

Branch: refs/heads/ipv6
Commit: 0b62fc4c1743bb3f1d61d854d3bca368d146865c
Parents: cb9f2d0
Author: Sheng Yang <sh...@citrix.com>
Authored: Tue Jan 29 18:42:04 2013 -0800
Committer: Sheng Yang <sh...@citrix.com>
Committed: Tue Jan 29 19:08:09 2013 -0800

----------------------------------------------------------------------
 .../configuration/ConfigurationManagerImpl.java    |    2 +-
 .../src/com/cloud/network/NetworkServiceImpl.java  |    6 ++--
 server/src/com/cloud/vm/UserVmManagerImpl.java     |   20 +++++++++++++-
 utils/src/com/cloud/utils/net/NetUtils.java        |    2 +-
 utils/test/com/cloud/utils/net/NetUtilsTest.java   |    8 +++---
 5 files changed, 27 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0b62fc4c/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index 7154dc8..aee3234 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -2372,7 +2372,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         }
         
         if (ipv6) {
-        	if (!NetUtils.isValidIPv6(vlanGatewayv6)) {
+        	if (!NetUtils.isValidIpv6(vlanGatewayv6)) {
         		throw new InvalidParameterValueException("Please specify a valid IPv6 gateway");
         	}
         	if (!NetUtils.isValidIp6Cidr(vlanCidrv6)) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0b62fc4c/server/src/com/cloud/network/NetworkServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java
index df44ce0..98d9342 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -783,12 +783,12 @@ public class NetworkServiceImpl implements  NetworkService, Manager {
         }
         
         if (ipv6) {
-        	if (!NetUtils.isValidIPv6(startIPv6)) {
+        	if (!NetUtils.isValidIpv6(startIPv6)) {
         		throw new InvalidParameterValueException("Invalid format for the startIPv6 parameter");
         	}
         	if (endIPv6 == null) {
         		endIPv6 = startIPv6;
-        	} else if (!NetUtils.isValidIPv6(endIPv6)) {
+        	} else if (!NetUtils.isValidIpv6(endIPv6)) {
         		throw new InvalidParameterValueException("Invalid format for the endIPv6 parameter");
         	}
         	
@@ -796,7 +796,7 @@ public class NetworkServiceImpl implements  NetworkService, Manager {
         		throw new InvalidParameterValueException("ip6Gateway and ip6Cidr should be defined when startIPv6/endIPv6 are passed in");
         	}
         	
-        	if (!NetUtils.isValidIPv6(ip6Gateway)) {
+        	if (!NetUtils.isValidIpv6(ip6Gateway)) {
         		throw new InvalidParameterValueException("Invalid ip6Gateway");
         	}
         	if (!NetUtils.isValidIp6Cidr(ip6Cidr)) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0b62fc4c/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 491f8a2..1bc7edb 100644
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -2376,6 +2376,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
             
             if (requestedIpPair == null) {
             	requestedIpPair = new IpAddresses(null, null);
+            } else {
+            	checkRequestedIpAddresses(requestedIpPair.getIp4Address(), requestedIpPair.getIp6Address());
             }
             
             NicProfile profile = new NicProfile(requestedIpPair.getIp4Address(), requestedIpPair.getIp6Address());
@@ -2383,7 +2385,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
             if (defaultNetworkNumber == 0) {
                 defaultNetworkNumber++;
                 // if user requested specific ip for default network, add it
-                if (defaultIps.getIp4Address() != null || defaultIps.getIp4Address() != null) {
+                if (defaultIps.getIp4Address() != null || defaultIps.getIp6Address() != null) {
+                	checkRequestedIpAddresses(defaultIps.getIp4Address(), defaultIps.getIp6Address());
                     profile = new NicProfile(defaultIps.getIp4Address(), defaultIps.getIp6Address());
                 }
 
@@ -2521,7 +2524,20 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
         return vm;
     }
 
-    private void validateUserData(String userData) {
+    private void checkRequestedIpAddresses(String ip4, String ip6) throws InvalidParameterValueException {
+    	if (ip4 != null) {
+    		if (!NetUtils.isValidIp(ip4)) {
+    			throw new InvalidParameterValueException("Invalid specified IPv4 address " + ip4);
+    		}
+    	}
+    	if (ip6 != null) {
+    		if (!NetUtils.isValidIpv6(ip6)) {
+    			throw new InvalidParameterValueException("Invalid specified IPv6 address " + ip6);
+    		}
+    	}
+	}
+
+	private void validateUserData(String userData) {
         byte[] decodedUserData = null;
         if (userData != null) {
             if (!Base64.isBase64(userData)) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0b62fc4c/utils/src/com/cloud/utils/net/NetUtils.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/net/NetUtils.java b/utils/src/com/cloud/utils/net/NetUtils.java
index e3bf707..d121ff0 100755
--- a/utils/src/com/cloud/utils/net/NetUtils.java
+++ b/utils/src/com/cloud/utils/net/NetUtils.java
@@ -1146,7 +1146,7 @@ public class NetUtils {
         return true;
     }
 
-	public static boolean isValidIPv6(String ip) {
+	public static boolean isValidIpv6(String ip) {
 		try {
 			IPv6Address address = IPv6Address.fromString(ip);
 		} catch (IllegalArgumentException ex) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0b62fc4c/utils/test/com/cloud/utils/net/NetUtilsTest.java
----------------------------------------------------------------------
diff --git a/utils/test/com/cloud/utils/net/NetUtilsTest.java b/utils/test/com/cloud/utils/net/NetUtilsTest.java
index 9beb6ca..c256d6d 100644
--- a/utils/test/com/cloud/utils/net/NetUtilsTest.java
+++ b/utils/test/com/cloud/utils/net/NetUtilsTest.java
@@ -75,10 +75,10 @@ public class NetUtilsTest extends TestCase {
     }
     
     public void testIpv6() {
-    	assertTrue(NetUtils.isValidIPv6("fc00::1"));
-    	assertFalse(NetUtils.isValidIPv6(""));
-    	assertFalse(NetUtils.isValidIPv6(null));
-    	assertFalse(NetUtils.isValidIPv6("1234:5678::1/64"));
+    	assertTrue(NetUtils.isValidIpv6("fc00::1"));
+    	assertFalse(NetUtils.isValidIpv6(""));
+    	assertFalse(NetUtils.isValidIpv6(null));
+    	assertFalse(NetUtils.isValidIpv6("1234:5678::1/64"));
     	assertTrue(NetUtils.isValidIp6Cidr("1234:5678::1/64"));
     	assertFalse(NetUtils.isValidIp6Cidr("1234:5678::1"));
     	assertEquals(NetUtils.getIp6CidrSize("1234:5678::1/32"), 32);