CLOUDSTACK-1303: Fix NPE when extend vlan with ipv4 only

This commit is contained in:
Sheng Yang 2013-02-21 16:38:39 -08:00
parent 6823adb3ac
commit a0762bc4a7
3 changed files with 14 additions and 0 deletions

View File

@ -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());

View File

@ -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;

View File

@ -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"));
}
}