本文整理汇总了Java中org.projectfloodlight.openflow.protocol.action.OFActionSetQueue类的典型用法代码示例。如果您正苦于以下问题:Java OFActionSetQueue类的具体用法?Java OFActionSetQueue怎么用?Java OFActionSetQueue使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
OFActionSetQueue类属于org.projectfloodlight.openflow.protocol.action包,在下文中一共展示了OFActionSetQueue类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: sendOFGroupModDelMemberMsg
import org.projectfloodlight.openflow.protocol.action.OFActionSetQueue; //导入依赖的package包/类
protected void sendOFGroupModDelMemberMsg(IOFSwitch sw, OFPort destPort) {
/* removes member port form the group*/
OFBucket ofb = multicastGroup.removeMemberOFBucket(sw.getId(), destPort);
/* prepares a modify object sends it to the switch */
pushOFModifyGroup(sw);
long queueId = -1;
for (OFAction ofa: ofb.getActions()){
if (ofa.getType() == OFActionType.SET_QUEUE){
OFActionSetQueue ofas = (OFActionSetQueue) ofa;
queueId = ofas.getQueueId();
}
}
/* removes queue using OVSDBContext on the switch */
OVSDBContext ovsdbContext = mcObject.ovsdbChannelMap.get(sw.getId());
ovsdbContext.deleteQueueOnPort(destPort, (int)queueId);
}
示例2: pushOFDeleteGroup
import org.projectfloodlight.openflow.protocol.action.OFActionSetQueue; //导入依赖的package包/类
protected void pushOFDeleteGroup(IOFSwitch sw) {
/* Delete the queues attached to all the member ports*/
long queueId = -1;
OFPort ofp = null;
ArrayList<OFBucket> ofBuckets = multicastGroup.getMemberOFBucketList(sw.getId());
OVSDBContext ovsdbContext = mcObject.ovsdbChannelMap.get(sw.getId());
for (OFBucket ofb : ofBuckets) {
queueId = -1;
ofp = null;
for (OFAction ofa: ofb.getActions()){
if (ofa.getType() == OFActionType.SET_QUEUE){
OFActionSetQueue ofas = (OFActionSetQueue) ofa;
queueId = ofas.getQueueId();
/* removes queue using OVSDBContext on the switch */
}
if (ofa.getType() == OFActionType.OUTPUT){
OFActionOutput ofo = (OFActionOutput) ofa;
ofp = ofo.getPort();
/* removes queue using OVSDBContext on the switch */
}
}
if (ofp != null && queueId != -1)
ovsdbContext.deleteQueueOnPort(ofp, (int)queueId);
else
logger.error("pushOFDeleteGroup: unexpected actionset in group bucket");
}
/* Creates group flow with set queue option */
OFFactory of13Factory = sw.getOFFactory();
OFGroupDelete delGroup = of13Factory.buildGroupDelete()
.setGroup(OFGroup.of(multicastGroup.ofGroupId))
.setGroupType(OFGroupType.ALL)
.build();
sw.write(delGroup);
}
示例3: addQoSOFBucketToGroup
import org.projectfloodlight.openflow.protocol.action.OFActionSetQueue; //导入依赖的package包/类
private void addQoSOFBucketToGroup(IOFSwitch sw, OFPort destPort, long bandwidth) {
/* creates queue using OVSDBContext on the switch */
OVSDBContext ovsdbContext = mcObject.ovsdbChannelMap.get(sw.getId());
/* FIXME: hardcoded priority '1' for all flows */
int queueId = ovsdbContext.createQueueOnPort(destPort, Long.toString(bandwidth), "1");
OFFactory of13Factory = sw.getOFFactory();
/* creates actions for the bucket */
ArrayList<OFAction> actionList = new ArrayList<OFAction>();
OFActions actions = of13Factory.actions();
OFActionSetQueue setQueue = actions.buildSetQueue().setQueueId(queueId).build();
actionList.add(setQueue);
OFActionOutput output = actions.buildOutput()
.setMaxLen(0xFFffFFff)
.setPort(destPort).build();
actionList.add(output);
/* creates a bucket */
OFBucket bucket = of13Factory.buildBucket()
.setActions(actionList)
.setWatchGroup(OFGroup.ANY)
.setWatchPort(OFPort.ANY)
.build();
/* store the bucket in multicastGroup object */
multicastGroup.addMemberOFBucket(sw.getId(),
destPort.getShortPortNumber(), bucket);
}
示例4: buildActions
import org.projectfloodlight.openflow.protocol.action.OFActionSetQueue; //导入依赖的package包/类
private List<OFAction> buildActions(List<Instruction> treatments) {
if (treatment == null) {
return Collections.emptyList();
}
boolean tableFound = false;
List<OFAction> actions = new LinkedList<>();
for (Instruction i : treatments) {
switch (i.type()) {
case NOACTION:
return Collections.emptyList();
case L0MODIFICATION:
actions.add(buildL0Modification(i));
break;
case L1MODIFICATION:
actions.add(buildL1Modification(i));
break;
case L2MODIFICATION:
actions.add(buildL2Modification(i));
break;
case L3MODIFICATION:
actions.add(buildL3Modification(i));
break;
case L4MODIFICATION:
actions.add(buildL4Modification(i));
break;
case OUTPUT:
OutputInstruction out = (OutputInstruction) i;
OFActionOutput.Builder action = factory().actions().buildOutput()
.setPort(OFPort.of((int) out.port().toLong()));
if (out.port().equals(PortNumber.CONTROLLER)) {
action.setMaxLen(OFPCML_NO_BUFFER);
}
actions.add(action.build());
break;
case GROUP:
GroupInstruction group = (GroupInstruction) i;
OFActionGroup.Builder groupBuilder = factory().actions().buildGroup()
.setGroup(OFGroup.of(group.groupId().id()));
actions.add(groupBuilder.build());
break;
case QUEUE:
SetQueueInstruction queue = (SetQueueInstruction) i;
OFActionSetQueue.Builder queueBuilder = factory().actions().buildSetQueue()
.setQueueId(queue.queueId());
actions.add(queueBuilder.build());
break;
case TABLE:
//FIXME: should not occur here.
tableFound = true;
break;
case EXTENSION:
actions.add(buildExtensionAction(((Instructions.ExtensionInstructionWrapper) i)
.extensionInstruction()));
break;
default:
log.warn("Instruction type {} not yet implemented.", i.type());
}
}
if (tableFound && actions.isEmpty()) {
// handles the case where there are no actions, but there is
// a goto instruction for the next table
return Collections.emptyList();
}
return actions;
}
示例5: buildActions
import org.projectfloodlight.openflow.protocol.action.OFActionSetQueue; //导入依赖的package包/类
private List<OFAction> buildActions(List<Instruction> treatments, Boolean immediateActions) {
if (treatment == null) {
return Collections.emptyList();
}
boolean tableFound = false;
List<OFAction> actions = new LinkedList<>();
//Meter action handling
if (null != treatment.meters() && immediateActions) {
treatment.meters().forEach(meterInstruction -> {
OFAction meterAction = buildMeterAction(meterInstruction);
actions.add(meterAction);
});
}
for (Instruction i : treatments) {
switch (i.type()) {
case NOACTION:
return Collections.emptyList();
case L0MODIFICATION:
actions.add(buildL0Modification(i));
break;
case L1MODIFICATION:
actions.add(buildL1Modification(i));
break;
case L2MODIFICATION:
actions.add(buildL2Modification(i));
break;
case L3MODIFICATION:
actions.add(buildL3Modification(i));
break;
case L4MODIFICATION:
actions.add(buildL4Modification(i));
break;
case OUTPUT:
Instructions.OutputInstruction out = (Instructions.OutputInstruction) i;
OFActionOutput.Builder action = factory().actions().buildOutput()
.setPort(OFPort.of((int) out.port().toLong()));
if (out.port().equals(PortNumber.CONTROLLER)) {
action.setMaxLen(OFPCML_NO_BUFFER);
}
actions.add(action.build());
break;
case GROUP:
Instructions.GroupInstruction group = (Instructions.GroupInstruction) i;
OFActionGroup.Builder groupBuilder = factory().actions().buildGroup()
.setGroup(OFGroup.of(group.groupId().id()));
actions.add(groupBuilder.build());
break;
case QUEUE:
Instructions.SetQueueInstruction queue = (Instructions.SetQueueInstruction) i;
OFActionSetQueue.Builder queueBuilder = factory().actions().buildSetQueue()
.setQueueId(queue.queueId());
actions.add(queueBuilder.build());
break;
case TABLE:
//FIXME: should not occur here.
tableFound = true;
break;
case EXTENSION:
actions.add(buildExtensionAction(((Instructions.ExtensionInstructionWrapper) i)
.extensionInstruction()));
break;
default:
log.warn("Instruction type {} not yet implemented.", i.type());
}
}
if (tableFound && actions.isEmpty()) {
// handles the case where there are no actions, but there is
// a goto instruction for the next table
return Collections.emptyList();
}
return actions;
}