Merge pull request #1945 from ustcweizhou/isNetworkAWithinNetworkB

CLOUDSTACK-9787: Fix wrong return value in NetUtils.isNetworkAWithinNetworkB
This commit is contained in:
Rajani Karuturi 2017-05-17 10:24:52 +05:30 committed by GitHub
commit 7803c12a1f
2 changed files with 14 additions and 1 deletions

View File

@ -875,7 +875,7 @@ public class NetUtils {
Long[] cidrBLong = cidrToLong(cidrB);
long shift = MAX_CIDR - cidrBLong[1];
return cidrALong[0] >> shift == cidrBLong[0] >> shift;
return (cidrALong[0] >> shift == cidrBLong[0] >> shift) && (cidrALong[1] >= cidrBLong[1]);
}
static boolean areCidrsNotEmpty(String cidrA, String cidrB) {

View File

@ -510,6 +510,19 @@ public class NetUtilsTest {
assertEquals(false, NetUtils.isNetworkAWithinNetworkB("", null));
}
@Test
public void testIsNetworkAWithinNetworkB() {
assertTrue(NetUtils.isNetworkAWithinNetworkB("192.168.30.0/24", "192.168.30.0/23"));
assertTrue(NetUtils.isNetworkAWithinNetworkB("192.168.30.0/24", "192.168.30.0/22"));
assertFalse(NetUtils.isNetworkAWithinNetworkB("192.168.30.0/23", "192.168.30.0/24"));
assertFalse(NetUtils.isNetworkAWithinNetworkB("192.168.30.0/22", "192.168.30.0/24"));
assertTrue(NetUtils.isNetworkAWithinNetworkB("192.168.28.0/24", "192.168.28.0/23"));
assertTrue(NetUtils.isNetworkAWithinNetworkB("192.168.28.0/24", "192.168.28.0/22"));
assertFalse(NetUtils.isNetworkAWithinNetworkB("192.168.28.0/23", "192.168.28.0/24"));
assertFalse(NetUtils.isNetworkAWithinNetworkB("192.168.28.0/22", "192.168.28.0/24"));
assertTrue(NetUtils.isNetworkAWithinNetworkB("192.168.30.0/24", "192.168.28.0/22"));
}
@Test
public void testIsNetworksOverlapWithEmptyValues() {
assertEquals(false, NetUtils.isNetworksOverlap("", null));