From 96ac18d8ed6f27a1ee92200536387ef3f09e4638 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Wed, 1 Aug 2012 15:18:19 -0700 Subject: [PATCH] S2S VPN: CS-15810: Add check for customer gateway subnets / VPC CIDR overlap --- .../cloud/network/vpn/Site2SiteVpnManagerImpl.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java index 3b6e5331e57..83fc1022b93 100644 --- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java @@ -209,6 +209,18 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager { throw new InvalidParameterValueException("The vpn connection with specified customer gateway id " + customerGatewayId + " already exists!"); } + + 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);