package net.floodlightcontroller.virtualnetwork; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import org.codehaus.jackson.map.annotate.JsonSerialize; import net.floodlightcontroller.util.MACAddress; /** * Data structure for storing and outputing information of a virtual network created * by VirtualNetworkFilter * * @author KC Wang */ @JsonSerialize(using=VirtualNetworkSerializer.class) public class VirtualNetwork{ protected String name; // network name protected String guid; // network id protected String gateway; // network gateway protected Collection<MACAddress> hosts; // array of hosts explicitly added to this network /** * Constructor requires network name and id * @param name: network name * @param guid: network id */ public VirtualNetwork(String name, String guid) { this.name = name; this.guid = guid; this.gateway = null; this.hosts = new ArrayList<MACAddress>(); return; } /** * Sets network name * @param gateway: IP address as String */ public void setName(String name){ this.name = name; return; } /** * Sets network gateway IP address * @param gateway: IP address as String */ public void setGateway(String gateway){ this.gateway = gateway; return; } /** * Adds a host to this network record * @param host: MAC address as MACAddress */ public void addHost(MACAddress host){ this.hosts.add(host); return; } /** * Removes a host from this network record * @param host: MAC address as MACAddress * @return boolean: true: removed, false: host not found */ public boolean removeHost(MACAddress host){ Iterator<MACAddress> iter = this.hosts.iterator(); while(iter.hasNext()){ MACAddress element = iter.next(); if(element.equals(host) ){ //assuming MAC address for host is unique iter.remove(); return true; } } return false; } /** * Removes all hosts from this network record */ public void clearHosts(){ this.hosts.clear(); } }