当前位置: 首页>>代码示例>>Java>>正文


Java OFActionSetQueue类代码示例

本文整理汇总了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);
}
 
开发者ID:hksoni,项目名称:SDN-Multicast,代码行数:18,代码来源:MulticastTree.java

示例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);
}
 
开发者ID:hksoni,项目名称:SDN-Multicast,代码行数:40,代码来源:MulticastTree.java

示例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);
	}
 
开发者ID:hksoni,项目名称:SDN-Multicast,代码行数:31,代码来源:MulticastTree.java

示例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;
}
 
开发者ID:shlee89,项目名称:athena,代码行数:67,代码来源:FlowModBuilderVer13.java

示例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;
}
 
开发者ID:opennetworkinglab,项目名称:onos,代码行数:77,代码来源:FlowModBuilderVer15.java


注:本文中的org.projectfloodlight.openflow.protocol.action.OFActionSetQueue类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。