BUG 2723 - Topology spoofing via LLDP - hash check in topology-discovery
[openflowplugin.git] / applications / topology-lldp-discovery / src / main / java / org / opendaylight / openflowplugin / applications / topology / lldp / LLDPDiscoveryListener.java
index 10acfcbd8438130430fdf767987fa06f1b1fb589..08c3c9c4a9b196cb47517fbca2aafe7493efbb9e 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.openflowplugin.applications.topology.lldp;
 
+import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
 import org.opendaylight.openflowplugin.applications.topology.lldp.utils.LLDPDiscoveryUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.topology.discovery.rev130819.LinkDiscovered;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.topology.discovery.rev130819.LinkDiscoveredBuilder;
@@ -17,25 +18,29 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 class LLDPDiscoveryListener implements PacketProcessingListener {
-    static Logger LOG = LoggerFactory.getLogger(LLDPDiscoveryListener.class);
+    private static final Logger LOG = LoggerFactory.getLogger(LLDPDiscoveryListener.class);
 
-    private LLDPDiscoveryProvider manager;
+    private LLDPLinkAger lldpLinkAger;
+    private NotificationProviderService notificationService;
 
-    LLDPDiscoveryListener(LLDPDiscoveryProvider manager) {
-        this.manager = manager;
+    LLDPDiscoveryListener(NotificationProviderService notificationService) {
+        this.notificationService = notificationService;
     }
 
     public void onPacketReceived(PacketReceived lldp) {
-        NodeConnectorRef src = LLDPDiscoveryUtils.lldpToNodeConnectorRef(lldp.getPayload());
+        NodeConnectorRef src = LLDPDiscoveryUtils.lldpToNodeConnectorRef(lldp.getPayload(), true);
         if(src != null) {
             LinkDiscoveredBuilder ldb = new LinkDiscoveredBuilder();
             ldb.setDestination(lldp.getIngress());
             ldb.setSource(new NodeConnectorRef(src));
             LinkDiscovered ld = ldb.build();
 
-            manager.getNotificationService().publish(ld);
-            LLDPLinkAger.getInstance().put(ld);
+            notificationService.publish(ld);
+            lldpLinkAger.put(ld);
         }
     }
 
+    public void setLldpLinkAger(LLDPLinkAger lldpLinkAger) {
+        this.lldpLinkAger = lldpLinkAger;
+    }
 }