Java 类org.projectfloodlight.openflow.types.OFGroup 实例源码

项目:athena    文件:GroupStatsCollector.java   
private void sendGroupStatistic() {
    if (log.isTraceEnabled()) {
        log.trace("sendGroupStatistics {}:{}", sw.getStringId(), sw.getRole());
    }
    if (sw.getRole() != RoleState.MASTER) {
        return;
    }
    Long statsXid = OpenFlowGroupProvider.getXidAndAdd(2);
    OFGroupStatsRequest statsRequest = sw.factory().buildGroupStatsRequest()
            .setGroup(OFGroup.ALL)
            .setXid(statsXid)
            .build();
    sw.sendMsg(statsRequest);

    Long descXid = statsXid + 1;
    OFGroupDescStatsRequest descStatsRequest =
            sw.factory().buildGroupDescStatsRequest()
                    .setXid(descXid)
                    .build();
    sw.sendMsg(descStatsRequest);
}
项目:open-kilda    文件:SwitchManager.java   
/**
 * {@inheritDoc}
 */
@Override
public OFFlowStatsReply dumpFlowTable(final DatapathId dpid) {
    OFFlowStatsReply values = null;
    IOFSwitch sw = ofSwitchService.getSwitch(dpid);
    if (sw == null) {
        throw new IllegalArgumentException(String.format("Switch %s was not found", dpid.toString()));
    }

    OFFactory ofFactory = sw.getOFFactory();
    OFFlowStatsRequest flowRequest = ofFactory.buildFlowStatsRequest()
            .setMatch(sw.getOFFactory().matchWildcardAll())
            .setTableId(TableId.ALL)
            .setOutPort(OFPort.ANY)
            .setOutGroup(OFGroup.ANY)
            .setCookieMask(U64.ZERO)
            .build();

    try {
        ListenableFuture<OFFlowStatsReply> future = sw.writeRequest(flowRequest);
        values = future.get(10, TimeUnit.SECONDS);
    } catch (ExecutionException | InterruptedException | TimeoutException e) {
        logger.error("Could not get flow stats: {}", e.getMessage());
    }

    return values;
}
项目:athena    文件:CorsaSwitchHandshaker.java   
@Override
public void startDriverHandshake() {
    if (startDriverHandshakeCalled) {
        throw new SwitchDriverSubHandshakeAlreadyStarted();
    }
    startDriverHandshakeCalled = true;
    OFFlowMod fm = factory().buildFlowDelete()
            .setTableId(TableId.ALL)
            .setOutGroup(OFGroup.ANY)
            .build();

    sendMsg(Collections.singletonList(fm));

    OFGroupMod gm = factory().buildGroupDelete()
            .setGroup(OFGroup.ALL)
            .setGroupType(OFGroupType.ALL)
            .build();

    sendMsg(Collections.singletonList(gm));

    OFMeterMod mm = factory().buildMeterMod()
            .setMeterId(MeterId.ALL.id())
            .build();

    sendMsg(Collections.singletonList(mm));

    barrierXid = getNextTransactionId();
    OFBarrierRequest barrier = factory().buildBarrierRequest()
            .setXid(barrierXid).build();


    sendHandshakeMessage(barrier);

}
项目:athena    文件:GroupModBuilder.java   
/**
 * Builds the GroupAdd OF message.
 *
 * @return GroupAdd OF message
 */
public OFGroupAdd buildGroupAdd() {

    List<OFBucket> ofBuckets = new ArrayList<OFBucket>();
    for (GroupBucket bucket: buckets.buckets()) {
        List<OFAction> actions = buildActions(bucket.treatment());

        OFBucket.Builder bucketBuilder = factory.buildBucket();
        bucketBuilder.setActions(actions);
        if (type == GroupDescription.Type.SELECT) {
            bucketBuilder.setWeight(1);
        }

        if (type == GroupDescription.Type.FAILOVER && bucket.watchPort() != null) {
            bucketBuilder.setWatchPort(OFPort.of((int) bucket.watchPort().toLong()));
        } else {
            bucketBuilder.setWatchPort(OFPort.ANY);
        }
        if (type == GroupDescription.Type.FAILOVER &&  bucket.watchGroup() != null) {
            bucketBuilder.setWatchGroup(OFGroup.of(bucket.watchGroup().id()));
        } else {
            bucketBuilder.setWatchGroup(OFGroup.ANY);
        }
        OFBucket ofBucket = bucketBuilder.build();
        ofBuckets.add(ofBucket);
    }

    OFGroupAdd groupMsg = factory.buildGroupAdd()
            .setGroup(OFGroup.of(groupId.id()))
            .setBuckets(ofBuckets)
            .setGroupType(getOFGroupType(type))
            .setXid(xid)
            .build();

    return groupMsg;
}
项目:athena    文件:GroupModBuilder.java   
/**
 * Builds the GroupMod OF message.
 *
 * @return GroupMod OF message
 */
public OFGroupMod buildGroupMod() {
    List<OFBucket> ofBuckets = new ArrayList<OFBucket>();
    for (GroupBucket bucket: buckets.buckets()) {
        List<OFAction> actions = buildActions(bucket.treatment());

        OFBucket.Builder bucketBuilder = factory.buildBucket();
        bucketBuilder.setActions(actions);
        if (type == GroupDescription.Type.SELECT) {
            bucketBuilder.setWeight(1);
        }
        if (type == GroupDescription.Type.FAILOVER && bucket.watchPort() != null) {
            bucketBuilder.setWatchPort(OFPort.of((int) bucket.watchPort().toLong()));
        } else {
            bucketBuilder.setWatchPort(OFPort.ANY);
        }
        if (type == GroupDescription.Type.FAILOVER &&  bucket.watchGroup() != null) {
            bucketBuilder.setWatchGroup(OFGroup.of(bucket.watchGroup().id()));
        } else {
            bucketBuilder.setWatchGroup(OFGroup.ANY);
        }

        OFBucket ofBucket = bucketBuilder.build();
        ofBuckets.add(ofBucket);
    }

    OFGroupMod groupMsg = factory.buildGroupModify()
            .setGroup(OFGroup.of(groupId.id()))
            .setBuckets(ofBuckets)
            .setGroupType(getOFGroupType(type))
            .setXid(xid)
            .build();

    return groupMsg;
}
项目:athena    文件:GroupModBuilder.java   
/**
 * Builds the GroupDel OF message.
 *
 * @return GroupDel OF message
 */
public OFGroupDelete buildGroupDel() {

    OFGroupDelete groupMsg = factory.buildGroupDelete()
            .setGroup(OFGroup.of(groupId.id()))
            .setGroupType(OFGroupType.SELECT)
            .setXid(xid)
            .build();

    return groupMsg;
}
项目:athena    文件:OpenFlowGroupProviderTest.java   
@Test
public void groupModFailure() {
    TestOpenFlowGroupProviderService testProviderService =
            (TestOpenFlowGroupProviderService) providerService;

    GroupId groupId = new DefaultGroupId(1);
    List<GroupBucket> bucketList = Lists.newArrayList();
    TrafficTreatment.Builder builder = DefaultTrafficTreatment.builder();
    builder.setOutput(PortNumber.portNumber(1));
    GroupBucket bucket =
            DefaultGroupBucket.createSelectGroupBucket(builder.build());
    bucketList.add(bucket);
    GroupBuckets buckets = new GroupBuckets(bucketList);
    List<GroupOperation> operationList = Lists.newArrayList();
    GroupOperation operation = GroupOperation.createAddGroupOperation(groupId,
            GroupDescription.Type.SELECT, buckets);
    operationList.add(operation);
    GroupOperations operations = new GroupOperations(operationList);

    provider.performGroupOperation(deviceId, operations);

    OFGroupModFailedErrorMsg.Builder errorBuilder =
            OFFactories.getFactory(OFVersion.OF_13).errorMsgs().buildGroupModFailedErrorMsg();
    OFGroupMod.Builder groupBuilder = OFFactories.getFactory(OFVersion.OF_13).buildGroupModify();
    groupBuilder.setGroupType(OFGroupType.ALL);
    groupBuilder.setGroup(OFGroup.of(1));
    errorBuilder.setCode(OFGroupModFailedCode.GROUP_EXISTS);
    errorBuilder.setXid(provider.getXidAndAdd(0) - 1);

    controller.processPacket(dpid1, errorBuilder.build());

    assertNotNull("Operation failed should not be null",
            testProviderService.failedOperation);
}
项目:fresco_floodlight    文件:Forwarding.java   
@Override
public void switchActivated(DatapathId switchId) {
    IOFSwitch sw = switchService.getSwitch(switchId);
    if (sw == null) {
        log.warn("Switch {} was activated but had no switch object in the switch service. Perhaps it quickly disconnected", switchId);
        return;
    }
    if (OFDPAUtils.isOFDPASwitch(sw)) {
        sw.write(sw.getOFFactory().buildFlowDelete()
                .setTableId(TableId.ALL)
                .build()
                );
        sw.write(sw.getOFFactory().buildGroupDelete()
                .setGroup(OFGroup.ANY)
                .setGroupType(OFGroupType.ALL)
                .build()
                );
        sw.write(sw.getOFFactory().buildGroupDelete()
                .setGroup(OFGroup.ANY)
                .setGroupType(OFGroupType.INDIRECT)
                .build()
                );
        sw.write(sw.getOFFactory().buildBarrierRequest().build());

        List<OFPortModeTuple> portModes = new ArrayList<OFPortModeTuple>();
        for (OFPortDesc p : sw.getPorts()) {
            portModes.add(OFPortModeTuple.of(p.getPortNo(), OFPortMode.ACCESS));
        }
        if (log.isWarnEnabled()) {
            log.warn("For OF-DPA switch {}, initializing VLAN {} on ports {}", new Object[] { switchId, VlanVid.ZERO, portModes});
        }
        OFDPAUtils.addLearningSwitchPrereqs(sw, VlanVid.ZERO, portModes);
    }
}
项目:fresco_floodlight    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOFloodOverUnicastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_FLOOD_OVER_UNICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:fresco_floodlight    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOFloodOverMulticastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_FLOOD_OVER_MULTICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:fresco_floodlight    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOMulticastOverUnicastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_MULTICAST_OVER_UNICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:fresco_floodlight    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOMulticastOverMulticastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_MULTICAST_OVER_MULTICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:ACAMPController    文件:Forwarding.java   
@Override
public void switchActivated(DatapathId switchId) {
    IOFSwitch sw = switchService.getSwitch(switchId);
    if (sw == null) {
        log.warn("Switch {} was activated but had no switch object in the switch service. Perhaps it quickly disconnected", switchId);
        return;
    }
    if (OFDPAUtils.isOFDPASwitch(sw)) {
        sw.write(sw.getOFFactory().buildFlowDelete()
                .setTableId(TableId.ALL)
                .build()
                );
        sw.write(sw.getOFFactory().buildGroupDelete()
                .setGroup(OFGroup.ANY)
                .setGroupType(OFGroupType.ALL)
                .build()
                );
        sw.write(sw.getOFFactory().buildGroupDelete()
                .setGroup(OFGroup.ANY)
                .setGroupType(OFGroupType.INDIRECT)
                .build()
                );
        sw.write(sw.getOFFactory().buildBarrierRequest().build());

        List<OFPortModeTuple> portModes = new ArrayList<OFPortModeTuple>();
        for (OFPortDesc p : sw.getPorts()) {
            portModes.add(OFPortModeTuple.of(p.getPortNo(), OFPortMode.ACCESS));
        }
        if (log.isWarnEnabled()) {
            log.warn("For OF-DPA switch {}, initializing VLAN {} on ports {}", new Object[] { switchId, VlanVid.ZERO, portModes});
        }
        OFDPAUtils.addLearningSwitchPrereqs(sw, VlanVid.ZERO, portModes);
    }
}
项目:SDN-Multicast    文件:MulticastTree.java   
private void pushOFCreateGroup(IOFSwitch sw) {

        /* Creates group flow with set queue option */
        OFFactory of13Factory = sw.getOFFactory();

        OFGroupAdd addGroup = of13Factory.buildGroupAdd()
                .setGroup(OFGroup.of(multicastGroup.ofGroupId))
                .setGroupType(OFGroupType.ALL)
                .setBuckets(multicastGroup.getMemberOFBucketList(sw.getId()))
                .build();
        sw.write(addGroup);
    }
项目:SDN-Multicast    文件:MulticastTree.java   
private void pushOFModifyGroup(IOFSwitch sw) {

        /* Creates group flow with set queue option */
        OFFactory of13Factory = sw.getOFFactory();

        OFGroupMod modGroup = of13Factory.buildGroupModify()
                .setGroup(OFGroup.of(multicastGroup.ofGroupId))
                .setGroupType(OFGroupType.ALL)
                .setBuckets(multicastGroup.getMemberOFBucketList(sw.getId()))
                .build();

        sw.write(modGroup);
    }
项目:SDN-Multicast    文件:MulticastTree.java   
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);
}
项目:SDN-Multicast    文件:MulticastTree.java   
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);
    }
项目:SDN-Multicast    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOFloodOverUnicastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_FLOOD_OVER_UNICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:SDN-Multicast    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOMulticastOverMulticastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_MULTICAST_OVER_MULTICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:ACAMPController    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOMulticastOverMulticastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_MULTICAST_OVER_MULTICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:arscheduler    文件:Forwarding.java   
@Override
public void switchActivated(DatapathId switchId) {
    IOFSwitch sw = switchService.getSwitch(switchId);
    if (sw == null) {
        log.warn("Switch {} was activated but had no switch object in the switch service. Perhaps it quickly disconnected", switchId);
        return;
    }
    if (OFDPAUtils.isOFDPASwitch(sw)) {
        sw.write(sw.getOFFactory().buildFlowDelete()
                .setTableId(TableId.ALL)
                .build()
                );
        sw.write(sw.getOFFactory().buildGroupDelete()
                .setGroup(OFGroup.ANY)
                .setGroupType(OFGroupType.ALL)
                .build()
                );
        sw.write(sw.getOFFactory().buildGroupDelete()
                .setGroup(OFGroup.ANY)
                .setGroupType(OFGroupType.INDIRECT)
                .build()
                );
        sw.write(sw.getOFFactory().buildBarrierRequest().build());

        List<OFPortModeTuple> portModes = new ArrayList<OFPortModeTuple>();
        for (OFPortDesc p : sw.getPorts()) {
            portModes.add(OFPortModeTuple.of(p.getPortNo(), OFPortMode.ACCESS));
        }
        if (log.isWarnEnabled()) {
            log.warn("For OF-DPA switch {}, initializing VLAN {} on ports {}", new Object[] { switchId, VlanVid.ZERO, portModes});
        }
        OFDPAUtils.addLearningSwitchPrereqs(sw, VlanVid.ZERO, portModes);
    }
}
项目:arscheduler    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOFloodOverUnicastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_FLOOD_OVER_UNICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:arscheduler    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOFloodOverMulticastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_FLOOD_OVER_MULTICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:arscheduler    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOMulticastOverUnicastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_MULTICAST_OVER_UNICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:floodlight1.2-delay    文件:Forwarding.java   
@Override
public void switchActivated(DatapathId switchId) {
    IOFSwitch sw = switchService.getSwitch(switchId);
    if (sw == null) {
        log.warn("Switch {} was activated but had no switch object in the switch service. Perhaps it quickly disconnected", switchId);
        return;
    }
    if (OFDPAUtils.isOFDPASwitch(sw)) {
        sw.write(sw.getOFFactory().buildFlowDelete()
                .setTableId(TableId.ALL)
                .build()
                );
        sw.write(sw.getOFFactory().buildGroupDelete()
                .setGroup(OFGroup.ANY)
                .setGroupType(OFGroupType.ALL)
                .build()
                );
        sw.write(sw.getOFFactory().buildGroupDelete()
                .setGroup(OFGroup.ANY)
                .setGroupType(OFGroupType.INDIRECT)
                .build()
                );
        sw.write(sw.getOFFactory().buildBarrierRequest().build());

        List<OFPortModeTuple> portModes = new ArrayList<OFPortModeTuple>();
        for (OFPortDesc p : sw.getPorts()) {
            portModes.add(OFPortModeTuple.of(p.getPortNo(), OFPortMode.ACCESS));
        }
        if (log.isWarnEnabled()) {
            log.warn("For OF-DPA switch {}, initializing VLAN {} on ports {}", new Object[] { switchId, VlanVid.ZERO, portModes});
        }
        OFDPAUtils.addLearningSwitchPrereqs(sw, VlanVid.ZERO, portModes);
    }
}
项目:ACAMPController    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOFloodOverUnicastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_FLOOD_OVER_UNICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:floodlight1.2-delay    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOFloodOverUnicastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_FLOOD_OVER_UNICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:floodlight1.2-delay    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOMulticastOverUnicastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_MULTICAST_OVER_UNICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:floodlight1.2-delay    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOMulticastOverMulticastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_MULTICAST_OVER_MULTICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:ACAMPController    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOMulticastOverUnicastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_MULTICAST_OVER_UNICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:floodlight-hardware    文件:Forwarding.java   
@Override
public void switchActivated(DatapathId switchId) {
    IOFSwitch sw = switchService.getSwitch(switchId);
    if (sw == null) {
        log.warn("Switch {} was activated but had no switch object in the switch service. Perhaps it quickly disconnected", switchId);
        return;
    }
    if (OFDPAUtils.isOFDPASwitch(sw)) {
        sw.write(sw.getOFFactory().buildFlowDelete()
                .setTableId(TableId.ALL)
                .build()
                );
        sw.write(sw.getOFFactory().buildGroupDelete()
                .setGroup(OFGroup.ANY)
                .setGroupType(OFGroupType.ALL)
                .build()
                );
        sw.write(sw.getOFFactory().buildGroupDelete()
                .setGroup(OFGroup.ANY)
                .setGroupType(OFGroupType.INDIRECT)
                .build()
                );
        sw.write(sw.getOFFactory().buildBarrierRequest().build());

        List<OFPortModeTuple> portModes = new ArrayList<OFPortModeTuple>();
        for (OFPortDesc p : sw.getPorts()) {
            portModes.add(OFPortModeTuple.of(p.getPortNo(), OFPortMode.ACCESS));
        }
        if (log.isWarnEnabled()) {
            log.warn("For OF-DPA switch {}, initializing VLAN {} on ports {}", new Object[] { switchId, VlanVid.ZERO, portModes});
        }
        OFDPAUtils.addLearningSwitchPrereqs(sw, VlanVid.ZERO, portModes);
    }
}
项目:ACAMPController    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOFloodOverMulticastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff) 
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_FLOOD_OVER_MULTICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:floodlight-hardware    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOFloodOverUnicastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff)
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_FLOOD_OVER_UNICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:floodlight-hardware    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOFloodOverMulticastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff)
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_FLOOD_OVER_MULTICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:floodlight-hardware    文件:OFDPAUtils.java   
/**
 * Only bits 0-9 of index are used. Bits 10-15 are ignored.
 * @param index
 * @param tunnelId
 * @return
 */
public static OFGroup createL2DCOMulticastOverMulticastTunnels(U16 index, U16 tunnelId) { //8
    return OFGroup.of(0 | (index.getRaw() & 0x03ff)
            | (tunnelId.getRaw() << 12)
            | (L2OverlaySubType.L2_OVERLAY_MULTICAST_OVER_MULTICAST_TUNNELS << 10)
            | (OFDPAGroupType.L2_DATA_CENTER_OVERLAY << 28));
}
项目:athena    文件:FlowModBuilderVer13.java   
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;
}
项目:athena    文件:GroupModBuilder.java   
private List<OFAction> buildActions(TrafficTreatment treatment) {
    if (treatment == null) {
        return Collections.emptyList();
    }

    List<OFAction> actions = new LinkedList<>();
    for (Instruction i : treatment.allInstructions()) {
        switch (i.type()) {
            case L0MODIFICATION:
                actions.add(buildL0Modification(i));
                break;
            case L2MODIFICATION:
                actions.add(buildL2Modification(i));
                break;
            case L3MODIFICATION:
                actions.add(buildL3Modification(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 grp =
                        (Instructions.GroupInstruction) i;
                OFActionGroup.Builder actgrp = factory.actions().buildGroup()
                        .setGroup(OFGroup.of(grp.groupId().id()));
                actions.add(actgrp.build());
                break;
            case EXTENSION:
                Instructions.ExtensionInstructionWrapper wrapper =
                (Instructions.ExtensionInstructionWrapper) i;
                actions.add(buildExtensionAction(
                        wrapper.extensionInstruction(), wrapper.deviceId()));
                break;
            default:
                log.warn("Instruction type {} not yet implemented.", i.type());
        }
    }

    return actions;
}
项目:fresco_floodlight    文件:OFDPAUtils.java   
public static OFGroup createL2Interface(OFPort p, VlanVid v) { //0
    return OFGroup.of(0 | p.getShortPortNumber() | (v.getVlan() << 16) | (OFDPAGroupType.L2_INTERFACE << 28));
}
项目:fresco_floodlight    文件:OFDPAUtils.java   
public static OFGroup createL2Multicast(U16 id, VlanVid v) { //3
    return OFGroup.of(0 | id.getRaw() | (v.getVlan() << 16) | (OFDPAGroupType.L2_MULTICAST << 28));
}
项目:fresco_floodlight    文件:OFDPAUtils.java   
public static OFGroup createL2Flood(U16 id, VlanVid v) { //4
    return OFGroup.of(0 | id.getRaw() | (v.getVlan() << 16) | (OFDPAGroupType.L2_FLOOD << 28));
}