From dccace914ebb09bbd9a4084f5cb989395b786a36 Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Tue, 5 Dec 2023 11:36:10 -0500 Subject: [PATCH] address comments --- .../engine/orchestration/NetworkOrchestrator.java | 2 +- .../cloud/configuration/ConfigurationManagerImpl.java | 4 ++-- .../main/java/com/cloud/network/NetworkServiceImpl.java | 2 +- .../main/java/com/cloud/network/vpc/VpcManagerImpl.java | 2 +- utils/src/main/java/com/cloud/utils/net/NetUtils.java | 9 ++++++--- .../src/test/java/com/cloud/utils/net/NetUtilsTest.java | 4 ++-- 6 files changed, 13 insertions(+), 10 deletions(-) diff --git a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java index 0f54dd077d2..eb54923d130 100644 --- a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java +++ b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java @@ -2862,7 +2862,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra // Check if cidr is RFC1918 compliant if the network is Guest Isolated for IPv4 if (cidr != null && ntwkOff.getGuestType() == Network.GuestType.Isolated && ntwkOff.getTrafficType() == TrafficType.Guest) { - if (!ConfigurationManager.AllowNonRFC1918CompliantIPs.value() && !NetUtils.validateGuestCidr(cidr)) { + if (!NetUtils.validateGuestCidr(cidr, !ConfigurationManager.AllowNonRFC1918CompliantIPs.value())) { throw new InvalidParameterValueException("Virtual Guest Cidr " + cidr + " is not RFC 1918 or 6598 compliant"); } } diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index c695986f6fb..927c174fc38 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -2648,7 +2648,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati zoneName = zone.getName(); } - if (guestCidr != null && !AllowNonRFC1918CompliantIPs.value() && !NetUtils.validateGuestCidr(guestCidr)) { + if (guestCidr != null && !NetUtils.validateGuestCidr(guestCidr, !AllowNonRFC1918CompliantIPs.value())) { throw new InvalidParameterValueException("Please enter a valid guest cidr"); } @@ -2817,7 +2817,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati // checking the following params outside checkzoneparams method as we do // not use these params for updatezone // hence the method below is generic to check for common params - if (guestCidr != null && !AllowNonRFC1918CompliantIPs.value() && !NetUtils.validateGuestCidr(guestCidr)) { + if (guestCidr != null && !NetUtils.validateGuestCidr(guestCidr, !AllowNonRFC1918CompliantIPs.value())) { throw new InvalidParameterValueException("Please enter a valid guest cidr"); } diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java index 74946a482b5..38a6a39c7a8 100644 --- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java @@ -3125,7 +3125,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C if (!NetUtils.isValidIp4Cidr(guestVmCidr)) { throw new InvalidParameterValueException("Invalid format of Guest VM CIDR."); } - if (!ConfigurationManager.AllowNonRFC1918CompliantIPs.value() && !NetUtils.validateGuestCidr(guestVmCidr)) { + if (!NetUtils.validateGuestCidr(guestVmCidr, !ConfigurationManager.AllowNonRFC1918CompliantIPs.value())) { throw new InvalidParameterValueException("Invalid format of Guest VM CIDR. Make sure it is RFC1918 compliant. "); } diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java index 7e46a4c1ed0..9501c6dc06b 100644 --- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java @@ -1216,7 +1216,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } // cidr has to be RFC 1918 complient - if (!ConfigurationManager.AllowNonRFC1918CompliantIPs.value() && !NetUtils.validateGuestCidr(cidr)) { + if (!NetUtils.validateGuestCidr(cidr, !ConfigurationManager.AllowNonRFC1918CompliantIPs.value())) { throw new InvalidParameterValueException("Guest Cidr " + cidr + " is not RFC1918 compliant"); } diff --git a/utils/src/main/java/com/cloud/utils/net/NetUtils.java b/utils/src/main/java/com/cloud/utils/net/NetUtils.java index 137cebb516a..0fb888930be 100644 --- a/utils/src/main/java/com/cloud/utils/net/NetUtils.java +++ b/utils/src/main/java/com/cloud/utils/net/NetUtils.java @@ -1116,7 +1116,7 @@ public class NetUtils { return false; } - public static boolean validateGuestCidr(final String cidr) { + public static boolean validateGuestCidr(final String cidr, boolean checkCompliance) { // RFC 1918 - The Internet Assigned Numbers Authority (IANA) has reserved the // following three blocks of the IP address space for private internets: // 10.0.0.0 - 10.255.255.255 (10/8 prefix) @@ -1133,6 +1133,9 @@ public class NetUtils { return false; } + if (!checkCompliance) { + return true; + } for (String block: allowedNetBlocks) { if (isNetworkAWithinNetworkB(cidr, block)) { return true; @@ -1235,9 +1238,9 @@ public class NetUtils { return true; } - public static boolean validateGuestCidrList(final String guestCidrList) { + public static boolean validateGuestCidrList(final String guestCidrList, boolean checkCompliance) { for (final String guestCidr : guestCidrList.split(",")) { - if (!validateGuestCidr(guestCidr)) { + if (!validateGuestCidr(guestCidr, checkCompliance)) { return false; } } diff --git a/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java b/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java index defb440c2a5..a54f413f61f 100644 --- a/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java +++ b/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java @@ -354,10 +354,10 @@ public class NetUtilsTest { final String[] invalidCidrs = {"172.33.1.0/16", "100.128.1.0/10"}; for (String cidr: validCidrs) { - assertTrue(NetUtils.validateGuestCidr(cidr)); + assertTrue(NetUtils.validateGuestCidr(cidr, true)); } for (String cidr: invalidCidrs) { - assertFalse(NetUtils.validateGuestCidr(cidr)); + assertFalse(NetUtils.validateGuestCidr(cidr, true)); } }