Search in sources :

Example 11 with VlanMatchBuilder

use of org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder in project openflowplugin by opendaylight.

the class MatchV10ResponseConvertor method convert.

@Override
public MatchBuilder convert(MatchV10 source, VersionDatapathIdConvertorData datapathIdConvertorData) {
    MatchBuilder matchBuilder = new MatchBuilder();
    EthernetMatchBuilder ethMatchBuilder = new EthernetMatchBuilder();
    VlanMatchBuilder vlanMatchBuilder = new VlanMatchBuilder();
    Ipv4MatchBuilder ipv4MatchBuilder = new Ipv4MatchBuilder();
    IpMatchBuilder ipMatchBuilder = new IpMatchBuilder();
    OpenflowVersion ofVersion = OpenflowVersion.get(datapathIdConvertorData.getVersion());
    BigInteger datapathid = datapathIdConvertorData.getDatapathId();
    if (!source.getWildcards().isINPORT() && source.getInPort() != null) {
        matchBuilder.setInPort(InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(datapathid, (long) source.getInPort(), ofVersion));
    }
    if (!source.getWildcards().isDLSRC() && source.getDlSrc() != null) {
        EthernetSourceBuilder ethSrcBuilder = new EthernetSourceBuilder();
        ethSrcBuilder.setAddress(source.getDlSrc());
        ethMatchBuilder.setEthernetSource(ethSrcBuilder.build());
        matchBuilder.setEthernetMatch(ethMatchBuilder.build());
    }
    if (!source.getWildcards().isDLDST() && source.getDlDst() != null) {
        EthernetDestinationBuilder ethDstBuilder = new EthernetDestinationBuilder();
        ethDstBuilder.setAddress(source.getDlDst());
        ethMatchBuilder.setEthernetDestination(ethDstBuilder.build());
        matchBuilder.setEthernetMatch(ethMatchBuilder.build());
    }
    if (!source.getWildcards().isDLTYPE() && source.getDlType() != null) {
        EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
        ethTypeBuilder.setType(new org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType((long) source.getDlType()));
        ethMatchBuilder.setEthernetType(ethTypeBuilder.build());
        matchBuilder.setEthernetMatch(ethMatchBuilder.build());
    }
    if (!source.getWildcards().isDLVLAN() && source.getDlVlan() != null) {
        VlanIdBuilder vlanIdBuilder = new VlanIdBuilder();
        int vlanId = source.getDlVlan() == 0xffff ? 0 : source.getDlVlan();
        vlanIdBuilder.setVlanId(new org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId(vlanId));
        vlanIdBuilder.setVlanIdPresent(vlanId != 0);
        vlanMatchBuilder.setVlanId(vlanIdBuilder.build());
        matchBuilder.setVlanMatch(vlanMatchBuilder.build());
    }
    if (!source.getWildcards().isDLVLANPCP() && source.getDlVlanPcp() != null) {
        vlanMatchBuilder.setVlanPcp(new org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp(source.getDlVlanPcp()));
        matchBuilder.setVlanMatch(vlanMatchBuilder.build());
    }
    if (!source.getWildcards().isDLTYPE() && source.getNwSrc() != null) {
        final Ipv4Prefix prefix;
        if (source.getNwSrcMask() != null) {
            prefix = IetfInetUtil.INSTANCE.ipv4PrefixFor(source.getNwSrc(), source.getNwSrcMask());
        } else {
            // Openflow Spec : 1.3.2
            // An all-one-bits oxm_mask is equivalent to specifying 0 for oxm_hasmask and omitting oxm_mask.
            // So when user specify 32 as a mast, switch omit that mast and we get null as a mask in flow
            // statistics response.
            prefix = IetfInetUtil.INSTANCE.ipv4PrefixFor(source.getNwSrc());
        }
        if (!NO_IP.equals(prefix.getValue())) {
            ipv4MatchBuilder.setIpv4Source(prefix);
            matchBuilder.setLayer3Match(ipv4MatchBuilder.build());
        }
    }
    if (!source.getWildcards().isDLTYPE() && source.getNwDst() != null) {
        final Ipv4Prefix prefix;
        if (source.getNwDstMask() != null) {
            prefix = IetfInetUtil.INSTANCE.ipv4PrefixFor(source.getNwDst(), source.getNwDstMask());
        } else {
            // Openflow Spec : 1.3.2
            // An all-one-bits oxm_mask is equivalent to specifying 0 for oxm_hasmask and omitting oxm_mask.
            // So when user specify 32 as a mast, switch omit that mast and we get null as a mask in flow
            // statistics response.
            prefix = IetfInetUtil.INSTANCE.ipv4PrefixFor(source.getNwDst());
        }
        if (!NO_IP.equals(prefix.getValue())) {
            ipv4MatchBuilder.setIpv4Destination(prefix);
            matchBuilder.setLayer3Match(ipv4MatchBuilder.build());
        }
    }
    if (!source.getWildcards().isNWPROTO() && source.getNwProto() != null) {
        Short nwProto = source.getNwProto();
        ipMatchBuilder.setIpProtocol(nwProto);
        matchBuilder.setIpMatch(ipMatchBuilder.build());
        int proto = nwProto.intValue();
        if (proto == PROTO_TCP) {
            TcpMatchBuilder tcpMatchBuilder = new TcpMatchBuilder();
            boolean hasTcp = false;
            if (!source.getWildcards().isTPSRC() && source.getTpSrc() != null) {
                tcpMatchBuilder.setTcpSourcePort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(source.getTpSrc()));
                hasTcp = true;
            }
            if (!source.getWildcards().isTPDST() && source.getTpDst() != null) {
                tcpMatchBuilder.setTcpDestinationPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(source.getTpDst()));
                hasTcp = true;
            }
            if (hasTcp) {
                matchBuilder.setLayer4Match(tcpMatchBuilder.build());
            }
        } else if (proto == PROTO_UDP) {
            UdpMatchBuilder udpMatchBuilder = new UdpMatchBuilder();
            boolean hasUdp = false;
            if (!source.getWildcards().isTPSRC() && source.getTpSrc() != null) {
                udpMatchBuilder.setUdpSourcePort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(source.getTpSrc()));
                hasUdp = true;
            }
            if (!source.getWildcards().isTPDST() && source.getTpDst() != null) {
                udpMatchBuilder.setUdpDestinationPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(source.getTpDst()));
                hasUdp = true;
            }
            if (hasUdp) {
                matchBuilder.setLayer4Match(udpMatchBuilder.build());
            }
        } else if (proto == PROTO_ICMPV4) {
            Icmpv4MatchBuilder icmpv4MatchBuilder = new Icmpv4MatchBuilder();
            boolean hasIcmpv4 = false;
            if (!source.getWildcards().isTPSRC()) {
                Integer type = source.getTpSrc();
                if (type != null) {
                    icmpv4MatchBuilder.setIcmpv4Type(type.shortValue());
                    hasIcmpv4 = true;
                }
            }
            if (!source.getWildcards().isTPDST()) {
                Integer code = source.getTpDst();
                if (code != null) {
                    icmpv4MatchBuilder.setIcmpv4Code(code.shortValue());
                    hasIcmpv4 = true;
                }
            }
            if (hasIcmpv4) {
                matchBuilder.setIcmpv4Match(icmpv4MatchBuilder.build());
            }
        }
    }
    if (!source.getWildcards().isNWTOS() && source.getNwTos() != null) {
        Short dscp = ActionUtil.tosToDscp(source.getNwTos());
        ipMatchBuilder.setIpDscp(new Dscp(dscp));
        matchBuilder.setIpMatch(ipMatchBuilder.build());
    }
    return matchBuilder;
}
Also used : Ipv4MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder) OpenflowVersion(org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion) Collections(java.util.Collections) EthernetTypeBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder) VlanMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder) UdpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder) TcpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder) Icmpv4MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder) VlanIdBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder) Ipv4Prefix(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix) IpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder) EthernetMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder) EthernetDestinationBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder) BigInteger(java.math.BigInteger) EthernetSourceBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder) BigInteger(java.math.BigInteger) Dscp(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp) IpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder) TcpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder) Icmpv4MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder) VlanMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder) MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder) UdpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder) EthernetMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder) Ipv4MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder)

Example 12 with VlanMatchBuilder

use of org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder in project openflowplugin by opendaylight.

the class FlowConvertor method handleSetVlanIdForOF13.

/**
 * A) If user provided flow's match includes vlan match  and action has set_vlan_field
 * Install following rules.
 *    1) match on (OFPVID_PRESENT |value) without mask + action [set_field]
 * <p/>
 * B) if user provided flow's match doesn't include vlan match but action has set_vlan field
 *     1) Match on (OFPVID_NONE ) without mask + action [push vlan tag + set_field]
 *     2) Match on (OFPVID_PRESENT) with mask (OFPVID_PRESENT ) + action [ set_field]
 */
private List<FlowModInputBuilder> handleSetVlanIdForOF13(Flow srcFlow, VersionDatapathIdConvertorData versionDatapathIdConverterData) {
    List<FlowModInputBuilder> list = new ArrayList<>(2);
    final Match srcMatch = Preconditions.checkNotNull(srcFlow.getMatch());
    final VlanMatch srcVlanMatch = srcMatch.getVlanMatch();
    if (srcVlanMatch != null) {
        // create flow with setfield and match
        // match on vlan tag or vlanid with no mask
        VlanMatchBuilder vlanMatchBuilder = new VlanMatchBuilder(srcVlanMatch);
        VlanIdBuilder vlanIdBuilder = new VlanIdBuilder();
        vlanIdBuilder.setVlanIdPresent(srcVlanMatch.getVlanId().isVlanIdPresent());
        vlanIdBuilder.setVlanId(srcVlanMatch.getVlanId().getVlanId());
        vlanMatchBuilder.setVlanId(vlanIdBuilder.build());
        Match match = new MatchBuilder(srcMatch).setVlanMatch(vlanMatchBuilder.build()).build();
        Optional<? extends Flow> optional = injectMatchToFlow(srcFlow, match);
        if (optional.isPresent()) {
            list.add(toFlowModInput(optional.get(), versionDatapathIdConverterData));
        }
    } else {
        // create 2 flows
        // flow 1
        // match on no vlan tag with no mask
        Match match1 = new MatchBuilder(srcMatch).setVlanMatch(VLAN_MATCH_FALSE).build();
        Optional<? extends Flow> optional1 = injectMatchAndAction(srcFlow, match1);
        if (optional1.isPresent()) {
            list.add(toFlowModInput(optional1.get(), versionDatapathIdConverterData));
        }
        // flow2
        // match on vlan tag with mask
        Match match2 = new MatchBuilder(srcMatch).setVlanMatch(VLAN_MATCH_TRUE).build();
        Optional<? extends Flow> optional2 = injectMatchToFlow(srcFlow, match2);
        if (optional2.isPresent()) {
            list.add(toFlowModInput(optional2.get(), versionDatapathIdConverterData));
        }
    }
    return list;
}
Also used : ArrayList(java.util.ArrayList) VlanMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatch) VlanMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder) FlowModInputBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInputBuilder) VlanIdBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder) VlanMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder) MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder) Match(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match) VlanMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatch)

Example 13 with VlanMatchBuilder

use of org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder in project openflowplugin by opendaylight.

the class VlanPcpEntrySerializerTest method testSerialize.

@Test
public void testSerialize() throws Exception {
    final short vlan = (short) 1;
    final Match vlanMatch = new MatchBuilder().setVlanMatch(new VlanMatchBuilder().setVlanPcp(new VlanPcp(vlan)).build()).build();
    assertMatch(vlanMatch, false, (out) -> assertEquals(out.readUnsignedByte(), vlan));
}
Also used : VlanPcp(org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp) VlanMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder) MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder) VlanMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder) Match(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match) Test(org.junit.Test)

Example 14 with VlanMatchBuilder

use of org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder in project openflowplugin by opendaylight.

the class VlanVidEntrySerializerTest method testSerialize.

@Test
public void testSerialize() throws Exception {
    final int vlan = (short) 1;
    final Match vlanMatch = new MatchBuilder().setVlanMatch(new VlanMatchBuilder().setVlanId(new VlanIdBuilder().setVlanId(new VlanId(vlan)).setVlanIdPresent(true).build()).build()).build();
    assertMatch(vlanMatch, false, (out) -> assertEquals(out.readShort(), vlan | (1 << 12)));
    final Match vlanMatchMaskOnly = new MatchBuilder().setVlanMatch(new VlanMatchBuilder().setVlanId(new VlanIdBuilder().setVlanIdPresent(true).build()).build()).build();
    assertMatch(vlanMatchMaskOnly, true, out -> {
        assertEquals(out.readShort(), (1 << 12));
        byte[] mask = new byte[2];
        out.readBytes(mask);
        assertArrayEquals(mask, new byte[] { 16, 0 });
    });
}
Also used : VlanMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder) VlanIdBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder) MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder) VlanMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder) VlanId(org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId) Match(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match) Test(org.junit.Test)

Example 15 with VlanMatchBuilder

use of org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder in project openflowplugin by opendaylight.

the class ActionConvertorV10Test method testGetActions.

/**
 * Test {@link ActionConvertor#convert(List, ActionConvertorData)}}.
 */
@Test
public void testGetActions() {
    ActionBuilder actionBuilder = new ActionBuilder();
    SetVlanPcpActionCaseBuilder vlanPcpCaseBuilder = new SetVlanPcpActionCaseBuilder();
    SetVlanPcpActionBuilder pcpBuilder = new SetVlanPcpActionBuilder();
    pcpBuilder.setVlanPcp(new VlanPcp((short) 7));
    vlanPcpCaseBuilder.setSetVlanPcpAction(pcpBuilder.build());
    actionBuilder.setAction(vlanPcpCaseBuilder.build());
    actionBuilder.setOrder(0);
    List<Action> salActions = new ArrayList<>();
    salActions.add(actionBuilder.build());
    actionBuilder = new ActionBuilder();
    StripVlanActionCaseBuilder stripCaseBuilder = new StripVlanActionCaseBuilder();
    StripVlanActionBuilder stripBuilder = new StripVlanActionBuilder();
    stripCaseBuilder.setStripVlanAction(stripBuilder.build());
    actionBuilder.setAction(stripCaseBuilder.build());
    actionBuilder.setOrder(1);
    salActions.add(actionBuilder.build());
    actionBuilder = new ActionBuilder();
    SetDlDstActionCaseBuilder dlDstCaseBuilder = new SetDlDstActionCaseBuilder();
    SetDlDstActionBuilder dlDstBuilder = new SetDlDstActionBuilder();
    dlDstBuilder.setAddress(new MacAddress("00:00:00:00:00:06"));
    dlDstCaseBuilder.setSetDlDstAction(dlDstBuilder.build());
    actionBuilder.setAction(dlDstCaseBuilder.build());
    actionBuilder.setOrder(2);
    salActions.add(actionBuilder.build());
    actionBuilder = new ActionBuilder();
    SetDlSrcActionCaseBuilder dlSrcCaseBuilder = new SetDlSrcActionCaseBuilder();
    SetDlSrcActionBuilder dlSrcBuilder = new SetDlSrcActionBuilder();
    dlSrcBuilder.setAddress(new MacAddress("00:00:00:00:00:05"));
    dlSrcCaseBuilder.setSetDlSrcAction(dlSrcBuilder.build());
    actionBuilder.setAction(dlSrcCaseBuilder.build());
    actionBuilder.setOrder(3);
    salActions.add(actionBuilder.build());
    actionBuilder = new ActionBuilder();
    SetNwSrcActionCaseBuilder nwSrcCaseBuilder = new SetNwSrcActionCaseBuilder();
    SetNwSrcActionBuilder nwSrcBuilder = new SetNwSrcActionBuilder();
    Ipv4Builder ipv4Builder = new Ipv4Builder();
    /* Use prefix which is correct in canonical representation in test */
    ipv4Builder.setIpv4Address(new Ipv4Prefix("10.0.0.0/24"));
    nwSrcBuilder.setAddress(ipv4Builder.build());
    nwSrcCaseBuilder.setSetNwSrcAction(nwSrcBuilder.build());
    actionBuilder.setAction(nwSrcCaseBuilder.build());
    actionBuilder.setOrder(4);
    salActions.add(actionBuilder.build());
    actionBuilder = new ActionBuilder();
    SetNwDstActionBuilder nwDstBuilder = new SetNwDstActionBuilder();
    ipv4Builder = new Ipv4Builder();
    ipv4Builder.setIpv4Address(new Ipv4Prefix("10.0.0.2/32"));
    nwDstBuilder.setAddress(ipv4Builder.build());
    SetNwDstActionCaseBuilder nwDstCaseBuilder = new SetNwDstActionCaseBuilder();
    nwDstCaseBuilder.setSetNwDstAction(nwDstBuilder.build());
    actionBuilder.setAction(nwDstCaseBuilder.build());
    actionBuilder.setOrder(5);
    salActions.add(actionBuilder.build());
    actionBuilder = new ActionBuilder();
    SetTpSrcActionCaseBuilder tpSrcCaseBuilder = new SetTpSrcActionCaseBuilder();
    SetTpSrcActionBuilder tpSrcBuilder = new SetTpSrcActionBuilder();
    tpSrcBuilder.setPort(new PortNumber(54));
    tpSrcCaseBuilder.setSetTpSrcAction(tpSrcBuilder.build());
    actionBuilder.setAction(tpSrcCaseBuilder.build());
    actionBuilder.setOrder(6);
    salActions.add(actionBuilder.build());
    actionBuilder = new ActionBuilder();
    SetTpDstActionCaseBuilder tpDstCaseBuilder = new SetTpDstActionCaseBuilder();
    SetTpDstActionBuilder tpDstBuilder = new SetTpDstActionBuilder();
    tpDstBuilder.setPort(new PortNumber(45));
    tpDstCaseBuilder.setSetTpDstAction(tpDstBuilder.build());
    actionBuilder.setAction(tpDstCaseBuilder.build());
    actionBuilder.setOrder(7);
    salActions.add(actionBuilder.build());
    actionBuilder = new ActionBuilder();
    SetNwTosActionCaseBuilder tosCaseBuilder = new SetNwTosActionCaseBuilder();
    SetNwTosActionBuilder tosBuilder = new SetNwTosActionBuilder();
    tosBuilder.setTos(18);
    tosCaseBuilder.setSetNwTosAction(tosBuilder.build());
    actionBuilder.setAction(tosCaseBuilder.build());
    actionBuilder.setOrder(8);
    salActions.add(actionBuilder.build());
    actionBuilder = new ActionBuilder();
    SetVlanIdActionCaseBuilder vlanIdCaseBuilder = new SetVlanIdActionCaseBuilder();
    SetVlanIdActionBuilder vlanIdBuilder = new SetVlanIdActionBuilder();
    vlanIdBuilder.setVlanId(new VlanId(22));
    vlanIdCaseBuilder.setSetVlanIdAction(vlanIdBuilder.build());
    actionBuilder.setAction(vlanIdCaseBuilder.build());
    actionBuilder.setOrder(9);
    salActions.add(actionBuilder.build());
    actionBuilder = new ActionBuilder();
    PopVlanActionCaseBuilder popVlanActionCaseBuilder = new PopVlanActionCaseBuilder();
    actionBuilder.setAction(popVlanActionCaseBuilder.build());
    actionBuilder.setOrder(10);
    salActions.add(actionBuilder.build());
    actionBuilder = new ActionBuilder();
    SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
    SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
    VlanMatchBuilder vlanMatchBuilder = new VlanMatchBuilder();
    vlanMatchBuilder.setVlanId(new VlanIdBuilder().setVlanId(new VlanId(22)).build());
    setFieldBuilder.setVlanMatch(vlanMatchBuilder.build());
    setFieldCaseBuilder.setSetField(setFieldBuilder.build());
    actionBuilder.setAction(setFieldCaseBuilder.build());
    actionBuilder.setOrder(11);
    salActions.add(actionBuilder.build());
    IpMatchBuilder ipMatchBld = new IpMatchBuilder().setIpProto(IpVersion.Ipv4);
    MatchBuilder matchBld = new MatchBuilder().setIpMatch(ipMatchBld.build());
    FlowBuilder flowBld = new FlowBuilder().setMatch(matchBld.build());
    Flow flow = flowBld.build();
    ActionConvertorData data = new ActionConvertorData(OFConstants.OFP_VERSION_1_0);
    data.setDatapathId(new BigInteger("42"));
    data.setIpProtocol(FlowConvertorUtil.getIpProtocolFromFlow(flow));
    Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action>> actionsOptional = convertorManager.convert(salActions, data);
    List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action> actions = actionsOptional.orElse(Collections.emptyList());
    Assert.assertEquals("Wrong number of actions", 12, actions.size());
    org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action action = actions.get(0);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.SetVlanPcpCase", action.getActionChoice().getImplementedInterface().getName());
    SetVlanPcpCase setVlanPcpCase = (SetVlanPcpCase) action.getActionChoice();
    Assert.assertEquals("Wrong vlan pcp", 7, setVlanPcpCase.getSetVlanPcpAction().getVlanPcp().intValue());
    action = actions.get(1);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.StripVlanCase", action.getActionChoice().getImplementedInterface().getName());
    action = actions.get(2);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.SetDlDstCase", action.getActionChoice().getImplementedInterface().getName());
    SetDlDstCase setDlDstCase = (SetDlDstCase) action.getActionChoice();
    Assert.assertEquals("Wrong dl dst", "00:00:00:00:00:06", setDlDstCase.getSetDlDstAction().getDlDstAddress().getValue());
    action = actions.get(3);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.SetDlSrcCase", action.getActionChoice().getImplementedInterface().getName());
    SetDlSrcCase setDlSrcCase = (SetDlSrcCase) action.getActionChoice();
    Assert.assertEquals("Wrong dl src", "00:00:00:00:00:05", setDlSrcCase.getSetDlSrcAction().getDlSrcAddress().getValue());
    action = actions.get(4);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.SetNwSrcCase", action.getActionChoice().getImplementedInterface().getName());
    SetNwSrcCase setNwSrcCase = (SetNwSrcCase) action.getActionChoice();
    Assert.assertEquals("Wrong nw src", "10.0.0.0", setNwSrcCase.getSetNwSrcAction().getIpAddress().getValue());
    action = actions.get(5);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.SetNwDstCase", action.getActionChoice().getImplementedInterface().getName());
    SetNwDstCase setNwDstCase = (SetNwDstCase) action.getActionChoice();
    Assert.assertEquals("Wrong nw dst", "10.0.0.2", setNwDstCase.getSetNwDstAction().getIpAddress().getValue());
    action = actions.get(6);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.SetTpSrcCase", action.getActionChoice().getImplementedInterface().getName());
    SetTpSrcCase setTpSrcCase = (SetTpSrcCase) action.getActionChoice();
    Assert.assertEquals("Wrong tp src", 54, setTpSrcCase.getSetTpSrcAction().getPort().getValue().intValue());
    action = actions.get(7);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.SetTpDstCase", action.getActionChoice().getImplementedInterface().getName());
    SetTpDstCase setTpDstCase = (SetTpDstCase) action.getActionChoice();
    Assert.assertEquals("Wrong tp dst", 45, setTpDstCase.getSetTpDstAction().getPort().getValue().intValue());
    action = actions.get(8);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.SetNwTosCase", action.getActionChoice().getImplementedInterface().getName());
    SetNwTosCase setNwTosCase = (SetNwTosCase) action.getActionChoice();
    Assert.assertEquals("Wrong nw tos", 18, setNwTosCase.getSetNwTosAction().getNwTos().intValue());
    action = actions.get(9);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.SetVlanVidCase", action.getActionChoice().getImplementedInterface().getName());
    SetVlanVidCase setVlanVidCase = (SetVlanVidCase) action.getActionChoice();
    Assert.assertEquals("Wrong vlan id", 22, setVlanVidCase.getSetVlanVidAction().getVlanVid().intValue());
    action = actions.get(10);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.StripVlanCase", action.getActionChoice().getImplementedInterface().getName());
    action = actions.get(11);
    Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common" + ".action.rev150203.action.grouping.action.choice.SetVlanVidCase", action.getActionChoice().getImplementedInterface().getName());
    setVlanVidCase = (SetVlanVidCase) action.getActionChoice();
    Assert.assertEquals("Wrong vlan id", 22, setVlanVidCase.getSetVlanVidAction().getVlanVid().intValue());
}
Also used : ArrayList(java.util.ArrayList) SetNwTosActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.tos.action._case.SetNwTosActionBuilder) VlanMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder) SetTpSrcActionCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpSrcActionCaseBuilder) SetFieldBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder) SetVlanIdActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.id.action._case.SetVlanIdActionBuilder) List(java.util.List) ArrayList(java.util.ArrayList) VlanIdBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder) Ipv4Prefix(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix) VlanId(org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId) IpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder) SetTpSrcCase(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetTpSrcCase) ActionConvertorData(org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData) MacAddress(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress) SetTpDstCase(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetTpDstCase) FlowBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder) SetNwDstActionCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCaseBuilder) SetNwSrcActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder) BigInteger(java.math.BigInteger) SetDlDstActionCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCaseBuilder) PortNumber(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber) Action(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action) SetFieldCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder) SetTpDstActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.dst.action._case.SetTpDstActionBuilder) SetVlanIdActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.id.action._case.SetVlanIdActionBuilder) SetNwTosActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.tos.action._case.SetNwTosActionBuilder) SetTpSrcActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.src.action._case.SetTpSrcActionBuilder) SetNwDstActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder) SetDlDstActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.dst.action._case.SetDlDstActionBuilder) StripVlanActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.strip.vlan.action._case.StripVlanActionBuilder) SetVlanPcpActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.pcp.action._case.SetVlanPcpActionBuilder) OutputActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.output.action._case.OutputActionBuilder) SetNwSrcActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder) SetDlSrcActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.src.action._case.SetDlSrcActionBuilder) ActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder) SetTpSrcActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.src.action._case.SetTpSrcActionBuilder) SetDlDstActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.dst.action._case.SetDlDstActionBuilder) Ipv4Builder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder) SetVlanPcpActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.pcp.action._case.SetVlanPcpActionBuilder) SetNwSrcActionCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCaseBuilder) StripVlanActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.strip.vlan.action._case.StripVlanActionBuilder) PopVlanActionCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder) SetDlSrcActionCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCaseBuilder) SetVlanPcpActionCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanPcpActionCaseBuilder) SetVlanVidCase(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetVlanVidCase) SetVlanIdActionCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCaseBuilder) SetDlDstCase(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetDlDstCase) SetNwTosActionCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTosActionCaseBuilder) StripVlanActionCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.StripVlanActionCaseBuilder) SetNwSrcCase(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwSrcCase) SetVlanPcpCase(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetVlanPcpCase) SetDlSrcCase(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetDlSrcCase) SetNwDstCase(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwDstCase) SetTpDstActionCaseBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpDstActionCaseBuilder) Flow(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow) SetNwDstActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder) SetNwTosCase(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwTosCase) VlanPcp(org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp) SetTpDstActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.dst.action._case.SetTpDstActionBuilder) SetDlSrcActionBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.src.action._case.SetDlSrcActionBuilder) VlanMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder) IpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder) MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder) Test(org.junit.Test)

Aggregations

VlanMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder)15 MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder)12 VlanIdBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder)11 VlanId (org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId)8 IpMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder)7 VlanPcp (org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp)6 EthernetMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder)6 Icmpv4MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder)6 Ipv4MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder)6 TcpMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder)6 UdpMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder)6 Test (org.junit.Test)5 BigInteger (java.math.BigInteger)4 Ipv4Prefix (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix)4 Icmpv6MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder)4 ArpMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder)4 Ipv6MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchBuilder)4 TunnelIpv4MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.TunnelIpv4MatchBuilder)4 SctpMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatchBuilder)4 ArrayList (java.util.ArrayList)3