vertical feedback path for Role replies
Change-Id: I31bdb85f90901ec79147adeea0df8ceae00ed1dc
diff --git a/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OpenFlowControllerImpl.java b/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OpenFlowControllerImpl.java
index 70c9b1b..098771d 100644
--- a/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OpenFlowControllerImpl.java
+++ b/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/OpenFlowControllerImpl.java
@@ -374,9 +374,9 @@
}
@Override
- public void returnRoleAssertFailed(Dpid dpid, RoleState role) {
+ public void returnRoleReply(Dpid dpid, RoleState requested, RoleState response) {
for (OpenFlowSwitchListener l : ofSwitchListener) {
- l.roleAssertFailed(dpid, role);
+ l.receivedRoleReply(dpid, requested, response);
}
}
}
diff --git a/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/RoleManager.java b/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/RoleManager.java
index c9f71b7..a22aac0 100644
--- a/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/RoleManager.java
+++ b/openflow/ctl/src/main/java/org/onlab/onos/openflow/controller/impl/RoleManager.java
@@ -224,8 +224,8 @@
}
int xid = (int) rri.getXid();
- RoleState role = rri.getRole();
- // XXX S should check generation id meaningfully and other cases of expectations
+ RoleState receivedRole = rri.getRole();
+ // XXX Should check generation id meaningfully and other cases of expectations
if (pendingXid != xid) {
log.debug("Received older role reply from " +
@@ -236,10 +236,12 @@
return RoleRecvStatus.OLD_REPLY;
}
- if (pendingRole == role) {
+ sw.returnRoleReply(pendingRole, receivedRole);
+
+ if (pendingRole == receivedRole) {
log.debug("Received role reply message from {} that matched "
+ "expected role-reply {} with expectations {}",
- new Object[] {sw.getStringId(), role, expectation});
+ new Object[] {sw.getStringId(), receivedRole, expectation});
if (expectation == RoleRecvStatus.MATCHED_CURRENT_ROLE ||
expectation == RoleRecvStatus.MATCHED_SET_ROLE) {
@@ -247,8 +249,6 @@
} else {
return RoleRecvStatus.OTHER_EXPECTATION;
}
- } else {
- sw.returnRoleAssertFailure(pendingRole);
}
// if xids match but role's don't, perhaps its a query (OF1.3)
diff --git a/openflow/ctl/src/test/java/org/onlab/onos/openflow/controller/impl/RoleManagerTest.java b/openflow/ctl/src/test/java/org/onlab/onos/openflow/controller/impl/RoleManagerTest.java
index aa23995..7260ddd 100644
--- a/openflow/ctl/src/test/java/org/onlab/onos/openflow/controller/impl/RoleManagerTest.java
+++ b/openflow/ctl/src/test/java/org/onlab/onos/openflow/controller/impl/RoleManagerTest.java
@@ -175,11 +175,6 @@
}
@Override
- public void returnRoleAssertFailure(RoleState role) {
- failed = role;
- }
-
- @Override
public boolean isOptical() {
return false;
}
@@ -300,5 +295,10 @@
public void write(List<OFMessage> msgs) {
}
+ @Override
+ public void returnRoleReply(RoleState requested, RoleState response) {
+ failed = requested;
+ }
+
}
}