2 * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match;
11 import java.util.ArrayList;
12 import java.util.List;
13 import java.util.Optional;
14 import org.junit.Assert;
15 import org.junit.Before;
16 import org.junit.Test;
17 import org.opendaylight.openflowplugin.api.OFConstants;
18 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
19 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory;
20 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6FlowLabel;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatch;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchArbitraryBitMask;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchArbitraryBitMask;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatch;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatch;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatch;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.EtherType;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Ipv6ExthdrFlags;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpOp;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpSha;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpSpa;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTpa;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthDst;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthSrc;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthType;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv4Code;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv4Type;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv6Code;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv6Type;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpDscp;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpEcn;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpProto;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv4Dst;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv4Src;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Dst;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Exthdr;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Flabel;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdSll;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdTarget;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdTll;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Src;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsBos;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsLabel;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsTc;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OpenflowBasicClass;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmMatchType;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.PacketType;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.PbbIsid;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.SctpDst;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.SctpSrc;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TcpDst;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TcpSrc;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TunnelId;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.UdpDst;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.VlanPcp;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.VlanVid;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpOpCaseBuilder;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpShaCaseBuilder;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpSpaCaseBuilder;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpThaCaseBuilder;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpTpaCaseBuilder;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthDstCaseBuilder;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthSrcCaseBuilder;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthTypeCaseBuilder;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv4CodeCaseBuilder;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv4TypeCaseBuilder;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv6CodeCaseBuilder;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv6TypeCaseBuilder;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.InPhyPortCaseBuilder;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.InPortCaseBuilder;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpDscpCaseBuilder;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpEcnCaseBuilder;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpProtoCaseBuilder;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv4DstCaseBuilder;
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv4SrcCaseBuilder;
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6DstCaseBuilder;
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6ExthdrCaseBuilder;
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6FlabelCaseBuilder;
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdSllCaseBuilder;
101 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdTargetCaseBuilder;
102 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdTllCaseBuilder;
103 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6SrcCaseBuilder;
104 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MetadataCaseBuilder;
105 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsBosCaseBuilder;
106 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsLabelCaseBuilder;
107 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsTcCaseBuilder;
108 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.PacketTypeCaseBuilder;
109 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.PbbIsidCaseBuilder;
110 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.SctpDstCaseBuilder;
111 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.SctpSrcCaseBuilder;
112 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TcpDstCaseBuilder;
113 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TcpSrcCaseBuilder;
114 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TunnelIdCaseBuilder;
115 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.UdpDstCaseBuilder;
116 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.UdpSrcCaseBuilder;
117 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanPcpCaseBuilder;
118 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanVidCaseBuilder;
119 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.op._case.ArpOpBuilder;
120 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.sha._case.ArpShaBuilder;
121 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.spa._case.ArpSpaBuilder;
122 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.tha._case.ArpThaBuilder;
123 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.tpa._case.ArpTpaBuilder;
124 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.dst._case.EthDstBuilder;
125 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.src._case.EthSrcBuilder;
126 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.type._case.EthTypeBuilder;
127 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv4.code._case.Icmpv4CodeBuilder;
128 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv4.type._case.Icmpv4TypeBuilder;
129 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv6.code._case.Icmpv6CodeBuilder;
130 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv6.type._case.Icmpv6TypeBuilder;
131 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.in.phy.port._case.InPhyPortBuilder;
132 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.in.port._case.InPortBuilder;
133 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.dscp._case.IpDscpBuilder;
134 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.ecn._case.IpEcnBuilder;
135 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.proto._case.IpProtoBuilder;
136 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv4.dst._case.Ipv4DstBuilder;
137 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv4.src._case.Ipv4SrcBuilder;
138 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.dst._case.Ipv6DstBuilder;
139 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.exthdr._case.Ipv6ExthdrBuilder;
140 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.flabel._case.Ipv6FlabelBuilder;
141 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.sll._case.Ipv6NdSllBuilder;
142 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.target._case.Ipv6NdTargetBuilder;
143 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.tll._case.Ipv6NdTllBuilder;
144 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.src._case.Ipv6SrcBuilder;
145 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.bos._case.MplsBosBuilder;
146 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.label._case.MplsLabelBuilder;
147 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.tc._case.MplsTcBuilder;
148 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.packet.type._case.PacketTypeBuilder;
149 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.pbb.isid._case.PbbIsidBuilder;
150 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.sctp.dst._case.SctpDstBuilder;
151 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.sctp.src._case.SctpSrcBuilder;
152 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tcp.dst._case.TcpDstBuilder;
153 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tcp.src._case.TcpSrcBuilder;
154 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tunnel.id._case.TunnelIdBuilder;
155 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.udp.dst._case.UdpDstBuilder;
156 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.udp.src._case.UdpSrcBuilder;
157 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.vlan.pcp._case.VlanPcpBuilder;
158 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.vlan.vid._case.VlanVidBuilder;
159 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match;
160 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.MatchBuilder;
161 import org.opendaylight.yangtools.yang.common.Uint64;
164 * Unit tests for match response conversions.
166 * @author michal.polkorab
168 public class MatchResponseConvertor2Test {
170 private ConvertorManager convertorManager;
173 * Initializes OpenflowPortsUtil.
176 public void startUp() {
177 convertorManager = ConvertorManagerFactory.createDefaultManager();
181 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
183 public void testEmptyMatch() {
184 final VersionDatapathIdConvertorData datapathIdConvertorData =
185 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
186 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
187 // Empty null match is the same as empty match
188 Assert.assertNotNull(convert(new MatchBuilder().build(), datapathIdConvertorData));
192 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
195 public void testEmptyMatchEntry() {
197 final MatchBuilder builder = new MatchBuilder();
198 builder.setType(OxmMatchType.class);
199 final List<MatchEntry> entries = new ArrayList<>();
200 builder.setMatchEntry(entries);
201 final Match match = builder.build();
203 final VersionDatapathIdConvertorData datapathIdConvertorData =
204 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
205 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
207 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder salMatch =
208 convert(match, datapathIdConvertorData);
210 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
213 Assert.assertEquals("Wrong match entries", null, builtMatch.getEthernetMatch());
214 Assert.assertEquals("Wrong match entries", null, builtMatch.getIcmpv4Match());
215 Assert.assertEquals("Wrong match entries", null, builtMatch.getIcmpv6Match());
216 Assert.assertEquals("Wrong match entries", null, builtMatch.getInPhyPort());
217 Assert.assertEquals("Wrong match entries", null, builtMatch.getInPort());
218 Assert.assertEquals("Wrong match entries", null, builtMatch.getIpMatch());
219 Assert.assertEquals("Wrong match entries", null, builtMatch.getLayer3Match());
220 Assert.assertEquals("Wrong match entries", null, builtMatch.getLayer4Match());
221 Assert.assertEquals("Wrong match entries", null, builtMatch.getMetadata());
222 Assert.assertEquals("Wrong match entries", null, builtMatch.getPacketTypeMatch());
223 Assert.assertEquals("Wrong match entries", null, builtMatch.getProtocolMatchFields());
224 Assert.assertEquals("Wrong match entries", null, builtMatch.getVlanMatch());
225 Assert.assertEquals("Wrong match entries", null, builtMatch.getTunnel());
230 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
233 public void testWithMatchEntryNoMasks() {
234 final List<MatchEntry> entries = new ArrayList<>();
235 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
236 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
237 entriesBuilder.setOxmMatchField(
238 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.InPort.class);
239 entriesBuilder.setHasMask(false);
240 final InPortCaseBuilder caseBuilder = new InPortCaseBuilder();
241 final InPortBuilder portBuilder = new InPortBuilder();
242 portBuilder.setPortNumber(new PortNumber(1L));
243 caseBuilder.setInPort(portBuilder.build());
244 entriesBuilder.setMatchEntryValue(caseBuilder.build());
245 entries.add(entriesBuilder.build());
247 final InPhyPortCaseBuilder inPhyPortCaseBuilder = new InPhyPortCaseBuilder();
248 entriesBuilder = new MatchEntryBuilder();
249 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
250 entriesBuilder.setOxmMatchField(
251 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.InPhyPort.class);
252 entriesBuilder.setHasMask(false);
253 final InPhyPortBuilder inPhyPortBuilder = new InPhyPortBuilder();
254 inPhyPortBuilder.setPortNumber(new PortNumber(2L));
255 inPhyPortCaseBuilder.setInPhyPort(inPhyPortBuilder.build());
256 entriesBuilder.setMatchEntryValue(inPhyPortCaseBuilder.build());
257 entries.add(entriesBuilder.build());
259 entriesBuilder = new MatchEntryBuilder();
260 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
261 entriesBuilder.setOxmMatchField(
262 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
263 entriesBuilder.setHasMask(false);
264 final MetadataCaseBuilder metadataCaseBuilder = new MetadataCaseBuilder();
265 final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match
266 .entry.value.metadata._case.MetadataBuilder metadataBuilder = new org.opendaylight.yang.gen.v1.urn
267 .opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case
269 metadataBuilder.setMetadata(new byte[]{0, 1, 2, 3, 4, 5, 6, 7});
270 metadataCaseBuilder.setMetadata(metadataBuilder.build());
271 entriesBuilder.setMatchEntryValue(metadataCaseBuilder.build());
272 entries.add(entriesBuilder.build());
274 entriesBuilder = new MatchEntryBuilder();
275 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
276 entriesBuilder.setOxmMatchField(PacketType.class);
277 entriesBuilder.setHasMask(false);
278 final PacketTypeCaseBuilder packetTypeCaseBuilder = new PacketTypeCaseBuilder();
279 final PacketTypeBuilder packetTypeBuilder = new PacketTypeBuilder();
280 packetTypeBuilder.setPacketType(0x1894fL);
281 packetTypeCaseBuilder.setPacketType(packetTypeBuilder.build());
282 entriesBuilder.setMatchEntryValue(packetTypeCaseBuilder.build());
283 entries.add(entriesBuilder.build());
285 entriesBuilder = new MatchEntryBuilder();
286 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
287 entriesBuilder.setOxmMatchField(EthDst.class);
288 entriesBuilder.setHasMask(false);
289 final EthDstCaseBuilder ethDstCaseBuilder = new EthDstCaseBuilder();
290 final EthDstBuilder ethDstBuilder = new EthDstBuilder();
291 ethDstBuilder.setMacAddress(new MacAddress("00:00:00:00:00:01"));
292 ethDstCaseBuilder.setEthDst(ethDstBuilder.build());
293 entriesBuilder.setMatchEntryValue(ethDstCaseBuilder.build());
294 entries.add(entriesBuilder.build());
296 entriesBuilder = new MatchEntryBuilder();
297 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
298 entriesBuilder.setOxmMatchField(EthSrc.class);
299 entriesBuilder.setHasMask(false);
300 final EthSrcCaseBuilder ethSrcCaseBuilder = new EthSrcCaseBuilder();
301 final EthSrcBuilder ethSrcBuilder = new EthSrcBuilder();
302 ethSrcBuilder.setMacAddress(new MacAddress("00:00:00:00:00:02"));
303 ethSrcCaseBuilder.setEthSrc(ethSrcBuilder.build());
304 entriesBuilder.setMatchEntryValue(ethSrcCaseBuilder.build());
305 entries.add(entriesBuilder.build());
308 entriesBuilder = new MatchEntryBuilder();
309 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
310 entriesBuilder.setOxmMatchField(EthType.class);
311 entriesBuilder.setHasMask(false);
312 final EthTypeCaseBuilder ethTypeCaseBuilder = new EthTypeCaseBuilder();
314 final EthTypeBuilder ethTypeBuilder = new EthTypeBuilder();
315 ethTypeBuilder.setEthType(new EtherType(3));
316 ethTypeCaseBuilder.setEthType(ethTypeBuilder.build());
317 entriesBuilder.setMatchEntryValue(ethTypeCaseBuilder.build());
318 entries.add(entriesBuilder.build());
321 entriesBuilder = new MatchEntryBuilder();
322 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
323 entriesBuilder.setOxmMatchField(VlanVid.class);
324 final VlanVidCaseBuilder vlanVidCaseBuilder = new VlanVidCaseBuilder();
325 entriesBuilder.setHasMask(false);
326 final VlanVidBuilder vlanVidBuilder = new VlanVidBuilder();
327 vlanVidBuilder.setVlanVid(4);
328 vlanVidBuilder.setCfiBit(true);
329 vlanVidCaseBuilder.setVlanVid(vlanVidBuilder.build());
330 entriesBuilder.setMatchEntryValue(vlanVidCaseBuilder.build());
331 entries.add(entriesBuilder.build());
333 entriesBuilder = new MatchEntryBuilder();
334 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
335 entriesBuilder.setOxmMatchField(VlanPcp.class);
336 final VlanPcpCaseBuilder vlanPcpCaseBuilder = new VlanPcpCaseBuilder();
337 entriesBuilder.setHasMask(false);
338 final VlanPcpBuilder vlanPcpBuilder = new VlanPcpBuilder();
339 vlanPcpBuilder.setVlanPcp((short) 5);
340 vlanPcpCaseBuilder.setVlanPcp(vlanPcpBuilder.build());
341 entriesBuilder.setMatchEntryValue(vlanPcpCaseBuilder.build());
342 entries.add(entriesBuilder.build());
345 entriesBuilder = new MatchEntryBuilder();
346 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
347 entriesBuilder.setOxmMatchField(IpDscp.class);
348 entriesBuilder.setHasMask(false);
349 final IpDscpCaseBuilder ipDscpCaseBuilder = new IpDscpCaseBuilder();
350 final IpDscpBuilder ipDscpBuilder = new IpDscpBuilder();
351 ipDscpBuilder.setDscp(new Dscp((short) 6));
352 ipDscpCaseBuilder.setIpDscp(ipDscpBuilder.build());
353 entriesBuilder.setMatchEntryValue(ipDscpCaseBuilder.build());
354 entries.add(entriesBuilder.build());
357 entriesBuilder = new MatchEntryBuilder();
358 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
359 entriesBuilder.setOxmMatchField(IpEcn.class);
360 entriesBuilder.setHasMask(false);
361 final IpEcnCaseBuilder ipEcnCaseBuilder = new IpEcnCaseBuilder();
362 final IpEcnBuilder ipEcnBuilder = new IpEcnBuilder();
363 ipEcnBuilder.setEcn((short) 7);
364 ipEcnCaseBuilder.setIpEcn(ipEcnBuilder.build());
365 entriesBuilder.setMatchEntryValue(ipEcnCaseBuilder.build());
366 entries.add(entriesBuilder.build());
369 entriesBuilder = new MatchEntryBuilder();
370 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
371 entriesBuilder.setOxmMatchField(IpProto.class);
372 final IpProtoCaseBuilder ipProtoCaseBuilder = new IpProtoCaseBuilder();
373 entriesBuilder.setHasMask(false);
374 final IpProtoBuilder ipProtoBuilder = new IpProtoBuilder();
375 ipProtoBuilder.setProtocolNumber((short) 8);
376 ipProtoCaseBuilder.setIpProto(ipProtoBuilder.build());
377 entriesBuilder.setMatchEntryValue(ipProtoCaseBuilder.build());
378 entries.add(entriesBuilder.build());
381 entriesBuilder = new MatchEntryBuilder();
382 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
383 entriesBuilder.setOxmMatchField(Ipv4Src.class);
384 entriesBuilder.setHasMask(false);
385 final Ipv4SrcCaseBuilder ipv4AddressBuilder = new Ipv4SrcCaseBuilder();
386 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
387 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.0.0.1"));
388 ipv4AddressBuilder.setIpv4Src(ipv4SrcBuilder.build());
389 entriesBuilder.setMatchEntryValue(ipv4AddressBuilder.build());
390 entries.add(entriesBuilder.build());
392 entriesBuilder = new MatchEntryBuilder();
393 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
394 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
395 entriesBuilder.setHasMask(false);
396 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
397 final Ipv4DstBuilder ipv4DstBuilder = new Ipv4DstBuilder();
398 ipv4DstBuilder.setIpv4Address(new Ipv4Address("10.0.0.2"));
399 ipv4DstCaseBuilder.setIpv4Dst(ipv4DstBuilder.build());
400 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
401 entries.add(entriesBuilder.build());
403 entriesBuilder = new MatchEntryBuilder();
404 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
405 entriesBuilder.setOxmMatchField(TcpSrc.class);
406 entriesBuilder.setHasMask(false);
407 final TcpSrcCaseBuilder tcpSrcCaseBuilder = new TcpSrcCaseBuilder();
408 final TcpSrcBuilder tcpSrcBuilder = new TcpSrcBuilder();
409 tcpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
410 .inet.types.rev130715.PortNumber(9));
411 tcpSrcCaseBuilder.setTcpSrc(tcpSrcBuilder.build());
412 entriesBuilder.setMatchEntryValue(tcpSrcCaseBuilder.build());
413 entries.add(entriesBuilder.build());
415 entriesBuilder = new MatchEntryBuilder();
416 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
417 entriesBuilder.setOxmMatchField(TcpDst.class);
418 entriesBuilder.setHasMask(false);
419 final TcpDstCaseBuilder tcpDstCaseBuilder = new TcpDstCaseBuilder();
420 final TcpDstBuilder tcpDstBuilder = new TcpDstBuilder();
421 tcpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
422 .inet.types.rev130715.PortNumber(10));
423 tcpDstCaseBuilder.setTcpDst(tcpDstBuilder.build());
424 entriesBuilder.setMatchEntryValue(tcpDstCaseBuilder.build());
425 entries.add(entriesBuilder.build());
427 entriesBuilder = new MatchEntryBuilder();
428 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
429 entriesBuilder.setOxmMatchField(Icmpv4Type.class);
430 entriesBuilder.setHasMask(false);
431 final Icmpv4TypeCaseBuilder icmpv4TypeCaseBuilder = new Icmpv4TypeCaseBuilder();
432 final Icmpv4TypeBuilder icmpv4TypeBuilder = new Icmpv4TypeBuilder();
433 icmpv4TypeBuilder.setIcmpv4Type((short) 15);
434 icmpv4TypeCaseBuilder.setIcmpv4Type(icmpv4TypeBuilder.build());
435 entriesBuilder.setMatchEntryValue(icmpv4TypeCaseBuilder.build());
436 entries.add(entriesBuilder.build());
438 entriesBuilder = new MatchEntryBuilder();
439 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
440 entriesBuilder.setOxmMatchField(Icmpv4Code.class);
441 entriesBuilder.setHasMask(false);
442 final Icmpv4CodeCaseBuilder icmpv4CodeCaseBuilder = new Icmpv4CodeCaseBuilder();
443 final Icmpv4CodeBuilder icmpv4CodeBuilder = new Icmpv4CodeBuilder();
444 icmpv4CodeBuilder.setIcmpv4Code((short) 16);
445 icmpv4CodeCaseBuilder.setIcmpv4Code(icmpv4CodeBuilder.build());
446 entriesBuilder.setMatchEntryValue(icmpv4CodeCaseBuilder.build());
447 entries.add(entriesBuilder.build());
449 entriesBuilder = new MatchEntryBuilder();
450 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
451 entriesBuilder.setOxmMatchField(Icmpv6Type.class);
452 entriesBuilder.setHasMask(false);
453 final Icmpv6TypeCaseBuilder icmpv6TypeCaseBuilder = new Icmpv6TypeCaseBuilder();
454 final Icmpv6TypeBuilder icmpv6TypeBuilder = new Icmpv6TypeBuilder();
455 icmpv6TypeBuilder.setIcmpv6Type((short) 19);
456 icmpv6TypeCaseBuilder.setIcmpv6Type(icmpv6TypeBuilder.build());
457 entriesBuilder.setMatchEntryValue(icmpv6TypeCaseBuilder.build());
458 entries.add(entriesBuilder.build());
460 entriesBuilder = new MatchEntryBuilder();
461 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
462 entriesBuilder.setOxmMatchField(Icmpv6Code.class);
463 entriesBuilder.setHasMask(false);
464 final Icmpv6CodeCaseBuilder icmpv6CodeCaseBuilder = new Icmpv6CodeCaseBuilder();
465 final Icmpv6CodeBuilder icmpv6CodeBuilder = new Icmpv6CodeBuilder();
466 icmpv6CodeBuilder.setIcmpv6Code((short) 20);
467 icmpv6CodeCaseBuilder.setIcmpv6Code(icmpv6CodeBuilder.build());
468 entriesBuilder.setMatchEntryValue(icmpv6CodeCaseBuilder.build());
469 entries.add(entriesBuilder.build());
471 entriesBuilder = new MatchEntryBuilder();
472 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
473 entriesBuilder.setOxmMatchField(MplsLabel.class);
474 entriesBuilder.setHasMask(false);
475 final MplsLabelCaseBuilder mplsLabelCaseBuilder = new MplsLabelCaseBuilder();
477 final MplsLabelBuilder mplsLabelBuilder = new MplsLabelBuilder();
478 mplsLabelBuilder.setMplsLabel(21L);
479 mplsLabelCaseBuilder.setMplsLabel(mplsLabelBuilder.build());
480 entriesBuilder.setMatchEntryValue(mplsLabelCaseBuilder.build());
481 entries.add(entriesBuilder.build());
483 entriesBuilder = new MatchEntryBuilder();
484 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
485 entriesBuilder.setOxmMatchField(MplsTc.class);
486 entriesBuilder.setHasMask(false);
487 final MplsTcCaseBuilder mplsTcCaseBuilder = new MplsTcCaseBuilder();
488 final MplsTcBuilder mplsTcBuilder = new MplsTcBuilder();
489 mplsTcBuilder.setTc((short) 22);
490 mplsTcCaseBuilder.setMplsTc(mplsTcBuilder.build());
491 entriesBuilder.setMatchEntryValue(mplsTcCaseBuilder.build());
492 entries.add(entriesBuilder.build());
494 entriesBuilder = new MatchEntryBuilder();
495 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
496 entriesBuilder.setOxmMatchField(MplsBos.class);
497 entriesBuilder.setHasMask(false);
498 final MplsBosCaseBuilder mplsBosCaseBuilder = new MplsBosCaseBuilder();
499 final MplsBosBuilder mplsBosBuilder = new MplsBosBuilder();
500 mplsBosBuilder.setBos(true);
501 mplsBosCaseBuilder.setMplsBos(mplsBosBuilder.build());
502 entriesBuilder.setMatchEntryValue(mplsBosCaseBuilder.build());
503 entries.add(entriesBuilder.build());
505 entriesBuilder = new MatchEntryBuilder();
506 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
507 entriesBuilder.setOxmMatchField(PbbIsid.class);
508 entriesBuilder.setHasMask(false);
509 final PbbIsidCaseBuilder pbbIsidCaseBuilder = new PbbIsidCaseBuilder();
510 final PbbIsidBuilder pbbIsidBuilder = new PbbIsidBuilder();
511 pbbIsidBuilder.setIsid(23L);
512 pbbIsidCaseBuilder.setPbbIsid(pbbIsidBuilder.build());
513 entriesBuilder.setMatchEntryValue(pbbIsidCaseBuilder.build());
515 entries.add(entriesBuilder.build());
516 entriesBuilder = new MatchEntryBuilder();
517 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
518 entriesBuilder.setOxmMatchField(TunnelId.class);
519 entriesBuilder.setHasMask(false);
520 final TunnelIdCaseBuilder tunnelIdCaseBuilder = new TunnelIdCaseBuilder();
521 final TunnelIdBuilder tunnelIdBuilder = new TunnelIdBuilder();
522 tunnelIdBuilder.setTunnelId(new byte[]{1, 2, 3, 4, 5, 6, 7, 8});
523 tunnelIdCaseBuilder.setTunnelId(tunnelIdBuilder.build());
524 entriesBuilder.setMatchEntryValue(tunnelIdCaseBuilder.build());
525 entries.add(entriesBuilder.build());
527 final MatchBuilder builder = new MatchBuilder();
528 builder.setMatchEntry(entries);
530 final Match match = builder.build();
532 final VersionDatapathIdConvertorData datapathIdConvertorData =
533 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
534 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
536 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
537 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
538 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
541 Assert.assertEquals("Wrong in port", "openflow:42:1", builtMatch.getInPort().getValue());
542 Assert.assertEquals("Wrong in phy port", "openflow:42:2", builtMatch.getInPhyPort().getValue());
543 Assert.assertEquals("Wrong metadata", Uint64.valueOf("0001020304050607", 16),
544 builtMatch.getMetadata().getMetadata());
545 Assert.assertEquals("Wrong packet type", 0x1894f, builtMatch.getPacketTypeMatch().getPacketType().longValue());
546 Assert.assertEquals("Wrong eth dst", new MacAddress("00:00:00:00:00:01"),
547 builtMatch.getEthernetMatch().getEthernetDestination().getAddress());
548 Assert.assertEquals("Wrong eth src", new MacAddress("00:00:00:00:00:02"),
549 builtMatch.getEthernetMatch().getEthernetSource().getAddress());
550 Assert.assertEquals("Wrong eth type", 3,
551 builtMatch.getEthernetMatch().getEthernetType().getType().getValue().intValue());
552 Assert.assertEquals("Wrong vlan id", 4,
553 builtMatch.getVlanMatch().getVlanId().getVlanId().getValue().intValue());
554 Assert.assertEquals("Wrong vlan id entries", true, builtMatch.getVlanMatch().getVlanId().isVlanIdPresent());
555 Assert.assertEquals("Wrong vlan pcp", 5, builtMatch.getVlanMatch().getVlanPcp().getValue().intValue());
556 Assert.assertEquals("Wrong ip dscp", 6, builtMatch.getIpMatch().getIpDscp().getValue().intValue());
557 Assert.assertEquals("Wrong ip ecn", 7, builtMatch.getIpMatch().getIpEcn().intValue());
558 Assert.assertEquals("Wrong ip proto", null, builtMatch.getIpMatch().getIpProto());
559 Assert.assertEquals("Wrong ip protocol", 8, builtMatch.getIpMatch().getIpProtocol().intValue());
561 final TcpMatch tcpMatch = (TcpMatch) builtMatch.getLayer4Match();
562 Assert.assertEquals("Wrong tcp src port", 9, tcpMatch.getTcpSourcePort().getValue().intValue());
563 Assert.assertEquals("Wrong tcp dst port", 10, tcpMatch.getTcpDestinationPort().getValue().intValue());
564 Assert.assertEquals("Wrong icmpv4 type", 15, builtMatch.getIcmpv4Match().getIcmpv4Type().intValue());
565 Assert.assertEquals("Wrong icmpv4 code", 16, builtMatch.getIcmpv4Match().getIcmpv4Code().intValue());
566 Assert.assertEquals("Wrong icmpv6 type", 19, builtMatch.getIcmpv6Match().getIcmpv6Type().intValue());
567 Assert.assertEquals("Wrong icmpv6 code", 20, builtMatch.getIcmpv6Match().getIcmpv6Code().intValue());
569 final Ipv4Match ipv4Match = (Ipv4Match) builtMatch.getLayer3Match();
570 Assert.assertEquals("Wrong ipv4 src address", "10.0.0.1/32", ipv4Match.getIpv4Source().getValue());
571 Assert.assertEquals("Wrong ipv4 dst address", "10.0.0.2/32", ipv4Match.getIpv4Destination().getValue());
572 Assert.assertEquals("Wrong mpls label", 21, builtMatch.getProtocolMatchFields().getMplsLabel().intValue());
573 Assert.assertEquals("Wrong mpls bos", 1, builtMatch.getProtocolMatchFields().getMplsBos().intValue());
574 Assert.assertEquals("Wrong mpls tc", 22, builtMatch.getProtocolMatchFields().getMplsTc().intValue());
575 Assert.assertEquals("Wrong pbb isid", 23, builtMatch.getProtocolMatchFields().getPbb().getPbbIsid().intValue());
576 Assert.assertEquals("Wrong tunnel id", Uint64.valueOf("0102030405060708", 16),
577 builtMatch.getTunnel().getTunnelId());
581 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
584 public void testWithMatchEntryWithMasks() {
585 final MatchBuilder builder = new MatchBuilder();
586 builder.setType(OxmMatchType.class);
587 final List<MatchEntry> entries = new ArrayList<>();
588 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
589 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
590 entriesBuilder.setOxmMatchField(
591 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
592 entriesBuilder.setHasMask(true);
595 final MetadataCaseBuilder metadataCaseBuilder = new MetadataCaseBuilder();
596 final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match
597 .entry.value.metadata._case.MetadataBuilder metadataBuilder = new org.opendaylight.yang.gen.v1.urn
598 .opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case
600 metadataBuilder.setMetadata(new byte[]{0, 1, 2, 3, 4, 5, 6, 7});
601 metadataBuilder.setMask(new byte[]{0, 0, 0, 0, 0, 0, 0, 1});
602 metadataCaseBuilder.setMetadata(metadataBuilder.build());
603 entriesBuilder.setMatchEntryValue(metadataCaseBuilder.build());
604 entries.add(entriesBuilder.build());
606 entriesBuilder = new MatchEntryBuilder();
607 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
608 entriesBuilder.setOxmMatchField(EthDst.class);
609 entriesBuilder.setHasMask(true);
610 final EthDstCaseBuilder ethDstCaseBuilder = new EthDstCaseBuilder();
611 final EthDstBuilder ethDstBuilder = new EthDstBuilder();
612 ethDstBuilder.setMacAddress(new MacAddress("00:00:00:00:00:01"));
613 ethDstBuilder.setMask(new byte[]{0, 0, 0, 0, 1, 1});
614 ethDstCaseBuilder.setEthDst(ethDstBuilder.build());
615 entriesBuilder.setMatchEntryValue(ethDstCaseBuilder.build());
616 entries.add(entriesBuilder.build());
618 entriesBuilder = new MatchEntryBuilder();
619 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
620 entriesBuilder.setOxmMatchField(EthSrc.class);
621 entriesBuilder.setHasMask(true);
622 final EthSrcCaseBuilder ethSrcCaseBuilder = new EthSrcCaseBuilder();
623 final EthSrcBuilder ethSrcBuilder = new EthSrcBuilder();
624 ethSrcBuilder.setMacAddress(new MacAddress("00:00:00:00:00:02"));
625 ethSrcBuilder.setMask(new byte[]{0, 0, 0, 0, 2, 2});
626 ethSrcCaseBuilder.setEthSrc(ethSrcBuilder.build());
627 entriesBuilder.setMatchEntryValue(ethSrcCaseBuilder.build());
628 entries.add(entriesBuilder.build());
630 entriesBuilder = new MatchEntryBuilder();
631 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
632 entriesBuilder.setOxmMatchField(VlanVid.class);
633 entriesBuilder.setHasMask(true);
634 final VlanVidCaseBuilder vlanVidCaseBuilder = new VlanVidCaseBuilder();
635 final VlanVidBuilder vlanVidBuilder = new VlanVidBuilder();
636 vlanVidBuilder.setVlanVid(4);
637 vlanVidBuilder.setCfiBit(true);
638 vlanVidBuilder.setMask(new byte[]{0, 4});
639 vlanVidCaseBuilder.setVlanVid(vlanVidBuilder.build());
640 entriesBuilder.setMatchEntryValue(vlanVidCaseBuilder.build());
641 entries.add(entriesBuilder.build());
643 entriesBuilder = new MatchEntryBuilder();
644 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
645 entriesBuilder.setOxmMatchField(Ipv4Src.class);
646 entriesBuilder.setHasMask(true);
647 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
648 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
649 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));
650 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
651 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
652 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
653 entries.add(entriesBuilder.build());
655 entriesBuilder = new MatchEntryBuilder();
656 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
657 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
658 entriesBuilder.setHasMask(true);
659 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
660 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
661 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));
662 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});
663 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
664 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
665 entries.add(entriesBuilder.build());
667 entriesBuilder = new MatchEntryBuilder();
668 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
669 entriesBuilder.setOxmMatchField(PbbIsid.class);
670 entriesBuilder.setHasMask(true);
671 final PbbIsidCaseBuilder pbbIsidCaseBuilder = new PbbIsidCaseBuilder();
673 final PbbIsidBuilder pbbIsidBuilder = new PbbIsidBuilder();
674 pbbIsidBuilder.setIsid(23L);
675 pbbIsidBuilder.setMask(new byte[]{0, 0, 7});
676 pbbIsidCaseBuilder.setPbbIsid(pbbIsidBuilder.build());
677 entriesBuilder.setMatchEntryValue(pbbIsidCaseBuilder.build());
678 entries.add(entriesBuilder.build());
680 entriesBuilder = new MatchEntryBuilder();
681 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
682 entriesBuilder.setOxmMatchField(TunnelId.class);
683 entriesBuilder.setHasMask(true);
684 final TunnelIdCaseBuilder tunnelIdCaseBuilder = new TunnelIdCaseBuilder();
685 final TunnelIdBuilder tunnelIdBuilder = new TunnelIdBuilder();
686 tunnelIdBuilder.setTunnelId(new byte[]{1, 2, 3, 4, 5, 6, 7, 8});
687 tunnelIdBuilder.setMask(new byte[]{0, 0, 0, 0, 0, 0, 0, 8});
688 tunnelIdCaseBuilder.setTunnelId(tunnelIdBuilder.build());
689 entriesBuilder.setMatchEntryValue(tunnelIdCaseBuilder.build());
690 entries.add(entriesBuilder.build());
691 builder.setMatchEntry(entries);
692 final Match match = builder.build();
694 final VersionDatapathIdConvertorData datapathIdConvertorData =
695 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
696 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
698 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
699 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
700 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
703 Assert.assertEquals("Wrong metadata", Uint64.valueOf("0001020304050607", 16),
704 builtMatch.getMetadata().getMetadata());
705 Assert.assertEquals("Wrong metadata mask", Uint64.valueOf(1),
706 builtMatch.getMetadata().getMetadataMask());
707 Assert.assertEquals("Wrong eth dst", new MacAddress("00:00:00:00:00:01"),
708 builtMatch.getEthernetMatch().getEthernetDestination().getAddress());
709 Assert.assertEquals("Wrong eth dst mask", new MacAddress("00:00:00:00:01:01"),
710 builtMatch.getEthernetMatch().getEthernetDestination().getMask());
711 Assert.assertEquals("Wrong eth src", new MacAddress("00:00:00:00:00:02"),
712 builtMatch.getEthernetMatch().getEthernetSource().getAddress());
713 Assert.assertEquals("Wrong eth src mask", new MacAddress("00:00:00:00:02:02"),
714 builtMatch.getEthernetMatch().getEthernetSource().getMask());
715 Assert.assertEquals("Wrong vlan id", 4,
716 builtMatch.getVlanMatch().getVlanId().getVlanId().getValue().intValue());
717 Assert.assertEquals("Wrong vlan id entries", true, builtMatch.getVlanMatch().getVlanId().isVlanIdPresent());
718 final Ipv4Match ipv4Match = (Ipv4Match) builtMatch.getLayer3Match();
719 Assert.assertEquals("Wrong ipv4 src address", "10.0.0.0/24", ipv4Match.getIpv4Source().getValue());
720 Assert.assertEquals("Wrong ipv4 dst address", "10.0.0.0/20", ipv4Match.getIpv4Destination().getValue());
721 Assert.assertEquals("Wrong pbb isid", 23, builtMatch.getProtocolMatchFields().getPbb().getPbbIsid().intValue());
722 Assert.assertEquals("Wrong tunnel id", Uint64.valueOf("0102030405060708", 16),
723 builtMatch.getTunnel().getTunnelId());
727 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
730 public void testWithMatchEntryWithArbitraryMasks() {
731 final MatchBuilder builder = new MatchBuilder();
732 builder.setType(OxmMatchType.class);
733 final List<MatchEntry> entries = new ArrayList<>();
734 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
735 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
736 entriesBuilder.setOxmMatchField(
737 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
738 entriesBuilder.setHasMask(true);
740 entriesBuilder = new MatchEntryBuilder();
741 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
742 entriesBuilder.setOxmMatchField(Ipv4Src.class);
743 entriesBuilder.setHasMask(true);
744 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
745 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
746 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
747 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 255, 0});
748 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
749 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
750 entries.add(entriesBuilder.build());
752 entriesBuilder = new MatchEntryBuilder();
753 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
754 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
755 entriesBuilder.setHasMask(true);
756 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
757 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
758 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
759 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});
760 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
761 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
762 entries.add(entriesBuilder.build());
764 builder.setMatchEntry(entries);
765 final Match match = builder.build();
767 final VersionDatapathIdConvertorData datapathIdConvertorData =
768 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
769 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
771 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
772 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
773 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
776 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask =
777 (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
778 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
779 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
780 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
781 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
785 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
788 public void testWithMatchEntryWithSrcCidrMaskAndDstArbitraryBitMask() {
789 final MatchBuilder builder = new MatchBuilder();
790 builder.setType(OxmMatchType.class);
791 final List<MatchEntry> entries = new ArrayList<>();
792 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
793 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
794 entriesBuilder.setOxmMatchField(
795 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
796 entriesBuilder.setHasMask(true);
798 entriesBuilder = new MatchEntryBuilder();
799 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
800 entriesBuilder.setOxmMatchField(Ipv4Src.class);
801 entriesBuilder.setHasMask(true);
802 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
803 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
804 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
805 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
806 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
807 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
808 entries.add(entriesBuilder.build());
810 entriesBuilder = new MatchEntryBuilder();
811 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
812 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
813 entriesBuilder.setHasMask(true);
814 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
815 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
816 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
817 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});
818 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
819 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
820 entries.add(entriesBuilder.build());
822 builder.setMatchEntry(entries);
823 final Match match = builder.build();
825 final VersionDatapathIdConvertorData datapathIdConvertorData =
826 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
827 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
829 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
830 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
831 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
834 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask =
835 (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
836 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
837 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
838 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
839 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
843 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
846 public void testWithMatchEntryWithSrcArbitraryBitMaskAndDstCidrMask() {
847 final MatchBuilder builder = new MatchBuilder();
848 builder.setType(OxmMatchType.class);
849 final List<MatchEntry> entries = new ArrayList<>();
850 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
851 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
852 entriesBuilder.setOxmMatchField(
853 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
854 entriesBuilder.setHasMask(true);
856 entriesBuilder = new MatchEntryBuilder();
857 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
858 entriesBuilder.setOxmMatchField(Ipv4Src.class);
859 entriesBuilder.setHasMask(true);
860 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
861 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
862 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
863 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 0, (byte) 255, 0});
864 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
865 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
866 entries.add(entriesBuilder.build());
868 entriesBuilder = new MatchEntryBuilder();
869 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
870 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
871 entriesBuilder.setHasMask(true);
872 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
873 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
874 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
875 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});
876 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
877 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
878 entries.add(entriesBuilder.build());
880 builder.setMatchEntry(entries);
881 final Match match = builder.build();
883 final VersionDatapathIdConvertorData datapathIdConvertorData =
884 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
885 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
887 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
888 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
889 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
892 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask =
893 (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
894 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
895 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
896 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
897 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
902 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
905 public void testWithMatchEntryWithDstArbitraryBitMaskAndSrcCidrMask() {
906 final MatchBuilder builder = new MatchBuilder();
907 builder.setType(OxmMatchType.class);
908 final List<MatchEntry> entries = new ArrayList<>();
909 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
910 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
911 entriesBuilder.setOxmMatchField(
912 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
913 entriesBuilder.setHasMask(true);
915 entriesBuilder = new MatchEntryBuilder();
916 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
917 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
918 entriesBuilder.setHasMask(true);
919 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
920 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
921 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
922 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});
923 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
924 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
925 entries.add(entriesBuilder.build());
927 entriesBuilder = new MatchEntryBuilder();
928 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
929 entriesBuilder.setOxmMatchField(Ipv4Src.class);
930 entriesBuilder.setHasMask(true);
931 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
932 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
933 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
934 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
935 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
936 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
937 entries.add(entriesBuilder.build());
939 builder.setMatchEntry(entries);
940 final Match match = builder.build();
942 final VersionDatapathIdConvertorData datapathIdConvertorData =
943 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
944 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
946 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
947 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
948 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
951 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask =
952 (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
953 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
954 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
955 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
956 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
960 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
963 public void testWithMatchEntryWithDstCidrMaskAndSrcArbitraryBitMask() {
964 final MatchBuilder builder = new MatchBuilder();
965 builder.setType(OxmMatchType.class);
966 final List<MatchEntry> entries = new ArrayList<>();
967 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
968 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
969 entriesBuilder.setOxmMatchField(
970 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
971 entriesBuilder.setHasMask(true);
973 entriesBuilder = new MatchEntryBuilder();
974 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
975 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
976 entriesBuilder.setHasMask(true);
977 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
978 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
979 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
980 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});
981 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
982 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
983 entries.add(entriesBuilder.build());
985 entriesBuilder = new MatchEntryBuilder();
986 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
987 entriesBuilder.setOxmMatchField(Ipv4Src.class);
988 entriesBuilder.setHasMask(true);
989 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
990 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
991 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
992 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 0, (byte) 255, 0});
993 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
994 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
995 entries.add(entriesBuilder.build());
997 builder.setMatchEntry(entries);
998 final Match match = builder.build();
1000 final VersionDatapathIdConvertorData datapathIdConvertorData =
1001 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1002 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1004 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1005 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
1006 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1009 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask =
1010 (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
1011 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
1012 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
1013 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
1014 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
1018 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1021 public void testLayer4MatchUdp() {
1022 final MatchBuilder builder = new MatchBuilder();
1023 builder.setType(OxmMatchType.class);
1024 final List<MatchEntry> entries = new ArrayList<>();
1025 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1026 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1027 entriesBuilder.setOxmMatchField(
1028 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.UdpSrc.class);
1029 entriesBuilder.setHasMask(false);
1030 final UdpSrcCaseBuilder udpSrcCaseBuilder = new UdpSrcCaseBuilder();
1031 final UdpSrcBuilder portBuilder = new UdpSrcBuilder();
1032 portBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
1033 .inet.types.rev130715.PortNumber(11));
1034 udpSrcCaseBuilder.setUdpSrc(portBuilder.build());
1035 entriesBuilder.setMatchEntryValue(udpSrcCaseBuilder.build());
1036 entries.add(entriesBuilder.build());
1039 entriesBuilder = new MatchEntryBuilder();
1040 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1041 entriesBuilder.setOxmMatchField(UdpDst.class);
1042 entriesBuilder.setHasMask(false);
1043 final UdpDstCaseBuilder udpDstCaseBuilder = new UdpDstCaseBuilder();
1044 final UdpDstBuilder udpDstBuilder = new UdpDstBuilder();
1045 udpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
1046 .inet.types.rev130715.PortNumber(12));
1047 udpDstCaseBuilder.setUdpDst(udpDstBuilder.build());
1048 entriesBuilder.setMatchEntryValue(udpDstCaseBuilder.build());
1049 entries.add(entriesBuilder.build());
1051 builder.setMatchEntry(entries);
1053 final VersionDatapathIdConvertorData datapathIdConvertorData =
1054 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1055 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1057 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1058 .MatchBuilder builtMatch = convert(builder.build(), datapathIdConvertorData);
1060 final UdpMatch udpMatch = (UdpMatch) builtMatch.getLayer4Match();
1061 Assert.assertEquals("Wrong udp src port", 11, udpMatch.getUdpSourcePort().getValue().intValue());
1062 Assert.assertEquals("Wrong udp dst port", 12, udpMatch.getUdpDestinationPort().getValue().intValue());
1066 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1069 public void testLayer4MatchSctp() {
1070 final MatchBuilder builder = new MatchBuilder();
1071 builder.setType(OxmMatchType.class);
1072 final List<MatchEntry> entries = new ArrayList<>();
1073 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1074 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1075 entriesBuilder.setOxmMatchField(SctpSrc.class);
1076 entriesBuilder.setHasMask(false);
1077 final SctpSrcCaseBuilder sctpSrcCaseBuilder = new SctpSrcCaseBuilder();
1078 final SctpSrcBuilder portBuilder = new SctpSrcBuilder();
1079 portBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
1080 .inet.types.rev130715.PortNumber(13));
1081 sctpSrcCaseBuilder.setSctpSrc(portBuilder.build());
1082 entriesBuilder.setMatchEntryValue(sctpSrcCaseBuilder.build());
1083 entries.add(entriesBuilder.build());
1086 entriesBuilder = new MatchEntryBuilder();
1087 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1088 entriesBuilder.setOxmMatchField(SctpDst.class);
1089 entriesBuilder.setHasMask(false);
1090 final SctpDstCaseBuilder sctpDstCaseBuilder = new SctpDstCaseBuilder();
1091 final SctpDstBuilder sctpDstBuilder = new SctpDstBuilder();
1092 sctpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
1093 .inet.types.rev130715.PortNumber(14));
1094 sctpDstCaseBuilder.setSctpDst(sctpDstBuilder.build());
1095 entriesBuilder.setMatchEntryValue(sctpDstCaseBuilder.build());
1096 entries.add(entriesBuilder.build());
1097 builder.setMatchEntry(entries);
1099 final VersionDatapathIdConvertorData datapathIdConvertorData =
1100 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1101 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1103 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1104 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);
1105 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1106 salMatchBuilder.build();
1108 final SctpMatch udpMatch = (SctpMatch) builtMatch.getLayer4Match();
1109 Assert.assertEquals("Wrong sctp src port", 13, udpMatch.getSctpSourcePort().getValue().intValue());
1110 Assert.assertEquals("Wrong sctp dst port", 14, udpMatch.getSctpDestinationPort().getValue().intValue());
1114 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1117 public void testLayer3MatchIpv6() {
1118 final MatchBuilder builder = new MatchBuilder();
1119 builder.setType(OxmMatchType.class);
1120 final List<MatchEntry> entries = new ArrayList<>();
1121 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1122 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1123 entriesBuilder.setOxmMatchField(Ipv6Src.class);
1124 entriesBuilder.setHasMask(false);
1125 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1126 final Ipv6SrcBuilder ipv6AddressBuilder = new Ipv6SrcBuilder();
1127 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9657"));
1128 ipv6SrcCaseBuilder.setIpv6Src(ipv6AddressBuilder.build());
1129 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1130 entries.add(entriesBuilder.build());
1132 entriesBuilder = new MatchEntryBuilder();
1133 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1134 entriesBuilder.setOxmMatchField(Ipv6Dst.class);
1135 entriesBuilder.setHasMask(false);
1136 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1137 final Ipv6DstBuilder ipv6DstBuilder = new Ipv6DstBuilder();
1138 ipv6DstBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9658"));
1139 ipv6DstCaseBuilder.setIpv6Dst(ipv6DstBuilder.build());
1140 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1141 entries.add(entriesBuilder.build());
1143 entriesBuilder = new MatchEntryBuilder();
1144 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1145 entriesBuilder.setOxmMatchField(Ipv6Flabel.class);
1146 entriesBuilder.setHasMask(false);
1147 final Ipv6FlabelCaseBuilder ipv6FlabelCaseBuilder = new Ipv6FlabelCaseBuilder();
1148 final Ipv6FlabelBuilder ipv6FlabelBuilder = new Ipv6FlabelBuilder();
1149 ipv6FlabelBuilder.setIpv6Flabel(new Ipv6FlowLabel(18L));
1150 ipv6FlabelCaseBuilder.setIpv6Flabel(ipv6FlabelBuilder.build());
1151 entriesBuilder.setMatchEntryValue(ipv6FlabelCaseBuilder.build());
1152 entries.add(entriesBuilder.build());
1154 entriesBuilder = new MatchEntryBuilder();
1155 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1156 entriesBuilder.setOxmMatchField(Ipv6NdTarget.class);
1157 entriesBuilder.setHasMask(false);
1158 final Ipv6NdTargetCaseBuilder ipv6NdTargetCaseBuilder = new Ipv6NdTargetCaseBuilder();
1159 final Ipv6NdTargetBuilder ipv6NdTargetBuilder = new Ipv6NdTargetBuilder();
1160 ipv6NdTargetBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9659"));
1161 ipv6NdTargetCaseBuilder.setIpv6NdTarget(ipv6NdTargetBuilder.build());
1162 entriesBuilder.setMatchEntryValue(ipv6NdTargetCaseBuilder.build());
1163 entries.add(entriesBuilder.build());
1165 entriesBuilder = new MatchEntryBuilder();
1166 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1167 entriesBuilder.setOxmMatchField(Ipv6NdSll.class);
1168 entriesBuilder.setHasMask(false);
1169 final Ipv6NdSllCaseBuilder ipv6NdSllCaseBuilder = new Ipv6NdSllCaseBuilder();
1170 final Ipv6NdSllBuilder ipv6NdSllBuilder = new Ipv6NdSllBuilder();
1171 ipv6NdSllBuilder.setMacAddress(new MacAddress("00:00:00:00:00:05"));
1172 ipv6NdSllCaseBuilder.setIpv6NdSll(ipv6NdSllBuilder.build());
1173 entriesBuilder.setMatchEntryValue(ipv6NdSllCaseBuilder.build());
1174 entries.add(entriesBuilder.build());
1176 entriesBuilder = new MatchEntryBuilder();
1177 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1178 entriesBuilder.setOxmMatchField(Ipv6NdTll.class);
1179 entriesBuilder.setHasMask(false);
1180 final Ipv6NdTllCaseBuilder ipv6NdTllCaseBuilder = new Ipv6NdTllCaseBuilder();
1181 final Ipv6NdTllBuilder ipv6NdTllBuilder = new Ipv6NdTllBuilder();
1182 ipv6NdTllBuilder.setMacAddress(new MacAddress("00:00:00:00:00:06"));
1183 ipv6NdTllCaseBuilder.setIpv6NdTll(ipv6NdTllBuilder.build());
1184 entriesBuilder.setMatchEntryValue(ipv6NdTllCaseBuilder.build());
1185 entries.add(entriesBuilder.build());
1187 entriesBuilder = new MatchEntryBuilder();
1188 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1189 entriesBuilder.setOxmMatchField(Ipv6Exthdr.class);
1190 entriesBuilder.setHasMask(false);
1191 final Ipv6ExthdrCaseBuilder ipv6ExthdrCaseBuilder = new Ipv6ExthdrCaseBuilder();
1192 final Ipv6ExthdrBuilder ipv6ExthdrBuilder = new Ipv6ExthdrBuilder();
1193 ipv6ExthdrBuilder.setPseudoField(new Ipv6ExthdrFlags(true, false, true, false, true, false, true, false, true));
1194 ipv6ExthdrCaseBuilder.setIpv6Exthdr(ipv6ExthdrBuilder.build());
1195 entriesBuilder.setMatchEntryValue(ipv6ExthdrCaseBuilder.build());
1196 builder.setMatchEntry(entries);
1197 entries.add(entriesBuilder.build());
1199 final VersionDatapathIdConvertorData datapathIdConvertorData =
1200 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1201 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1203 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1204 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);
1205 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1206 salMatchBuilder.build();
1208 final Ipv6Match ipv6Match = (Ipv6Match) builtMatch.getLayer3Match();
1209 Assert.assertEquals("Wrong ipv6 src address", "2001:cdba::3257:9657/128",
1210 ipv6Match.getIpv6Source().getValue());
1211 Assert.assertEquals("Wrong ipv6 dst address", "2001:cdba::3257:9658/128",
1212 ipv6Match.getIpv6Destination().getValue());
1213 Assert.assertEquals("Wrong ipv6 nd target", "2001:cdba:0000:0000:0000:0000:3257:9659",
1214 ipv6Match.getIpv6NdTarget().getValue());
1215 Assert.assertEquals("Wrong ipv6 flabel", 18, ipv6Match.getIpv6Label().getIpv6Flabel().getValue().intValue());
1216 Assert.assertEquals("Wrong ipv6 nd sll", new MacAddress("00:00:00:00:00:05"), ipv6Match.getIpv6NdSll());
1217 Assert.assertEquals("Wrong ipv6 nd tll", new MacAddress("00:00:00:00:00:06"), ipv6Match.getIpv6NdTll());
1218 Assert.assertEquals("Wrong ipv6 ext header", 358, ipv6Match.getIpv6ExtHeader().getIpv6Exthdr().intValue());
1222 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1225 public void testLayer3MatchIpv6ExtHeader2() {
1226 final MatchBuilder builder = new MatchBuilder();
1227 builder.setType(OxmMatchType.class);
1228 final List<MatchEntry> entries = new ArrayList<>();
1229 final MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1230 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1231 entriesBuilder.setOxmMatchField(Ipv6Exthdr.class);
1232 entriesBuilder.setHasMask(true);
1233 final Ipv6ExthdrCaseBuilder ipv6ExthdrCaseBuilder = new Ipv6ExthdrCaseBuilder();
1234 final Ipv6ExthdrBuilder ipv6ExthdrBuilder = new Ipv6ExthdrBuilder();
1235 ipv6ExthdrBuilder.setPseudoField(
1236 new Ipv6ExthdrFlags(false, true, false, true, false, true, false, true, false));
1237 ipv6ExthdrBuilder.setMask(new byte[]{1, 2});
1238 ipv6ExthdrCaseBuilder.setIpv6Exthdr(ipv6ExthdrBuilder.build());
1239 entriesBuilder.setMatchEntryValue(ipv6ExthdrCaseBuilder.build());
1240 entries.add(entriesBuilder.build());
1241 builder.setMatchEntry(entries);
1243 final VersionDatapathIdConvertorData datapathIdConvertorData =
1244 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1245 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1247 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1248 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);
1249 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1250 salMatchBuilder.build();
1252 final Ipv6Match ipv6Match = (Ipv6Match) builtMatch.getLayer3Match();
1253 Assert.assertEquals("Wrong ipv6 ext header", 153, ipv6Match.getIpv6ExtHeader().getIpv6Exthdr().intValue());
1254 Assert.assertEquals("Wrong ipv6 ext header mask", 258,
1255 ipv6Match.getIpv6ExtHeader().getIpv6ExthdrMask().intValue());
1259 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1262 public void testLayer3MatchArp() {
1263 final MatchBuilder builder = new MatchBuilder();
1264 builder.setType(OxmMatchType.class);
1265 final List<MatchEntry> entries = new ArrayList<>();
1266 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1267 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1268 entriesBuilder.setOxmMatchField(ArpOp.class);
1269 entriesBuilder.setHasMask(false);
1270 final ArpOpCaseBuilder arpOpCaseBuilder = new ArpOpCaseBuilder();
1271 final ArpOpBuilder arpOpBuilder = new ArpOpBuilder();
1272 arpOpBuilder.setOpCode(17);
1273 arpOpCaseBuilder.setArpOp(arpOpBuilder.build());
1274 entriesBuilder.setMatchEntryValue(arpOpCaseBuilder.build());
1275 entries.add(entriesBuilder.build());
1277 entriesBuilder = new MatchEntryBuilder();
1278 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1279 entriesBuilder.setOxmMatchField(ArpSpa.class);
1280 entriesBuilder.setHasMask(false);
1281 final ArpSpaCaseBuilder arpSpaCaseBuilder = new ArpSpaCaseBuilder();
1282 final ArpSpaBuilder arpSpaBuilder = new ArpSpaBuilder();
1283 arpSpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.3"));
1284 arpSpaCaseBuilder.setArpSpa(arpSpaBuilder.build());
1285 entriesBuilder.setMatchEntryValue(arpSpaCaseBuilder.build());
1286 entries.add(entriesBuilder.build());
1288 entriesBuilder = new MatchEntryBuilder();
1289 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1290 entriesBuilder.setOxmMatchField(ArpTpa.class);
1291 entriesBuilder.setHasMask(false);
1292 final ArpTpaCaseBuilder arpTpaCaseBuilder = new ArpTpaCaseBuilder();
1293 final ArpTpaBuilder arpTpaBuilder = new ArpTpaBuilder();
1294 arpTpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.4"));
1295 arpTpaCaseBuilder.setArpTpa(arpTpaBuilder.build());
1296 entriesBuilder.setMatchEntryValue(arpTpaCaseBuilder.build());
1297 entries.add(entriesBuilder.build());
1299 entriesBuilder = new MatchEntryBuilder();
1300 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1301 entriesBuilder.setOxmMatchField(ArpSha.class);
1302 entriesBuilder.setHasMask(false);
1303 final ArpShaCaseBuilder arpShaCaseBuilder = new ArpShaCaseBuilder();
1304 final ArpShaBuilder arpShaBuilder = new ArpShaBuilder();
1305 arpShaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:03"));
1306 arpShaCaseBuilder.setArpSha(arpShaBuilder.build());
1307 entriesBuilder.setMatchEntryValue(arpShaCaseBuilder.build());
1308 entries.add(entriesBuilder.build());
1310 entriesBuilder = new MatchEntryBuilder();
1311 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1312 entriesBuilder.setOxmMatchField(
1313 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTha.class);
1314 entriesBuilder.setHasMask(false);
1315 final ArpThaCaseBuilder arpThaCaseBuilder = new ArpThaCaseBuilder();
1316 final ArpThaBuilder arpThaBuilder = new ArpThaBuilder();
1317 arpThaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:04"));
1318 arpThaCaseBuilder.setArpTha(arpThaBuilder.build());
1319 entriesBuilder.setMatchEntryValue(arpThaCaseBuilder.build());
1320 entries.add(entriesBuilder.build());
1321 builder.setMatchEntry(entries);
1323 final VersionDatapathIdConvertorData datapathIdConvertorData =
1324 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1325 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1327 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1328 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);
1329 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1330 salMatchBuilder.build();
1332 final ArpMatch arpMatch = (ArpMatch) builtMatch.getLayer3Match();
1333 Assert.assertEquals("Wrong arp op", 17, arpMatch.getArpOp().intValue());
1334 Assert.assertEquals("Wrong arp spa", "10.0.0.3/32", arpMatch.getArpSourceTransportAddress().getValue());
1335 Assert.assertEquals("Wrong arp tpa", "10.0.0.4/32", arpMatch.getArpTargetTransportAddress().getValue());
1336 Assert.assertEquals("Wrong arp sha", "00:00:00:00:00:03",
1337 arpMatch.getArpSourceHardwareAddress().getAddress().getValue());
1338 Assert.assertEquals("Wrong arp tha", "00:00:00:00:00:04",
1339 arpMatch.getArpTargetHardwareAddress().getAddress().getValue());
1343 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1346 public void testLayer3MatchArpWithMasks() {
1347 final MatchBuilder builder = new MatchBuilder();
1348 builder.setType(OxmMatchType.class);
1349 final List<MatchEntry> entries = new ArrayList<>();
1350 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1351 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1352 entriesBuilder.setOxmMatchField(ArpSpa.class);
1353 entriesBuilder.setHasMask(true);
1354 final ArpSpaCaseBuilder arpSpaCaseBuilder = new ArpSpaCaseBuilder();
1355 final ArpSpaBuilder arpSpaBuilder = new ArpSpaBuilder();
1356 arpSpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.3"));
1357 arpSpaBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
1358 arpSpaCaseBuilder.setArpSpa(arpSpaBuilder.build());
1359 entriesBuilder.setMatchEntryValue(arpSpaCaseBuilder.build());
1360 entries.add(entriesBuilder.build());
1362 entriesBuilder = new MatchEntryBuilder();
1363 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1364 entriesBuilder.setOxmMatchField(ArpTpa.class);
1365 entriesBuilder.setHasMask(true);
1366 final ArpTpaCaseBuilder arpTpaCaseBuilder = new ArpTpaCaseBuilder();
1367 final ArpTpaBuilder arpTpaBuilder = new ArpTpaBuilder();
1368 arpTpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));
1369 arpTpaBuilder.setMask(new byte[]{(byte) 255, (byte) 128, 0, 0});
1370 arpTpaCaseBuilder.setArpTpa(arpTpaBuilder.build());
1371 entriesBuilder.setMatchEntryValue(arpTpaCaseBuilder.build());
1372 entries.add(entriesBuilder.build());
1374 entriesBuilder = new MatchEntryBuilder();
1375 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1376 entriesBuilder.setOxmMatchField(ArpSha.class);
1377 entriesBuilder.setHasMask(true);
1378 final ArpShaCaseBuilder arpShaCaseBuilder = new ArpShaCaseBuilder();
1379 final ArpShaBuilder arpShaBuilder = new ArpShaBuilder();
1380 arpShaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:03"));
1381 arpShaBuilder.setMask(new byte[]{0, 0, 1, 0, 4, 0});
1382 arpShaCaseBuilder.setArpSha(arpShaBuilder.build());
1383 entriesBuilder.setMatchEntryValue(arpShaCaseBuilder.build());
1384 entries.add(entriesBuilder.build());
1386 entriesBuilder = new MatchEntryBuilder();
1387 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1388 entriesBuilder.setOxmMatchField(
1389 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTha.class);
1390 entriesBuilder.setHasMask(true);
1391 final ArpThaCaseBuilder arpThaCaseBuilder = new ArpThaCaseBuilder();
1392 final ArpThaBuilder arpThaBuilder = new ArpThaBuilder();
1393 arpThaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:04"));
1394 arpThaBuilder.setMask(new byte[]{1, 1, 1, 2, 2, 2});
1395 arpThaCaseBuilder.setArpTha(arpThaBuilder.build());
1396 entriesBuilder.setMatchEntryValue(arpThaCaseBuilder.build());
1397 entries.add(entriesBuilder.build());
1399 builder.setMatchEntry(entries);
1401 final VersionDatapathIdConvertorData datapathIdConvertorData =
1402 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1403 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1405 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1406 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);
1407 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1408 salMatchBuilder.build();
1410 final ArpMatch arpMatch = (ArpMatch) builtMatch.getLayer3Match();
1411 Assert.assertEquals("Wrong arp spa", "10.0.0.3/24", arpMatch.getArpSourceTransportAddress().getValue());
1412 Assert.assertEquals("Wrong arp tpa", "10.0.0.0/9", arpMatch.getArpTargetTransportAddress().getValue());
1413 Assert.assertEquals("Wrong arp sha", "00:00:00:00:00:03",
1414 arpMatch.getArpSourceHardwareAddress().getAddress().getValue());
1415 Assert.assertEquals("Wrong arp sha mask", "00:00:01:00:04:00",
1416 arpMatch.getArpSourceHardwareAddress().getMask().getValue());
1417 Assert.assertEquals("Wrong arp tha", "00:00:00:00:00:04",
1418 arpMatch.getArpTargetHardwareAddress().getAddress().getValue());
1419 Assert.assertEquals("Wrong arp tha mask", "01:01:01:02:02:02",
1420 arpMatch.getArpTargetHardwareAddress().getMask().getValue());
1424 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1427 public void testWithMatchEntryWithIpv6ArbitraryMasks() {
1428 final MatchBuilder builder = new MatchBuilder();
1429 builder.setType(OxmMatchType.class);
1430 final List<MatchEntry> entries = new ArrayList<>();
1431 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1432 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1433 entriesBuilder.setOxmMatchField(
1434 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
1435 entriesBuilder.setHasMask(true);
1437 entriesBuilder = new MatchEntryBuilder();
1438 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1439 entriesBuilder.setOxmMatchField(Ipv6Src.class);
1440 entriesBuilder.setHasMask(true);
1441 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1442 final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();
1443 ipv6SrcBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));
1444 ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1445 ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());
1446 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1447 entries.add(entriesBuilder.build());
1449 entriesBuilder = new MatchEntryBuilder();
1450 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1451 entriesBuilder.setOxmMatchField(Ipv6Dst.class);
1452 entriesBuilder.setHasMask(true);
1453 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1454 final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();
1455 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));
1456 ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1457 ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());
1458 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1459 entries.add(entriesBuilder.build());
1461 builder.setMatchEntry(entries);
1462 final Match match = builder.build();
1464 final VersionDatapathIdConvertorData datapathIdConvertorData =
1465 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1466 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1468 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1469 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);
1470 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1471 salMatchBuilder.build();
1473 final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask =
1474 (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();
1475 Assert.assertEquals("Wrong ipv6 src address", "1001:1001:1001:1001:1001:1001:1001:1001",
1476 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());
1477 Assert.assertEquals("Wrong ipv6 dst address", "2002:2002:2002:2002:2002:2002:2002:2002",
1478 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());
1482 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1485 public void testWithMatchEntryWithIpv6SrcCidrlMaskAndDstArbitraryBitMask() {
1486 final MatchBuilder builder = new MatchBuilder();
1487 builder.setType(OxmMatchType.class);
1488 final List<MatchEntry> entries = new ArrayList<>();
1489 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1490 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1491 entriesBuilder.setOxmMatchField(
1492 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
1493 entriesBuilder.setHasMask(true);
1495 entriesBuilder = new MatchEntryBuilder();
1496 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1497 entriesBuilder.setOxmMatchField(Ipv6Src.class);
1498 entriesBuilder.setHasMask(true);
1499 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1500 final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();
1501 ipv6SrcBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));
1502 ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
1503 ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());
1504 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1505 entries.add(entriesBuilder.build());
1507 entriesBuilder = new MatchEntryBuilder();
1508 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1509 entriesBuilder.setOxmMatchField(Ipv6Dst.class);
1510 entriesBuilder.setHasMask(true);
1511 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1512 final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();
1513 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));
1514 ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1515 ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());
1516 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1517 entries.add(entriesBuilder.build());
1519 builder.setMatchEntry(entries);
1520 final Match match = builder.build();
1522 final VersionDatapathIdConvertorData datapathIdConvertorData =
1523 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1524 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1526 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1527 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);
1528 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1529 salMatchBuilder.build();
1531 final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask =
1532 (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();
1533 Assert.assertEquals("Wrong ipv6 src address", "1001:1001:1001:1001:1001:1001:1001:1001",
1534 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());
1535 Assert.assertEquals("Wrong ipv6 dst address", "2002:2002:2002:2002:2002:2002:2002:2002",
1536 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());
1540 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1543 public void testWithMatchEntryWithIpv6SrcArbitraryBitMaskAndDstCidrMask() {
1544 final MatchBuilder builder = new MatchBuilder();
1545 builder.setType(OxmMatchType.class);
1546 final List<MatchEntry> entries = new ArrayList<>();
1547 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1548 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1549 entriesBuilder.setOxmMatchField(
1550 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
1551 entriesBuilder.setHasMask(true);
1553 entriesBuilder = new MatchEntryBuilder();
1554 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1555 entriesBuilder.setOxmMatchField(Ipv6Src.class);
1556 entriesBuilder.setHasMask(true);
1557 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1558 final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();
1559 ipv6SrcBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));
1560 ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1561 ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());
1562 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1563 entries.add(entriesBuilder.build());
1565 entriesBuilder = new MatchEntryBuilder();
1566 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1567 entriesBuilder.setOxmMatchField(Ipv6Dst.class);
1568 entriesBuilder.setHasMask(true);
1569 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1570 final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();
1571 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));
1572 ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
1573 ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());
1574 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1575 entries.add(entriesBuilder.build());
1577 builder.setMatchEntry(entries);
1578 final Match match = builder.build();
1580 final VersionDatapathIdConvertorData datapathIdConvertorData =
1581 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1582 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1584 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1585 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);
1586 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1587 salMatchBuilder.build();
1589 final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask =
1590 (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();
1591 Assert.assertEquals("Wrong ipv6 src address", "1001:1001:1001:1001:1001:1001:1001:1001",
1592 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());
1593 Assert.assertEquals("Wrong ipv6 dst address", "2002:2002:2002:2002:2002:2002:2002:2002",
1594 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());
1599 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1602 public void testWithMatchEntryWithIpv6DstArbitraryBitMaskAndSrcCidrMask() {
1603 final MatchBuilder builder = new MatchBuilder();
1604 builder.setType(OxmMatchType.class);
1605 final List<MatchEntry> entries = new ArrayList<>();
1606 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1607 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1608 entriesBuilder.setOxmMatchField(
1609 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
1610 entriesBuilder.setHasMask(true);
1612 entriesBuilder = new MatchEntryBuilder();
1613 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1614 entriesBuilder.setOxmMatchField(Ipv6Dst.class);
1615 entriesBuilder.setHasMask(true);
1616 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1617 final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();
1618 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));
1619 ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1620 ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());
1621 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1622 entries.add(entriesBuilder.build());
1624 entriesBuilder = new MatchEntryBuilder();
1625 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1626 entriesBuilder.setOxmMatchField(Ipv6Src.class);
1627 entriesBuilder.setHasMask(true);
1628 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1629 final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();
1630 ipv6SrcBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));
1631 ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
1632 ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());
1633 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1634 entries.add(entriesBuilder.build());
1636 builder.setMatchEntry(entries);
1637 final Match match = builder.build();
1639 final VersionDatapathIdConvertorData datapathIdConvertorData =
1640 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1641 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1643 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1644 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);
1645 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1646 salMatchBuilder.build();
1648 final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask =
1649 (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();
1650 Assert.assertEquals("Wrong ipv6 src address", "2002:2002:2002:2002:2002:2002:2002:2002",
1651 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());
1652 Assert.assertEquals("Wrong ipv6 dst address", "1001:1001:1001:1001:1001:1001:1001:1001",
1653 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());
1658 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1661 public void testWithMatchEntryWithIpv6DstCidrMaskAndSrcArbitraryBitMask() {
1662 final MatchBuilder builder = new MatchBuilder();
1663 builder.setType(OxmMatchType.class);
1664 final List<MatchEntry> entries = new ArrayList<>();
1665 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1666 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1667 entriesBuilder.setOxmMatchField(
1668 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
1669 entriesBuilder.setHasMask(true);
1671 entriesBuilder = new MatchEntryBuilder();
1672 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1673 entriesBuilder.setOxmMatchField(Ipv6Dst.class);
1674 entriesBuilder.setHasMask(true);
1675 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1676 final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();
1677 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));
1678 ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
1679 ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());
1680 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1681 entries.add(entriesBuilder.build());
1683 entriesBuilder = new MatchEntryBuilder();
1684 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
1685 entriesBuilder.setOxmMatchField(Ipv6Src.class);
1686 entriesBuilder.setHasMask(true);
1687 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1688 final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();
1689 ipv6SrcBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));
1690 ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1691 ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());
1692 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1693 entries.add(entriesBuilder.build());
1695 builder.setMatchEntry(entries);
1696 final Match match = builder.build();
1698 final VersionDatapathIdConvertorData datapathIdConvertorData =
1699 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1700 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1702 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1703 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);
1704 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1705 salMatchBuilder.build();
1707 final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask =
1708 (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();
1709 Assert.assertEquals("Wrong ipv6 src address", "2002:2002:2002:2002:2002:2002:2002:2002",
1710 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());
1711 Assert.assertEquals("Wrong ipv6 dst address", "1001:1001:1001:1001:1001:1001:1001:1001",
1712 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());
1715 private org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1716 .MatchBuilder convert(final Match match, final VersionDatapathIdConvertorData data) {
1717 final Optional<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1718 .MatchBuilder> salMatchOptional = convertorManager.convert(match, data);
1720 return salMatchOptional
1721 .orElse(new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder());