initial import

Change-Id: Ief25aef0066ea96bd2c329ccef974c072b3a5a73
diff --git a/net/api/src/main/java/net/onrc/onos/api/link/LinkDescription.java b/net/api/src/main/java/net/onrc/onos/api/link/LinkDescription.java
new file mode 100644
index 0000000..c40f522
--- /dev/null
+++ b/net/api/src/main/java/net/onrc/onos/api/link/LinkDescription.java
@@ -0,0 +1,17 @@
+package net.onrc.onos.api.link;
+
+/**
+ * Describes an infrastructure link.
+ */
+public interface LinkDescription {
+
+    // TODO: src, dst connection points, which are pairs of (DeviceId, PortNumber)
+
+//    On the north:
+//    Link = (ConnectPoint src, ConnectPoint dst);
+//    ConnectPoint = (DeviceId, PortNumber);
+
+//    On the south
+//    LinkDescription ~ Link
+
+}
diff --git a/net/api/src/main/java/net/onrc/onos/api/link/LinkProvider.java b/net/api/src/main/java/net/onrc/onos/api/link/LinkProvider.java
new file mode 100644
index 0000000..4d7ab86
--- /dev/null
+++ b/net/api/src/main/java/net/onrc/onos/api/link/LinkProvider.java
@@ -0,0 +1,10 @@
+package net.onrc.onos.api.link;
+
+import net.onrc.onos.api.Provider;
+
+/**
+ * Abstraction of an entity providing information about infrastructure links
+ * to the core.
+ */
+public interface LinkProvider extends Provider {
+}
diff --git a/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderBroker.java b/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderBroker.java
new file mode 100644
index 0000000..8da7bab
--- /dev/null
+++ b/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderBroker.java
@@ -0,0 +1,10 @@
+package net.onrc.onos.api.link;
+
+import net.onrc.onos.api.ProviderBroker;
+
+/**
+ * Abstraction of an infrastructure link provider brokerage.
+ */
+public interface LinkProviderBroker
+        extends ProviderBroker<LinkProvider, LinkProviderService> {
+}
diff --git a/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderService.java b/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderService.java
new file mode 100644
index 0000000..23fced8
--- /dev/null
+++ b/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderService.java
@@ -0,0 +1,24 @@
+package net.onrc.onos.api.link;
+
+import net.onrc.onos.api.ProviderService;
+
+/**
+ * Means for injecting link information into the core.
+ */
+public interface LinkProviderService extends ProviderService {
+
+    /**
+     * Signals that an infrastructure link has been connected.
+     *
+     * @param linkDescription link information
+     */
+    void linkConnected(LinkDescription linkDescription);
+
+    /**
+     * Signals that an infrastructure link has been disconnected.
+     *
+     * @param linkDescription link information
+     */
+    void linkDisconnected(LinkDescription linkDescription);
+
+}