本文整理汇总了Java中org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg类的典型用法代码示例。如果您正苦于以下问题:Java OFFlowModFailedErrorMsg类的具体用法?Java OFFlowModFailedErrorMsg怎么用?Java OFFlowModFailedErrorMsg使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
OFFlowModFailedErrorMsg类属于org.projectfloodlight.openflow.protocol.errormsg包,在下文中一共展示了OFFlowModFailedErrorMsg类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: processOFError
import org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg; //导入依赖的package包/类
@Override
void processOFError(OFChannelHandler h, OFErrorMsg m)
throws IOException, SwitchStateException {
// if we get here, then the error message is for something else
if (m.getErrType() == OFErrorType.BAD_REQUEST &&
((OFBadRequestErrorMsg) m).getCode() ==
OFBadRequestCode.EPERM) {
// We are the master controller and the switch returned
// a permission error. This is a likely indicator that
// the switch thinks we are slave. Reassert our
// role
// FIXME: this could be really bad during role transitions
// if two controllers are master (even if its only for
// a brief period). We might need to see if these errors
// persist before we reassert
h.sw.reassertRole();
} else if (m.getErrType() == OFErrorType.FLOW_MOD_FAILED &&
((OFFlowModFailedErrorMsg) m).getCode() ==
OFFlowModFailedCode.ALL_TABLES_FULL) {
h.sw.setTableFull(true);
} else {
logError(h, m);
}
h.dispatchMessage(m);
}
示例2: processOFError
import org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg; //导入依赖的package包/类
@Override
void processOFError(OFErrorMsg m) {
// role changer will ignore the error if it isn't for it
boolean didHandle = roleChanger.deliverError(m);
if (didHandle)
return;
if ((m.getErrType() == OFErrorType.BAD_REQUEST) &&
(((OFBadRequestErrorMsg)m).getCode() == OFBadRequestCode.EPERM)) {
// We are the master controller and the switch returned
// a permission error. This is a likely indicator that
// the switch thinks we are slave. Reassert our
// role
// FIXME: this could be really bad during role transitions
// if two controllers are master (even if its only for
// a brief period). We might need to see if these errors
// persist before we reassert
switchManagerCounters.epermErrorWhileSwitchIsMaster.increment();
log.warn("Received permission error from switch {} while" +
"being master. Reasserting master role.",
getSwitchInfoString());
reassertRole(OFControllerRole.ROLE_MASTER);
}
else if ((m.getErrType() == OFErrorType.FLOW_MOD_FAILED) &&
(((OFFlowModFailedErrorMsg)m).getCode() == OFFlowModFailedCode.ALL_TABLES_FULL)) {
sw.setTableFull(true);
}
else {
logError(m);
}
dispatchMessage(m);
}
示例3: processOFError
import org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg; //导入依赖的package包/类
@LogMessageDoc(level="WARN",
message="Received permission error from switch {} while" +
"being master. Reasserting master role.",
explanation="The switch has denied an operation likely " +
"indicating inconsistent controller roles",
recommendation="This situation can occurs transiently during role" +
" changes. If, however, the condition persists or happens" +
" frequently this indicates a role inconsistency. " +
LogMessageDoc.CHECK_CONTROLLER )
@Override
void processOFError(OFErrorMsg m) {
// role changer will ignore the error if it isn't for it
boolean didHandle = roleChanger.deliverError(m);
if (didHandle)
return;
if ((m.getErrType() == OFErrorType.BAD_REQUEST) &&
(((OFBadRequestErrorMsg)m).getCode() == OFBadRequestCode.EPERM)) {
// We are the master controller and the switch returned
// a permission error. This is a likely indicator that
// the switch thinks we are slave. Reassert our
// role
// FIXME: this could be really bad during role transitions
// if two controllers are master (even if its only for
// a brief period). We might need to see if these errors
// persist before we reassert
switchManagerCounters.epermErrorWhileSwitchIsMaster.increment();
log.warn("Received permission error from switch {} while" +
"being master. Reasserting master role.",
getSwitchInfoString());
reassertRole(OFControllerRole.ROLE_MASTER);
}
else if ((m.getErrType() == OFErrorType.FLOW_MOD_FAILED) &&
(((OFFlowModFailedErrorMsg)m).getCode() == OFFlowModFailedCode.ALL_TABLES_FULL)) {
sw.setTableFull(true);
}
else {
logError(m);
}
dispatchMessage(m);
}
示例4: processOFError
import org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg; //导入依赖的package包/类
@Override
void processOFError(OFChannelHandler h, OFErrorMsg m)
throws IOException, SwitchStateException {
// if we get here, then the error message is for something else
if (m.getErrType() == OFErrorType.BAD_REQUEST &&
(((OFBadRequestErrorMsg) m).getCode() ==
OFBadRequestCode.EPERM ||
((OFBadRequestErrorMsg) m).getCode() ==
OFBadRequestCode.IS_SLAVE)) {
// We are the master controller and the switch returned
// a permission error. This is a likely indicator that
// the switch thinks we are slave. Reassert our
// role
// FIXME: this could be really bad during role transitions
// if two controllers are master (even if its only for
// a brief period). We might need to see if these errors
// persist before we reassert
h.sw.reassertRole();
} else if (m.getErrType() == OFErrorType.FLOW_MOD_FAILED &&
((OFFlowModFailedErrorMsg) m).getCode() ==
OFFlowModFailedCode.ALL_TABLES_FULL) {
h.sw.setTableFull(true);
} else {
logError(h, m);
}
h.dispatchMessage(m);
}
示例5: processOFError
import org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg; //导入依赖的package包/类
@LogMessageDoc(level = "WARN",
message = "Received permission error from switch {} while" +
"being master. Reasserting master role.",
explanation = "The switch has denied an operation likely " +
"indicating inconsistent controller roles",
recommendation = "This situation can occurs transiently during role" +
" changes. If, however, the condition persists or happens" +
" frequently this indicates a role inconsistency. " +
LogMessageDoc.CHECK_CONTROLLER)
@Override
void processOFError(OFChannelHandler h, OFErrorMsg m)
throws IOException, SwitchStateException {
// first check if the error msg is in response to a role-request
// message
RoleRecvStatus rrstatus = h.roleChanger.deliverError(m);
if (rrstatus != RoleRecvStatus.OTHER_EXPECTATION) {
// rolechanger has handled the error message - we are done
return;
}
// if we get here, then the error message is for something else
if (m.getErrType() == OFErrorType.BAD_REQUEST &&
((OFBadRequestErrorMsg) m).getCode() ==
OFBadRequestCode.EPERM) {
// We are the master controller and the switch returned
// a permission error. This is a likely indicator that
// the switch thinks we are slave. Reassert our
// role
// FIXME: this could be really bad during role transitions
// if two controllers are master (even if its only for
// a brief period). We might need to see if these errors
// persist before we reassert
h.counters.epermErrorWhileSwitchIsMaster.updateCounterWithFlush();
log.warn("Received permission error from switch {} while" +
"being master. Reasserting master role.",
h.getSwitchInfoString());
// h.controller.reassertRole(h, Role.MASTER);
// XXX S reassert in role changer or reconsider if all this
// stuff is really needed
} else if (m.getErrType() == OFErrorType.FLOW_MOD_FAILED &&
((OFFlowModFailedErrorMsg) m).getCode() ==
OFFlowModFailedCode.ALL_TABLES_FULL) {
h.sw.setTableFull(true);
} else {
logError(h, m);
}
h.dispatchMessage(m);
}
示例6: handleErrorMsg
import org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg; //导入依赖的package包/类
private void handleErrorMsg(DeviceId deviceId, OFMessage msg) {
InternalCacheEntry entry = pendingBatches.getIfPresent(msg.getXid());
OFErrorMsg error = (OFErrorMsg) msg;
OFMessage ofMessage = null;
switch (error.getErrType()) {
case BAD_ACTION:
OFBadActionErrorMsg baErrorMsg = (OFBadActionErrorMsg) error;
if (baErrorMsg.getData().getParsedMessage().isPresent()) {
ofMessage = baErrorMsg.getData().getParsedMessage().get();
}
break;
case BAD_INSTRUCTION:
OFBadInstructionErrorMsg biErrorMsg = (OFBadInstructionErrorMsg) error;
if (biErrorMsg.getData().getParsedMessage().isPresent()) {
ofMessage = biErrorMsg.getData().getParsedMessage().get();
}
break;
case BAD_MATCH:
OFBadMatchErrorMsg bmErrorMsg = (OFBadMatchErrorMsg) error;
if (bmErrorMsg.getData().getParsedMessage().isPresent()) {
ofMessage = bmErrorMsg.getData().getParsedMessage().get();
}
break;
case FLOW_MOD_FAILED:
OFFlowModFailedErrorMsg fmFailed = (OFFlowModFailedErrorMsg) error;
if (fmFailed.getData().getParsedMessage().isPresent()) {
ofMessage = fmFailed.getData().getParsedMessage().get();
}
break;
default:
// Do nothing.
return;
}
if (ofMessage != null) {
if (entry != null) {
OFFlowMod ofFlowMod = (OFFlowMod) ofMessage;
entry.appendFailure(new FlowEntryBuilder(deviceId, ofFlowMod, getDriver(deviceId)).build());
} else {
log.error("No matching batch for this error: {}", error);
}
} else {
U64 cookieId = readCookieIdFromOFErrorMsg(error, msg.getVersion());
if (cookieId != null) {
long flowId = cookieId.getValue();
if (entry != null) {
for (FlowRuleBatchEntry fbEntry : entry.operation.getOperations()) {
if (fbEntry.target().id().value() == flowId) {
entry.appendFailure(fbEntry.target());
break;
}
}
} else {
log.error("No matching batch for this error: {}", error);
}
} else {
log.error("Flow installation failed but switch " +
"didn't tell us which one.");
}
}
}