ONOS-2812 Refactored the link code in search of a defect; the root cause was old OVS-based switch which is wrongly forwarding LLDP frames.
ONOS can fix this later by tracking links to be pruned using port pairs.
Change-Id: Ia79ec69946daff80636f5ab4b75a3dcdba91465d
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 0c933162..e9e2bfa 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
@@ -275,6 +275,10 @@
packetService.cancelPackets(selector.build(), PacketPriority.CONTROL, appId);
}
+ private LinkDiscovery createLinkDiscovery(Device device) {
+ return new LinkDiscovery(device, packetService, masterService,
+ providerService, useBDDP);
+ }
private class InternalRoleListener implements MastershipListener {
@@ -297,11 +301,8 @@
synchronized (discoverers) {
if (!discoverers.containsKey(deviceId)) {
// ideally, should never reach here
- log.debug("Device mastership changed ({}) {}",
- event.type(), deviceId);
- discoverers.put(deviceId, new LinkDiscovery(device,
- packetService, masterService, providerService,
- useBDDP));
+ log.debug("Device mastership changed ({}) {}", event.type(), deviceId);
+ discoverers.put(deviceId, createLinkDiscovery(device));
}
}
}
@@ -331,15 +332,11 @@
log.debug("LinkDiscovery from {} disabled by configuration", device.id());
return;
}
- log.debug("Device added ({}) {}", event.type(),
- deviceId);
- discoverers.put(deviceId, new LinkDiscovery(device,
- packetService, masterService,
- providerService, useBDDP));
+ log.debug("Device added ({}) {}", event.type(), deviceId);
+ discoverers.put(deviceId, createLinkDiscovery(device));
} else {
if (ld.isStopped()) {
- log.debug("Device restarted ({}) {}", event.type(),
- deviceId);
+ log.debug("Device restarted ({}) {}", event.type(), deviceId);
ld.start();
}
}
@@ -363,15 +360,13 @@
}
} else {
log.debug("Port down {}", port);
- ConnectPoint point = new ConnectPoint(deviceId,
- port.number());
+ ConnectPoint point = new ConnectPoint(deviceId, port.number());
providerService.linksVanished(point);
}
break;
case PORT_REMOVED:
log.debug("Port removed {}", port);
- ConnectPoint point = new ConnectPoint(deviceId,
- port.number());
+ ConnectPoint point = new ConnectPoint(deviceId, port.number());
providerService.linksVanished(point);
break;
@@ -411,8 +406,7 @@
if (context == null) {
return;
}
- LinkDiscovery ld = discoverers.get(
- context.inPacket().receivedFrom().deviceId());
+ LinkDiscovery ld = discoverers.get(context.inPacket().receivedFrom().deviceId());
if (ld == null) {
return;
}
@@ -441,8 +435,7 @@
synchronized (discoverers) {
LinkDiscovery discoverer = discoverers.get(did);
if (discoverer == null) {
- discoverer = new LinkDiscovery(dev, packetService,
- masterService, providerService, useBDDP);
+ discoverer = createLinkDiscovery(dev);
discoverers.put(did, discoverer);
}