From a0762bc4a7771b47c004f523c8d3d636d5b3a11e Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Thu, 21 Feb 2013 16:38:39 -0800 Subject: [PATCH] CLOUDSTACK-1303: Fix NPE when extend vlan with ipv4 only --- server/src/com/cloud/network/NetworkModelImpl.java | 3 +++ utils/src/com/cloud/utils/net/NetUtils.java | 6 ++++++ utils/test/com/cloud/utils/net/NetUtilsTest.java | 5 +++++ 3 files changed, 14 insertions(+) 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")); } }