alshabib

Merge branch 'master' of ssh://gerrit.onlab.us:29418/onos-next

Showing 141 changed files with 89 additions and 13 deletions
......@@ -6,7 +6,7 @@
<parent>
<groupId>org.onlab.onos</groupId>
<artifactId>onos-net</artifactId>
<artifactId>onos-core</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
......
package org.onlab.onos.net;
import org.onlab.packet.IPv4;
import org.onlab.packet.MACAddress;
import java.util.Set;
/**
* Abstraction of an end-station host on the network, essentially a NIC.
*/
public interface Host extends Element {
// MAC, IP(s), optional VLAN ID
/**
* Host identification.
*
* @return host id
*/
HostId id();
/**
* Returns the host MAC address.
*
* @return mac address
*/
MACAddress mac();
/**
* Returns set of IP addresses currently bound to the host MAC address.
*
* @return set of IP addresses; empty if no IP address is bound
*/
Set<IPv4> ipAddresses();
/**
* Returns the most recent host location where the host attaches to the
......@@ -16,6 +39,6 @@ public interface Host extends Element {
*/
HostLocation location();
// list of recent locations?
// TODO: explore capturing list of recent locations to aid in mobility
}
......
package org.onlab.onos.net;
import org.onlab.packet.MACAddress;
import java.net.URI;
/**
......@@ -16,6 +18,7 @@ public final class HostId extends ElementId {
* Creates a device id using the supplied URI.
*
* @param uri device URI
* @return host identifier
*/
public static HostId hostId(URI uri) {
return new HostId(uri);
......@@ -25,9 +28,23 @@ public final class HostId extends ElementId {
* Creates a device id using the supplied URI string.
*
* @param string device URI string
* @return host identifier
*/
public static HostId hostId(String string) {
return hostId(URI.create(string));
}
/**
* Creates a device id using the supplied MAC &amp; VLAN ID.
*
* @param mac mac address
* @param vlanId vlan identifier
* @return host identifier
*/
// FIXME: replace vlanId long with a rich data-type, e.g. VLanId or something like that
public static HostId hostId(MACAddress mac, long vlanId) {
// FIXME: use more efficient means of encoding
return hostId("nic" + ":" + mac + "/" + vlanId);
}
}
......
......@@ -105,7 +105,7 @@ public class DeviceEvent extends AbstractEvent<DeviceEvent.Type, Device> {
*
* @return port subject or null if the event is not port specific.
*/
Port port() {
public Port port() {
return port;
}
......
......@@ -23,6 +23,11 @@ public class HostEvent extends AbstractEvent<HostEvent.Type, Host> {
HOST_REMOVED,
/**
* Signifies that host data changed, e.g. IP address
*/
HOST_UPDATED,
/**
* Signifies that a host location has changed.
*/
HOST_MOVED
......
package org.onlab.onos.net.host;
import org.onlab.onos.net.HostId;
import org.onlab.onos.net.provider.ProviderService;
/**
......@@ -11,15 +12,16 @@ public interface HostProviderService extends ProviderService<HostProvider> {
* Notifies the core when a host has been detected on a network along with
* information that identifies the hoot location.
*
* @param hostId id of the host that been detected
* @param hostDescription description of host and its location
*/
void hostDetected(HostDescription hostDescription);
void hostDetected(HostId hostId, HostDescription hostDescription);
/**
* Notifies the core when a host is no longer detected on a network.
*
* @param hostDescription description of host
* @param hostId id of the host that vanished
*/
void hostVanished(HostDescription hostDescription);
void hostVanished(HostId hostId);
}
......
......@@ -2,8 +2,10 @@ package org.onlab.onos.net.host;
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.DeviceId;
import org.onlab.onos.net.ElementId;
import org.onlab.onos.net.Host;
import org.onlab.onos.net.HostId;
import org.onlab.packet.IPv4;
import org.onlab.packet.MACAddress;
import java.util.Set;
......@@ -13,6 +15,13 @@ import java.util.Set;
public interface HostService {
/**
* Returns the number of end-station hosts known to the system.
*
* @return number of end-station hosts
*/
public int getHostCount();
/**
* Returns a collection of all end-station hosts.
*
* @return collection of hosts
......@@ -25,12 +34,32 @@ public interface HostService {
* @param hostId host identifier
* @return host or null if one with the given identifier is not known
*/
Host getHost(ElementId hostId); // TODO: change to HostId
Host getHost(HostId hostId);
/**
* Returns the set of hosts that belong to the specified VLAN.
*
* @param vlanId vlan identifier
* @return set of hosts in the given vlan id
*/
// FIXME: change long to VLanId
Set<Host> getHostsByVlan(long vlanId);
// TODO: determine which ones make sense or which we care to support
// Set<Host> getHostsByVlan(VlanId vlan);
// Set<Host> getHostsByMac(MacAddress mac);
// Set<Host> getHostsByIp(IpAddress ip);
/**
* Returns the set of hosts that have the specified MAC address.
*
* @param mac mac address
* @return set of hosts with the given mac
*/
Set<Host> getHostsByMac(MACAddress mac);
/**
* Returns the set of hosts that have the specified IP address.
*
* @param ip ip address
* @return set of hosts with the given IP
*/
Set<Host> getHostsByIp(IPv4 ip);
/**
* Returns the set of hosts whose most recent location is the specified
......
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.