private Role extractNiciraRoleRequest(Channel chan, OFVendor vendorMessage) {
int vendor = vendorMessage.getVendor();
if (vendor != OFNiciraVendorData.NX_VENDOR_ID) {
return null;
}
if (!(vendorMessage.getVendorData() instanceof OFRoleRequestVendorData)) {
return null;
}
OFRoleRequestVendorData roleRequestVendorData = (OFRoleRequestVendorData) vendorMessage
.getVendorData();
Role role = Role.fromNxRole(roleRequestVendorData.getRole());
if (role == null) {
String msg = String.format("Controller: [%s], State: [%s], "
+ "received NX_ROLE_REPLY with invalid role " + "value %d",
chan.getRemoteAddress(), this.toString(),
roleRequestVendorData.getRole());
throw new ControllerStateException(msg);
}
return role;
}