diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java index ebe5aa4e02a..7b3717a161f 100644 --- a/server/src/com/cloud/network/NetworkModelImpl.java +++ b/server/src/com/cloud/network/NetworkModelImpl.java @@ -568,6 +568,9 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel { @Override public boolean isIP6AddressAvailableInVlan(long vlanId) { VlanVO vlan = _vlanDao.findById(vlanId); + if (vlan.getIp6Range() == null) { + return false; + } long existedCount = _ipv6Dao.countExistedIpsInVlan(vlanId); BigInteger existedInt = BigInteger.valueOf(existedCount); BigInteger rangeInt = NetUtils.countIp6InRange(vlan.getIp6Range()); diff --git a/utils/src/com/cloud/utils/net/NetUtils.java b/utils/src/com/cloud/utils/net/NetUtils.java index f6b62de1a7b..dd40a33934d 100755 --- a/utils/src/com/cloud/utils/net/NetUtils.java +++ b/utils/src/com/cloud/utils/net/NetUtils.java @@ -1192,6 +1192,9 @@ public class NetUtils { // Can cover 127 bits public static BigInteger countIp6InRange(String ip6Range) { + if (ip6Range == null) { + return null; + } String[] ips = ip6Range.split("-"); String startIp = ips[0]; String endIp = ips[0]; @@ -1214,6 +1217,9 @@ public class NetUtils { } public static boolean isIp6InRange(String ip6, String ip6Range) { + if (ip6Range == null) { + return false; + } String[] ips = ip6Range.split("-"); String startIp = ips[0]; String endIp = null; diff --git a/utils/test/com/cloud/utils/net/NetUtilsTest.java b/utils/test/com/cloud/utils/net/NetUtilsTest.java index 09c6f60ea3e..28bd71f18d7 100644 --- a/utils/test/com/cloud/utils/net/NetUtilsTest.java +++ b/utils/test/com/cloud/utils/net/NetUtilsTest.java @@ -122,5 +122,10 @@ public class NetUtilsTest extends TestCase { assertTrue(NetUtils.isIp6InNetwork("1234:5678::1", "1234:5678::/64")); assertTrue(NetUtils.isIp6InNetwork("1234:5678::ffff:ffff:ffff:ffff", "1234:5678::/64")); assertTrue(NetUtils.isIp6InNetwork("1234:5678::", "1234:5678::/64")); + //Test isIp6InRange + assertTrue(NetUtils.isIp6InRange("1234:5678:abcd::1", "1234:5678:abcd::1-1234:5678:abcd::1")); + assertFalse(NetUtils.isIp6InRange("1234:5678:abcd::1", "1234:5678:abcd::2-1234:5678:abcd::1")); + assertFalse(NetUtils.isIp6InRange("1234:5678:abcd::1", null)); + assertTrue(NetUtils.isIp6InRange("1234:5678:abcd::1", "1234:5678::1-1234:5679::1")); } }