NullLinkProvider only generates links between local devices.
Reference: ONOS-835
Change-Id: Icc378a053e54f2a3ffa0f29abd01782b80588239
diff --git a/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java b/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java
index 8d9404e..6656a8f 100644
--- a/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java
+++ b/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java
@@ -19,6 +19,7 @@
import static org.onlab.util.Tools.delay;
import static org.onlab.util.Tools.namedThreads;
import static org.slf4j.LoggerFactory.getLogger;
+import static org.onosproject.net.MastershipRole.MASTER;
import java.util.Dictionary;
import java.util.List;
@@ -34,6 +35,7 @@
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.onosproject.mastership.MastershipService;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.Device;
import org.onosproject.net.DeviceId;
@@ -68,6 +70,9 @@
protected DeviceService deviceService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected MastershipService roleService;
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected LinkProviderRegistry providerRegistry;
private LinkProviderService providerService;
@@ -98,7 +103,7 @@
// For flicker = true, duration between events in msec.
@Property(name = "eventRate", intValue = DEFAULT_RATE,
label = "Duration between Link Event")
- private int eventRate = 3000;
+ private int eventRate = DEFAULT_RATE;
public NullLinkProvider() {
super(new ProviderId("null", "org.onosproject.provider.nil"));
@@ -172,12 +177,16 @@
@Override
public void event(DeviceEvent event) {
+ Device dev = event.subject();
+ if (!MASTER.equals(roleService.getLocalRole(dev.id()))) {
+ return;
+ }
switch (event.type()) {
case DEVICE_ADDED:
- addLink(event.subject());
+ addLink(dev);
break;
case DEVICE_REMOVED:
- removeLink(event.subject());
+ removeLink(dev);
break;
default:
break;