Added a wipe-out command; we need to revisit how to either make the devices come back or the links not come back.
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/link/impl/SimpleLinkManager.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/link/impl/SimpleLinkManager.java
index 4ea1753..7242642 100644
--- a/core/trivial/src/main/java/org/onlab/onos/net/trivial/link/impl/SimpleLinkManager.java
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/link/impl/SimpleLinkManager.java
@@ -16,6 +16,9 @@
 import org.onlab.onos.net.ConnectPoint;
 import org.onlab.onos.net.DeviceId;
 import org.onlab.onos.net.Link;
+import org.onlab.onos.net.device.DeviceEvent;
+import org.onlab.onos.net.device.DeviceListener;
+import org.onlab.onos.net.device.DeviceService;
 import org.onlab.onos.net.link.LinkAdminService;
 import org.onlab.onos.net.link.LinkDescription;
 import org.onlab.onos.net.link.LinkEvent;
@@ -49,6 +52,10 @@
             listenerRegistry = new AbstractListenerRegistry<>();
 
     private final SimpleLinkStore store = new SimpleLinkStore();
+    private final DeviceListener deviceListener = new InnerDeviceListener();
+
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected DeviceService deviceService;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected EventDeliveryService eventDispatcher;
@@ -56,12 +63,14 @@
     @Activate
     public void activate() {
         eventDispatcher.addSink(LinkEvent.class, listenerRegistry);
+        deviceService.addListener(deviceListener);
         log.info("Started");
     }
 
     @Deactivate
     public void deactivate() {
         eventDispatcher.removeSink(LinkEvent.class);
+        deviceService.removeListener(deviceListener);
         log.info("Stopped");
     }
 
@@ -140,6 +149,20 @@
         listenerRegistry.removeListener(listener);
     }
 
+    // Auxiliary interceptor for device remove events to prune links that
+    // are associated with the removed device or its port.
+    private class InnerDeviceListener implements DeviceListener {
+        @Override
+        public void event(DeviceEvent event) {
+            if (event.type() == DeviceEvent.Type.DEVICE_REMOVED) {
+                removeLinks(event.subject().id());
+            } else if (event.type() == DeviceEvent.Type.PORT_REMOVED) {
+                removeLinks(new ConnectPoint(event.subject().id(),
+                                             event.port().number()));
+            }
+        }
+    }
+
     @Override
     protected LinkProviderService createProviderService(LinkProvider provider) {
         return new InternalLinkProviderService(provider);