X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fswitchmanager%2Fapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fswitchmanager%2FSubnet.java;h=1deda7c9d0d73ff3250dbcbcb2d08c215f624954;hp=e15303581f9ad32be958dd3971cd0cf92dc8d8bd;hb=60171f91714302d5e3e5dcbd4d08e3cf94cfde6a;hpb=9ff610f03e7fe11a5c9e40405cf24dd3e3af8a89 diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java b/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java index e15303581f..1deda7c9d0 100644 --- a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java +++ b/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java @@ -21,14 +21,14 @@ import org.opendaylight.controller.sal.core.NodeConnector; * The class describes subnet information including L3 address, vlan and set of * ports associated with the subnet. */ -public class Subnet implements Serializable { +public class Subnet implements Cloneable, Serializable { private static final long serialVersionUID = 1L; // Key fields private InetAddress networkAddress; private short subnetMaskLength; // Property fields private short vlan; - private Set nodeConnectors; + private final Set nodeConnectors; public Subnet(InetAddress ip, short maskLen, short vlan) { this.networkAddress = ip; @@ -43,18 +43,21 @@ public class Subnet implements Serializable { nodeConnectors = conf.getSubnetNodeConnectors(); } + public Subnet(Subnet subnet) { + networkAddress = subnet.networkAddress; + subnetMaskLength = subnet.subnetMaskLength; + vlan = subnet.vlan; + nodeConnectors = new HashSet(subnet.nodeConnectors); + } + /** * Add NodeConnectors to a subnet * * @param sp Set of NodeConnectors to add to the subnet */ public void addNodeConnectors(Set sp) { - if (sp == null) { - return; - } - - for (NodeConnector p : sp) { - this.nodeConnectors.add(p); + if (sp != null) { + this.nodeConnectors.addAll(sp); } } @@ -153,16 +156,20 @@ public class Subnet implements Serializable { } public boolean isSubnetOf(InetAddress ip) { - if (ip == null) + if (ip == null) { return false; + } InetAddress thisPrefix = getPrefixForAddress(this.networkAddress); InetAddress otherPrefix = getPrefixForAddress(ip); - if ((thisPrefix == null) || (otherPrefix == null)) + if ((thisPrefix == null) || (otherPrefix == null)) { return false; - if (thisPrefix.equals(otherPrefix)) + } + if (thisPrefix.equals(otherPrefix)) { return true; - else + } + else { return false; + } } public short getVlan() { @@ -220,7 +227,7 @@ public class Subnet implements Serializable { public String toString() { return ("Subnet [networkAddress=" + networkAddress.getHostAddress() + "/" + subnetMaskLength - + ((vlan == 0) ? "" : (" vlan=" + vlan)) + " " + + ((vlan == 0) ? "" : (", vlan=" + vlan)) + ", " + ((isFlatLayer2()) ? "{[*, *]}" : nodeConnectors.toString()) + "]"); } @@ -246,4 +253,13 @@ public class Subnet implements Serializable { } return true; } + + /** + * Implement clonable interface + */ + @Override + public Subnet clone() { + return new Subnet(this); + } + }