Search in sources :

Example 1 with OFNiciraControllerRole

use of org.projectfloodlight.openflow.protocol.OFNiciraControllerRole in project onos by opennetworkinglab.

the class RoleManager method sendNxRoleRequest.

/**
 * Send NX role request message to the switch requesting the specified
 * role.
 *
 * @param role role to request
 */
private long sendNxRoleRequest(RoleState role) throws IOException {
    // Convert the role enum to the appropriate role to send
    OFNiciraControllerRole roleToSend = OFNiciraControllerRole.ROLE_OTHER;
    switch(role) {
        case MASTER:
            roleToSend = OFNiciraControllerRole.ROLE_MASTER;
            break;
        case SLAVE:
        case EQUAL:
        default:
            // ensuring that the only two roles sent to 1.0 switches with
            // Nicira role support, are MASTER and SLAVE
            roleToSend = OFNiciraControllerRole.ROLE_OTHER;
            log.debug("Sending Nx Role.SLAVE to switch {}.", sw);
    }
    long xid = sw.getNextTransactionId();
    OFExperimenter roleRequest = OFFactories.getFactory(OFVersion.OF_10).buildNiciraControllerRoleRequest().setXid(xid).setRole(roleToSend).build();
    sw.sendRoleRequest(roleRequest);
    return xid;
}
Also used : OFExperimenter(org.projectfloodlight.openflow.protocol.OFExperimenter) OFNiciraControllerRole(org.projectfloodlight.openflow.protocol.OFNiciraControllerRole)

Example 2 with OFNiciraControllerRole

use of org.projectfloodlight.openflow.protocol.OFNiciraControllerRole in project onos by opennetworkinglab.

the class RoleManager method extractNiciraRoleReply.

/**
 * Extract the role from an OFVendor message.
 *
 * Extract the role from an OFVendor message if the message is a
 * Nicira role reply. Otherwise return null.
 *
 * @param experimenterMsg message
 * @return The role in the message if the message is a Nicira role
 * reply, null otherwise.
 * @throws SwitchStateException If the message is a Nicira role reply
 * but the numeric role value is unknown.
 */
@Override
public RoleState extractNiciraRoleReply(OFExperimenter experimenterMsg) throws SwitchStateException {
    int vendor = (int) experimenterMsg.getExperimenter();
    if (vendor != 0x2320) {
        return null;
    }
    OFNiciraControllerRoleReply nrr = (OFNiciraControllerRoleReply) experimenterMsg;
    RoleState role = null;
    OFNiciraControllerRole ncr = nrr.getRole();
    switch(ncr) {
        case ROLE_MASTER:
            role = RoleState.MASTER;
            break;
        case ROLE_OTHER:
            role = RoleState.EQUAL;
            break;
        case ROLE_SLAVE:
            role = RoleState.SLAVE;
            break;
        // handled below
        default:
    }
    if (role == null) {
        String msg = String.format("Switch: [%s], " + "received NX_ROLE_REPLY with invalid role " + "value %s", sw.getStringId(), nrr.getRole());
        throw new SwitchStateException(msg);
    }
    return role;
}
Also used : OFNiciraControllerRoleReply(org.projectfloodlight.openflow.protocol.OFNiciraControllerRoleReply) OFNiciraControllerRole(org.projectfloodlight.openflow.protocol.OFNiciraControllerRole) RoleState(org.onosproject.openflow.controller.RoleState) SwitchStateException(org.onosproject.openflow.controller.driver.SwitchStateException)

Aggregations

OFNiciraControllerRole (org.projectfloodlight.openflow.protocol.OFNiciraControllerRole)2 RoleState (org.onosproject.openflow.controller.RoleState)1 SwitchStateException (org.onosproject.openflow.controller.driver.SwitchStateException)1 OFExperimenter (org.projectfloodlight.openflow.protocol.OFExperimenter)1 OFNiciraControllerRoleReply (org.projectfloodlight.openflow.protocol.OFNiciraControllerRoleReply)1