Search in sources :

Example 11 with IpMatch

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

the class MatchV10ResponseConvertorTest method testTcpMatch.

/**
 * TCP match test for {@link MatchV10ResponseConvertor#convert(MatchV10, VersionDatapathIdConvertorData)}.
 */
@Test
public void testTcpMatch() {
    // TP_SRC, TP_DST are wildcarded.
    // NW_PROTO is not wildcarded but null.
    Long dlType = 0x800L;
    FlowWildcardsV10 wc = new FlowWildcardsV10(true, true, false, true, true, true, false, true, true, true);
    MatchV10Builder builder = new MatchV10Builder().setWildcards(wc).setDlType(dlType.intValue());
    MatchV10 match = builder.build();
    BigInteger dpid = BigInteger.valueOf(12345L);
    final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_0);
    datapathIdConvertorData.setDatapathId(dpid);
    Match salMatch = convert(match, datapathIdConvertorData).build();
    EthernetMatch etherMatch = salMatch.getEthernetMatch();
    Assert.assertEquals("Wrong in port", null, salMatch.getInPort());
    Assert.assertEquals("Wrong dl src", null, etherMatch.getEthernetSource());
    Assert.assertEquals("Wrong dl dst", null, etherMatch.getEthernetDestination());
    Assert.assertEquals("Wrong dl type", dlType, etherMatch.getEthernetType().getType().getValue());
    Assert.assertEquals("Wrong VLAN match", null, salMatch.getVlanMatch());
    Assert.assertEquals("Wrong IP match", null, salMatch.getIpMatch());
    Assert.assertEquals("Wrong L3 match", null, salMatch.getLayer3Match());
    Assert.assertEquals("Wrong L4 match", null, salMatch.getLayer4Match());
    Assert.assertEquals("Wrong ICMPv4 match", null, salMatch.getIcmpv4Match());
    // Specify TCP protocol.
    Short ipProto = 6;
    match = builder.setNwProto(ipProto).build();
    salMatch = convert(match, datapathIdConvertorData).build();
    etherMatch = salMatch.getEthernetMatch();
    IpMatch ipMatch = salMatch.getIpMatch();
    Assert.assertEquals("Wrong in port", null, salMatch.getInPort());
    Assert.assertEquals("Wrong dl src", null, etherMatch.getEthernetSource());
    Assert.assertEquals("Wrong dl dst", null, etherMatch.getEthernetDestination());
    Assert.assertEquals("Wrong dl type", dlType, etherMatch.getEthernetType().getType().getValue());
    Assert.assertEquals("Wrong VLAN match", null, salMatch.getVlanMatch());
    Assert.assertEquals("Wrong ip protocol", ipProto, ipMatch.getIpProtocol());
    Assert.assertEquals("Wrong ip proto", null, ipMatch.getIpProto());
    Assert.assertEquals("Wrong ip ecn", null, ipMatch.getIpEcn());
    Assert.assertEquals("Wrong ip dscp", null, ipMatch.getIpDscp());
    Assert.assertEquals("Wrong L3 match", null, salMatch.getLayer3Match());
    Assert.assertEquals("Wrong L4 match", null, salMatch.getLayer4Match());
    Assert.assertEquals("Wrong ICMPv4 match", null, salMatch.getIcmpv4Match());
    // TP_SRC is not wildcarded but null.
    wc = new FlowWildcardsV10(true, true, false, true, true, true, false, true, true, false);
    match = builder.setWildcards(wc).build();
    salMatch = convert(match, datapathIdConvertorData).build();
    etherMatch = salMatch.getEthernetMatch();
    ipMatch = salMatch.getIpMatch();
    Assert.assertEquals("Wrong in port", null, salMatch.getInPort());
    Assert.assertEquals("Wrong dl src", null, etherMatch.getEthernetSource());
    Assert.assertEquals("Wrong dl dst", null, etherMatch.getEthernetDestination());
    Assert.assertEquals("Wrong dl type", dlType, etherMatch.getEthernetType().getType().getValue());
    Assert.assertEquals("Wrong VLAN match", null, salMatch.getVlanMatch());
    Assert.assertEquals("Wrong ip protocol", ipProto, ipMatch.getIpProtocol());
    Assert.assertEquals("Wrong ip proto", null, ipMatch.getIpProto());
    Assert.assertEquals("Wrong ip ecn", null, ipMatch.getIpEcn());
    Assert.assertEquals("Wrong ip dscp", null, ipMatch.getIpDscp());
    Assert.assertEquals("Wrong L3 match", null, salMatch.getLayer3Match());
    Assert.assertEquals("Wrong L4 match", null, salMatch.getLayer4Match());
    Assert.assertEquals("Wrong ICMPv4 match", null, salMatch.getIcmpv4Match());
    // Specify TCP source port.
    Integer srcPort = 60000;
    match = builder.setTpSrc(srcPort).build();
    salMatch = convert(match, datapathIdConvertorData).build();
    etherMatch = salMatch.getEthernetMatch();
    ipMatch = salMatch.getIpMatch();
    TcpMatch tcpMatch = (TcpMatch) salMatch.getLayer4Match();
    Assert.assertEquals("Wrong in port", null, salMatch.getInPort());
    Assert.assertEquals("Wrong dl src", null, etherMatch.getEthernetSource());
    Assert.assertEquals("Wrong dl dst", null, etherMatch.getEthernetDestination());
    Assert.assertEquals("Wrong dl type", dlType, etherMatch.getEthernetType().getType().getValue());
    Assert.assertEquals("Wrong VLAN match", null, salMatch.getVlanMatch());
    Assert.assertEquals("Wrong ip protocol", ipProto, ipMatch.getIpProtocol());
    Assert.assertEquals("Wrong ip proto", null, ipMatch.getIpProto());
    Assert.assertEquals("Wrong ip ecn", null, ipMatch.getIpEcn());
    Assert.assertEquals("Wrong ip dscp", null, ipMatch.getIpDscp());
    Assert.assertEquals("Wrong L3 match", null, salMatch.getLayer3Match());
    Assert.assertEquals("Wrong TCP src", srcPort, tcpMatch.getTcpSourcePort().getValue());
    Assert.assertEquals("Wrong TCP dst", null, tcpMatch.getTcpDestinationPort());
    Assert.assertEquals("Wrong ICMPv4 match", null, salMatch.getIcmpv4Match());
    // TP_DST is not wildcarded but null.
    wc = new FlowWildcardsV10(true, true, false, true, true, true, false, true, false, false);
    match = builder.setWildcards(wc).build();
    salMatch = convert(match, datapathIdConvertorData).build();
    etherMatch = salMatch.getEthernetMatch();
    ipMatch = salMatch.getIpMatch();
    tcpMatch = (TcpMatch) salMatch.getLayer4Match();
    Assert.assertEquals("Wrong in port", null, salMatch.getInPort());
    Assert.assertEquals("Wrong dl src", null, etherMatch.getEthernetSource());
    Assert.assertEquals("Wrong dl dst", null, etherMatch.getEthernetDestination());
    Assert.assertEquals("Wrong dl type", dlType, etherMatch.getEthernetType().getType().getValue());
    Assert.assertEquals("Wrong VLAN match", null, salMatch.getVlanMatch());
    Assert.assertEquals("Wrong ip protocol", ipProto, ipMatch.getIpProtocol());
    Assert.assertEquals("Wrong ip proto", null, ipMatch.getIpProto());
    Assert.assertEquals("Wrong ip ecn", null, ipMatch.getIpEcn());
    Assert.assertEquals("Wrong ip dscp", null, ipMatch.getIpDscp());
    Assert.assertEquals("Wrong L3 match", null, salMatch.getLayer3Match());
    Assert.assertEquals("Wrong TCP src", srcPort, tcpMatch.getTcpSourcePort().getValue());
    Assert.assertEquals("Wrong TCP dst", null, tcpMatch.getTcpDestinationPort());
    Assert.assertEquals("Wrong ICMPv4 match", null, salMatch.getIcmpv4Match());
    // Specify TCP destination port only.
    Integer dstPort = 6653;
    match = builder.setTpSrc(null).setTpDst(dstPort).build();
    salMatch = convert(match, datapathIdConvertorData).build();
    etherMatch = salMatch.getEthernetMatch();
    ipMatch = salMatch.getIpMatch();
    tcpMatch = (TcpMatch) salMatch.getLayer4Match();
    Assert.assertEquals("Wrong in port", null, salMatch.getInPort());
    Assert.assertEquals("Wrong dl src", null, etherMatch.getEthernetSource());
    Assert.assertEquals("Wrong dl dst", null, etherMatch.getEthernetDestination());
    Assert.assertEquals("Wrong dl type", dlType, etherMatch.getEthernetType().getType().getValue());
    Assert.assertEquals("Wrong VLAN match", null, salMatch.getVlanMatch());
    Assert.assertEquals("Wrong ip protocol", ipProto, ipMatch.getIpProtocol());
    Assert.assertEquals("Wrong ip proto", null, ipMatch.getIpProto());
    Assert.assertEquals("Wrong ip ecn", null, ipMatch.getIpEcn());
    Assert.assertEquals("Wrong ip dscp", null, ipMatch.getIpDscp());
    Assert.assertEquals("Wrong L3 match", null, salMatch.getLayer3Match());
    Assert.assertEquals("Wrong TCP src", null, tcpMatch.getTcpSourcePort());
    Assert.assertEquals("Wrong TCP dst", dstPort, tcpMatch.getTcpDestinationPort().getValue());
    Assert.assertEquals("Wrong ICMPv4 match", null, salMatch.getIcmpv4Match());
    // Specify both source and destination port.
    srcPort = 32767;
    dstPort = 9999;
    match = builder.setTpSrc(srcPort).setTpDst(dstPort).build();
    salMatch = convert(match, datapathIdConvertorData).build();
    etherMatch = salMatch.getEthernetMatch();
    ipMatch = salMatch.getIpMatch();
    tcpMatch = (TcpMatch) salMatch.getLayer4Match();
    Assert.assertEquals("Wrong in port", null, salMatch.getInPort());
    Assert.assertEquals("Wrong dl src", null, etherMatch.getEthernetSource());
    Assert.assertEquals("Wrong dl dst", null, etherMatch.getEthernetDestination());
    Assert.assertEquals("Wrong dl type", dlType, etherMatch.getEthernetType().getType().getValue());
    Assert.assertEquals("Wrong VLAN match", null, salMatch.getVlanMatch());
    Assert.assertEquals("Wrong ip protocol", ipProto, ipMatch.getIpProtocol());
    Assert.assertEquals("Wrong ip proto", null, ipMatch.getIpProto());
    Assert.assertEquals("Wrong ip ecn", null, ipMatch.getIpEcn());
    Assert.assertEquals("Wrong ip dscp", null, ipMatch.getIpDscp());
    Assert.assertEquals("Wrong L3 match", null, salMatch.getLayer3Match());
    Assert.assertEquals("Wrong TCP src", srcPort, tcpMatch.getTcpSourcePort().getValue());
    Assert.assertEquals("Wrong TCP dst", dstPort, tcpMatch.getTcpDestinationPort().getValue());
    Assert.assertEquals("Wrong ICMPv4 match", null, salMatch.getIcmpv4Match());
}
Also used : BigInteger(java.math.BigInteger) EthernetMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatch) TcpMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatch) FlowWildcardsV10(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowWildcardsV10) VersionDatapathIdConvertorData(org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData) MatchV10Builder(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.v10.grouping.MatchV10Builder) BigInteger(java.math.BigInteger) MatchV10(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.v10.grouping.MatchV10) IpMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatch) TcpMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatch) UdpMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatch) Icmpv4Match(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4Match) EthernetMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatch) Match(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match) Ipv4Match(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match) IpMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatch) Test(org.junit.Test)

Example 12 with IpMatch

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

the class FlowListenerTest method updateFlowScopeTest.

@Test
public void updateFlowScopeTest() throws Exception {
    addFlowCapableNode(NODE_KEY);
    FlowKey flowKey = new FlowKey(new FlowId("test_Flow"));
    InstanceIdentifier<Table> tableII = InstanceIdentifier.create(Nodes.class).child(Node.class, NODE_KEY).augmentation(FlowCapableNode.class).child(Table.class, tableKey);
    InstanceIdentifier<Flow> flowII = InstanceIdentifier.create(Nodes.class).child(Node.class, NODE_KEY).augmentation(FlowCapableNode.class).child(Table.class, tableKey).child(Flow.class, flowKey);
    Table table = new TableBuilder().setKey(tableKey).setFlow(Collections.<Flow>emptyList()).build();
    IpMatch ipMatch = new IpMatchBuilder().setIpDscp(new Dscp((short) 4)).build();
    Match match = new MatchBuilder().setIpMatch(ipMatch).build();
    Flow flow = new FlowBuilder().setMatch(match).setKey(flowKey).setTableId((short) 2).build();
    WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction();
    writeTx.put(LogicalDatastoreType.CONFIGURATION, tableII, table);
    writeTx.put(LogicalDatastoreType.CONFIGURATION, flowII, flow);
    assertCommit(writeTx.submit());
    SalFlowServiceMock salFlowService = (SalFlowServiceMock) forwardingRulesManager.getSalFlowService();
    List<AddFlowInput> addFlowCalls = salFlowService.getAddFlowCalls();
    assertEquals(1, addFlowCalls.size());
    assertEquals("DOM-0", addFlowCalls.get(0).getTransactionUri().getValue());
    flowKey = new FlowKey(new FlowId("test_Flow"));
    flowII = InstanceIdentifier.create(Nodes.class).child(Node.class, NODE_KEY).augmentation(FlowCapableNode.class).child(Table.class, tableKey).child(Flow.class, flowKey);
    ipMatch = new IpMatchBuilder().setIpDscp(new Dscp((short) 5)).build();
    match = new MatchBuilder().setIpMatch(ipMatch).build();
    flow = new FlowBuilder().setMatch(match).setKey(flowKey).setTableId((short) 2).build();
    writeTx = getDataBroker().newWriteOnlyTransaction();
    writeTx.put(LogicalDatastoreType.CONFIGURATION, flowII, flow);
    assertCommit(writeTx.submit());
    salFlowService = (SalFlowServiceMock) forwardingRulesManager.getSalFlowService();
    List<UpdateFlowInput> updateFlowCalls = salFlowService.getUpdateFlowCalls();
    assertEquals(1, updateFlowCalls.size());
    assertEquals("DOM-1", updateFlowCalls.get(0).getTransactionUri().getValue());
    assertEquals(flowII, updateFlowCalls.get(0).getFlowRef().getValue());
    assertEquals(ipMatch, updateFlowCalls.get(0).getUpdatedFlow().getMatch().getIpMatch());
}
Also used : WriteTransaction(org.opendaylight.controller.md.sal.binding.api.WriteTransaction) IpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder) FlowKey(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey) StaleFlowKey(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.StaleFlowKey) Table(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table) FlowCapableNode(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode) FlowCapableNode(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode) Node(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node) AddFlowInput(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInput) TableBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableBuilder) Nodes(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes) IpMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatch) Flow(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow) StaleFlow(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.StaleFlow) Match(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match) IpMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatch) SalFlowServiceMock(test.mock.util.SalFlowServiceMock) FlowId(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId) StaleFlowBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.StaleFlowBuilder) FlowBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder) 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) MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder) UpdateFlowInput(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowInput) FRMTest(test.mock.util.FRMTest) Test(org.junit.Test)

Example 13 with IpMatch

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

the class MatchConvertor method convert.

@Override
public List<MatchEntry> convert(final Match source, final VersionConvertorData data) {
    List<MatchEntry> result = new ArrayList<>();
    if (source == null) {
        return result;
    }
    final ExtensionConverterProvider extensionConvertorProvider = OFSessionUtil.getExtensionConvertorProvider();
    inPortMatch(result, source.getInPort());
    inPhyPortMatch(result, source.getInPhyPort());
    metadataMatch(result, source.getMetadata());
    ethernetMatch(result, source.getEthernetMatch());
    vlanMatch(result, source.getVlanMatch());
    ipMatch(result, source.getIpMatch());
    layer4Match(result, source.getLayer4Match(), getConvertorExecutor(), extensionConvertorProvider);
    icmpv4Match(result, source.getIcmpv4Match());
    icmpv6Match(result, source.getIcmpv6Match());
    layer3Match(result, source.getLayer3Match(), getConvertorExecutor(), extensionConvertorProvider);
    protocolMatchFields(result, source.getProtocolMatchFields());
    tunnelMatch(result, source.getTunnel());
    tcpFlagsMatch(result, source.getTcpFlagsMatch());
    /*
         * TODO: EXTENSION PROPOSAL (source, MD-SAL to OFJava)
         * - we might need version for conversion and for key
         */
    Optional<GeneralExtensionListGrouping> extensionListOpt = ExtensionResolvers.getMatchExtensionResolver().getExtension(source);
    if (extensionListOpt.isPresent()) {
        List<ExtensionList> extensionListList = extensionListOpt.get().getExtensionList();
        for (ExtensionList extensionItem : extensionListList) {
            // TODO: get real version
            ConverterExtensionKey<? extends ExtensionKey> key = new ConverterExtensionKey<>(extensionItem.getExtensionKey(), OFConstants.OFP_VERSION_1_3);
            ConvertorToOFJava<MatchEntry> convertor = extensionConvertorProvider.getConverter(key);
            if (convertor == null) {
                throw new IllegalStateException("No converter found for key: " + key.toString());
            }
            MatchEntry ofMatch = convertor.convert(extensionItem.getExtension());
            result.add(ofMatch);
        }
    }
    return result;
}
Also used : MatchEntry(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry) ExtensionConverterProvider(org.opendaylight.openflowplugin.extension.api.core.extension.ExtensionConverterProvider) ExtensionList(org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.list.grouping.ExtensionList) ArrayList(java.util.ArrayList) GeneralExtensionListGrouping(org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralExtensionListGrouping) ConverterExtensionKey(org.opendaylight.openflowplugin.extension.api.ConverterExtensionKey)

Example 14 with IpMatch

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

the class AclMatches method addDscpMatch.

private void addDscpMatch(AceIp aceIp) {
    setIpv4EtherType();
    IpMatchBuilder ipMatch = new IpMatchBuilder();
    Dscp dscp = new Dscp(aceIp.getDscp());
    ipMatch.setIpDscp(dscp);
    matchBuilder.setIpMatch(mergeIpMatch(matchBuilder, ipMatch));
}
Also used : IpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder) Dscp(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp)

Example 15 with IpMatch

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

the class AclMatchesTest method buildIpv4UdpMatchTest.

@Test
public void buildIpv4UdpMatchTest() {
    AceIpBuilder aceIpBuilder = new AceIpBuilder();
    aceIpBuilder.setAceIpVersion(new AceIpv4Builder().build());
    aceIpBuilder.setProtocol(IPProtocols.UDP.shortValue());
    SourcePortRangeBuilder srcPortRange = new SourcePortRangeBuilder();
    srcPortRange.setLowerPort(new PortNumber(UDP_SRC_LOWER_PORT));
    srcPortRange.setUpperPort(new PortNumber(UDP_SRC_UPPER_PORT));
    aceIpBuilder.setSourcePortRange(srcPortRange.build());
    DestinationPortRangeBuilder dstPortRange = new DestinationPortRangeBuilder();
    dstPortRange.setLowerPort(new PortNumber(UDP_DST_LOWER_PORT));
    dstPortRange.setUpperPort(new PortNumber(UDP_DST_UPPER_PORT));
    aceIpBuilder.setDestinationPortRange(dstPortRange.build());
    MatchesBuilder matchesBuilder = new MatchesBuilder();
    matchesBuilder.setAceType(aceIpBuilder.build());
    // Create the aclMatches that is the object to be tested
    AclMatches aclMatches = new AclMatches(matchesBuilder.build());
    MatchBuilder matchBuilder = aclMatches.buildMatch();
    // There should be an IPv4 etherType set
    EthernetMatch ethMatch = matchBuilder.getEthernetMatch();
    assertNotNull(ethMatch);
    assertEquals(ethMatch.getEthernetType().getType().getValue(), Long.valueOf(NwConstants.ETHTYPE_IPV4));
    // Make sure its UDP
    IpMatch ipMatch = matchBuilder.getIpMatch();
    assertNotNull(ipMatch);
    assertEquals(ipMatch.getIpProtocol(), Short.valueOf(IPProtocols.UDP.shortValue()));
    // Currently ranges arent supported, only the lower port is used
    UdpMatch udpMatch = (UdpMatch) matchBuilder.getLayer4Match();
    assertEquals(udpMatch.getUdpSourcePort().getValue(), Integer.valueOf(UDP_SRC_LOWER_PORT));
    assertEquals(udpMatch.getUdpDestinationPort().getValue(), Integer.valueOf(UDP_DST_LOWER_PORT));
    // The layer3 match should be null
    assertNull(matchBuilder.getLayer3Match());
}
Also used : EthernetMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatch) DestinationPortRangeBuilder(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.packet.fields.rev160218.acl.transport.header.fields.DestinationPortRangeBuilder) AceIpBuilder(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.ace.matches.ace.type.AceIpBuilder) UdpMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatch) AceIpv4Builder(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.ace.matches.ace.type.ace.ip.ace.ip.version.AceIpv4Builder) PortNumber(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber) MatchesBuilder(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.ace.MatchesBuilder) SourcePortRangeBuilder(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.packet.fields.rev160218.acl.transport.header.fields.SourcePortRangeBuilder) MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder) IpMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatch) Test(org.junit.Test)

Aggregations

IpMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder)16 MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder)13 EtherType (org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType)9 EthernetTypeBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder)9 EthernetMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder)9 Icmpv6MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder)9 IpMatch (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatch)9 Ipv4MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder)9 Ipv6MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchBuilder)9 TcpMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder)9 UdpMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder)9 Test (org.junit.Test)8 EthernetMatch (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatch)8 Icmpv4MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder)8 TcpFlagsMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TcpFlagsMatchBuilder)8 VlanMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder)8 ArpMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder)8 TunnelIpv4MatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.TunnelIpv4MatchBuilder)8 SctpMatchBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatchBuilder)8 PortNumber (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber)7