diff --git a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java index e0d2c877fbb..4f7277256a4 100644 --- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java @@ -217,6 +217,18 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager { throw new InvalidParameterValueException("The vpn connection with specified customer gateway id " + " already exists!", idList); } + + String[] cidrList = customerGateway.getGuestCidrList().split(","); + String vpcCidr = _vpcDao.findById(vpnGateway.getVpcId()).getCidr(); + for (String cidr : cidrList) { + if (NetUtils.isNetworksOverlap(vpcCidr, cidr)) { + List idList = new ArrayList(); + idList.add(new IdentityProxy(customerGateway, customerGatewayId, "customerGatewayId")); + throw new InvalidParameterValueException("The subnet of customer gateway " + cidr + " is overlapped with VPC cidr " + + vpcCidr + "!", idList); + } + } + Site2SiteVpnConnectionVO conn = new Site2SiteVpnConnectionVO(owner.getAccountId(), owner.getDomainId(), vpnGatewayId, customerGatewayId); conn.setState(State.Pending); _vpnConnectionDao.persist(conn);