Skip to content

Commit 2fadfe9

Browse files
committed
CID-1116484 cast to long and use long as cidrsize type
and simpel test
1 parent 637afb9 commit 2fadfe9

2 files changed

Lines changed: 13 additions & 4 deletions

File tree

utils/src/main/java/com/cloud/utils/net/NetUtils.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747

4848
import com.cloud.utils.IteratorUtil;
4949
import com.cloud.utils.Pair;
50+
import com.cloud.utils.exception.CloudRuntimeException;
5051
import com.cloud.utils.script.Script;
5152
import com.googlecode.ipv6.IPv6Address;
5253
import com.googlecode.ipv6.IPv6AddressRange;
@@ -907,14 +908,14 @@ public static String getCidrSubNet(final String cidr) {
907908
if (!isValidIp(cidrAddress)) {
908909
return null;
909910
}
910-
int cidrSizeNum = -1;
911+
long cidrSizeNum = -1;
911912

912913
try {
913914
cidrSizeNum = Integer.parseInt(cidrSize);
914-
} catch (final Exception e) {
915-
return null;
915+
} catch (final NumberFormatException e) {
916+
throw new CloudRuntimeException("cidrsize is not valid", e);
916917
}
917-
final long numericNetmask = 0xffffffff >> MAX_CIDR - cidrSizeNum << MAX_CIDR - cidrSizeNum;
918+
final long numericNetmask = (long)0xffffffff >> MAX_CIDR - cidrSizeNum << MAX_CIDR - cidrSizeNum;
918919
final String netmask = NetUtils.long2Ip(numericNetmask);
919920
return getSubNet(cidrAddress, netmask);
920921
}

utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,8 +418,16 @@ public void testIs31PrefixCidr() {
418418

419419
assertTrue("It should pass! 31 bit prefix.", is31PrefixCidr);
420420
}
421+
421422
@Test
422423
public void testGetCidrSubNet() {
424+
final String cidr = "10.10.0.0/16";
425+
String subnet = NetUtils.getCidrSubNet("10.10.10.10/16");
426+
assertTrue(cidr + " does not contain " + subnet,NetUtils.isIpWithtInCidrRange(subnet, cidr));
427+
}
428+
429+
@Test
430+
public void testGetCidrSubNetWithWidth() {
423431
final String cidr = "10.10.0.0/16";
424432
String subnet = NetUtils.getCidrSubNet("10.10.10.10", 16);
425433
assertTrue(NetUtils.isIpWithtInCidrRange(subnet, cidr));

0 commit comments

Comments
 (0)