role assertion failure is returned to DeviceProvider
Change-Id: Ic5189327c85fa37b3bbfa07d0e285cabae363712
diff --git a/openflow/api/src/main/java/org/onlab/onos/openflow/controller/OpenFlowSwitch.java b/openflow/api/src/main/java/org/onlab/onos/openflow/controller/OpenFlowSwitch.java
index 424e63c..24e119c 100644
--- a/openflow/api/src/main/java/org/onlab/onos/openflow/controller/OpenFlowSwitch.java
+++ b/openflow/api/src/main/java/org/onlab/onos/openflow/controller/OpenFlowSwitch.java
@@ -105,4 +105,11 @@
*/
public void disconnectSwitch();
+ /**
+ * Notifies the controller that role assertion has failed.
+ *
+ * @param role the failed role
+ */
+ void returnRoleAssertFailure(RoleState role);
+
}
diff --git a/openflow/api/src/main/java/org/onlab/onos/openflow/controller/OpenFlowSwitchListener.java b/openflow/api/src/main/java/org/onlab/onos/openflow/controller/OpenFlowSwitchListener.java
index c7cc287..53217da 100644
--- a/openflow/api/src/main/java/org/onlab/onos/openflow/controller/OpenFlowSwitchListener.java
+++ b/openflow/api/src/main/java/org/onlab/onos/openflow/controller/OpenFlowSwitchListener.java
@@ -25,4 +25,12 @@
* @param status the new state of the port.
*/
public void portChanged(Dpid dpid, OFPortStatus status);
+
+ /**
+ * Notify that a role imposed on a switch failed to take hold.
+ *
+ * @param dpid the switch that failed role assertion
+ * @param role the role imposed by the controller
+ */
+ public void roleAssertFailed(Dpid dpid, RoleState role);
}
diff --git a/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/AbstractOpenFlowSwitch.java b/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/AbstractOpenFlowSwitch.java
index ae36381..393246b 100644
--- a/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/AbstractOpenFlowSwitch.java
+++ b/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/AbstractOpenFlowSwitch.java
@@ -213,6 +213,11 @@
}
@Override
+ public void returnRoleAssertFailure(RoleState role) {
+ this.agent.returnRoleAssertFailed(dpid, role);
+ }
+
+ @Override
public abstract void startDriverHandshake();
@Override
diff --git a/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/OpenFlowAgent.java b/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/OpenFlowAgent.java
index 1261715..870f10a 100644
--- a/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/OpenFlowAgent.java
+++ b/openflow/api/src/main/java/org/onlab/onos/openflow/controller/driver/OpenFlowAgent.java
@@ -2,6 +2,7 @@
import org.onlab.onos.openflow.controller.Dpid;
import org.onlab.onos.openflow.controller.OpenFlowSwitch;
+import org.onlab.onos.openflow.controller.RoleState;
import org.projectfloodlight.openflow.protocol.OFMessage;
/**
@@ -74,4 +75,12 @@
* @param m the message to process
*/
public void processMessage(Dpid dpid, OFMessage m);
+
+ /**
+ * Notifies the controller that role assertion has failed.
+ *
+ * @param dpid the switch that failed role assertion
+ * @param role the failed role
+ */
+ public void returnRoleAssertFailed(Dpid dpid, RoleState role);
}