[Falcon] link discovery -

- safety checks against fingerprint being null
- checks for foreign fingerprint and probe message origin

Change-Id: I2f3e491802afc2091335bd25fcf24865293bde10
diff --git a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LldpLinkProvider.java b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LldpLinkProvider.java
index bf88f57..8c24502 100644
--- a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LldpLinkProvider.java
+++ b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LldpLinkProvider.java
@@ -27,6 +27,7 @@
 import static org.onosproject.net.config.basics.SubjectFactories.CONNECT_POINT_SUBJECT_FACTORY;
 import static org.onosproject.net.config.basics.SubjectFactories.DEVICE_SUBJECT_FACTORY;
 import static org.slf4j.LoggerFactory.getLogger;
+import static org.onosproject.cluster.ClusterMetadata.NO_NAME;
 
 import java.util.Dictionary;
 import java.util.EnumSet;
@@ -47,6 +48,7 @@
 import org.onlab.packet.Ethernet;
 import org.onlab.util.Tools;
 import org.onosproject.cfg.ComponentConfigService;
+import org.onosproject.cluster.ClusterMetadata;
 import org.onosproject.cluster.ClusterMetadataService;
 import org.onosproject.cluster.ClusterService;
 import org.onosproject.core.ApplicationId;
@@ -426,6 +428,7 @@
             removeDevice(device.id());
             return Optional.empty();
         }
+
         LinkDiscovery ld = discoverers.computeIfAbsent(device.id(),
                                      did -> new LinkDiscovery(device, context));
         if (isFingerprinted(device.id())) {
@@ -749,7 +752,13 @@
 
         @Override
         public String fingerprint() {
-            return clusterMetadataService.getClusterMetadata().getName();
+            ClusterMetadata mdata = clusterMetadataService.getClusterMetadata();
+            return mdata == null ? NO_NAME : mdata.getName();
+        }
+
+        @Override
+        public DeviceService deviceService() {
+            return deviceService;
         }
     }