mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-5826: do netmask/gateway validation before calculating the POD cidr
Conflicts: server/src/com/cloud/configuration/ConfigurationManagerImpl.java utils/src/com/cloud/utils/net/NetUtils.java
This commit is contained in:
parent
5e615f74b6
commit
418f8cb60e
|
|
@ -1207,6 +1207,16 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
|
|||
@Override
|
||||
public Pod createPod(long zoneId, String name, String startIp, String endIp, String gateway, String netmask,
|
||||
String allocationState) {
|
||||
|
||||
// Check if the gateway is a valid IP address
|
||||
if (!NetUtils.isValidIp(gateway)) {
|
||||
throw new InvalidParameterValueException("The gateway is invalid");
|
||||
}
|
||||
|
||||
if (!NetUtils.isValidNetmask(netmask)) {
|
||||
throw new InvalidParameterValueException("The netmask is invalid");
|
||||
}
|
||||
|
||||
String cidr = NetUtils.ipAndNetMaskToCidr(gateway, netmask);
|
||||
Long userId = UserContext.current().getCallerUserId();
|
||||
|
||||
|
|
|
|||
|
|
@ -26,21 +26,27 @@ import java.net.NetworkInterface;
|
|||
import java.net.SocketException;
|
||||
import java.net.URI;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Formatter;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.TreeSet;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.apache.commons.lang.SystemUtils;
|
||||
import org.apache.commons.net.util.SubnetUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.googlecode.ipv6.IPv6Address;
|
||||
import com.googlecode.ipv6.IPv6AddressRange;
|
||||
import com.googlecode.ipv6.IPv6Network;
|
||||
|
||||
import com.cloud.utils.IteratorUtil;
|
||||
import com.cloud.utils.Pair;
|
||||
import org.apache.commons.net.util.SubnetUtils;
|
||||
import com.cloud.utils.script.Script;
|
||||
import org.apache.commons.lang.SystemUtils;
|
||||
import com.googlecode.ipv6.IPv6Address;
|
||||
import com.googlecode.ipv6.IPv6AddressRange;
|
||||
import com.googlecode.ipv6.IPv6Network;
|
||||
|
||||
public class NetUtils {
|
||||
protected final static Logger s_logger = Logger.getLogger(NetUtils.class);
|
||||
|
|
@ -763,6 +769,14 @@ public class NetUtils {
|
|||
}
|
||||
|
||||
public static String ipAndNetMaskToCidr(String ip, String netmask) {
|
||||
|
||||
if (!isValidIp(ip)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!isValidNetmask(netmask)) {
|
||||
return null;
|
||||
}
|
||||
long ipAddr = ip2Long(ip);
|
||||
long subnet = ip2Long(netmask);
|
||||
long result = ipAddr & subnet;
|
||||
|
|
|
|||
Loading…
Reference in New Issue