From 07de75191c487de980be795b202b0a8d8bbda4d6 Mon Sep 17 00:00:00 2001 From: Jayapal Date: Fri, 27 Dec 2013 11:13:56 +0530 Subject: [PATCH] Revert "CLOUDSTACK-4622:If a VM from guest network is added to network tier of VPC then IP reservation allows the CIDR to be a superset of Network CIDR for that VPC tier" Reverting this commit as it is breaking vpc deployment, CLOUDSTACK-5652 This reverts commit ab4f095c68d4a4b4fb354b3d95096b193706987d. --- utils/src/com/cloud/utils/net/NetUtils.java | 23 ++----------------- .../com/cloud/utils/net/NetUtilsTest.java | 15 ------------ 2 files changed, 2 insertions(+), 36 deletions(-) diff --git a/utils/src/com/cloud/utils/net/NetUtils.java b/utils/src/com/cloud/utils/net/NetUtils.java index 2972a43d207..f6f62851adb 100755 --- a/utils/src/com/cloud/utils/net/NetUtils.java +++ b/utils/src/com/cloud/utils/net/NetUtils.java @@ -837,32 +837,13 @@ public class NetUtils { } public static boolean isNetworkAWithinNetworkB(String cidrA, String cidrB) { - // This utility returns true if IP range of cidrA is same or lies completely in cidrB - // Returns true if networkA is same as networkB or networkA is a subset of networkB Long[] cidrALong = cidrToLong(cidrA); Long[] cidrBLong = cidrToLong(cidrB); if (cidrALong == null || cidrBLong == null) { return false; } - if (isSameIpRange(cidrA, cidrB)) { - return true; - } - String[] cidrPairFirst = cidrA.split("\\/"); - String[] cidrPairSecond = cidrB.split("\\/"); - - Long networkSizeFirst = Long.valueOf(cidrPairFirst[1]); - Long networkSizeSecond = Long.valueOf(cidrPairSecond[1]); - String ipRangeFirst [] = NetUtils.getIpRangeFromCidr(cidrPairFirst[0], networkSizeFirst); - String ipRangeSecond [] = NetUtils.getIpRangeFromCidr(cidrPairFirst[0], networkSizeSecond); - - long startIpFirst = NetUtils.ip2Long(ipRangeFirst[0]); - long endIpFirst = NetUtils.ip2Long(ipRangeFirst[1]); - long startIpSecond = NetUtils.ip2Long(ipRangeSecond[0]); - long endIpSecond = NetUtils.ip2Long(ipRangeSecond[1]); - - if((startIpFirst >= startIpSecond) && (endIpFirst <= endIpSecond)) - return true; - return false; + long shift = 32 - cidrBLong[1]; + return ((cidrALong[0] >> shift) == (cidrBLong[0] >> shift)); } public static Long[] cidrToLong(String cidr) { diff --git a/utils/test/com/cloud/utils/net/NetUtilsTest.java b/utils/test/com/cloud/utils/net/NetUtilsTest.java index 192ff6d5822..c7407bf05fb 100644 --- a/utils/test/com/cloud/utils/net/NetUtilsTest.java +++ b/utils/test/com/cloud/utils/net/NetUtilsTest.java @@ -174,19 +174,4 @@ public class NetUtilsTest extends TestCase { public void testGetLocalIPString() { assertNotNull(NetUtils.getLocalIPString()); } - - public void testSubnet() { - //Test to check if a cidr is a part of another cidr - //Test 2 same cidrs - assertTrue(NetUtils.isNetworkAWithinNetworkB("10.1.1.0/25", "10.1.1.0/25")); - //Tests when cidrA is smaller than cidrB - assertTrue(NetUtils.isNetworkAWithinNetworkB("10.1.1.0/26", "10.1.1.0/25")); - assertTrue(NetUtils.isNetworkAWithinNetworkB("10.1.1.0/25", "10.1.1.0/24")); - assertTrue(NetUtils.isNetworkAWithinNetworkB("10.1.1.0/23", "10.1.1.0/22")); - assertTrue(NetUtils.isNetworkAWithinNetworkB("192.168.0.0/16" , "192.168.0.0/15")); - //Tests when cidrA is larger than cidrB - assertFalse(NetUtils.isNetworkAWithinNetworkB("10.1.1.0/26", "10.1.1.0/27")); - assertFalse(NetUtils.isNetworkAWithinNetworkB("10.1.1.0/24", "10.1.1.0/25")); - assertFalse(NetUtils.isNetworkAWithinNetworkB("10.1.1.0/22", "10.1.1.0/23")); - } }