Updated Branches: refs/heads/network-refactor 759f9bd24 -> 57f084fe5
CLOUDSTACK-1303: Fix NPE when extend vlan with ipv4 only Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/57f084fe Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/57f084fe Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/57f084fe Branch: refs/heads/network-refactor Commit: 57f084fe5c1e70936709a73a13abf68b3b3cb01f Parents: 759f9bd Author: Sheng Yang <[email protected]> Authored: Thu Feb 21 16:38:39 2013 -0800 Committer: Sheng Yang <[email protected]> Committed: Thu Feb 21 16:38:39 2013 -0800 ---------------------------------------------------------------------- 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(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/57f084fe/server/src/com/cloud/network/NetworkModelImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java index 12b7209..e66099b 100644 --- a/server/src/com/cloud/network/NetworkModelImpl.java +++ b/server/src/com/cloud/network/NetworkModelImpl.java @@ -551,6 +551,9 @@ public class NetworkModelImpl implements NetworkModel, Manager{ @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()); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/57f084fe/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 b941a41..1050765 100755 --- a/utils/src/com/cloud/utils/net/NetUtils.java +++ b/utils/src/com/cloud/utils/net/NetUtils.java @@ -1216,6 +1216,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]; @@ -1238,6 +1241,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; http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/57f084fe/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 fae49fd..d90d3fd 100644 --- a/utils/test/com/cloud/utils/net/NetUtilsTest.java +++ b/utils/test/com/cloud/utils/net/NetUtilsTest.java @@ -121,5 +121,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")); } }
