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
8 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match;
10 import java.util.ArrayList;
11 import java.util.List;
12 import java.util.Optional;
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.opendaylight.openflowplugin.api.OFConstants;
17 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
18 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory;
19 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6FlowLabel;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatch;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchArbitraryBitMask;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchArbitraryBitMask;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatch;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatch;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatch;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.EtherType;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Ipv6ExthdrFlags;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpOp;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpSha;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpSpa;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTpa;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthDst;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthSrc;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthType;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv4Code;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv4Type;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv6Code;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv6Type;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpDscp;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpEcn;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpProto;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv4Dst;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv4Src;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Dst;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Exthdr;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Flabel;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdSll;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdTarget;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdTll;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Src;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsBos;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsLabel;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsTc;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OpenflowBasicClass;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmMatchType;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.PacketType;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.PbbIsid;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.SctpDst;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.SctpSrc;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TcpDst;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TcpSrc;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TunnelId;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.UdpDst;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.VlanPcp;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.VlanVid;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpOpCaseBuilder;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpShaCaseBuilder;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpSpaCaseBuilder;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpThaCaseBuilder;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpTpaCaseBuilder;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthDstCaseBuilder;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthSrcCaseBuilder;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthTypeCaseBuilder;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv4CodeCaseBuilder;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv4TypeCaseBuilder;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv6CodeCaseBuilder;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv6TypeCaseBuilder;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.InPhyPortCaseBuilder;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.InPortCaseBuilder;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpDscpCaseBuilder;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpEcnCaseBuilder;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpProtoCaseBuilder;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv4DstCaseBuilder;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv4SrcCaseBuilder;
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6DstCaseBuilder;
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6ExthdrCaseBuilder;
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6FlabelCaseBuilder;
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdSllCaseBuilder;
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdTargetCaseBuilder;
101 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdTllCaseBuilder;
102 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6SrcCaseBuilder;
103 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MetadataCaseBuilder;
104 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsBosCaseBuilder;
105 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsLabelCaseBuilder;
106 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsTcCaseBuilder;
107 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.PacketTypeCaseBuilder;
108 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.PbbIsidCaseBuilder;
109 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.SctpDstCaseBuilder;
110 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.SctpSrcCaseBuilder;
111 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TcpDstCaseBuilder;
112 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TcpSrcCaseBuilder;
113 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TunnelIdCaseBuilder;
114 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.UdpDstCaseBuilder;
115 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.UdpSrcCaseBuilder;
116 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanPcpCaseBuilder;
117 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanVidCaseBuilder;
118 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.op._case.ArpOpBuilder;
119 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.sha._case.ArpShaBuilder;
120 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.spa._case.ArpSpaBuilder;
121 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.tha._case.ArpThaBuilder;
122 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.tpa._case.ArpTpaBuilder;
123 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.dst._case.EthDstBuilder;
124 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.src._case.EthSrcBuilder;
125 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.type._case.EthTypeBuilder;
126 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv4.code._case.Icmpv4CodeBuilder;
127 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv4.type._case.Icmpv4TypeBuilder;
128 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv6.code._case.Icmpv6CodeBuilder;
129 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv6.type._case.Icmpv6TypeBuilder;
130 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.in.phy.port._case.InPhyPortBuilder;
131 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.in.port._case.InPortBuilder;
132 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.dscp._case.IpDscpBuilder;
133 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.ecn._case.IpEcnBuilder;
134 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.proto._case.IpProtoBuilder;
135 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv4.dst._case.Ipv4DstBuilder;
136 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv4.src._case.Ipv4SrcBuilder;
137 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.dst._case.Ipv6DstBuilder;
138 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.exthdr._case.Ipv6ExthdrBuilder;
139 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.flabel._case.Ipv6FlabelBuilder;
140 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.sll._case.Ipv6NdSllBuilder;
141 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.target._case.Ipv6NdTargetBuilder;
142 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.tll._case.Ipv6NdTllBuilder;
143 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.src._case.Ipv6SrcBuilder;
144 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.bos._case.MplsBosBuilder;
145 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.label._case.MplsLabelBuilder;
146 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.tc._case.MplsTcBuilder;
147 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.packet.type._case.PacketTypeBuilder;
148 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.pbb.isid._case.PbbIsidBuilder;
149 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.sctp.dst._case.SctpDstBuilder;
150 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.sctp.src._case.SctpSrcBuilder;
151 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tcp.dst._case.TcpDstBuilder;
152 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tcp.src._case.TcpSrcBuilder;
153 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tunnel.id._case.TunnelIdBuilder;
154 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.udp.dst._case.UdpDstBuilder;
155 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.udp.src._case.UdpSrcBuilder;
156 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.vlan.pcp._case.VlanPcpBuilder;
157 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.vlan.vid._case.VlanVidBuilder;
158 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match;
159 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.MatchBuilder;
160 import org.opendaylight.yangtools.yang.common.Uint16;
161 import org.opendaylight.yangtools.yang.common.Uint32;
162 import org.opendaylight.yangtools.yang.common.Uint64;
163 import org.opendaylight.yangtools.yang.common.Uint8;
166 * Unit tests for match response conversions.
168 * @author michal.polkorab
170 public class MatchResponseConvertor2Test {
172 private ConvertorManager convertorManager;
175 * Initializes OpenflowPortsUtil.
178 public void startUp() {
179 convertorManager = ConvertorManagerFactory.createDefaultManager();
183 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
185 public void testEmptyMatch() {
186 final VersionDatapathIdConvertorData datapathIdConvertorData =
187 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
188 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
189 // Empty null match is the same as empty match
190 Assert.assertNotNull(convert(new MatchBuilder().build(), datapathIdConvertorData));
194 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
197 public void testEmptyMatchEntry() {
199 final MatchBuilder builder = new MatchBuilder();
200 builder.setType(OxmMatchType.VALUE);
201 final List<MatchEntry> entries = new ArrayList<>();
202 builder.setMatchEntry(entries);
203 final Match match = builder.build();
205 final VersionDatapathIdConvertorData datapathIdConvertorData =
206 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
207 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
209 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder salMatch =
210 convert(match, datapathIdConvertorData);
212 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
215 Assert.assertEquals("Wrong match entries", null, builtMatch.getEthernetMatch());
216 Assert.assertEquals("Wrong match entries", null, builtMatch.getIcmpv4Match());
217 Assert.assertEquals("Wrong match entries", null, builtMatch.getIcmpv6Match());
218 Assert.assertEquals("Wrong match entries", null, builtMatch.getInPhyPort());
219 Assert.assertEquals("Wrong match entries", null, builtMatch.getInPort());
220 Assert.assertEquals("Wrong match entries", null, builtMatch.getIpMatch());
221 Assert.assertEquals("Wrong match entries", null, builtMatch.getLayer3Match());
222 Assert.assertEquals("Wrong match entries", null, builtMatch.getLayer4Match());
223 Assert.assertEquals("Wrong match entries", null, builtMatch.getMetadata());
224 Assert.assertEquals("Wrong match entries", null, builtMatch.getPacketTypeMatch());
225 Assert.assertEquals("Wrong match entries", null, builtMatch.getProtocolMatchFields());
226 Assert.assertEquals("Wrong match entries", null, builtMatch.getVlanMatch());
227 Assert.assertEquals("Wrong match entries", null, builtMatch.getTunnel());
232 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
235 public void testWithMatchEntryNoMasks() {
236 final List<MatchEntry> entries = new ArrayList<>();
237 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
238 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
239 entriesBuilder.setOxmMatchField(
240 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.InPort.VALUE);
241 entriesBuilder.setHasMask(false);
242 final InPortCaseBuilder caseBuilder = new InPortCaseBuilder();
243 final InPortBuilder portBuilder = new InPortBuilder();
244 portBuilder.setPortNumber(new PortNumber(Uint32.ONE));
245 caseBuilder.setInPort(portBuilder.build());
246 entriesBuilder.setMatchEntryValue(caseBuilder.build());
247 entries.add(entriesBuilder.build());
249 final InPhyPortCaseBuilder inPhyPortCaseBuilder = new InPhyPortCaseBuilder();
250 entriesBuilder = new MatchEntryBuilder();
251 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
252 entriesBuilder.setOxmMatchField(
253 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.InPhyPort.VALUE);
254 entriesBuilder.setHasMask(false);
255 final InPhyPortBuilder inPhyPortBuilder = new InPhyPortBuilder();
256 inPhyPortBuilder.setPortNumber(new PortNumber(Uint32.TWO));
257 inPhyPortCaseBuilder.setInPhyPort(inPhyPortBuilder.build());
258 entriesBuilder.setMatchEntryValue(inPhyPortCaseBuilder.build());
259 entries.add(entriesBuilder.build());
261 entriesBuilder = new MatchEntryBuilder();
262 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
263 entriesBuilder.setOxmMatchField(
264 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
265 entriesBuilder.setHasMask(false);
266 final MetadataCaseBuilder metadataCaseBuilder = new MetadataCaseBuilder();
267 final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match
268 .entry.value.metadata._case.MetadataBuilder metadataBuilder = new org.opendaylight.yang.gen.v1.urn
269 .opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case
271 metadataBuilder.setMetadata(new byte[]{0, 1, 2, 3, 4, 5, 6, 7});
272 metadataCaseBuilder.setMetadata(metadataBuilder.build());
273 entriesBuilder.setMatchEntryValue(metadataCaseBuilder.build());
274 entries.add(entriesBuilder.build());
276 entriesBuilder = new MatchEntryBuilder();
277 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
278 entriesBuilder.setOxmMatchField(PacketType.VALUE);
279 entriesBuilder.setHasMask(false);
280 final PacketTypeCaseBuilder packetTypeCaseBuilder = new PacketTypeCaseBuilder();
281 final PacketTypeBuilder packetTypeBuilder = new PacketTypeBuilder();
282 packetTypeBuilder.setPacketType(Uint32.valueOf(0x1894f));
283 packetTypeCaseBuilder.setPacketType(packetTypeBuilder.build());
284 entriesBuilder.setMatchEntryValue(packetTypeCaseBuilder.build());
285 entries.add(entriesBuilder.build());
287 entriesBuilder = new MatchEntryBuilder();
288 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
289 entriesBuilder.setOxmMatchField(EthDst.VALUE);
290 entriesBuilder.setHasMask(false);
291 final EthDstCaseBuilder ethDstCaseBuilder = new EthDstCaseBuilder();
292 final EthDstBuilder ethDstBuilder = new EthDstBuilder();
293 ethDstBuilder.setMacAddress(new MacAddress("00:00:00:00:00:01"));
294 ethDstCaseBuilder.setEthDst(ethDstBuilder.build());
295 entriesBuilder.setMatchEntryValue(ethDstCaseBuilder.build());
296 entries.add(entriesBuilder.build());
298 entriesBuilder = new MatchEntryBuilder();
299 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
300 entriesBuilder.setOxmMatchField(EthSrc.VALUE);
301 entriesBuilder.setHasMask(false);
302 final EthSrcCaseBuilder ethSrcCaseBuilder = new EthSrcCaseBuilder();
303 final EthSrcBuilder ethSrcBuilder = new EthSrcBuilder();
304 ethSrcBuilder.setMacAddress(new MacAddress("00:00:00:00:00:02"));
305 ethSrcCaseBuilder.setEthSrc(ethSrcBuilder.build());
306 entriesBuilder.setMatchEntryValue(ethSrcCaseBuilder.build());
307 entries.add(entriesBuilder.build());
310 entriesBuilder = new MatchEntryBuilder();
311 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
312 entriesBuilder.setOxmMatchField(EthType.VALUE);
313 entriesBuilder.setHasMask(false);
314 final EthTypeCaseBuilder ethTypeCaseBuilder = new EthTypeCaseBuilder();
316 final EthTypeBuilder ethTypeBuilder = new EthTypeBuilder();
317 ethTypeBuilder.setEthType(new EtherType(Uint16.valueOf(3)));
318 ethTypeCaseBuilder.setEthType(ethTypeBuilder.build());
319 entriesBuilder.setMatchEntryValue(ethTypeCaseBuilder.build());
320 entries.add(entriesBuilder.build());
323 entriesBuilder = new MatchEntryBuilder();
324 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
325 entriesBuilder.setOxmMatchField(VlanVid.VALUE);
326 final VlanVidCaseBuilder vlanVidCaseBuilder = new VlanVidCaseBuilder();
327 entriesBuilder.setHasMask(false);
328 final VlanVidBuilder vlanVidBuilder = new VlanVidBuilder();
329 vlanVidBuilder.setVlanVid(Uint16.valueOf(4));
330 vlanVidBuilder.setCfiBit(true);
331 vlanVidCaseBuilder.setVlanVid(vlanVidBuilder.build());
332 entriesBuilder.setMatchEntryValue(vlanVidCaseBuilder.build());
333 entries.add(entriesBuilder.build());
335 entriesBuilder = new MatchEntryBuilder();
336 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
337 entriesBuilder.setOxmMatchField(VlanPcp.VALUE);
338 final VlanPcpCaseBuilder vlanPcpCaseBuilder = new VlanPcpCaseBuilder();
339 entriesBuilder.setHasMask(false);
340 final VlanPcpBuilder vlanPcpBuilder = new VlanPcpBuilder();
341 vlanPcpBuilder.setVlanPcp(Uint8.valueOf(5));
342 vlanPcpCaseBuilder.setVlanPcp(vlanPcpBuilder.build());
343 entriesBuilder.setMatchEntryValue(vlanPcpCaseBuilder.build());
344 entries.add(entriesBuilder.build());
347 entriesBuilder = new MatchEntryBuilder();
348 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
349 entriesBuilder.setOxmMatchField(IpDscp.VALUE);
350 entriesBuilder.setHasMask(false);
351 final IpDscpCaseBuilder ipDscpCaseBuilder = new IpDscpCaseBuilder();
352 final IpDscpBuilder ipDscpBuilder = new IpDscpBuilder();
353 ipDscpBuilder.setDscp(new Dscp(Uint8.valueOf(6)));
354 ipDscpCaseBuilder.setIpDscp(ipDscpBuilder.build());
355 entriesBuilder.setMatchEntryValue(ipDscpCaseBuilder.build());
356 entries.add(entriesBuilder.build());
359 entriesBuilder = new MatchEntryBuilder();
360 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
361 entriesBuilder.setOxmMatchField(IpEcn.VALUE);
362 entriesBuilder.setHasMask(false);
363 final IpEcnCaseBuilder ipEcnCaseBuilder = new IpEcnCaseBuilder();
364 final IpEcnBuilder ipEcnBuilder = new IpEcnBuilder();
365 ipEcnBuilder.setEcn(Uint8.valueOf(7));
366 ipEcnCaseBuilder.setIpEcn(ipEcnBuilder.build());
367 entriesBuilder.setMatchEntryValue(ipEcnCaseBuilder.build());
368 entries.add(entriesBuilder.build());
371 entriesBuilder = new MatchEntryBuilder();
372 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
373 entriesBuilder.setOxmMatchField(IpProto.VALUE);
374 final IpProtoCaseBuilder ipProtoCaseBuilder = new IpProtoCaseBuilder();
375 entriesBuilder.setHasMask(false);
376 final IpProtoBuilder ipProtoBuilder = new IpProtoBuilder();
377 ipProtoBuilder.setProtocolNumber(Uint8.valueOf(8));
378 ipProtoCaseBuilder.setIpProto(ipProtoBuilder.build());
379 entriesBuilder.setMatchEntryValue(ipProtoCaseBuilder.build());
380 entries.add(entriesBuilder.build());
383 entriesBuilder = new MatchEntryBuilder();
384 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
385 entriesBuilder.setOxmMatchField(Ipv4Src.VALUE);
386 entriesBuilder.setHasMask(false);
387 final Ipv4SrcCaseBuilder ipv4AddressBuilder = new Ipv4SrcCaseBuilder();
388 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
389 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.0.0.1"));
390 ipv4AddressBuilder.setIpv4Src(ipv4SrcBuilder.build());
391 entriesBuilder.setMatchEntryValue(ipv4AddressBuilder.build());
392 entries.add(entriesBuilder.build());
394 entriesBuilder = new MatchEntryBuilder();
395 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
396 entriesBuilder.setOxmMatchField(Ipv4Dst.VALUE);
397 entriesBuilder.setHasMask(false);
398 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
399 final Ipv4DstBuilder ipv4DstBuilder = new Ipv4DstBuilder();
400 ipv4DstBuilder.setIpv4Address(new Ipv4Address("10.0.0.2"));
401 ipv4DstCaseBuilder.setIpv4Dst(ipv4DstBuilder.build());
402 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
403 entries.add(entriesBuilder.build());
405 entriesBuilder = new MatchEntryBuilder();
406 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
407 entriesBuilder.setOxmMatchField(TcpSrc.VALUE);
408 entriesBuilder.setHasMask(false);
409 final TcpSrcCaseBuilder tcpSrcCaseBuilder = new TcpSrcCaseBuilder();
410 final TcpSrcBuilder tcpSrcBuilder = new TcpSrcBuilder();
411 tcpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
412 .inet.types.rev130715.PortNumber(Uint16.valueOf(9)));
413 tcpSrcCaseBuilder.setTcpSrc(tcpSrcBuilder.build());
414 entriesBuilder.setMatchEntryValue(tcpSrcCaseBuilder.build());
415 entries.add(entriesBuilder.build());
417 entriesBuilder = new MatchEntryBuilder();
418 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
419 entriesBuilder.setOxmMatchField(TcpDst.VALUE);
420 entriesBuilder.setHasMask(false);
421 final TcpDstCaseBuilder tcpDstCaseBuilder = new TcpDstCaseBuilder();
422 final TcpDstBuilder tcpDstBuilder = new TcpDstBuilder();
423 tcpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
424 .inet.types.rev130715.PortNumber(Uint16.valueOf(10)));
425 tcpDstCaseBuilder.setTcpDst(tcpDstBuilder.build());
426 entriesBuilder.setMatchEntryValue(tcpDstCaseBuilder.build());
427 entries.add(entriesBuilder.build());
429 entriesBuilder = new MatchEntryBuilder();
430 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
431 entriesBuilder.setOxmMatchField(Icmpv4Type.VALUE);
432 entriesBuilder.setHasMask(false);
433 final Icmpv4TypeCaseBuilder icmpv4TypeCaseBuilder = new Icmpv4TypeCaseBuilder();
434 final Icmpv4TypeBuilder icmpv4TypeBuilder = new Icmpv4TypeBuilder();
435 icmpv4TypeBuilder.setIcmpv4Type(Uint8.valueOf(15));
436 icmpv4TypeCaseBuilder.setIcmpv4Type(icmpv4TypeBuilder.build());
437 entriesBuilder.setMatchEntryValue(icmpv4TypeCaseBuilder.build());
438 entries.add(entriesBuilder.build());
440 entriesBuilder = new MatchEntryBuilder();
441 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
442 entriesBuilder.setOxmMatchField(Icmpv4Code.VALUE);
443 entriesBuilder.setHasMask(false);
444 final Icmpv4CodeCaseBuilder icmpv4CodeCaseBuilder = new Icmpv4CodeCaseBuilder();
445 final Icmpv4CodeBuilder icmpv4CodeBuilder = new Icmpv4CodeBuilder();
446 icmpv4CodeBuilder.setIcmpv4Code(Uint8.valueOf(16));
447 icmpv4CodeCaseBuilder.setIcmpv4Code(icmpv4CodeBuilder.build());
448 entriesBuilder.setMatchEntryValue(icmpv4CodeCaseBuilder.build());
449 entries.add(entriesBuilder.build());
451 entriesBuilder = new MatchEntryBuilder();
452 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
453 entriesBuilder.setOxmMatchField(Icmpv6Type.VALUE);
454 entriesBuilder.setHasMask(false);
455 final Icmpv6TypeCaseBuilder icmpv6TypeCaseBuilder = new Icmpv6TypeCaseBuilder();
456 final Icmpv6TypeBuilder icmpv6TypeBuilder = new Icmpv6TypeBuilder();
457 icmpv6TypeBuilder.setIcmpv6Type(Uint8.valueOf(19));
458 icmpv6TypeCaseBuilder.setIcmpv6Type(icmpv6TypeBuilder.build());
459 entriesBuilder.setMatchEntryValue(icmpv6TypeCaseBuilder.build());
460 entries.add(entriesBuilder.build());
462 entriesBuilder = new MatchEntryBuilder();
463 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
464 entriesBuilder.setOxmMatchField(Icmpv6Code.VALUE);
465 entriesBuilder.setHasMask(false);
466 final Icmpv6CodeCaseBuilder icmpv6CodeCaseBuilder = new Icmpv6CodeCaseBuilder();
467 final Icmpv6CodeBuilder icmpv6CodeBuilder = new Icmpv6CodeBuilder();
468 icmpv6CodeBuilder.setIcmpv6Code(Uint8.valueOf(20));
469 icmpv6CodeCaseBuilder.setIcmpv6Code(icmpv6CodeBuilder.build());
470 entriesBuilder.setMatchEntryValue(icmpv6CodeCaseBuilder.build());
471 entries.add(entriesBuilder.build());
473 entriesBuilder = new MatchEntryBuilder();
474 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
475 entriesBuilder.setOxmMatchField(MplsLabel.VALUE);
476 entriesBuilder.setHasMask(false);
477 final MplsLabelCaseBuilder mplsLabelCaseBuilder = new MplsLabelCaseBuilder();
479 final MplsLabelBuilder mplsLabelBuilder = new MplsLabelBuilder();
480 mplsLabelBuilder.setMplsLabel(Uint32.valueOf(21));
481 mplsLabelCaseBuilder.setMplsLabel(mplsLabelBuilder.build());
482 entriesBuilder.setMatchEntryValue(mplsLabelCaseBuilder.build());
483 entries.add(entriesBuilder.build());
485 entriesBuilder = new MatchEntryBuilder();
486 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
487 entriesBuilder.setOxmMatchField(MplsTc.VALUE);
488 entriesBuilder.setHasMask(false);
489 final MplsTcCaseBuilder mplsTcCaseBuilder = new MplsTcCaseBuilder();
490 final MplsTcBuilder mplsTcBuilder = new MplsTcBuilder();
491 mplsTcBuilder.setTc(Uint8.valueOf(22));
492 mplsTcCaseBuilder.setMplsTc(mplsTcBuilder.build());
493 entriesBuilder.setMatchEntryValue(mplsTcCaseBuilder.build());
494 entries.add(entriesBuilder.build());
496 entriesBuilder = new MatchEntryBuilder();
497 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
498 entriesBuilder.setOxmMatchField(MplsBos.VALUE);
499 entriesBuilder.setHasMask(false);
500 final MplsBosCaseBuilder mplsBosCaseBuilder = new MplsBosCaseBuilder();
501 final MplsBosBuilder mplsBosBuilder = new MplsBosBuilder();
502 mplsBosBuilder.setBos(true);
503 mplsBosCaseBuilder.setMplsBos(mplsBosBuilder.build());
504 entriesBuilder.setMatchEntryValue(mplsBosCaseBuilder.build());
505 entries.add(entriesBuilder.build());
507 entriesBuilder = new MatchEntryBuilder();
508 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
509 entriesBuilder.setOxmMatchField(PbbIsid.VALUE);
510 entriesBuilder.setHasMask(false);
511 final PbbIsidCaseBuilder pbbIsidCaseBuilder = new PbbIsidCaseBuilder();
512 final PbbIsidBuilder pbbIsidBuilder = new PbbIsidBuilder();
513 pbbIsidBuilder.setIsid(Uint32.valueOf(23));
514 pbbIsidCaseBuilder.setPbbIsid(pbbIsidBuilder.build());
515 entriesBuilder.setMatchEntryValue(pbbIsidCaseBuilder.build());
517 entries.add(entriesBuilder.build());
518 entriesBuilder = new MatchEntryBuilder();
519 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
520 entriesBuilder.setOxmMatchField(TunnelId.VALUE);
521 entriesBuilder.setHasMask(false);
522 final TunnelIdCaseBuilder tunnelIdCaseBuilder = new TunnelIdCaseBuilder();
523 final TunnelIdBuilder tunnelIdBuilder = new TunnelIdBuilder();
524 tunnelIdBuilder.setTunnelId(new byte[]{1, 2, 3, 4, 5, 6, 7, 8});
525 tunnelIdCaseBuilder.setTunnelId(tunnelIdBuilder.build());
526 entriesBuilder.setMatchEntryValue(tunnelIdCaseBuilder.build());
527 entries.add(entriesBuilder.build());
529 final MatchBuilder builder = new MatchBuilder();
530 builder.setMatchEntry(entries);
532 final Match match = builder.build();
534 final VersionDatapathIdConvertorData datapathIdConvertorData =
535 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
536 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
538 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
539 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
540 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
543 Assert.assertEquals("Wrong in port", "openflow:42:1", builtMatch.getInPort().getValue());
544 Assert.assertEquals("Wrong in phy port", "openflow:42:2", builtMatch.getInPhyPort().getValue());
545 Assert.assertEquals("Wrong metadata", Uint64.valueOf("0001020304050607", 16),
546 builtMatch.getMetadata().getMetadata());
547 Assert.assertEquals("Wrong packet type", 0x1894f, builtMatch.getPacketTypeMatch().getPacketType().longValue());
548 Assert.assertEquals("Wrong eth dst", new MacAddress("00:00:00:00:00:01"),
549 builtMatch.getEthernetMatch().getEthernetDestination().getAddress());
550 Assert.assertEquals("Wrong eth src", new MacAddress("00:00:00:00:00:02"),
551 builtMatch.getEthernetMatch().getEthernetSource().getAddress());
552 Assert.assertEquals("Wrong eth type", 3,
553 builtMatch.getEthernetMatch().getEthernetType().getType().getValue().intValue());
554 Assert.assertEquals("Wrong vlan id", 4,
555 builtMatch.getVlanMatch().getVlanId().getVlanId().getValue().intValue());
556 Assert.assertEquals("Wrong vlan id entries", true, builtMatch.getVlanMatch().getVlanId().getVlanIdPresent());
557 Assert.assertEquals("Wrong vlan pcp", 5, builtMatch.getVlanMatch().getVlanPcp().getValue().intValue());
558 Assert.assertEquals("Wrong ip dscp", 6, builtMatch.getIpMatch().getIpDscp().getValue().intValue());
559 Assert.assertEquals("Wrong ip ecn", 7, builtMatch.getIpMatch().getIpEcn().intValue());
560 Assert.assertEquals("Wrong ip proto", null, builtMatch.getIpMatch().getIpProto());
561 Assert.assertEquals("Wrong ip protocol", 8, builtMatch.getIpMatch().getIpProtocol().intValue());
563 final TcpMatch tcpMatch = (TcpMatch) builtMatch.getLayer4Match();
564 Assert.assertEquals("Wrong tcp src port", 9, tcpMatch.getTcpSourcePort().getValue().intValue());
565 Assert.assertEquals("Wrong tcp dst port", 10, tcpMatch.getTcpDestinationPort().getValue().intValue());
566 Assert.assertEquals("Wrong icmpv4 type", 15, builtMatch.getIcmpv4Match().getIcmpv4Type().intValue());
567 Assert.assertEquals("Wrong icmpv4 code", 16, builtMatch.getIcmpv4Match().getIcmpv4Code().intValue());
568 Assert.assertEquals("Wrong icmpv6 type", 19, builtMatch.getIcmpv6Match().getIcmpv6Type().intValue());
569 Assert.assertEquals("Wrong icmpv6 code", 20, builtMatch.getIcmpv6Match().getIcmpv6Code().intValue());
571 final Ipv4Match ipv4Match = (Ipv4Match) builtMatch.getLayer3Match();
572 Assert.assertEquals("Wrong ipv4 src address", "10.0.0.1/32", ipv4Match.getIpv4Source().getValue());
573 Assert.assertEquals("Wrong ipv4 dst address", "10.0.0.2/32", ipv4Match.getIpv4Destination().getValue());
574 Assert.assertEquals("Wrong mpls label", 21, builtMatch.getProtocolMatchFields().getMplsLabel().intValue());
575 Assert.assertEquals("Wrong mpls bos", 1, builtMatch.getProtocolMatchFields().getMplsBos().intValue());
576 Assert.assertEquals("Wrong mpls tc", 22, builtMatch.getProtocolMatchFields().getMplsTc().intValue());
577 Assert.assertEquals("Wrong pbb isid", 23, builtMatch.getProtocolMatchFields().getPbb().getPbbIsid().intValue());
578 Assert.assertEquals("Wrong tunnel id", Uint64.valueOf("0102030405060708", 16),
579 builtMatch.getTunnel().getTunnelId());
583 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
586 public void testWithMatchEntryWithMasks() {
587 final MatchBuilder builder = new MatchBuilder();
588 builder.setType(OxmMatchType.VALUE);
589 final List<MatchEntry> entries = new ArrayList<>();
590 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
591 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
592 entriesBuilder.setOxmMatchField(
593 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
594 entriesBuilder.setHasMask(true);
597 final MetadataCaseBuilder metadataCaseBuilder = new MetadataCaseBuilder();
598 final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match
599 .entry.value.metadata._case.MetadataBuilder metadataBuilder = new org.opendaylight.yang.gen.v1.urn
600 .opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case
602 metadataBuilder.setMetadata(new byte[]{0, 1, 2, 3, 4, 5, 6, 7});
603 metadataBuilder.setMask(new byte[]{0, 0, 0, 0, 0, 0, 0, 1});
604 metadataCaseBuilder.setMetadata(metadataBuilder.build());
605 entriesBuilder.setMatchEntryValue(metadataCaseBuilder.build());
606 entries.add(entriesBuilder.build());
608 entriesBuilder = new MatchEntryBuilder();
609 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
610 entriesBuilder.setOxmMatchField(EthDst.VALUE);
611 entriesBuilder.setHasMask(true);
612 final EthDstCaseBuilder ethDstCaseBuilder = new EthDstCaseBuilder();
613 final EthDstBuilder ethDstBuilder = new EthDstBuilder();
614 ethDstBuilder.setMacAddress(new MacAddress("00:00:00:00:00:01"));
615 ethDstBuilder.setMask(new byte[]{0, 0, 0, 0, 1, 1});
616 ethDstCaseBuilder.setEthDst(ethDstBuilder.build());
617 entriesBuilder.setMatchEntryValue(ethDstCaseBuilder.build());
618 entries.add(entriesBuilder.build());
620 entriesBuilder = new MatchEntryBuilder();
621 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
622 entriesBuilder.setOxmMatchField(EthSrc.VALUE);
623 entriesBuilder.setHasMask(true);
624 final EthSrcCaseBuilder ethSrcCaseBuilder = new EthSrcCaseBuilder();
625 final EthSrcBuilder ethSrcBuilder = new EthSrcBuilder();
626 ethSrcBuilder.setMacAddress(new MacAddress("00:00:00:00:00:02"));
627 ethSrcBuilder.setMask(new byte[]{0, 0, 0, 0, 2, 2});
628 ethSrcCaseBuilder.setEthSrc(ethSrcBuilder.build());
629 entriesBuilder.setMatchEntryValue(ethSrcCaseBuilder.build());
630 entries.add(entriesBuilder.build());
632 entriesBuilder = new MatchEntryBuilder();
633 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
634 entriesBuilder.setOxmMatchField(VlanVid.VALUE);
635 entriesBuilder.setHasMask(true);
636 final VlanVidCaseBuilder vlanVidCaseBuilder = new VlanVidCaseBuilder();
637 final VlanVidBuilder vlanVidBuilder = new VlanVidBuilder();
638 vlanVidBuilder.setVlanVid(Uint16.valueOf(4));
639 vlanVidBuilder.setCfiBit(true);
640 vlanVidBuilder.setMask(new byte[]{0, 4});
641 vlanVidCaseBuilder.setVlanVid(vlanVidBuilder.build());
642 entriesBuilder.setMatchEntryValue(vlanVidCaseBuilder.build());
643 entries.add(entriesBuilder.build());
645 entriesBuilder = new MatchEntryBuilder();
646 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
647 entriesBuilder.setOxmMatchField(Ipv4Src.VALUE);
648 entriesBuilder.setHasMask(true);
649 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
650 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
651 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));
652 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
653 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
654 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
655 entries.add(entriesBuilder.build());
657 entriesBuilder = new MatchEntryBuilder();
658 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
659 entriesBuilder.setOxmMatchField(Ipv4Dst.VALUE);
660 entriesBuilder.setHasMask(true);
661 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
662 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
663 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));
664 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});
665 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
666 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
667 entries.add(entriesBuilder.build());
669 entriesBuilder = new MatchEntryBuilder();
670 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
671 entriesBuilder.setOxmMatchField(PbbIsid.VALUE);
672 entriesBuilder.setHasMask(true);
673 final PbbIsidCaseBuilder pbbIsidCaseBuilder = new PbbIsidCaseBuilder();
675 final PbbIsidBuilder pbbIsidBuilder = new PbbIsidBuilder();
676 pbbIsidBuilder.setIsid(Uint32.valueOf(23));
677 pbbIsidBuilder.setMask(new byte[]{0, 0, 7});
678 pbbIsidCaseBuilder.setPbbIsid(pbbIsidBuilder.build());
679 entriesBuilder.setMatchEntryValue(pbbIsidCaseBuilder.build());
680 entries.add(entriesBuilder.build());
682 entriesBuilder = new MatchEntryBuilder();
683 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
684 entriesBuilder.setOxmMatchField(TunnelId.VALUE);
685 entriesBuilder.setHasMask(true);
686 final TunnelIdCaseBuilder tunnelIdCaseBuilder = new TunnelIdCaseBuilder();
687 final TunnelIdBuilder tunnelIdBuilder = new TunnelIdBuilder();
688 tunnelIdBuilder.setTunnelId(new byte[]{1, 2, 3, 4, 5, 6, 7, 8});
689 tunnelIdBuilder.setMask(new byte[]{0, 0, 0, 0, 0, 0, 0, 8});
690 tunnelIdCaseBuilder.setTunnelId(tunnelIdBuilder.build());
691 entriesBuilder.setMatchEntryValue(tunnelIdCaseBuilder.build());
692 entries.add(entriesBuilder.build());
693 builder.setMatchEntry(entries);
694 final Match match = builder.build();
696 final VersionDatapathIdConvertorData datapathIdConvertorData =
697 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
698 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
700 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
701 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
702 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
705 Assert.assertEquals("Wrong metadata", Uint64.valueOf("0001020304050607", 16),
706 builtMatch.getMetadata().getMetadata());
707 Assert.assertEquals("Wrong metadata mask", Uint64.valueOf(1),
708 builtMatch.getMetadata().getMetadataMask());
709 Assert.assertEquals("Wrong eth dst", new MacAddress("00:00:00:00:00:01"),
710 builtMatch.getEthernetMatch().getEthernetDestination().getAddress());
711 Assert.assertEquals("Wrong eth dst mask", new MacAddress("00:00:00:00:01:01"),
712 builtMatch.getEthernetMatch().getEthernetDestination().getMask());
713 Assert.assertEquals("Wrong eth src", new MacAddress("00:00:00:00:00:02"),
714 builtMatch.getEthernetMatch().getEthernetSource().getAddress());
715 Assert.assertEquals("Wrong eth src mask", new MacAddress("00:00:00:00:02:02"),
716 builtMatch.getEthernetMatch().getEthernetSource().getMask());
717 Assert.assertEquals("Wrong vlan id", 4,
718 builtMatch.getVlanMatch().getVlanId().getVlanId().getValue().intValue());
719 Assert.assertEquals("Wrong vlan id entries", true, builtMatch.getVlanMatch().getVlanId().getVlanIdPresent());
720 final Ipv4Match ipv4Match = (Ipv4Match) builtMatch.getLayer3Match();
721 Assert.assertEquals("Wrong ipv4 src address", "10.0.0.0/24", ipv4Match.getIpv4Source().getValue());
722 Assert.assertEquals("Wrong ipv4 dst address", "10.0.0.0/20", ipv4Match.getIpv4Destination().getValue());
723 Assert.assertEquals("Wrong pbb isid", 23, builtMatch.getProtocolMatchFields().getPbb().getPbbIsid().intValue());
724 Assert.assertEquals("Wrong tunnel id", Uint64.valueOf("0102030405060708", 16),
725 builtMatch.getTunnel().getTunnelId());
729 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
732 public void testWithMatchEntryWithArbitraryMasks() {
733 final MatchBuilder builder = new MatchBuilder();
734 builder.setType(OxmMatchType.VALUE);
735 final List<MatchEntry> entries = new ArrayList<>();
736 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
737 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
738 entriesBuilder.setOxmMatchField(
739 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
740 entriesBuilder.setHasMask(true);
742 entriesBuilder = new MatchEntryBuilder();
743 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
744 entriesBuilder.setOxmMatchField(Ipv4Src.VALUE);
745 entriesBuilder.setHasMask(true);
746 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
747 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
748 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
749 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 255, 0});
750 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
751 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
752 entries.add(entriesBuilder.build());
754 entriesBuilder = new MatchEntryBuilder();
755 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
756 entriesBuilder.setOxmMatchField(Ipv4Dst.VALUE);
757 entriesBuilder.setHasMask(true);
758 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
759 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
760 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
761 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});
762 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
763 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
764 entries.add(entriesBuilder.build());
766 builder.setMatchEntry(entries);
767 final Match match = builder.build();
769 final VersionDatapathIdConvertorData datapathIdConvertorData =
770 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
771 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
773 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
774 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
775 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
778 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask =
779 (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
780 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
781 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
782 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
783 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
787 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
790 public void testWithMatchEntryWithSrcCidrMaskAndDstArbitraryBitMask() {
791 final MatchBuilder builder = new MatchBuilder()
792 .setType(OxmMatchType.VALUE);
793 final List<MatchEntry> entries = new ArrayList<>();
794 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
795 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
796 entriesBuilder.setOxmMatchField(
797 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
798 entriesBuilder.setHasMask(true);
800 entriesBuilder = new MatchEntryBuilder();
801 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
802 entriesBuilder.setOxmMatchField(Ipv4Src.VALUE);
803 entriesBuilder.setHasMask(true);
804 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
805 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
806 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
807 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
808 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
809 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
810 entries.add(entriesBuilder.build());
812 entriesBuilder = new MatchEntryBuilder();
813 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
814 entriesBuilder.setOxmMatchField(Ipv4Dst.VALUE);
815 entriesBuilder.setHasMask(true);
816 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
817 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
818 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
819 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});
820 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
821 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
822 entries.add(entriesBuilder.build());
824 builder.setMatchEntry(entries);
825 final Match match = builder.build();
827 final VersionDatapathIdConvertorData datapathIdConvertorData =
828 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
829 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
831 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
832 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
833 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
836 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask =
837 (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
838 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
839 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
840 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
841 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
845 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
848 public void testWithMatchEntryWithSrcArbitraryBitMaskAndDstCidrMask() {
849 final MatchBuilder builder = new MatchBuilder()
850 .setType(OxmMatchType.VALUE);
851 final List<MatchEntry> entries = new ArrayList<>();
852 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
853 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
854 entriesBuilder.setOxmMatchField(
855 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
856 entriesBuilder.setHasMask(true);
858 entriesBuilder = new MatchEntryBuilder();
859 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
860 entriesBuilder.setOxmMatchField(Ipv4Src.VALUE);
861 entriesBuilder.setHasMask(true);
862 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
863 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
864 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
865 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 0, (byte) 255, 0});
866 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
867 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
868 entries.add(entriesBuilder.build());
870 entriesBuilder = new MatchEntryBuilder();
871 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
872 entriesBuilder.setOxmMatchField(Ipv4Dst.VALUE);
873 entriesBuilder.setHasMask(true);
874 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
875 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
876 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
877 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});
878 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
879 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
880 entries.add(entriesBuilder.build());
882 builder.setMatchEntry(entries);
883 final Match match = builder.build();
885 final VersionDatapathIdConvertorData datapathIdConvertorData =
886 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
887 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
889 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
890 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
891 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
894 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask =
895 (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
896 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
897 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
898 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
899 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
904 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
907 public void testWithMatchEntryWithDstArbitraryBitMaskAndSrcCidrMask() {
908 final MatchBuilder builder = new MatchBuilder()
909 .setType(OxmMatchType.VALUE);
910 final List<MatchEntry> entries = new ArrayList<>();
911 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
912 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
913 entriesBuilder.setOxmMatchField(
914 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
915 entriesBuilder.setHasMask(true);
917 entriesBuilder = new MatchEntryBuilder();
918 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
919 entriesBuilder.setOxmMatchField(Ipv4Dst.VALUE);
920 entriesBuilder.setHasMask(true);
921 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
922 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
923 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
924 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});
925 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
926 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
927 entries.add(entriesBuilder.build());
929 entriesBuilder = new MatchEntryBuilder();
930 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
931 entriesBuilder.setOxmMatchField(Ipv4Src.VALUE);
932 entriesBuilder.setHasMask(true);
933 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
934 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
935 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
936 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
937 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
938 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
939 entries.add(entriesBuilder.build());
941 builder.setMatchEntry(entries);
942 final Match match = builder.build();
944 final VersionDatapathIdConvertorData datapathIdConvertorData =
945 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
946 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
948 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
949 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
950 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
953 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask =
954 (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
955 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
956 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
957 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
958 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
962 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
965 public void testWithMatchEntryWithDstCidrMaskAndSrcArbitraryBitMask() {
966 final MatchBuilder builder = new MatchBuilder()
967 .setType(OxmMatchType.VALUE);
968 final List<MatchEntry> entries = new ArrayList<>();
969 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
970 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
971 entriesBuilder.setOxmMatchField(
972 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
973 entriesBuilder.setHasMask(true);
975 entriesBuilder = new MatchEntryBuilder();
976 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
977 entriesBuilder.setOxmMatchField(Ipv4Dst.VALUE);
978 entriesBuilder.setHasMask(true);
979 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
980 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
981 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
982 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});
983 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
984 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
985 entries.add(entriesBuilder.build());
987 entriesBuilder = new MatchEntryBuilder();
988 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
989 entriesBuilder.setOxmMatchField(Ipv4Src.VALUE);
990 entriesBuilder.setHasMask(true);
991 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
992 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
993 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
994 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 0, (byte) 255, 0});
995 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
996 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
997 entries.add(entriesBuilder.build());
999 builder.setMatchEntry(entries);
1000 final Match match = builder.build();
1002 final VersionDatapathIdConvertorData datapathIdConvertorData =
1003 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1004 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1006 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1007 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);
1008 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1011 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask =
1012 (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
1013 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
1014 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
1015 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
1016 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
1020 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1023 public void testLayer4MatchUdp() {
1024 final MatchBuilder builder = new MatchBuilder()
1025 .setType(OxmMatchType.VALUE);
1026 final List<MatchEntry> entries = new ArrayList<>();
1027 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1028 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1029 entriesBuilder.setOxmMatchField(
1030 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.UdpSrc.VALUE);
1031 entriesBuilder.setHasMask(false);
1032 final UdpSrcCaseBuilder udpSrcCaseBuilder = new UdpSrcCaseBuilder();
1033 final UdpSrcBuilder portBuilder = new UdpSrcBuilder();
1034 portBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
1035 .inet.types.rev130715.PortNumber(Uint16.valueOf(11)));
1036 udpSrcCaseBuilder.setUdpSrc(portBuilder.build());
1037 entriesBuilder.setMatchEntryValue(udpSrcCaseBuilder.build());
1038 entries.add(entriesBuilder.build());
1041 entriesBuilder = new MatchEntryBuilder();
1042 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1043 entriesBuilder.setOxmMatchField(UdpDst.VALUE);
1044 entriesBuilder.setHasMask(false);
1045 final UdpDstCaseBuilder udpDstCaseBuilder = new UdpDstCaseBuilder();
1046 final UdpDstBuilder udpDstBuilder = new UdpDstBuilder();
1047 udpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
1048 .inet.types.rev130715.PortNumber(Uint16.valueOf(12)));
1049 udpDstCaseBuilder.setUdpDst(udpDstBuilder.build());
1050 entriesBuilder.setMatchEntryValue(udpDstCaseBuilder.build());
1051 entries.add(entriesBuilder.build());
1053 builder.setMatchEntry(entries);
1055 final VersionDatapathIdConvertorData datapathIdConvertorData =
1056 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1057 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1059 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1060 .MatchBuilder builtMatch = convert(builder.build(), datapathIdConvertorData);
1062 final UdpMatch udpMatch = (UdpMatch) builtMatch.getLayer4Match();
1063 Assert.assertEquals("Wrong udp src port", 11, udpMatch.getUdpSourcePort().getValue().intValue());
1064 Assert.assertEquals("Wrong udp dst port", 12, udpMatch.getUdpDestinationPort().getValue().intValue());
1068 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1071 public void testLayer4MatchSctp() {
1072 final MatchBuilder builder = new MatchBuilder()
1073 .setType(OxmMatchType.VALUE);
1074 final List<MatchEntry> entries = new ArrayList<>();
1075 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1076 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1077 entriesBuilder.setOxmMatchField(SctpSrc.VALUE);
1078 entriesBuilder.setHasMask(false);
1079 final SctpSrcCaseBuilder sctpSrcCaseBuilder = new SctpSrcCaseBuilder();
1080 final SctpSrcBuilder portBuilder = new SctpSrcBuilder();
1081 portBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
1082 .inet.types.rev130715.PortNumber(Uint16.valueOf(13)));
1083 sctpSrcCaseBuilder.setSctpSrc(portBuilder.build());
1084 entriesBuilder.setMatchEntryValue(sctpSrcCaseBuilder.build());
1085 entries.add(entriesBuilder.build());
1088 entriesBuilder = new MatchEntryBuilder();
1089 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1090 entriesBuilder.setOxmMatchField(SctpDst.VALUE);
1091 entriesBuilder.setHasMask(false);
1092 final SctpDstCaseBuilder sctpDstCaseBuilder = new SctpDstCaseBuilder();
1093 final SctpDstBuilder sctpDstBuilder = new SctpDstBuilder();
1094 sctpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
1095 .inet.types.rev130715.PortNumber(Uint16.valueOf(14)));
1096 sctpDstCaseBuilder.setSctpDst(sctpDstBuilder.build());
1097 entriesBuilder.setMatchEntryValue(sctpDstCaseBuilder.build());
1098 entries.add(entriesBuilder.build());
1099 builder.setMatchEntry(entries);
1101 final VersionDatapathIdConvertorData datapathIdConvertorData =
1102 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1103 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1105 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1106 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);
1107 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1108 salMatchBuilder.build();
1110 final SctpMatch udpMatch = (SctpMatch) builtMatch.getLayer4Match();
1111 Assert.assertEquals("Wrong sctp src port", 13, udpMatch.getSctpSourcePort().getValue().intValue());
1112 Assert.assertEquals("Wrong sctp dst port", 14, udpMatch.getSctpDestinationPort().getValue().intValue());
1116 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1119 public void testLayer3MatchIpv6() {
1120 final MatchBuilder builder = new MatchBuilder()
1121 .setType(OxmMatchType.VALUE);
1122 final List<MatchEntry> entries = new ArrayList<>();
1123 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1124 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1125 entriesBuilder.setOxmMatchField(Ipv6Src.VALUE);
1126 entriesBuilder.setHasMask(false);
1127 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1128 final Ipv6SrcBuilder ipv6AddressBuilder = new Ipv6SrcBuilder();
1129 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9657"));
1130 ipv6SrcCaseBuilder.setIpv6Src(ipv6AddressBuilder.build());
1131 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1132 entries.add(entriesBuilder.build());
1134 entriesBuilder = new MatchEntryBuilder();
1135 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1136 entriesBuilder.setOxmMatchField(Ipv6Dst.VALUE);
1137 entriesBuilder.setHasMask(false);
1138 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1139 final Ipv6DstBuilder ipv6DstBuilder = new Ipv6DstBuilder();
1140 ipv6DstBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9658"));
1141 ipv6DstCaseBuilder.setIpv6Dst(ipv6DstBuilder.build());
1142 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1143 entries.add(entriesBuilder.build());
1145 entriesBuilder = new MatchEntryBuilder();
1146 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1147 entriesBuilder.setOxmMatchField(Ipv6Flabel.VALUE);
1148 entriesBuilder.setHasMask(false);
1149 final Ipv6FlabelCaseBuilder ipv6FlabelCaseBuilder = new Ipv6FlabelCaseBuilder();
1150 final Ipv6FlabelBuilder ipv6FlabelBuilder = new Ipv6FlabelBuilder();
1151 ipv6FlabelBuilder.setIpv6Flabel(new Ipv6FlowLabel(Uint32.valueOf(18)));
1152 ipv6FlabelCaseBuilder.setIpv6Flabel(ipv6FlabelBuilder.build());
1153 entriesBuilder.setMatchEntryValue(ipv6FlabelCaseBuilder.build());
1154 entries.add(entriesBuilder.build());
1156 entriesBuilder = new MatchEntryBuilder();
1157 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1158 entriesBuilder.setOxmMatchField(Ipv6NdTarget.VALUE);
1159 entriesBuilder.setHasMask(false);
1160 final Ipv6NdTargetCaseBuilder ipv6NdTargetCaseBuilder = new Ipv6NdTargetCaseBuilder();
1161 final Ipv6NdTargetBuilder ipv6NdTargetBuilder = new Ipv6NdTargetBuilder();
1162 ipv6NdTargetBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9659"));
1163 ipv6NdTargetCaseBuilder.setIpv6NdTarget(ipv6NdTargetBuilder.build());
1164 entriesBuilder.setMatchEntryValue(ipv6NdTargetCaseBuilder.build());
1165 entries.add(entriesBuilder.build());
1167 entriesBuilder = new MatchEntryBuilder();
1168 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1169 entriesBuilder.setOxmMatchField(Ipv6NdSll.VALUE);
1170 entriesBuilder.setHasMask(false);
1171 final Ipv6NdSllCaseBuilder ipv6NdSllCaseBuilder = new Ipv6NdSllCaseBuilder();
1172 final Ipv6NdSllBuilder ipv6NdSllBuilder = new Ipv6NdSllBuilder();
1173 ipv6NdSllBuilder.setMacAddress(new MacAddress("00:00:00:00:00:05"));
1174 ipv6NdSllCaseBuilder.setIpv6NdSll(ipv6NdSllBuilder.build());
1175 entriesBuilder.setMatchEntryValue(ipv6NdSllCaseBuilder.build());
1176 entries.add(entriesBuilder.build());
1178 entriesBuilder = new MatchEntryBuilder();
1179 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1180 entriesBuilder.setOxmMatchField(Ipv6NdTll.VALUE);
1181 entriesBuilder.setHasMask(false);
1182 final Ipv6NdTllCaseBuilder ipv6NdTllCaseBuilder = new Ipv6NdTllCaseBuilder();
1183 final Ipv6NdTllBuilder ipv6NdTllBuilder = new Ipv6NdTllBuilder();
1184 ipv6NdTllBuilder.setMacAddress(new MacAddress("00:00:00:00:00:06"));
1185 ipv6NdTllCaseBuilder.setIpv6NdTll(ipv6NdTllBuilder.build());
1186 entriesBuilder.setMatchEntryValue(ipv6NdTllCaseBuilder.build());
1187 entries.add(entriesBuilder.build());
1189 entriesBuilder = new MatchEntryBuilder();
1190 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1191 entriesBuilder.setOxmMatchField(Ipv6Exthdr.VALUE);
1192 entriesBuilder.setHasMask(false);
1193 final Ipv6ExthdrCaseBuilder ipv6ExthdrCaseBuilder = new Ipv6ExthdrCaseBuilder();
1194 final Ipv6ExthdrBuilder ipv6ExthdrBuilder = new Ipv6ExthdrBuilder();
1195 ipv6ExthdrBuilder.setPseudoField(new Ipv6ExthdrFlags(true, false, true, false, true, false, true, false, true));
1196 ipv6ExthdrCaseBuilder.setIpv6Exthdr(ipv6ExthdrBuilder.build());
1197 entriesBuilder.setMatchEntryValue(ipv6ExthdrCaseBuilder.build());
1198 builder.setMatchEntry(entries);
1199 entries.add(entriesBuilder.build());
1201 final VersionDatapathIdConvertorData datapathIdConvertorData =
1202 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1203 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1205 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1206 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);
1207 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1208 salMatchBuilder.build();
1210 final Ipv6Match ipv6Match = (Ipv6Match) builtMatch.getLayer3Match();
1211 Assert.assertEquals("Wrong ipv6 src address", "2001:cdba::3257:9657/128",
1212 ipv6Match.getIpv6Source().getValue());
1213 Assert.assertEquals("Wrong ipv6 dst address", "2001:cdba::3257:9658/128",
1214 ipv6Match.getIpv6Destination().getValue());
1215 Assert.assertEquals("Wrong ipv6 nd target", "2001:cdba:0000:0000:0000:0000:3257:9659",
1216 ipv6Match.getIpv6NdTarget().getValue());
1217 Assert.assertEquals("Wrong ipv6 flabel", 18, ipv6Match.getIpv6Label().getIpv6Flabel().getValue().intValue());
1218 Assert.assertEquals("Wrong ipv6 nd sll", new MacAddress("00:00:00:00:00:05"), ipv6Match.getIpv6NdSll());
1219 Assert.assertEquals("Wrong ipv6 nd tll", new MacAddress("00:00:00:00:00:06"), ipv6Match.getIpv6NdTll());
1220 Assert.assertEquals("Wrong ipv6 ext header", 358, ipv6Match.getIpv6ExtHeader().getIpv6Exthdr().intValue());
1224 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1227 public void testLayer3MatchIpv6ExtHeader2() {
1228 final MatchBuilder builder = new MatchBuilder()
1229 .setType(OxmMatchType.VALUE);
1230 final List<MatchEntry> entries = new ArrayList<>();
1231 final MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1232 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1233 entriesBuilder.setOxmMatchField(Ipv6Exthdr.VALUE);
1234 entriesBuilder.setHasMask(true);
1235 final Ipv6ExthdrCaseBuilder ipv6ExthdrCaseBuilder = new Ipv6ExthdrCaseBuilder();
1236 final Ipv6ExthdrBuilder ipv6ExthdrBuilder = new Ipv6ExthdrBuilder();
1237 ipv6ExthdrBuilder.setPseudoField(
1238 new Ipv6ExthdrFlags(false, true, false, true, false, true, false, true, false));
1239 ipv6ExthdrBuilder.setMask(new byte[]{1, 2});
1240 ipv6ExthdrCaseBuilder.setIpv6Exthdr(ipv6ExthdrBuilder.build());
1241 entriesBuilder.setMatchEntryValue(ipv6ExthdrCaseBuilder.build());
1242 entries.add(entriesBuilder.build());
1243 builder.setMatchEntry(entries);
1245 final VersionDatapathIdConvertorData datapathIdConvertorData =
1246 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1247 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1249 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1250 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);
1251 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1252 salMatchBuilder.build();
1254 final Ipv6Match ipv6Match = (Ipv6Match) builtMatch.getLayer3Match();
1255 Assert.assertEquals("Wrong ipv6 ext header", 153, ipv6Match.getIpv6ExtHeader().getIpv6Exthdr().intValue());
1256 Assert.assertEquals("Wrong ipv6 ext header mask", 258,
1257 ipv6Match.getIpv6ExtHeader().getIpv6ExthdrMask().intValue());
1261 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1264 public void testLayer3MatchArp() {
1265 final MatchBuilder builder = new MatchBuilder()
1266 .setType(OxmMatchType.VALUE);
1267 final List<MatchEntry> entries = new ArrayList<>();
1268 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1269 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1270 entriesBuilder.setOxmMatchField(ArpOp.VALUE);
1271 entriesBuilder.setHasMask(false);
1272 final ArpOpCaseBuilder arpOpCaseBuilder = new ArpOpCaseBuilder();
1273 final ArpOpBuilder arpOpBuilder = new ArpOpBuilder();
1274 arpOpBuilder.setOpCode(Uint16.valueOf(17));
1275 arpOpCaseBuilder.setArpOp(arpOpBuilder.build());
1276 entriesBuilder.setMatchEntryValue(arpOpCaseBuilder.build());
1277 entries.add(entriesBuilder.build());
1279 entriesBuilder = new MatchEntryBuilder();
1280 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1281 entriesBuilder.setOxmMatchField(ArpSpa.VALUE);
1282 entriesBuilder.setHasMask(false);
1283 final ArpSpaCaseBuilder arpSpaCaseBuilder = new ArpSpaCaseBuilder();
1284 final ArpSpaBuilder arpSpaBuilder = new ArpSpaBuilder();
1285 arpSpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.3"));
1286 arpSpaCaseBuilder.setArpSpa(arpSpaBuilder.build());
1287 entriesBuilder.setMatchEntryValue(arpSpaCaseBuilder.build());
1288 entries.add(entriesBuilder.build());
1290 entriesBuilder = new MatchEntryBuilder();
1291 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1292 entriesBuilder.setOxmMatchField(ArpTpa.VALUE);
1293 entriesBuilder.setHasMask(false);
1294 final ArpTpaCaseBuilder arpTpaCaseBuilder = new ArpTpaCaseBuilder();
1295 final ArpTpaBuilder arpTpaBuilder = new ArpTpaBuilder();
1296 arpTpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.4"));
1297 arpTpaCaseBuilder.setArpTpa(arpTpaBuilder.build());
1298 entriesBuilder.setMatchEntryValue(arpTpaCaseBuilder.build());
1299 entries.add(entriesBuilder.build());
1301 entriesBuilder = new MatchEntryBuilder();
1302 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1303 entriesBuilder.setOxmMatchField(ArpSha.VALUE);
1304 entriesBuilder.setHasMask(false);
1305 final ArpShaCaseBuilder arpShaCaseBuilder = new ArpShaCaseBuilder();
1306 final ArpShaBuilder arpShaBuilder = new ArpShaBuilder();
1307 arpShaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:03"));
1308 arpShaCaseBuilder.setArpSha(arpShaBuilder.build());
1309 entriesBuilder.setMatchEntryValue(arpShaCaseBuilder.build());
1310 entries.add(entriesBuilder.build());
1312 entriesBuilder = new MatchEntryBuilder();
1313 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1314 entriesBuilder.setOxmMatchField(
1315 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTha.VALUE);
1316 entriesBuilder.setHasMask(false);
1317 final ArpThaCaseBuilder arpThaCaseBuilder = new ArpThaCaseBuilder();
1318 final ArpThaBuilder arpThaBuilder = new ArpThaBuilder();
1319 arpThaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:04"));
1320 arpThaCaseBuilder.setArpTha(arpThaBuilder.build());
1321 entriesBuilder.setMatchEntryValue(arpThaCaseBuilder.build());
1322 entries.add(entriesBuilder.build());
1323 builder.setMatchEntry(entries);
1325 final VersionDatapathIdConvertorData datapathIdConvertorData =
1326 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1327 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1329 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1330 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);
1331 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1332 salMatchBuilder.build();
1334 final ArpMatch arpMatch = (ArpMatch) builtMatch.getLayer3Match();
1335 Assert.assertEquals("Wrong arp op", 17, arpMatch.getArpOp().intValue());
1336 Assert.assertEquals("Wrong arp spa", "10.0.0.3/32", arpMatch.getArpSourceTransportAddress().getValue());
1337 Assert.assertEquals("Wrong arp tpa", "10.0.0.4/32", arpMatch.getArpTargetTransportAddress().getValue());
1338 Assert.assertEquals("Wrong arp sha", "00:00:00:00:00:03",
1339 arpMatch.getArpSourceHardwareAddress().getAddress().getValue());
1340 Assert.assertEquals("Wrong arp tha", "00:00:00:00:00:04",
1341 arpMatch.getArpTargetHardwareAddress().getAddress().getValue());
1345 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1348 public void testLayer3MatchArpWithMasks() {
1349 final MatchBuilder builder = new MatchBuilder()
1350 .setType(OxmMatchType.VALUE);
1351 final List<MatchEntry> entries = new ArrayList<>();
1352 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1353 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1354 entriesBuilder.setOxmMatchField(ArpSpa.VALUE);
1355 entriesBuilder.setHasMask(true);
1356 final ArpSpaCaseBuilder arpSpaCaseBuilder = new ArpSpaCaseBuilder();
1357 final ArpSpaBuilder arpSpaBuilder = new ArpSpaBuilder();
1358 arpSpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.3"));
1359 arpSpaBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
1360 arpSpaCaseBuilder.setArpSpa(arpSpaBuilder.build());
1361 entriesBuilder.setMatchEntryValue(arpSpaCaseBuilder.build());
1362 entries.add(entriesBuilder.build());
1364 entriesBuilder = new MatchEntryBuilder();
1365 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1366 entriesBuilder.setOxmMatchField(ArpTpa.VALUE);
1367 entriesBuilder.setHasMask(true);
1368 final ArpTpaCaseBuilder arpTpaCaseBuilder = new ArpTpaCaseBuilder();
1369 final ArpTpaBuilder arpTpaBuilder = new ArpTpaBuilder();
1370 arpTpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));
1371 arpTpaBuilder.setMask(new byte[]{(byte) 255, (byte) 128, 0, 0});
1372 arpTpaCaseBuilder.setArpTpa(arpTpaBuilder.build());
1373 entriesBuilder.setMatchEntryValue(arpTpaCaseBuilder.build());
1374 entries.add(entriesBuilder.build());
1376 entriesBuilder = new MatchEntryBuilder();
1377 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1378 entriesBuilder.setOxmMatchField(ArpSha.VALUE);
1379 entriesBuilder.setHasMask(true);
1380 final ArpShaCaseBuilder arpShaCaseBuilder = new ArpShaCaseBuilder();
1381 final ArpShaBuilder arpShaBuilder = new ArpShaBuilder();
1382 arpShaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:03"));
1383 arpShaBuilder.setMask(new byte[]{0, 0, 1, 0, 4, 0});
1384 arpShaCaseBuilder.setArpSha(arpShaBuilder.build());
1385 entriesBuilder.setMatchEntryValue(arpShaCaseBuilder.build());
1386 entries.add(entriesBuilder.build());
1388 entriesBuilder = new MatchEntryBuilder();
1389 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1390 entriesBuilder.setOxmMatchField(
1391 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTha.VALUE);
1392 entriesBuilder.setHasMask(true);
1393 final ArpThaCaseBuilder arpThaCaseBuilder = new ArpThaCaseBuilder();
1394 final ArpThaBuilder arpThaBuilder = new ArpThaBuilder();
1395 arpThaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:04"));
1396 arpThaBuilder.setMask(new byte[]{1, 1, 1, 2, 2, 2});
1397 arpThaCaseBuilder.setArpTha(arpThaBuilder.build());
1398 entriesBuilder.setMatchEntryValue(arpThaCaseBuilder.build());
1399 entries.add(entriesBuilder.build());
1401 builder.setMatchEntry(entries);
1403 final VersionDatapathIdConvertorData datapathIdConvertorData =
1404 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1405 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1407 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1408 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);
1409 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1410 salMatchBuilder.build();
1412 final ArpMatch arpMatch = (ArpMatch) builtMatch.getLayer3Match();
1413 Assert.assertEquals("Wrong arp spa", "10.0.0.3/24", arpMatch.getArpSourceTransportAddress().getValue());
1414 Assert.assertEquals("Wrong arp tpa", "10.0.0.0/9", arpMatch.getArpTargetTransportAddress().getValue());
1415 Assert.assertEquals("Wrong arp sha", "00:00:00:00:00:03",
1416 arpMatch.getArpSourceHardwareAddress().getAddress().getValue());
1417 Assert.assertEquals("Wrong arp sha mask", "00:00:01:00:04:00",
1418 arpMatch.getArpSourceHardwareAddress().getMask().getValue());
1419 Assert.assertEquals("Wrong arp tha", "00:00:00:00:00:04",
1420 arpMatch.getArpTargetHardwareAddress().getAddress().getValue());
1421 Assert.assertEquals("Wrong arp tha mask", "01:01:01:02:02:02",
1422 arpMatch.getArpTargetHardwareAddress().getMask().getValue());
1426 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1429 public void testWithMatchEntryWithIpv6ArbitraryMasks() {
1430 final MatchBuilder builder = new MatchBuilder()
1431 .setType(OxmMatchType.VALUE);
1432 final List<MatchEntry> entries = new ArrayList<>();
1433 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1434 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1435 entriesBuilder.setOxmMatchField(
1436 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
1437 entriesBuilder.setHasMask(true);
1439 entriesBuilder = new MatchEntryBuilder();
1440 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1441 entriesBuilder.setOxmMatchField(Ipv6Src.VALUE);
1442 entriesBuilder.setHasMask(true);
1443 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1444 final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();
1445 ipv6SrcBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));
1446 ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1447 ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());
1448 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1449 entries.add(entriesBuilder.build());
1451 entriesBuilder = new MatchEntryBuilder();
1452 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1453 entriesBuilder.setOxmMatchField(Ipv6Dst.VALUE);
1454 entriesBuilder.setHasMask(true);
1455 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1456 final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();
1457 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));
1458 ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1459 ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());
1460 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1461 entries.add(entriesBuilder.build());
1463 builder.setMatchEntry(entries);
1464 final Match match = builder.build();
1466 final VersionDatapathIdConvertorData datapathIdConvertorData =
1467 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1468 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1470 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1471 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);
1472 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1473 salMatchBuilder.build();
1475 final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask =
1476 (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();
1477 Assert.assertEquals("Wrong ipv6 src address", "1001:1001:1001:1001:1001:1001:1001:1001",
1478 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());
1479 Assert.assertEquals("Wrong ipv6 dst address", "2002:2002:2002:2002:2002:2002:2002:2002",
1480 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());
1484 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1487 public void testWithMatchEntryWithIpv6SrcCidrlMaskAndDstArbitraryBitMask() {
1488 final MatchBuilder builder = new MatchBuilder()
1489 .setType(OxmMatchType.VALUE);
1490 final List<MatchEntry> entries = new ArrayList<>();
1491 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1492 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1493 entriesBuilder.setOxmMatchField(
1494 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
1495 entriesBuilder.setHasMask(true);
1497 entriesBuilder = new MatchEntryBuilder();
1498 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1499 entriesBuilder.setOxmMatchField(Ipv6Src.VALUE);
1500 entriesBuilder.setHasMask(true);
1501 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1502 final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();
1503 ipv6SrcBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));
1504 ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
1505 ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());
1506 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1507 entries.add(entriesBuilder.build());
1509 entriesBuilder = new MatchEntryBuilder();
1510 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1511 entriesBuilder.setOxmMatchField(Ipv6Dst.VALUE);
1512 entriesBuilder.setHasMask(true);
1513 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1514 final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();
1515 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));
1516 ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1517 ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());
1518 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1519 entries.add(entriesBuilder.build());
1521 builder.setMatchEntry(entries);
1522 final Match match = builder.build();
1524 final VersionDatapathIdConvertorData datapathIdConvertorData =
1525 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1526 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1528 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1529 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);
1530 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1531 salMatchBuilder.build();
1533 final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask =
1534 (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();
1535 Assert.assertEquals("Wrong ipv6 src address", "1001:1001:1001:1001:1001:1001:1001:1001",
1536 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());
1537 Assert.assertEquals("Wrong ipv6 dst address", "2002:2002:2002:2002:2002:2002:2002:2002",
1538 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());
1542 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1545 public void testWithMatchEntryWithIpv6SrcArbitraryBitMaskAndDstCidrMask() {
1546 final MatchBuilder builder = new MatchBuilder()
1547 .setType(OxmMatchType.VALUE);
1548 final List<MatchEntry> entries = new ArrayList<>();
1549 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1550 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1551 entriesBuilder.setOxmMatchField(
1552 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
1553 entriesBuilder.setHasMask(true);
1555 entriesBuilder = new MatchEntryBuilder();
1556 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1557 entriesBuilder.setOxmMatchField(Ipv6Src.VALUE);
1558 entriesBuilder.setHasMask(true);
1559 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1560 final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();
1561 ipv6SrcBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));
1562 ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1563 ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());
1564 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1565 entries.add(entriesBuilder.build());
1567 entriesBuilder = new MatchEntryBuilder();
1568 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1569 entriesBuilder.setOxmMatchField(Ipv6Dst.VALUE);
1570 entriesBuilder.setHasMask(true);
1571 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1572 final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();
1573 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));
1574 ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
1575 ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());
1576 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1577 entries.add(entriesBuilder.build());
1579 builder.setMatchEntry(entries);
1580 final Match match = builder.build();
1582 final VersionDatapathIdConvertorData datapathIdConvertorData =
1583 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1584 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1586 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1587 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);
1588 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1589 salMatchBuilder.build();
1591 final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask =
1592 (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();
1593 Assert.assertEquals("Wrong ipv6 src address", "1001:1001:1001:1001:1001:1001:1001:1001",
1594 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());
1595 Assert.assertEquals("Wrong ipv6 dst address", "2002:2002:2002:2002:2002:2002:2002:2002",
1596 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());
1601 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1604 public void testWithMatchEntryWithIpv6DstArbitraryBitMaskAndSrcCidrMask() {
1605 final MatchBuilder builder = new MatchBuilder()
1606 .setType(OxmMatchType.VALUE);
1607 final List<MatchEntry> entries = new ArrayList<>();
1608 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1609 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1610 entriesBuilder.setOxmMatchField(
1611 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
1612 entriesBuilder.setHasMask(true);
1614 entriesBuilder = new MatchEntryBuilder();
1615 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1616 entriesBuilder.setOxmMatchField(Ipv6Dst.VALUE);
1617 entriesBuilder.setHasMask(true);
1618 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1619 final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();
1620 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));
1621 ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1622 ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());
1623 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1624 entries.add(entriesBuilder.build());
1626 entriesBuilder = new MatchEntryBuilder();
1627 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1628 entriesBuilder.setOxmMatchField(Ipv6Src.VALUE);
1629 entriesBuilder.setHasMask(true);
1630 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1631 final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();
1632 ipv6SrcBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));
1633 ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
1634 ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());
1635 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1636 entries.add(entriesBuilder.build());
1638 builder.setMatchEntry(entries);
1639 final Match match = builder.build();
1641 final VersionDatapathIdConvertorData datapathIdConvertorData =
1642 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1643 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1645 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1646 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);
1647 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1648 salMatchBuilder.build();
1650 final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask =
1651 (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();
1652 Assert.assertEquals("Wrong ipv6 src address", "2002:2002:2002:2002:2002:2002:2002:2002",
1653 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());
1654 Assert.assertEquals("Wrong ipv6 dst address", "1001:1001:1001:1001:1001:1001:1001:1001",
1655 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());
1660 * Test {@link MatchResponseConvertor#convert(MatchEntriesGrouping, VersionDatapathIdConvertorData)}.
1663 public void testWithMatchEntryWithIpv6DstCidrMaskAndSrcArbitraryBitMask() {
1664 final MatchBuilder builder = new MatchBuilder()
1665 .setType(OxmMatchType.VALUE);
1666 final List<MatchEntry> entries = new ArrayList<>();
1667 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
1668 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1669 entriesBuilder.setOxmMatchField(
1670 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.VALUE);
1671 entriesBuilder.setHasMask(true);
1673 entriesBuilder = new MatchEntryBuilder();
1674 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1675 entriesBuilder.setOxmMatchField(Ipv6Dst.VALUE);
1676 entriesBuilder.setHasMask(true);
1677 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
1678 final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();
1679 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));
1680 ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
1681 ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());
1682 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
1683 entries.add(entriesBuilder.build());
1685 entriesBuilder = new MatchEntryBuilder();
1686 entriesBuilder.setOxmClass(OpenflowBasicClass.VALUE);
1687 entriesBuilder.setOxmMatchField(Ipv6Src.VALUE);
1688 entriesBuilder.setHasMask(true);
1689 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
1690 final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();
1691 ipv6SrcBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));
1692 ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});
1693 ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());
1694 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
1695 entries.add(entriesBuilder.build());
1697 builder.setMatchEntry(entries);
1698 final Match match = builder.build();
1700 final VersionDatapathIdConvertorData datapathIdConvertorData =
1701 new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
1702 datapathIdConvertorData.setDatapathId(Uint64.valueOf(42));
1704 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1705 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);
1706 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch =
1707 salMatchBuilder.build();
1709 final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask =
1710 (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();
1711 Assert.assertEquals("Wrong ipv6 src address", "2002:2002:2002:2002:2002:2002:2002:2002",
1712 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());
1713 Assert.assertEquals("Wrong ipv6 dst address", "1001:1001:1001:1001:1001:1001:1001:1001",
1714 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());
1717 private org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1718 .MatchBuilder convert(final Match match, final VersionDatapathIdConvertorData data) {
1719 final Optional<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
1720 .MatchBuilder> salMatchOptional = convertorManager.convert(match, data);
1722 return salMatchOptional
1723 .orElse(new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder());