Skip to content

Commit 4a7149e

Browse files
author
Alena Prokharchyk
committed
VPC: CS-15580 - don't allow gateway for VPC guest network to be equal to the cidr subnet
Conflicts: server/src/com/cloud/network/NetworkManagerImpl.java server/src/com/cloud/network/vpc/VpcManagerImpl.java
1 parent a1acfd3 commit 4a7149e

5 files changed

Lines changed: 14 additions & 11 deletions

File tree

server/src/com/cloud/network/NetworkManager.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import java.util.Set;
2323

2424
import com.cloud.acl.ControlledEntity.ACLType;
25-
import com.cloud.agent.api.to.NicTO;
2625
import com.cloud.dc.DataCenter;
2726
import com.cloud.dc.Vlan;
2827
import com.cloud.dc.Vlan.VlanType;
@@ -55,7 +54,6 @@
5554
import com.cloud.utils.Pair;
5655
import com.cloud.vm.Nic;
5756
import com.cloud.vm.NicProfile;
58-
import com.cloud.vm.NicVO;
5957
import com.cloud.vm.ReservationContext;
6058
import com.cloud.vm.VMInstanceVO;
6159
import com.cloud.vm.VirtualMachine;

server/src/com/cloud/network/NetworkManagerImpl.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2852,8 +2852,7 @@ protected Network createVpcGuestNetwork(long ntwkOffId, String name, String disp
28522852
networkDomain = vpc.getNetworkDomain();
28532853
}
28542854
//1) Validate if network can be created for VPC
2855-
_vpcMgr.validateGuestNtkwForVpc(_configMgr.getNetworkOffering(ntwkOffId), cidr, networkDomain, owner, vpc, null);
2856-
2855+
_vpcMgr.validateGuestNtkwForVpc(_configMgr.getNetworkOffering(ntwkOffId), cidr, networkDomain, owner, vpc, null, gateway);
28572856
//2) Create network
28582857
Network guestNetwork = createGuestNetwork(ntwkOffId, name, displayText, gateway, cidr, vlanId,
28592858
networkDomain, owner, domainId, pNtwk, zoneId, aclType, subdomainAccess, vpcId);
@@ -4677,7 +4676,7 @@ public Network updateGuestNetwork(long networkId, String name, String displayTex
46774676
//perform below validation if the network is vpc network
46784677
if (network.getVpcId() != null) {
46794678
Vpc vpc = _vpcMgr.getVpc(network.getVpcId());
4680-
_vpcMgr.validateGuestNtkwForVpc(networkOffering, null, null, null,vpc, networkId);
4679+
_vpcMgr.validateGuestNtkwForVpc(networkOffering, null, null, null,vpc, networkId, null);
46814680
}
46824681

46834682
if (networkOfferingId != oldNetworkOfferingId) {

server/src/com/cloud/network/vpc/VpcManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,11 @@ VpcOffering createVpcOffering(String name, String displayText, Map<Service, Set<
6868
* @param networkOwner
6969
* @param vpc TODO
7070
* @param networkId TODO
71+
* @param gateway TODO
7172
* @return
7273
*/
7374
void validateGuestNtkwForVpc(NetworkOffering guestNtwkOff, String cidr, String networkDomain, Account networkOwner,
74-
Vpc vpc, Long networkId);
75+
Vpc vpc, Long networkId, String gateway);
7576

7677
/**
7778
* @return

server/src/com/cloud/network/vpc/VpcManagerImpl.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -858,11 +858,11 @@ public boolean shutdownVpc(long vpcId) throws ConcurrentOperationException, Reso
858858
@Override
859859
@DB
860860
public void validateGuestNtkwForVpc(NetworkOffering guestNtwkOff, String cidr, String networkDomain,
861-
Account networkOwner, Vpc vpc, Long networkId) {
862-
861+
Account networkOwner, Vpc vpc, Long networkId, String gateway) {
862+
863863
if (networkId == null) {
864864
//1) Validate attributes that has to be passed in when create new guest network
865-
validateNewVpcGuestNetwork(cidr, networkOwner, vpc, networkDomain);
865+
validateNewVpcGuestNetwork(cidr, gateway, networkOwner, vpc, networkDomain);
866866
}
867867

868868
//2) Only Isolated networks with Source nat service enabled can be added to vpc
@@ -914,7 +914,7 @@ public void validateGuestNtkwForVpc(NetworkOffering guestNtwkOff, String cidr, S
914914

915915
}
916916

917-
protected void validateNewVpcGuestNetwork(String cidr, Account networkOwner, Vpc vpc, String networkDomain) {
917+
protected void validateNewVpcGuestNetwork(String cidr, String gateway, Account networkOwner, Vpc vpc, String networkDomain) {
918918
Vpc locked = _vpcDao.acquireInLockTable(vpc.getId());
919919
if (locked == null) {
920920
throw new CloudRuntimeException("Unable to acquire lock on " + vpc);
@@ -954,6 +954,12 @@ protected void validateNewVpcGuestNetwork(String cidr, Account networkOwner, Vpc
954954
throw new InvalidParameterValueException("Network domain of the new network should match network" +
955955
" domain of vpc " + vpc);
956956
}
957+
958+
//6) gateway should never be equal to the cidr subnet
959+
if (NetUtils.getCidrSubNet(cidr).equalsIgnoreCase(gateway)) {
960+
throw new InvalidParameterValueException("Invalid gateway specified. It should never be equal to the cidr subnet value");
961+
}
962+
957963
} finally {
958964
s_logger.debug("Releasing lock for " + locked);
959965
_vpcDao.releaseFromLockTable(locked.getId());

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,6 @@ public static boolean isValidIp(final String ip) {
516516
if (octetString.length() < 1 || octetString.length() > 3) {
517517
return false;
518518
}
519-
520519
}
521520

522521
// IP is good, return true

0 commit comments

Comments
 (0)