From 5edf5fb4c5e4af8283578d41981aebb1fe9c513b Mon Sep 17 00:00:00 2001 From: Anil Vishnoi Date: Thu, 11 Feb 2016 11:32:57 -0800 Subject: [PATCH] Bug 5327 - LLDP spoof warning in 3-node cluster Change-Id: I0bb970d9de99a162dd5f09ae8376151755da617d Signed-off-by: Anil Vishnoi --- .../src/main/config/default-config.xml | 1 + .../applications/topology/lldp/LLDPActivator.java | 9 +++++++++ .../topology/lldp/utils/LLDPDiscoveryUtils.java | 10 +++++++++- .../rev150530/TopologyLldpDiscoveryImplModule.java | 2 +- .../src/main/yang/topology-lldp-discovery-impl.yang | 4 ++++ 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/applications/topology-lldp-discovery/src/main/config/default-config.xml b/applications/topology-lldp-discovery/src/main/config/default-config.xml index f91c773a77..cf7005a47b 100644 --- a/applications/topology-lldp-discovery/src/main/config/default-config.xml +++ b/applications/topology-lldp-discovery/src/main/config/default-config.xml @@ -26,6 +26,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html binding:binding-broker-osgi-registry binding-osgi-broker + aa9251f8-c7c0-4322-b8d6-c3a84593bda3 diff --git a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPActivator.java b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPActivator.java index f73eb0b35b..79f100fa07 100644 --- a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPActivator.java +++ b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPActivator.java @@ -17,6 +17,11 @@ import org.slf4j.LoggerFactory; public class LLDPActivator implements BindingAwareProvider, AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(LLDPActivator.class); private static LLDPDiscoveryProvider provider = new LLDPDiscoveryProvider(); + private static String lldpSecureKey; + + public LLDPActivator(String secureKey) { + lldpSecureKey = secureKey; + } public void onSessionInitiated(final ProviderContext session) { DataProviderService dataService = session.getSALService(DataProviderService.class); @@ -36,4 +41,8 @@ public class LLDPActivator implements BindingAwareProvider, AutoCloseable { } } } + + public static String getLldpSecureKey() { + return lldpSecureKey; + } } diff --git a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/utils/LLDPDiscoveryUtils.java b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/utils/LLDPDiscoveryUtils.java index da14b4e71d..8112bcc2df 100644 --- a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/utils/LLDPDiscoveryUtils.java +++ b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/utils/LLDPDiscoveryUtils.java @@ -18,6 +18,7 @@ import org.opendaylight.controller.liblldp.NetUtils; import com.google.common.hash.Hasher; import com.google.common.hash.Hashing; import com.google.common.hash.HashFunction; +import org.opendaylight.openflowplugin.applications.topology.lldp.LLDPActivator; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; @@ -127,7 +128,14 @@ public class LLDPDiscoveryUtils { * @throws NoSuchAlgorithmException */ public static byte[] getValueForLLDPPacketIntegrityEnsuring(final NodeConnectorId nodeConnectorId) throws NoSuchAlgorithmException { - final String pureValue = nodeConnectorId+ManagementFactory.getRuntimeMXBean().getName(); + String finalKey; + if(LLDPActivator.getLldpSecureKey() !=null && !LLDPActivator.getLldpSecureKey().isEmpty()) { + finalKey = LLDPActivator.getLldpSecureKey(); + } else { + finalKey = ManagementFactory.getRuntimeMXBean().getName(); + } + final String pureValue = nodeConnectorId + finalKey; + final byte[] pureBytes = pureValue.getBytes(); HashFunction hashFunction = Hashing.md5(); Hasher hasher = hashFunction.newHasher(); diff --git a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModule.java b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModule.java index 0db029e5b2..eed30f9e41 100644 --- a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModule.java +++ b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModule.java @@ -18,7 +18,7 @@ public class TopologyLldpDiscoveryImplModule extends org.opendaylight.yang.gen.v @Override public java.lang.AutoCloseable createInstance() { - LLDPActivator provider = new LLDPActivator(); + LLDPActivator provider = new LLDPActivator(getLldpSecureKey()); getBrokerDependency().registerProvider(provider); return provider; } diff --git a/applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-impl.yang b/applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-impl.yang index 547392bfa3..709da19ae0 100644 --- a/applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-impl.yang +++ b/applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-impl.yang @@ -30,6 +30,10 @@ module topology-lldp-discovery-impl { } } } + leaf lldp-secure-key { + description "Provided key will be used to generate LLDP custom security hash"; + type string; + } } } } -- 2.36.6