Added simple link manager implementation.
Added link admin stuff; unit tests to come.
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/DefaultLinkDescription.java b/net/api/src/main/java/org/onlab/onos/net/link/DefaultLinkDescription.java
index 3ed7225..952c1dc 100644
--- a/net/api/src/main/java/org/onlab/onos/net/link/DefaultLinkDescription.java
+++ b/net/api/src/main/java/org/onlab/onos/net/link/DefaultLinkDescription.java
@@ -1,24 +1,28 @@
 package org.onlab.onos.net.link;
 
 import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.Link;
 
 /**
  * Default implementation of immutable link description entity.
  */
 public class DefaultLinkDescription implements LinkDescription {
 
-    private ConnectPoint src;
-    private ConnectPoint dst;
+    private final ConnectPoint src;
+    private final ConnectPoint dst;
+    private final Link.Type type;
 
     /**
      * Creates a link description using the supplied information.
      *
-     * @param src link source
-     * @param dst link destination
+     * @param src  link source
+     * @param dst  link destination
+     * @param type link type
      */
-    public DefaultLinkDescription(ConnectPoint src, ConnectPoint dst) {
+    public DefaultLinkDescription(ConnectPoint src, ConnectPoint dst, Link.Type type) {
         this.src = src;
         this.dst = dst;
+        this.type = type;
     }
 
     @Override
@@ -31,4 +35,9 @@
         return dst;
     }
 
+    @Override
+    public Link.Type type() {
+        return null;
+    }
+
 }
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkAdminService.java b/net/api/src/main/java/org/onlab/onos/net/link/LinkAdminService.java
new file mode 100644
index 0000000..228b3c9
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/link/LinkAdminService.java
@@ -0,0 +1,27 @@
+package org.onlab.onos.net.link;
+
+import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.DeviceId;
+
+/**
+ * Service for administering the inventory of infrastructure links.
+ */
+public interface LinkAdminService {
+
+    /**
+     * Removes all infrastructure links leading to and from the
+     * specified connection point.
+     *
+     * @param connectPoint connection point
+     */
+    void removeLinks(ConnectPoint connectPoint);
+
+    /**
+     * Removes all infrastructure links leading to and from the
+     * specified device.
+     *
+     * @param deviceId device identifier
+     */
+    void removeLinks(DeviceId deviceId);
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkDescription.java b/net/api/src/main/java/org/onlab/onos/net/link/LinkDescription.java
index 83af07c..b1be82c 100644
--- a/net/api/src/main/java/org/onlab/onos/net/link/LinkDescription.java
+++ b/net/api/src/main/java/org/onlab/onos/net/link/LinkDescription.java
@@ -1,6 +1,7 @@
 package org.onlab.onos.net.link;
 
 import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.Link;
 
 /**
  * Describes an infrastructure link.
@@ -21,5 +22,13 @@
      */
     ConnectPoint dst();
 
+    /**
+     * Returns the link type.
+     *
+     * @return link type
+     */
+    Link.Type type();
+
+
     // Add further link attributes
 }
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java b/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java
index 7969022..7019660 100644
--- a/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java
+++ b/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java
@@ -1,5 +1,7 @@
 package org.onlab.onos.net.link;
 
+import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.DeviceId;
 import org.onlab.onos.net.provider.ProviderService;
 
 /**
@@ -21,4 +23,20 @@
      */
     void linkVanished(LinkDescription linkDescription);
 
+    /**
+     * Signals that infrastructure links associated with the specified
+     * connect point have vanished.
+     *
+     * @param connectPoint connect point
+     */
+    void linksVanished(ConnectPoint connectPoint);
+
+    /**
+     * Signals that infrastructure links associated with the specified
+     * device have vanished.
+     *
+     * @param deviceId device identifier
+     */
+    void linksVanished(DeviceId deviceId);
+
 }
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkService.java b/net/api/src/main/java/org/onlab/onos/net/link/LinkService.java
index fadecdb..77afb7a 100644
--- a/net/api/src/main/java/org/onlab/onos/net/link/LinkService.java
+++ b/net/api/src/main/java/org/onlab/onos/net/link/LinkService.java
@@ -1,5 +1,6 @@
 package org.onlab.onos.net.link;
 
+import org.onlab.onos.net.ConnectPoint;
 import org.onlab.onos.net.DeviceId;
 import org.onlab.onos.net.Link;
 
@@ -11,6 +12,13 @@
 public interface LinkService {
 
     /**
+     * Returns the count of all known infrastructure links.
+     *
+     * @return number of infrastructure links
+     */
+    int getLinkCount();
+
+    /**
      * Returns a collection of all known infrastructure links.
      *
      * @return all infrastructure links
@@ -43,6 +51,43 @@
     Set<Link> getDeviceInressLinks(DeviceId deviceId);
 
     /**
+     * Returns set of all infrastructure links leading to and from the
+     * specified connection point.
+     *
+     * @param connectPoint connection point
+     * @return set of links
+     */
+    Set<Link> getLinks(ConnectPoint connectPoint);
+
+    /**
+     * Returns set of all infrastructure links leading from the specified
+     * connection point.
+     *
+     * @param connectPoint connection point
+     * @return set of device egress links
+     */
+    Set<Link> getEgressLinks(ConnectPoint connectPoint);
+
+    /**
+     * Returns set of all infrastructure links leading to the specified
+     * connection point.
+     *
+     * @param connectPoint connection point
+     * @return set of device ingress links
+     */
+    Set<Link> getInressLinks(ConnectPoint connectPoint);
+
+    /**
+     * Returns set of all infrastructure links between the specified source
+     * and destination connection points.
+     *
+     * @param src source connection point
+     * @param dst destination connection point
+     * @return set of links
+     */
+    Set<Link> getLinks(ConnectPoint src, ConnectPoint dst);
+
+    /**
      * Adds the specified link listener.
      *
      * @param listener link listener