Couple of changes for the BGP Router project:
1. Link Discovery can be turned off completely via configuration
2. PacketService allows applications to hint at table_type when registering for packets
Change-Id: I89f0bbf84dce1b449db5af19868f83503c44f750
diff --git a/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java b/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java
index 264465e..86c9c4c 100644
--- a/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java
+++ b/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java
@@ -61,6 +61,7 @@
import org.onosproject.net.device.DeviceEvent;
import org.onosproject.net.device.DeviceListener;
import org.onosproject.net.device.DeviceServiceAdapter;
+import org.onosproject.net.flow.FlowRule;
import org.onosproject.net.flow.TrafficSelector;
import org.onosproject.net.flow.TrafficTreatment;
import org.onosproject.net.host.HostDescription;
@@ -287,6 +288,12 @@
public void requestPackets(TrafficSelector selector,
PacketPriority priority, ApplicationId appId) {
}
+
+ @Override
+ public void requestPackets(TrafficSelector selector,
+ PacketPriority priority, ApplicationId appId,
+ FlowRule.Type tableType) {
+ }
}
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 9350410..a855d5a 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
@@ -73,7 +73,7 @@
public class LLDPLinkProvider extends AbstractProvider implements LinkProvider {
private static final String PROP_USE_BDDP = "useBDDP";
-
+ private static final String PROP_DISABLE_LD = "disableLinkDiscovery";
private static final String PROP_LLDP_SUPPRESSION = "lldpSuppression";
private static final String DEFAULT_LLDP_SUPPRESSION_CONFIG = "../config/lldp_suppression.json";
@@ -99,14 +99,16 @@
private ScheduledExecutorService executor;
- @Property(name = PROP_USE_BDDP, boolValue = true,
- label = "use BDDP for link discovery")
+ @Property(name = PROP_USE_BDDP, label = "use BDDP for link discovery")
private boolean useBDDP = true;
+ @Property(name = PROP_DISABLE_LD, label = "permanently disable link discovery")
+ private boolean disableLD = false;
+
private static final long INIT_DELAY = 5;
private static final long DELAY = 5;
- @Property(name = PROP_LLDP_SUPPRESSION, value = DEFAULT_LLDP_SUPPRESSION_CONFIG,
+ @Property(name = PROP_LLDP_SUPPRESSION,
label = "Path to LLDP suppression configuration file")
private String filePath = DEFAULT_LLDP_SUPPRESSION_CONFIG;
@@ -128,11 +130,16 @@
}
@Activate
- public void activate() {
+ public void activate(ComponentContext context) {
appId =
coreService.registerApplication("org.onosproject.provider.lldp");
- loadSuppressionRules();
+ // to load configuration at startup
+ modified(context);
+ if (disableLD) {
+ log.info("Link Discovery has been permanently disabled by configuration");
+ return;
+ }
providerService = providerRegistry.register(this);
deviceService.addListener(listener);
@@ -170,6 +177,9 @@
@Deactivate
public void deactivate() {
+ if (disableLD) {
+ return;
+ }
executor.shutdownNow();
for (LinkDiscovery ld : discoverers.values()) {
ld.stop();
@@ -186,21 +196,22 @@
@Modified
public void modified(ComponentContext context) {
if (context == null) {
+ loadSuppressionRules();
return;
}
@SuppressWarnings("rawtypes")
Dictionary properties = context.getProperties();
- String s = (String) properties.get(PROP_USE_BDDP);
- if (Strings.isNullOrEmpty(s)) {
- useBDDP = true;
- } else {
+ String s = (String) properties.get(PROP_DISABLE_LD);
+ if (!Strings.isNullOrEmpty(s)) {
+ disableLD = Boolean.valueOf(s);
+ }
+ s = (String) properties.get(PROP_USE_BDDP);
+ if (!Strings.isNullOrEmpty(s)) {
useBDDP = Boolean.valueOf(s);
}
s = (String) properties.get(PROP_LLDP_SUPPRESSION);
- if (Strings.isNullOrEmpty(s)) {
- filePath = DEFAULT_LLDP_SUPPRESSION_CONFIG;
- } else {
+ if (!Strings.isNullOrEmpty(s)) {
filePath = s;
}
@@ -210,6 +221,7 @@
private void loadSuppressionRules() {
SuppressionRulesStore store = new SuppressionRulesStore(filePath);
try {
+ log.info("Reading suppression rules from {}", filePath);
rules = store.read();
} catch (IOException e) {
log.info("Failed to load {}, using built-in rules", filePath);
diff --git a/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java b/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java
index b48af6a..f7be862 100644
--- a/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java
+++ b/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java
@@ -55,6 +55,7 @@
import org.onosproject.net.device.DeviceEvent;
import org.onosproject.net.device.DeviceListener;
import org.onosproject.net.device.DeviceServiceAdapter;
+import org.onosproject.net.flow.FlowRule;
import org.onosproject.net.flow.TrafficSelector;
import org.onosproject.net.flow.TrafficTreatment;
import org.onosproject.net.link.LinkDescription;
@@ -116,7 +117,7 @@
provider.masterService = masterService;
- provider.activate();
+ provider.activate(null);
}
@Test
@@ -211,6 +212,7 @@
}
+ @SuppressWarnings(value = { "unused" })
private DeviceEvent portEvent(DeviceEvent.Type type, DeviceId did, PortNumber port) {
return new DeviceEvent(type, deviceService.getDevice(did),
deviceService.getPort(did, port));
@@ -400,6 +402,12 @@
public void requestPackets(TrafficSelector selector,
PacketPriority priority, ApplicationId appId) {
}
+
+ @Override
+ public void requestPackets(TrafficSelector selector,
+ PacketPriority priority, ApplicationId appId,
+ FlowRule.Type tableType) {
+ }
}
private class TestDeviceService extends DeviceServiceAdapter {