Integrate port up/down events with discovery
Change-Id: I7826f0a8fc285485fe62187319a3b33d6adf492b
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
index b821050..1c342e0 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
@@ -85,14 +85,20 @@
@Override
public void putPortEvent(PortEvent portEvent) {
- // TODO Auto-generated method stub
-
+ if (prepareForAddPortEvent(portEvent)) {
+ datastore.addPort(portEvent);
+ putPort(portEvent);
+ // TODO send out notification
+ }
}
@Override
public void removePortEvent(PortEvent portEvent) {
- // TODO Auto-generated method stub
-
+ if (prepareForRemovePortEvent(portEvent)) {
+ datastore.deactivatePort(portEvent);
+ removePort(portEvent);
+ // TODO send out notification
+ }
}
@Override
@@ -223,7 +229,7 @@
}
// Src/Dst Port must exist
Port srcPort = srcSw.getPort(linkEvt.getSrc().number);
- Port dstPort = srcSw.getPort(linkEvt.getDst().number);
+ Port dstPort = dstSw.getPort(linkEvt.getDst().number);
if ( srcPort == null || dstPort == null ) {
return false;
}
@@ -250,14 +256,25 @@
Switch srcSw = getSwitch(linkEvt.getSrc().dpid);
Switch dstSw = getSwitch(linkEvt.getDst().dpid);
if ( srcSw == null || dstSw == null ) {
+ log.warn("Rejecting addLink {} because switch doesn't exist", linkEvt);
return false;
}
// Src/Dst Port must exist
Port srcPort = srcSw.getPort(linkEvt.getSrc().number);
Port dstPort = srcSw.getPort(linkEvt.getDst().number);
if ( srcPort == null || dstPort == null ) {
+ log.warn("Rejecting addLink {} because port doesn't exist", linkEvt);
return false;
}
+
+ Link link = srcPort.getOutgoingLink();
+
+ if (link == null ||
+ !link.getDestinationPortNumber().equals(linkEvt.getDst().number)
+ || !link.getDestinationSwitchDpid().equals(linkEvt.getDst().dpid)) {
+ log.warn("Rejecting removeLink {} because link doesn't exist", linkEvt);
+ return false;
+ }
// Prep: None
return true;