From 04570eefed9a0ee1eca1fd700ed5732ba67150ce Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Fri, 20 Dec 2013 16:47:58 +0100 Subject: [PATCH] check vlans and other isolation types --- utils/src/com/cloud/utils/net/NetUtils.java | 44 ++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/utils/src/com/cloud/utils/net/NetUtils.java b/utils/src/com/cloud/utils/net/NetUtils.java index f6f62851adb..5f600e571a6 100755 --- a/utils/src/com/cloud/utils/net/NetUtils.java +++ b/utils/src/com/cloud/utils/net/NetUtils.java @@ -1367,10 +1367,17 @@ public class NetUtils { return resultIp; } + static final String VLAN_PREFIX = "vlan://"; + static final int VLAN_PREFIX_LENGTH = VLAN_PREFIX.length(); + public static boolean isValidVlan(String vlan) { + if (null == vlan || "".equals(vlan)) + return false; + if (vlan.startsWith(VLAN_PREFIX)) + vlan = vlan.substring(VLAN_PREFIX_LENGTH); try { int vnet = Integer.parseInt(vlan); - if (vnet < 0 || vnet > 4096) { + if (vnet <= 0 || vnet >= 4095) { // the valid range is 1- 4094 return false; } return true; @@ -1379,6 +1386,41 @@ public class NetUtils { } } + static final String VLAN_UNTAGGED = "untagged"; + + public static boolean sameIsolationId(String one, String other) + { + // check nulls + // check empty strings + if ((one == null || one.equals("")) + && + (other == null || other.equals(""))) + { + return true; + } + // check 'untagged' + if (VLAN_UNTAGGED.equalsIgnoreCase(one) && VLAN_UNTAGGED.equalsIgnoreCase(other)) + { + return true; + } + // if one is a number check the other as number and as 'vlan://' + number + if (one.startsWith(VLAN_PREFIX)) + { + one = one.substring(VLAN_PREFIX_LENGTH); + } + if (other.startsWith(VLAN_PREFIX)) + { + other = other.substring(VLAN_PREFIX_LENGTH); + } + // check valid uris or numbers + if (one.equals(other)) + { + return true; + } + + return false; + } + // Attention maintainers: these pvlan functions should take into account code // in Networks.BroadcastDomainType, where URI construction is done for other // types of BroadcastDomainTypes