Java 类org.projectfloodlight.openflow.protocol.oxm.OFOxmEthDst 实例源码

项目:ravikumaran201504    文件:OFSwitchImplCPqD13.java   
private OFAction getDestAction(int portnum) {
    OFAction setDA = null;
    MacAddress dAddr = null;
    if (getId() == 0x1 && portnum == 6) { // connected to switch 2
        dAddr = MacAddress.of("00:00:02:02:02:80");
    }
    if (getId() == 0x2) {
        if (portnum == 1) { // connected to sw 1
            dAddr = MacAddress.of("00:00:01:01:01:80");
        } else if (portnum == 2) { // connected to sw 3
            dAddr = MacAddress.of("00:00:07:07:07:80");
        }
    }
    if (getId() == 0x3) {
        if (portnum == 2) { // connected to switch 2
            dAddr = MacAddress.of("00:00:02:02:02:80");
        }
    }

    if (dAddr != null) {
        OFOxmEthDst dstAddr = factory.oxms().ethDst(dAddr);
        setDA = factory.actions().buildSetField()
                .setField(dstAddr).build();
    }
    return setDA;
}
项目:spring-open    文件:OFSwitchImplDellOSR.java   
@Override
protected OFOxmList getIPEntryMatchList(OFFactory ofFactory, Match match) {
    /* For Dell Switches, the IP entry match list shall
     * also include destination mac matching rule
     */
    Ipv4Match ipm = (Ipv4Match) match;

    IPv4Net ipdst = ipm.getDestination();
    OFOxmEthType ethTypeIp = ofFactory.oxms()
            .ethType(EthType.IPv4);
    OFOxmEthDst dmac = ofFactory.oxms().ethDst(getRouterMacAddr());
    OFOxmIpv4DstMasked ipPrefix = ofFactory.oxms()
            .ipv4DstMasked(
                    IPv4Address.of(ipdst.address().value()),
                    IPv4Address.ofCidrMaskLength(ipdst.prefixLen())
            );
    OFOxmList oxmList = OFOxmList.of(ethTypeIp, dmac, ipPrefix);

    return oxmList;
}
项目:spring-open    文件:OFSwitchImplSpringOpenTTP.java   
private void populateTableTMac() throws IOException {
    // match for router-mac and ip-packets
    OFOxmEthType oxe = factory.oxms().ethType(EthType.IPv4);
    OFOxmEthDst dmac = factory.oxms().ethDst(getRouterMacAddr());
    OFOxmList oxmListIp = OFOxmList.of(dmac, oxe);
    OFMatchV3 matchIp = factory.buildMatchV3()
            .setOxmList(oxmListIp).build();
    OFInstruction gotoTblIp = factory.instructions().buildGotoTable()
            .setTableId(TableId.of(ipv4UnicastTableId)).build();
    List<OFInstruction> instructionsIp = Collections.singletonList(gotoTblIp);
    OFMessage ipEntry = factory.buildFlowAdd()
            .setTableId(TableId.of(tmacTableId))
            .setMatch(matchIp)
            .setInstructions(instructionsIp)
            .setPriority(1000) // strict priority required lower than
                               // multicastMac
            .setBufferId(OFBufferId.NO_BUFFER)
            .setIdleTimeout(0)
            .setHardTimeout(0)
            .setXid(getNextTransactionId())
            .build();

    // match for router-mac and mpls packets
    OFOxmEthType oxmpls = factory.oxms().ethType(EthType.MPLS_UNICAST);
    OFOxmList oxmListMpls = OFOxmList.of(dmac, oxmpls);
    OFMatchV3 matchMpls = factory.buildMatchV3()
            .setOxmList(oxmListMpls).build();
    OFInstruction gotoTblMpls = factory.instructions().buildGotoTable()
            .setTableId(TableId.of(mplsTableId)).build();
    List<OFInstruction> instructionsMpls = Collections.singletonList(gotoTblMpls);
    OFMessage mplsEntry = factory.buildFlowAdd()
            .setTableId(TableId.of(tmacTableId))
            .setMatch(matchMpls)
            .setInstructions(instructionsMpls)
            .setPriority(1001) // strict priority required lower than
                               // multicastMac
            .setBufferId(OFBufferId.NO_BUFFER)
            .setIdleTimeout(0)
            .setHardTimeout(0)
            .setXid(getNextTransactionId())
            .build();

    log.debug("Adding termination-mac-rules in sw {}", getStringId());
    List<OFMessage> msglist = new ArrayList<OFMessage>(2);
    msglist.add(ipEntry);
    msglist.add(mplsEntry);
    write(msglist);
}