2 * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
9 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match;
\r
11 import java.math.BigInteger;
\r
12 import java.util.ArrayList;
\r
13 import java.util.List;
\r
15 import org.junit.Assert;
\r
16 import org.junit.Before;
\r
17 import org.junit.Test;
\r
18 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
\r
19 import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;
\r
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Dscp;
\r
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
\r
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
\r
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6FlowLabel;
\r
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatch;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchArbitraryBitMask;
\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatch;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatch;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatch;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.EtherType;
\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Ipv6ExthdrFlags;
\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpOp;
\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpSha;
\r
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpSpa;
\r
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTpa;
\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthDst;
\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthSrc;
\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthType;
\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv4Code;
\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv4Type;
\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv6Code;
\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv6Type;
\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpDscp;
\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpEcn;
\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpProto;
\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv4Dst;
\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv4Src;
\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Dst;
\r
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Exthdr;
\r
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Flabel;
\r
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdSll;
\r
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdTarget;
\r
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdTll;
\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Src;
\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsBos;
\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsLabel;
\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsTc;
\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OpenflowBasicClass;
\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmMatchType;
\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.PbbIsid;
\r
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.SctpDst;
\r
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.SctpSrc;
\r
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TcpDst;
\r
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TcpSrc;
\r
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TunnelId;
\r
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.UdpDst;
\r
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.VlanPcp;
\r
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.VlanVid;
\r
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
\r
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder;
\r
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpOpCaseBuilder;
\r
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpShaCaseBuilder;
\r
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpSpaCaseBuilder;
\r
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpThaCaseBuilder;
\r
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpTpaCaseBuilder;
\r
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthDstCaseBuilder;
\r
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthSrcCaseBuilder;
\r
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthTypeCaseBuilder;
\r
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv4CodeCaseBuilder;
\r
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv4TypeCaseBuilder;
\r
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv6CodeCaseBuilder;
\r
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv6TypeCaseBuilder;
\r
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.InPhyPortCaseBuilder;
\r
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.InPortCaseBuilder;
\r
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpDscpCaseBuilder;
\r
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpEcnCaseBuilder;
\r
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpProtoCaseBuilder;
\r
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv4DstCaseBuilder;
\r
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv4SrcCaseBuilder;
\r
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6DstCaseBuilder;
\r
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6ExthdrCaseBuilder;
\r
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6FlabelCaseBuilder;
\r
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdSllCaseBuilder;
\r
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdTargetCaseBuilder;
\r
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdTllCaseBuilder;
\r
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6SrcCaseBuilder;
\r
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MetadataCaseBuilder;
\r
101 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsBosCaseBuilder;
\r
102 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsLabelCaseBuilder;
\r
103 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsTcCaseBuilder;
\r
104 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.PbbIsidCaseBuilder;
\r
105 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.SctpDstCaseBuilder;
\r
106 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.SctpSrcCaseBuilder;
\r
107 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TcpDstCaseBuilder;
\r
108 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TcpSrcCaseBuilder;
\r
109 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TunnelIdCaseBuilder;
\r
110 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.UdpDstCaseBuilder;
\r
111 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.UdpSrcCaseBuilder;
\r
112 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanPcpCaseBuilder;
\r
113 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanVidCaseBuilder;
\r
114 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.op._case.ArpOpBuilder;
\r
115 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.sha._case.ArpShaBuilder;
\r
116 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.spa._case.ArpSpaBuilder;
\r
117 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.tha._case.ArpThaBuilder;
\r
118 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.tpa._case.ArpTpaBuilder;
\r
119 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.dst._case.EthDstBuilder;
\r
120 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.src._case.EthSrcBuilder;
\r
121 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.type._case.EthTypeBuilder;
\r
122 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv4.code._case.Icmpv4CodeBuilder;
\r
123 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv4.type._case.Icmpv4TypeBuilder;
\r
124 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv6.code._case.Icmpv6CodeBuilder;
\r
125 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv6.type._case.Icmpv6TypeBuilder;
\r
126 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.in.phy.port._case.InPhyPortBuilder;
\r
127 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.in.port._case.InPortBuilder;
\r
128 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.dscp._case.IpDscpBuilder;
\r
129 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.ecn._case.IpEcnBuilder;
\r
130 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.proto._case.IpProtoBuilder;
\r
131 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv4.dst._case.Ipv4DstBuilder;
\r
132 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv4.src._case.Ipv4SrcBuilder;
\r
133 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.dst._case.Ipv6DstBuilder;
\r
134 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.exthdr._case.Ipv6ExthdrBuilder;
\r
135 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.flabel._case.Ipv6FlabelBuilder;
\r
136 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.sll._case.Ipv6NdSllBuilder;
\r
137 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.target._case.Ipv6NdTargetBuilder;
\r
138 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.tll._case.Ipv6NdTllBuilder;
\r
139 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.src._case.Ipv6SrcBuilder;
\r
140 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.bos._case.MplsBosBuilder;
\r
141 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.label._case.MplsLabelBuilder;
\r
142 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.tc._case.MplsTcBuilder;
\r
143 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.pbb.isid._case.PbbIsidBuilder;
\r
144 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.sctp.dst._case.SctpDstBuilder;
\r
145 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.sctp.src._case.SctpSrcBuilder;
\r
146 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tcp.dst._case.TcpDstBuilder;
\r
147 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tcp.src._case.TcpSrcBuilder;
\r
148 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tunnel.id._case.TunnelIdBuilder;
\r
149 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.udp.dst._case.UdpDstBuilder;
\r
150 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.udp.src._case.UdpSrcBuilder;
\r
151 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.vlan.pcp._case.VlanPcpBuilder;
\r
152 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.vlan.vid._case.VlanVidBuilder;
\r
153 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match;
\r
154 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.MatchBuilder;
\r
157 * @author michal.polkorab
\r
159 public class MatchConvertorImplV13Test {
\r
162 * Initializes OpenflowPortsUtil
\r
165 public void startUp() {
\r
166 OpenflowPortsUtil.init();
\r
170 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
171 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
172 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
174 @Test(expected = NullPointerException.class)
\r
175 public void testEmptyMatch() {
\r
176 final MatchBuilder builder = new MatchBuilder();
\r
178 MatchConvertorImpl.fromOFMatchToSALMatch(builder.build(), new BigInteger("42"), OpenflowVersion.OF10);
\r
182 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
183 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
184 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
187 public void testEmptyMatchEntry() {
\r
189 final MatchBuilder builder = new MatchBuilder();
\r
190 builder.setType(OxmMatchType.class);
\r
191 final List<MatchEntry> entries = new ArrayList<>();
\r
192 builder.setMatchEntry(entries);
\r
193 final Match match = builder.build();
\r
195 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
196 .MatchBuilder salMatch = MatchConvertorImpl.fromOFMatchToSALMatch(match, new BigInteger("42"), OpenflowVersion.OF10);
\r
197 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();
\r
199 Assert.assertEquals("Wrong match entries", null, builtMatch.getEthernetMatch());
\r
200 Assert.assertEquals("Wrong match entries", null, builtMatch.getIcmpv4Match());
\r
201 Assert.assertEquals("Wrong match entries", null, builtMatch.getIcmpv6Match());
\r
202 Assert.assertEquals("Wrong match entries", null, builtMatch.getInPhyPort());
\r
203 Assert.assertEquals("Wrong match entries", null, builtMatch.getInPort());
\r
204 Assert.assertEquals("Wrong match entries", null, builtMatch.getIpMatch());
\r
205 Assert.assertEquals("Wrong match entries", null, builtMatch.getLayer3Match());
\r
206 Assert.assertEquals("Wrong match entries", null, builtMatch.getLayer4Match());
\r
207 Assert.assertEquals("Wrong match entries", null, builtMatch.getMetadata());
\r
208 Assert.assertEquals("Wrong match entries", null, builtMatch.getProtocolMatchFields());
\r
209 Assert.assertEquals("Wrong match entries", null, builtMatch.getVlanMatch());
\r
210 Assert.assertEquals("Wrong match entries", null, builtMatch.getTunnel());
\r
215 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
216 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
217 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
220 public void testWithMatchEntryNoMasks() {
\r
221 final List<MatchEntry> entries = new ArrayList<>();
\r
222 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
223 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
224 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.InPort.class);
\r
225 entriesBuilder.setHasMask(false);
\r
226 final InPortCaseBuilder caseBuilder = new InPortCaseBuilder();
\r
227 final InPortBuilder portBuilder = new InPortBuilder();
\r
228 portBuilder.setPortNumber(new PortNumber(1L));
\r
229 caseBuilder.setInPort(portBuilder.build());
\r
230 entriesBuilder.setMatchEntryValue(caseBuilder.build());
\r
231 entries.add(entriesBuilder.build());
\r
233 final InPhyPortCaseBuilder inPhyPortCaseBuilder = new InPhyPortCaseBuilder();
\r
234 entriesBuilder = new MatchEntryBuilder();
\r
235 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
236 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.InPhyPort.class);
\r
237 entriesBuilder.setHasMask(false);
\r
238 final InPhyPortBuilder inPhyPortBuilder = new InPhyPortBuilder();
\r
239 inPhyPortBuilder.setPortNumber(new PortNumber(2L));
\r
240 inPhyPortCaseBuilder.setInPhyPort(inPhyPortBuilder.build());
\r
241 entriesBuilder.setMatchEntryValue(inPhyPortCaseBuilder.build());
\r
242 entries.add(entriesBuilder.build());
\r
244 entriesBuilder = new MatchEntryBuilder();
\r
245 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
246 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
\r
247 entriesBuilder.setHasMask(false);
\r
248 final MetadataCaseBuilder metadataCaseBuilder = new MetadataCaseBuilder();
\r
249 final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case.MetadataBuilder metadataBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case.MetadataBuilder();
\r
250 metadataBuilder.setMetadata(new byte[]{0, 1, 2, 3, 4, 5, 6, 7});
\r
251 metadataCaseBuilder.setMetadata(metadataBuilder.build());
\r
252 entriesBuilder.setMatchEntryValue(metadataCaseBuilder.build());
\r
253 entries.add(entriesBuilder.build());
\r
255 entriesBuilder = new MatchEntryBuilder();
\r
256 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
257 entriesBuilder.setOxmMatchField(EthDst.class);
\r
258 entriesBuilder.setHasMask(false);
\r
259 final EthDstCaseBuilder ethDstCaseBuilder = new EthDstCaseBuilder();
\r
260 final EthDstBuilder ethDstBuilder = new EthDstBuilder();
\r
261 ethDstBuilder.setMacAddress(new MacAddress("00:00:00:00:00:01"));
\r
262 ethDstCaseBuilder.setEthDst(ethDstBuilder.build());
\r
263 entriesBuilder.setMatchEntryValue(ethDstCaseBuilder.build());
\r
264 entries.add(entriesBuilder.build());
\r
266 entriesBuilder = new MatchEntryBuilder();
\r
267 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
268 entriesBuilder.setOxmMatchField(EthSrc.class);
\r
269 entriesBuilder.setHasMask(false);
\r
270 final EthSrcCaseBuilder ethSrcCaseBuilder = new EthSrcCaseBuilder();
\r
271 final EthSrcBuilder ethSrcBuilder = new EthSrcBuilder();
\r
272 ethSrcBuilder.setMacAddress(new MacAddress("00:00:00:00:00:02"));
\r
273 ethSrcCaseBuilder.setEthSrc(ethSrcBuilder.build());
\r
274 entriesBuilder.setMatchEntryValue(ethSrcCaseBuilder.build());
\r
275 entries.add(entriesBuilder.build());
\r
278 entriesBuilder = new MatchEntryBuilder();
\r
279 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
280 entriesBuilder.setOxmMatchField(EthType.class);
\r
281 entriesBuilder.setHasMask(false);
\r
282 final EthTypeCaseBuilder ethTypeCaseBuilder = new EthTypeCaseBuilder();
\r
284 final EthTypeBuilder ethTypeBuilder = new EthTypeBuilder();
\r
285 ethTypeBuilder.setEthType(new EtherType(3));
\r
286 ethTypeCaseBuilder.setEthType(ethTypeBuilder.build());
\r
287 entriesBuilder.setMatchEntryValue(ethTypeCaseBuilder.build());
\r
288 entries.add(entriesBuilder.build());
\r
291 entriesBuilder = new MatchEntryBuilder();
\r
292 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
293 entriesBuilder.setOxmMatchField(VlanVid.class);
\r
294 final VlanVidCaseBuilder vlanVidCaseBuilder = new VlanVidCaseBuilder();
\r
295 entriesBuilder.setHasMask(false);
\r
296 final VlanVidBuilder vlanVidBuilder = new VlanVidBuilder();
\r
297 vlanVidBuilder.setVlanVid(4);
\r
298 vlanVidBuilder.setCfiBit(true);
\r
299 vlanVidCaseBuilder.setVlanVid(vlanVidBuilder.build());
\r
300 entriesBuilder.setMatchEntryValue(vlanVidCaseBuilder.build());
\r
301 entries.add(entriesBuilder.build());
\r
303 entriesBuilder = new MatchEntryBuilder();
\r
304 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
305 entriesBuilder.setOxmMatchField(VlanPcp.class);
\r
306 final VlanPcpCaseBuilder vlanPcpCaseBuilder = new VlanPcpCaseBuilder();
\r
307 entriesBuilder.setHasMask(false);
\r
308 final VlanPcpBuilder vlanPcpBuilder = new VlanPcpBuilder();
\r
309 vlanPcpBuilder.setVlanPcp((short) 5);
\r
310 vlanPcpCaseBuilder.setVlanPcp(vlanPcpBuilder.build());
\r
311 entriesBuilder.setMatchEntryValue(vlanPcpCaseBuilder.build());
\r
312 entries.add(entriesBuilder.build());
\r
315 entriesBuilder = new MatchEntryBuilder();
\r
316 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
317 entriesBuilder.setOxmMatchField(IpDscp.class);
\r
318 entriesBuilder.setHasMask(false);
\r
319 final IpDscpCaseBuilder ipDscpCaseBuilder = new IpDscpCaseBuilder();
\r
320 final IpDscpBuilder ipDscpBuilder = new IpDscpBuilder();
\r
321 ipDscpBuilder.setDscp(new Dscp((short) 6));
\r
322 ipDscpCaseBuilder.setIpDscp(ipDscpBuilder.build());
\r
323 entriesBuilder.setMatchEntryValue(ipDscpCaseBuilder.build());
\r
324 entries.add(entriesBuilder.build());
\r
327 entriesBuilder = new MatchEntryBuilder();
\r
328 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
329 entriesBuilder.setOxmMatchField(IpEcn.class);
\r
330 entriesBuilder.setHasMask(false);
\r
331 final IpEcnCaseBuilder ipEcnCaseBuilder = new IpEcnCaseBuilder();
\r
332 final IpEcnBuilder ipEcnBuilder = new IpEcnBuilder();
\r
333 ipEcnBuilder.setEcn((short) 7);
\r
334 ipEcnCaseBuilder.setIpEcn(ipEcnBuilder.build());
\r
335 entriesBuilder.setMatchEntryValue(ipEcnCaseBuilder.build());
\r
336 entries.add(entriesBuilder.build());
\r
339 entriesBuilder = new MatchEntryBuilder();
\r
340 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
341 entriesBuilder.setOxmMatchField(IpProto.class);
\r
342 final IpProtoCaseBuilder ipProtoCaseBuilder = new IpProtoCaseBuilder();
\r
343 entriesBuilder.setHasMask(false);
\r
344 final IpProtoBuilder ipProtoBuilder = new IpProtoBuilder();
\r
345 ipProtoBuilder.setProtocolNumber((short) 8);
\r
346 ipProtoCaseBuilder.setIpProto(ipProtoBuilder.build());
\r
347 entriesBuilder.setMatchEntryValue(ipProtoCaseBuilder.build());
\r
348 entries.add(entriesBuilder.build());
\r
351 entriesBuilder = new MatchEntryBuilder();
\r
352 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
353 entriesBuilder.setOxmMatchField(Ipv4Src.class);
\r
354 entriesBuilder.setHasMask(false);
\r
355 final Ipv4SrcCaseBuilder ipv4AddressBuilder = new Ipv4SrcCaseBuilder();
\r
356 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
\r
357 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.0.0.1"));
\r
358 ipv4AddressBuilder.setIpv4Src(ipv4SrcBuilder.build());
\r
359 entriesBuilder.setMatchEntryValue(ipv4AddressBuilder.build());
\r
360 entries.add(entriesBuilder.build());
\r
362 entriesBuilder = new MatchEntryBuilder();
\r
363 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
364 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
\r
365 entriesBuilder.setHasMask(false);
\r
366 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
\r
367 final Ipv4DstBuilder ipv4DstBuilder = new Ipv4DstBuilder();
\r
368 ipv4DstBuilder.setIpv4Address(new Ipv4Address("10.0.0.2"));
\r
369 ipv4DstCaseBuilder.setIpv4Dst(ipv4DstBuilder.build());
\r
370 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
\r
371 entries.add(entriesBuilder.build());
\r
373 entriesBuilder = new MatchEntryBuilder();
\r
374 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
375 entriesBuilder.setOxmMatchField(TcpSrc.class);
\r
376 entriesBuilder.setHasMask(false);
\r
377 final TcpSrcCaseBuilder tcpSrcCaseBuilder = new TcpSrcCaseBuilder();
\r
378 final TcpSrcBuilder tcpSrcBuilder = new TcpSrcBuilder();
\r
379 tcpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
\r
380 .inet.types.rev100924.PortNumber(9));
\r
381 tcpSrcCaseBuilder.setTcpSrc(tcpSrcBuilder.build());
\r
382 entriesBuilder.setMatchEntryValue(tcpSrcCaseBuilder.build());
\r
383 entries.add(entriesBuilder.build());
\r
385 entriesBuilder = new MatchEntryBuilder();
\r
386 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
387 entriesBuilder.setOxmMatchField(TcpDst.class);
\r
388 entriesBuilder.setHasMask(false);
\r
389 final TcpDstCaseBuilder tcpDstCaseBuilder = new TcpDstCaseBuilder();
\r
390 final TcpDstBuilder tcpDstBuilder = new TcpDstBuilder();
\r
391 tcpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
\r
392 .inet.types.rev100924.PortNumber(10));
\r
393 tcpDstCaseBuilder.setTcpDst(tcpDstBuilder.build());
\r
394 entriesBuilder.setMatchEntryValue(tcpDstCaseBuilder.build());
\r
395 entries.add(entriesBuilder.build());
\r
397 entriesBuilder = new MatchEntryBuilder();
\r
398 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
399 entriesBuilder.setOxmMatchField(Icmpv4Type.class);
\r
400 entriesBuilder.setHasMask(false);
\r
401 final Icmpv4TypeCaseBuilder icmpv4TypeCaseBuilder = new Icmpv4TypeCaseBuilder();
\r
402 final Icmpv4TypeBuilder icmpv4TypeBuilder = new Icmpv4TypeBuilder();
\r
403 icmpv4TypeBuilder.setIcmpv4Type((short) 15);
\r
404 icmpv4TypeCaseBuilder.setIcmpv4Type(icmpv4TypeBuilder.build());
\r
405 entriesBuilder.setMatchEntryValue(icmpv4TypeCaseBuilder.build());
\r
406 entries.add(entriesBuilder.build());
\r
408 entriesBuilder = new MatchEntryBuilder();
\r
409 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
410 entriesBuilder.setOxmMatchField(Icmpv4Code.class);
\r
411 entriesBuilder.setHasMask(false);
\r
412 final Icmpv4CodeCaseBuilder icmpv4CodeCaseBuilder = new Icmpv4CodeCaseBuilder();
\r
413 final Icmpv4CodeBuilder icmpv4CodeBuilder = new Icmpv4CodeBuilder();
\r
414 icmpv4CodeBuilder.setIcmpv4Code((short) 16);
\r
415 icmpv4CodeCaseBuilder.setIcmpv4Code(icmpv4CodeBuilder.build());
\r
416 entriesBuilder.setMatchEntryValue(icmpv4CodeCaseBuilder.build());
\r
417 entries.add(entriesBuilder.build());
\r
419 entriesBuilder = new MatchEntryBuilder();
\r
420 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
421 entriesBuilder.setOxmMatchField(Icmpv6Type.class);
\r
422 entriesBuilder.setHasMask(false);
\r
423 final Icmpv6TypeCaseBuilder icmpv6TypeCaseBuilder = new Icmpv6TypeCaseBuilder();
\r
424 final Icmpv6TypeBuilder icmpv6TypeBuilder = new Icmpv6TypeBuilder();
\r
425 icmpv6TypeBuilder.setIcmpv6Type((short) 19);
\r
426 icmpv6TypeCaseBuilder.setIcmpv6Type(icmpv6TypeBuilder.build());
\r
427 entriesBuilder.setMatchEntryValue(icmpv6TypeCaseBuilder.build());
\r
428 entries.add(entriesBuilder.build());
\r
430 entriesBuilder = new MatchEntryBuilder();
\r
431 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
432 entriesBuilder.setOxmMatchField(Icmpv6Code.class);
\r
433 entriesBuilder.setHasMask(false);
\r
434 final Icmpv6CodeCaseBuilder icmpv6CodeCaseBuilder = new Icmpv6CodeCaseBuilder();
\r
435 final Icmpv6CodeBuilder icmpv6CodeBuilder = new Icmpv6CodeBuilder();
\r
436 icmpv6CodeBuilder.setIcmpv6Code((short) 20);
\r
437 icmpv6CodeCaseBuilder.setIcmpv6Code(icmpv6CodeBuilder.build());
\r
438 entriesBuilder.setMatchEntryValue(icmpv6CodeCaseBuilder.build());
\r
439 entries.add(entriesBuilder.build());
\r
441 entriesBuilder = new MatchEntryBuilder();
\r
442 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
443 entriesBuilder.setOxmMatchField(MplsLabel.class);
\r
444 entriesBuilder.setHasMask(false);
\r
445 final MplsLabelCaseBuilder mplsLabelCaseBuilder = new MplsLabelCaseBuilder();
\r
447 final MplsLabelBuilder mplsLabelBuilder = new MplsLabelBuilder();
\r
448 mplsLabelBuilder.setMplsLabel(21L);
\r
449 mplsLabelCaseBuilder.setMplsLabel(mplsLabelBuilder.build());
\r
450 entriesBuilder.setMatchEntryValue(mplsLabelCaseBuilder.build());
\r
451 entries.add(entriesBuilder.build());
\r
453 entriesBuilder = new MatchEntryBuilder();
\r
454 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
455 entriesBuilder.setOxmMatchField(MplsTc.class);
\r
456 entriesBuilder.setHasMask(false);
\r
457 final MplsTcCaseBuilder mplsTcCaseBuilder = new MplsTcCaseBuilder();
\r
458 final MplsTcBuilder mplsTcBuilder = new MplsTcBuilder();
\r
459 mplsTcBuilder.setTc((short) 22);
\r
460 mplsTcCaseBuilder.setMplsTc(mplsTcBuilder.build());
\r
461 entriesBuilder.setMatchEntryValue(mplsTcCaseBuilder.build());
\r
462 entries.add(entriesBuilder.build());
\r
464 entriesBuilder = new MatchEntryBuilder();
\r
465 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
466 entriesBuilder.setOxmMatchField(MplsBos.class);
\r
467 entriesBuilder.setHasMask(false);
\r
468 final MplsBosCaseBuilder mplsBosCaseBuilder = new MplsBosCaseBuilder();
\r
469 final MplsBosBuilder mplsBosBuilder = new MplsBosBuilder();
\r
470 mplsBosBuilder.setBos(true);
\r
471 mplsBosCaseBuilder.setMplsBos(mplsBosBuilder.build());
\r
472 entriesBuilder.setMatchEntryValue(mplsBosCaseBuilder.build());
\r
473 entries.add(entriesBuilder.build());
\r
475 entriesBuilder = new MatchEntryBuilder();
\r
476 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
477 entriesBuilder.setOxmMatchField(PbbIsid.class);
\r
478 entriesBuilder.setHasMask(false);
\r
479 final PbbIsidCaseBuilder pbbIsidCaseBuilder = new PbbIsidCaseBuilder();
\r
480 final PbbIsidBuilder pbbIsidBuilder = new PbbIsidBuilder();
\r
481 pbbIsidBuilder.setIsid(23L);
\r
482 pbbIsidCaseBuilder.setPbbIsid(pbbIsidBuilder.build());
\r
483 entriesBuilder.setMatchEntryValue(pbbIsidCaseBuilder.build());
\r
485 entries.add(entriesBuilder.build());
\r
486 entriesBuilder = new MatchEntryBuilder();
\r
487 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
488 entriesBuilder.setOxmMatchField(TunnelId.class);
\r
489 entriesBuilder.setHasMask(false);
\r
490 final TunnelIdCaseBuilder tunnelIdCaseBuilder = new TunnelIdCaseBuilder();
\r
491 final TunnelIdBuilder tunnelIdBuilder = new TunnelIdBuilder();
\r
492 tunnelIdBuilder.setTunnelId(new byte[]{1, 2, 3, 4, 5, 6, 7, 8});
\r
493 tunnelIdCaseBuilder.setTunnelId(tunnelIdBuilder.build());
\r
494 entriesBuilder.setMatchEntryValue(tunnelIdCaseBuilder.build());
\r
495 entries.add(entriesBuilder.build());
\r
497 final MatchBuilder builder = new MatchBuilder();
\r
498 builder.setMatchEntry(entries);
\r
500 final Match match = builder.build();
\r
502 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
503 .MatchBuilder salMatch = MatchConvertorImpl.fromOFMatchToSALMatch(match, new BigInteger("42"), OpenflowVersion.OF10);
\r
504 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();
\r
506 Assert.assertEquals("Wrong in port", "openflow:42:1", builtMatch.getInPort().getValue());
\r
507 Assert.assertEquals("Wrong in phy port", "openflow:42:2", builtMatch.getInPhyPort().getValue());
\r
508 Assert.assertEquals("Wrong metadata", new BigInteger(1, new byte[]{0, 1, 2, 3, 4, 5, 6, 7}), builtMatch.getMetadata().getMetadata());
\r
509 Assert.assertEquals("Wrong eth dst", new MacAddress("00:00:00:00:00:01"), builtMatch.getEthernetMatch().getEthernetDestination().getAddress());
\r
510 Assert.assertEquals("Wrong eth src", new MacAddress("00:00:00:00:00:02"), builtMatch.getEthernetMatch().getEthernetSource().getAddress());
\r
511 Assert.assertEquals("Wrong eth type", 3, builtMatch.getEthernetMatch().getEthernetType().getType().getValue().intValue());
\r
512 Assert.assertEquals("Wrong vlan id", 4, builtMatch.getVlanMatch().getVlanId().getVlanId().getValue().intValue());
\r
513 Assert.assertEquals("Wrong vlan id entries", true, builtMatch.getVlanMatch().getVlanId().isVlanIdPresent());
\r
514 Assert.assertEquals("Wrong vlan pcp", 5, builtMatch.getVlanMatch().getVlanPcp().getValue().intValue());
\r
515 Assert.assertEquals("Wrong ip dscp", 6, builtMatch.getIpMatch().getIpDscp().getValue().intValue());
\r
516 Assert.assertEquals("Wrong ip ecn", 7, builtMatch.getIpMatch().getIpEcn().intValue());
\r
517 Assert.assertEquals("Wrong ip proto", null, builtMatch.getIpMatch().getIpProto());
\r
518 Assert.assertEquals("Wrong ip protocol", 8, builtMatch.getIpMatch().getIpProtocol().intValue());
\r
520 final TcpMatch tcpMatch = (TcpMatch) builtMatch.getLayer4Match();
\r
521 Assert.assertEquals("Wrong tcp src port", 9, tcpMatch.getTcpSourcePort().getValue().intValue());
\r
522 Assert.assertEquals("Wrong tcp dst port", 10, tcpMatch.getTcpDestinationPort().getValue().intValue());
\r
523 Assert.assertEquals("Wrong icmpv4 type", 15, builtMatch.getIcmpv4Match().getIcmpv4Type().intValue());
\r
524 Assert.assertEquals("Wrong icmpv4 code", 16, builtMatch.getIcmpv4Match().getIcmpv4Code().intValue());
\r
525 Assert.assertEquals("Wrong icmpv6 type", 19, builtMatch.getIcmpv6Match().getIcmpv6Type().intValue());
\r
526 Assert.assertEquals("Wrong icmpv6 code", 20, builtMatch.getIcmpv6Match().getIcmpv6Code().intValue());
\r
528 final Ipv4Match ipv4Match = (Ipv4Match) builtMatch.getLayer3Match();
\r
529 Assert.assertEquals("Wrong ipv4 src address", "10.0.0.1/32", ipv4Match.getIpv4Source().getValue());
\r
530 Assert.assertEquals("Wrong ipv4 dst address", "10.0.0.2/32", ipv4Match.getIpv4Destination().getValue());
\r
531 Assert.assertEquals("Wrong mpls label", 21, builtMatch.getProtocolMatchFields().getMplsLabel().intValue());
\r
532 Assert.assertEquals("Wrong mpls bos", 1, builtMatch.getProtocolMatchFields().getMplsBos().intValue());
\r
533 Assert.assertEquals("Wrong mpls tc", 22, builtMatch.getProtocolMatchFields().getMplsTc().intValue());
\r
534 Assert.assertEquals("Wrong pbb isid", 23, builtMatch.getProtocolMatchFields().getPbb().getPbbIsid().intValue());
\r
535 Assert.assertEquals("Wrong tunnel id", new BigInteger(1, new byte[]{1, 2, 3, 4, 5, 6, 7, 8}),
\r
536 builtMatch.getTunnel().getTunnelId());
\r
540 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
541 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
542 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
545 public void testWithMatchEntryWithMasks() {
\r
546 final MatchBuilder builder = new MatchBuilder();
\r
547 builder.setType(OxmMatchType.class);
\r
548 final List<MatchEntry> entries = new ArrayList<>();
\r
549 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
550 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
551 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
\r
552 entriesBuilder.setHasMask(true);
\r
555 final MetadataCaseBuilder metadataCaseBuilder = new MetadataCaseBuilder();
\r
556 final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case.MetadataBuilder metadataBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case.MetadataBuilder();
\r
557 metadataBuilder.setMetadata(new byte[]{0, 1, 2, 3, 4, 5, 6, 7});
\r
558 metadataBuilder.setMask(new byte[]{0, 0, 0, 0, 0, 0, 0, 1});
\r
559 metadataCaseBuilder.setMetadata(metadataBuilder.build());
\r
560 entriesBuilder.setMatchEntryValue(metadataCaseBuilder.build());
\r
561 entries.add(entriesBuilder.build());
\r
563 entriesBuilder = new MatchEntryBuilder();
\r
564 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
565 entriesBuilder.setOxmMatchField(EthDst.class);
\r
566 entriesBuilder.setHasMask(true);
\r
567 final EthDstCaseBuilder ethDstCaseBuilder = new EthDstCaseBuilder();
\r
568 final EthDstBuilder ethDstBuilder = new EthDstBuilder();
\r
569 ethDstBuilder.setMacAddress(new MacAddress("00:00:00:00:00:01"));
\r
570 ethDstBuilder.setMask(new byte[]{0, 0, 0, 0, 1, 1});
\r
571 ethDstCaseBuilder.setEthDst(ethDstBuilder.build());
\r
572 entriesBuilder.setMatchEntryValue(ethDstCaseBuilder.build());
\r
573 entries.add(entriesBuilder.build());
\r
575 entriesBuilder = new MatchEntryBuilder();
\r
576 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
577 entriesBuilder.setOxmMatchField(EthSrc.class);
\r
578 entriesBuilder.setHasMask(true);
\r
579 final EthSrcCaseBuilder ethSrcCaseBuilder = new EthSrcCaseBuilder();
\r
580 final EthSrcBuilder ethSrcBuilder = new EthSrcBuilder();
\r
581 ethSrcBuilder.setMacAddress(new MacAddress("00:00:00:00:00:02"));
\r
582 ethSrcBuilder.setMask(new byte[]{0, 0, 0, 0, 2, 2});
\r
583 ethSrcCaseBuilder.setEthSrc(ethSrcBuilder.build());
\r
584 entriesBuilder.setMatchEntryValue(ethSrcCaseBuilder.build());
\r
585 entries.add(entriesBuilder.build());
\r
587 entriesBuilder = new MatchEntryBuilder();
\r
588 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
589 entriesBuilder.setOxmMatchField(VlanVid.class);
\r
590 entriesBuilder.setHasMask(true);
\r
591 final VlanVidCaseBuilder vlanVidCaseBuilder = new VlanVidCaseBuilder();
\r
592 final VlanVidBuilder vlanVidBuilder = new VlanVidBuilder();
\r
593 vlanVidBuilder.setVlanVid(4);
\r
594 vlanVidBuilder.setCfiBit(true);
\r
595 vlanVidBuilder.setMask(new byte[]{0, 4});
\r
596 vlanVidCaseBuilder.setVlanVid(vlanVidBuilder.build());
\r
597 entriesBuilder.setMatchEntryValue(vlanVidCaseBuilder.build());
\r
598 entries.add(entriesBuilder.build());
\r
600 entriesBuilder = new MatchEntryBuilder();
\r
601 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
602 entriesBuilder.setOxmMatchField(Ipv4Src.class);
\r
603 entriesBuilder.setHasMask(true);
\r
604 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
\r
605 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
\r
606 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));
\r
607 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
\r
608 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
\r
609 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
\r
610 entries.add(entriesBuilder.build());
\r
612 entriesBuilder = new MatchEntryBuilder();
\r
613 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
614 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
\r
615 entriesBuilder.setHasMask(true);
\r
616 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
\r
617 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
\r
618 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));
\r
619 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});
\r
620 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
\r
621 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
\r
622 entries.add(entriesBuilder.build());
\r
624 entriesBuilder = new MatchEntryBuilder();
\r
625 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
626 entriesBuilder.setOxmMatchField(PbbIsid.class);
\r
627 entriesBuilder.setHasMask(true);
\r
628 final PbbIsidCaseBuilder pbbIsidCaseBuilder = new PbbIsidCaseBuilder();
\r
630 final PbbIsidBuilder pbbIsidBuilder = new PbbIsidBuilder();
\r
631 pbbIsidBuilder.setIsid(23L);
\r
632 pbbIsidBuilder.setMask(new byte[]{0, 0, 7});
\r
633 pbbIsidCaseBuilder.setPbbIsid(pbbIsidBuilder.build());
\r
634 entriesBuilder.setMatchEntryValue(pbbIsidCaseBuilder.build());
\r
635 entries.add(entriesBuilder.build());
\r
637 entriesBuilder = new MatchEntryBuilder();
\r
638 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
639 entriesBuilder.setOxmMatchField(TunnelId.class);
\r
640 entriesBuilder.setHasMask(true);
\r
641 final TunnelIdCaseBuilder tunnelIdCaseBuilder = new TunnelIdCaseBuilder();
\r
642 final TunnelIdBuilder tunnelIdBuilder = new TunnelIdBuilder();
\r
643 tunnelIdBuilder.setTunnelId(new byte[]{1, 2, 3, 4, 5, 6, 7, 8});
\r
644 tunnelIdBuilder.setMask(new byte[]{0, 0, 0, 0, 0, 0, 0, 8});
\r
645 tunnelIdCaseBuilder.setTunnelId(tunnelIdBuilder.build());
\r
646 entriesBuilder.setMatchEntryValue(tunnelIdCaseBuilder.build());
\r
647 entries.add(entriesBuilder.build());
\r
648 builder.setMatchEntry(entries);
\r
649 final Match match = builder.build();
\r
651 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
652 .MatchBuilder salMatch = MatchConvertorImpl.fromOFMatchToSALMatch(match, new BigInteger("42"), OpenflowVersion.OF10);
\r
653 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();
\r
655 Assert.assertEquals("Wrong metadata", new BigInteger(1, new byte[]{0, 1, 2, 3, 4, 5, 6, 7}), builtMatch.getMetadata().getMetadata());
\r
656 Assert.assertEquals("Wrong metadata mask", new BigInteger(1, new byte[]{0, 0, 0, 0, 0, 0, 0, 1}),
\r
657 builtMatch.getMetadata().getMetadataMask());
\r
658 Assert.assertEquals("Wrong eth dst", new MacAddress("00:00:00:00:00:01"), builtMatch.getEthernetMatch().getEthernetDestination().getAddress());
\r
659 Assert.assertEquals("Wrong eth dst mask", new MacAddress("00:00:00:00:01:01"), builtMatch.getEthernetMatch().getEthernetDestination().getMask());
\r
660 Assert.assertEquals("Wrong eth src", new MacAddress("00:00:00:00:00:02"), builtMatch.getEthernetMatch().getEthernetSource().getAddress());
\r
661 Assert.assertEquals("Wrong eth src mask", new MacAddress("00:00:00:00:02:02"), builtMatch.getEthernetMatch().getEthernetSource().getMask());
\r
662 Assert.assertEquals("Wrong vlan id", 4, builtMatch.getVlanMatch().getVlanId().getVlanId().getValue().intValue());
\r
663 Assert.assertEquals("Wrong vlan id entries", true, builtMatch.getVlanMatch().getVlanId().isVlanIdPresent());
\r
664 final Ipv4Match ipv4Match = (Ipv4Match) builtMatch.getLayer3Match();
\r
665 Assert.assertEquals("Wrong ipv4 src address", "10.0.0.0/24", ipv4Match.getIpv4Source().getValue());
\r
666 Assert.assertEquals("Wrong ipv4 dst address", "10.0.0.0/20", ipv4Match.getIpv4Destination().getValue());
\r
667 Assert.assertEquals("Wrong pbb isid", 23, builtMatch.getProtocolMatchFields().getPbb().getPbbIsid().intValue());
\r
668 Assert.assertEquals("Wrong tunnel id", new BigInteger(1, new byte[]{1, 2, 3, 4, 5, 6, 7, 8}),
\r
669 builtMatch.getTunnel().getTunnelId());
\r
673 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
674 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
675 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
678 public void testWithMatchEntryWithArbitraryMasks() {
\r
679 final MatchBuilder builder = new MatchBuilder();
\r
680 builder.setType(OxmMatchType.class);
\r
681 final List<MatchEntry> entries = new ArrayList<>();
\r
682 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
683 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
684 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
\r
685 entriesBuilder.setHasMask(true);
\r
687 entriesBuilder = new MatchEntryBuilder();
\r
688 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
689 entriesBuilder.setOxmMatchField(Ipv4Src.class);
\r
690 entriesBuilder.setHasMask(true);
\r
691 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
\r
692 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
\r
693 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
\r
694 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 255, 0});
\r
695 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
\r
696 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
\r
697 entries.add(entriesBuilder.build());
\r
699 entriesBuilder = new MatchEntryBuilder();
\r
700 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
701 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
\r
702 entriesBuilder.setHasMask(true);
\r
703 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
\r
704 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
\r
705 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
\r
706 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});
\r
707 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
\r
708 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
\r
709 entries.add(entriesBuilder.build());
\r
711 builder.setMatchEntry(entries);
\r
712 final Match match = builder.build();
\r
714 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
715 .MatchBuilder salMatch = MatchConvertorImpl.fromOFMatchToSALMatch(match, new BigInteger("42"), OpenflowVersion.OF13);
\r
716 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();
\r
718 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask = (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
\r
719 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
\r
720 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
\r
721 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
\r
722 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
\r
726 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
727 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
728 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
731 public void testWithMatchEntryWithSrcCidrMaskAndDstArbitraryBitMask() {
\r
732 final MatchBuilder builder = new MatchBuilder();
\r
733 builder.setType(OxmMatchType.class);
\r
734 final List<MatchEntry> entries = new ArrayList<>();
\r
735 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
736 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
737 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
\r
738 entriesBuilder.setHasMask(true);
\r
740 entriesBuilder = new MatchEntryBuilder();
\r
741 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
742 entriesBuilder.setOxmMatchField(Ipv4Src.class);
\r
743 entriesBuilder.setHasMask(true);
\r
744 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
\r
745 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
\r
746 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
\r
747 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
\r
748 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
\r
749 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
\r
750 entries.add(entriesBuilder.build());
\r
752 entriesBuilder = new MatchEntryBuilder();
\r
753 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
754 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
\r
755 entriesBuilder.setHasMask(true);
\r
756 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
\r
757 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
\r
758 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
\r
759 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});
\r
760 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
\r
761 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
\r
762 entries.add(entriesBuilder.build());
\r
764 builder.setMatchEntry(entries);
\r
765 final Match match = builder.build();
\r
767 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
768 .MatchBuilder salMatch = MatchConvertorImpl.fromOFMatchToSALMatch(match, new BigInteger("42"), OpenflowVersion.OF13);
\r
769 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();
\r
771 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask = (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
\r
772 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
\r
773 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
\r
774 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
\r
775 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
\r
779 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
780 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
781 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
784 public void testWithMatchEntryWithSrcArbitraryBitMaskAndDstCidrMask() {
\r
785 final MatchBuilder builder = new MatchBuilder();
\r
786 builder.setType(OxmMatchType.class);
\r
787 final List<MatchEntry> entries = new ArrayList<>();
\r
788 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
789 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
790 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
\r
791 entriesBuilder.setHasMask(true);
\r
793 entriesBuilder = new MatchEntryBuilder();
\r
794 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
795 entriesBuilder.setOxmMatchField(Ipv4Src.class);
\r
796 entriesBuilder.setHasMask(true);
\r
797 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
\r
798 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
\r
799 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
\r
800 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 0, (byte) 255, 0});
\r
801 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
\r
802 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
\r
803 entries.add(entriesBuilder.build());
\r
805 entriesBuilder = new MatchEntryBuilder();
\r
806 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
807 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
\r
808 entriesBuilder.setHasMask(true);
\r
809 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
\r
810 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
\r
811 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
\r
812 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});
\r
813 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
\r
814 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
\r
815 entries.add(entriesBuilder.build());
\r
817 builder.setMatchEntry(entries);
\r
818 final Match match = builder.build();
\r
820 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
821 .MatchBuilder salMatch = MatchConvertorImpl.fromOFMatchToSALMatch(match, new BigInteger("42"), OpenflowVersion.OF13);
\r
822 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();
\r
824 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask = (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
\r
825 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
\r
826 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
\r
827 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
\r
828 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
\r
833 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
834 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
835 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
838 public void testWithMatchEntryWithDstArbitraryBitMaskAndSrcCidrMask() {
\r
839 final MatchBuilder builder = new MatchBuilder();
\r
840 builder.setType(OxmMatchType.class);
\r
841 final List<MatchEntry> entries = new ArrayList<>();
\r
842 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
843 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
844 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
\r
845 entriesBuilder.setHasMask(true);
\r
847 entriesBuilder = new MatchEntryBuilder();
\r
848 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
849 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
\r
850 entriesBuilder.setHasMask(true);
\r
851 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
\r
852 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
\r
853 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
\r
854 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});
\r
855 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
\r
856 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
\r
857 entries.add(entriesBuilder.build());
\r
859 entriesBuilder = new MatchEntryBuilder();
\r
860 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
861 entriesBuilder.setOxmMatchField(Ipv4Src.class);
\r
862 entriesBuilder.setHasMask(true);
\r
863 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
\r
864 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
\r
865 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
\r
866 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
\r
867 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
\r
868 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
\r
869 entries.add(entriesBuilder.build());
\r
871 builder.setMatchEntry(entries);
\r
872 final Match match = builder.build();
\r
874 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
875 .MatchBuilder salMatch = MatchConvertorImpl.fromOFMatchToSALMatch(match, new BigInteger("42"), OpenflowVersion.OF13);
\r
876 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();
\r
878 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask = (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
\r
879 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
\r
880 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
\r
881 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
\r
882 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
\r
886 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
887 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
888 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
891 public void testWithMatchEntryWithDstCidrMaskAndSrcArbitraryBitMask() {
\r
892 final MatchBuilder builder = new MatchBuilder();
\r
893 builder.setType(OxmMatchType.class);
\r
894 final List<MatchEntry> entries = new ArrayList<>();
\r
895 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
896 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
897 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);
\r
898 entriesBuilder.setHasMask(true);
\r
900 entriesBuilder = new MatchEntryBuilder();
\r
901 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
902 entriesBuilder.setOxmMatchField(Ipv4Dst.class);
\r
903 entriesBuilder.setHasMask(true);
\r
904 final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();
\r
905 final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();
\r
906 ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));
\r
907 ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});
\r
908 ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());
\r
909 entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
\r
910 entries.add(entriesBuilder.build());
\r
912 entriesBuilder = new MatchEntryBuilder();
\r
913 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
914 entriesBuilder.setOxmMatchField(Ipv4Src.class);
\r
915 entriesBuilder.setHasMask(true);
\r
916 final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();
\r
917 final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();
\r
918 ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));
\r
919 ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 0, (byte) 255, 0});
\r
920 ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());
\r
921 entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
\r
922 entries.add(entriesBuilder.build());
\r
924 builder.setMatchEntry(entries);
\r
925 final Match match = builder.build();
\r
927 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
928 .MatchBuilder salMatch = MatchConvertorImpl.fromOFMatchToSALMatch(match, new BigInteger("42"), OpenflowVersion.OF13);
\r
929 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();
\r
931 final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask = (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();
\r
932 Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",
\r
933 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());
\r
934 Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",
\r
935 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());
\r
939 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
940 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
941 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
944 public void testLayer4MatchUdp() {
\r
945 final MatchBuilder builder = new MatchBuilder();
\r
946 builder.setType(OxmMatchType.class);
\r
947 final List<MatchEntry> entries = new ArrayList<>();
\r
948 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
949 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
950 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.UdpSrc.class);
\r
951 entriesBuilder.setHasMask(false);
\r
952 final UdpSrcCaseBuilder udpSrcCaseBuilder = new UdpSrcCaseBuilder();
\r
953 final UdpSrcBuilder portBuilder = new UdpSrcBuilder();
\r
954 portBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
\r
955 .inet.types.rev100924.PortNumber(11));
\r
956 udpSrcCaseBuilder.setUdpSrc(portBuilder.build());
\r
957 entriesBuilder.setMatchEntryValue(udpSrcCaseBuilder.build());
\r
958 entries.add(entriesBuilder.build());
\r
961 entriesBuilder = new MatchEntryBuilder();
\r
962 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
963 entriesBuilder.setOxmMatchField(UdpDst.class);
\r
964 entriesBuilder.setHasMask(false);
\r
965 final UdpDstCaseBuilder udpDstCaseBuilder = new UdpDstCaseBuilder();
\r
966 final UdpDstBuilder udpDstBuilder = new UdpDstBuilder();
\r
967 udpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
\r
968 .inet.types.rev100924.PortNumber(12));
\r
969 udpDstCaseBuilder.setUdpDst(udpDstBuilder.build());
\r
970 entriesBuilder.setMatchEntryValue(udpDstCaseBuilder.build());
\r
971 entries.add(entriesBuilder.build());
\r
973 builder.setMatchEntry(entries);
\r
975 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
976 .MatchBuilder builtMatch = MatchConvertorImpl.fromOFMatchToSALMatch(builder.build(), new BigInteger("42"), OpenflowVersion.OF13);
\r
978 final UdpMatch udpMatch = (UdpMatch) builtMatch.getLayer4Match();
\r
979 Assert.assertEquals("Wrong udp src port", 11, udpMatch.getUdpSourcePort().getValue().intValue());
\r
980 Assert.assertEquals("Wrong udp dst port", 12, udpMatch.getUdpDestinationPort().getValue().intValue());
\r
984 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
985 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
986 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
989 public void testLayer4MatchSctp() {
\r
990 final MatchBuilder builder = new MatchBuilder();
\r
991 builder.setType(OxmMatchType.class);
\r
992 final List<MatchEntry> entries = new ArrayList<>();
\r
993 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
994 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
995 entriesBuilder.setOxmMatchField(SctpSrc.class);
\r
996 entriesBuilder.setHasMask(false);
\r
997 final SctpSrcCaseBuilder sctpSrcCaseBuilder = new SctpSrcCaseBuilder();
\r
998 final SctpSrcBuilder portBuilder = new SctpSrcBuilder();
\r
999 portBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
\r
1000 .inet.types.rev100924.PortNumber(13));
\r
1001 sctpSrcCaseBuilder.setSctpSrc(portBuilder.build());
\r
1002 entriesBuilder.setMatchEntryValue(sctpSrcCaseBuilder.build());
\r
1003 entries.add(entriesBuilder.build());
\r
1006 entriesBuilder = new MatchEntryBuilder();
\r
1007 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1008 entriesBuilder.setOxmMatchField(SctpDst.class);
\r
1009 entriesBuilder.setHasMask(false);
\r
1010 final SctpDstCaseBuilder sctpDstCaseBuilder = new SctpDstCaseBuilder();
\r
1011 final SctpDstBuilder sctpDstBuilder = new SctpDstBuilder();
\r
1012 sctpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
\r
1013 .inet.types.rev100924.PortNumber(14));
\r
1014 sctpDstCaseBuilder.setSctpDst(sctpDstBuilder.build());
\r
1015 entriesBuilder.setMatchEntryValue(sctpDstCaseBuilder.build());
\r
1016 entries.add(entriesBuilder.build());
\r
1017 builder.setMatchEntry(entries);
\r
1019 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
1020 .MatchBuilder salMatchBuilder = MatchConvertorImpl.fromOFMatchToSALMatch(builder.build(), new BigInteger("42"), OpenflowVersion.OF13);
\r
1021 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();
\r
1023 final SctpMatch udpMatch = (SctpMatch) builtMatch.getLayer4Match();
\r
1024 Assert.assertEquals("Wrong sctp src port", 13, udpMatch.getSctpSourcePort().getValue().intValue());
\r
1025 Assert.assertEquals("Wrong sctp dst port", 14, udpMatch.getSctpDestinationPort().getValue().intValue());
\r
1029 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
1030 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
1031 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
1034 public void testLayer3MatchIpv6() {
\r
1035 final MatchBuilder builder = new MatchBuilder();
\r
1036 builder.setType(OxmMatchType.class);
\r
1037 final List<MatchEntry> entries = new ArrayList<>();
\r
1038 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
1039 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1040 entriesBuilder.setOxmMatchField(Ipv6Src.class);
\r
1041 entriesBuilder.setHasMask(false);
\r
1042 final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
\r
1043 final Ipv6SrcBuilder ipv6AddressBuilder = new Ipv6SrcBuilder();
\r
1044 ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9657"));
\r
1045 ipv6SrcCaseBuilder.setIpv6Src(ipv6AddressBuilder.build());
\r
1046 entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
\r
1047 entries.add(entriesBuilder.build());
\r
1049 entriesBuilder = new MatchEntryBuilder();
\r
1050 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1051 entriesBuilder.setOxmMatchField(Ipv6Dst.class);
\r
1052 entriesBuilder.setHasMask(false);
\r
1053 final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
\r
1054 final Ipv6DstBuilder ipv6DstBuilder = new Ipv6DstBuilder();
\r
1055 ipv6DstBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9658"));
\r
1056 ipv6DstCaseBuilder.setIpv6Dst(ipv6DstBuilder.build());
\r
1057 entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
\r
1058 entries.add(entriesBuilder.build());
\r
1060 entriesBuilder = new MatchEntryBuilder();
\r
1061 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1062 entriesBuilder.setOxmMatchField(Ipv6Flabel.class);
\r
1063 entriesBuilder.setHasMask(false);
\r
1064 final Ipv6FlabelCaseBuilder ipv6FlabelCaseBuilder = new Ipv6FlabelCaseBuilder();
\r
1065 final Ipv6FlabelBuilder ipv6FlabelBuilder = new Ipv6FlabelBuilder();
\r
1066 ipv6FlabelBuilder.setIpv6Flabel(new Ipv6FlowLabel(18L));
\r
1067 ipv6FlabelCaseBuilder.setIpv6Flabel(ipv6FlabelBuilder.build());
\r
1068 entriesBuilder.setMatchEntryValue(ipv6FlabelCaseBuilder.build());
\r
1069 entries.add(entriesBuilder.build());
\r
1071 entriesBuilder = new MatchEntryBuilder();
\r
1072 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1073 entriesBuilder.setOxmMatchField(Ipv6NdTarget.class);
\r
1074 entriesBuilder.setHasMask(false);
\r
1075 final Ipv6NdTargetCaseBuilder ipv6NdTargetCaseBuilder = new Ipv6NdTargetCaseBuilder();
\r
1076 final Ipv6NdTargetBuilder ipv6NdTargetBuilder = new Ipv6NdTargetBuilder();
\r
1077 ipv6NdTargetBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9659"));
\r
1078 ipv6NdTargetCaseBuilder.setIpv6NdTarget(ipv6NdTargetBuilder.build());
\r
1079 entriesBuilder.setMatchEntryValue(ipv6NdTargetCaseBuilder.build());
\r
1080 entries.add(entriesBuilder.build());
\r
1082 entriesBuilder = new MatchEntryBuilder();
\r
1083 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1084 entriesBuilder.setOxmMatchField(Ipv6NdSll.class);
\r
1085 entriesBuilder.setHasMask(false);
\r
1086 final Ipv6NdSllCaseBuilder ipv6NdSllCaseBuilder = new Ipv6NdSllCaseBuilder();
\r
1087 final Ipv6NdSllBuilder ipv6NdSllBuilder = new Ipv6NdSllBuilder();
\r
1088 ipv6NdSllBuilder.setMacAddress(new MacAddress("00:00:00:00:00:05"));
\r
1089 ipv6NdSllCaseBuilder.setIpv6NdSll(ipv6NdSllBuilder.build());
\r
1090 entriesBuilder.setMatchEntryValue(ipv6NdSllCaseBuilder.build());
\r
1091 entries.add(entriesBuilder.build());
\r
1093 entriesBuilder = new MatchEntryBuilder();
\r
1094 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1095 entriesBuilder.setOxmMatchField(Ipv6NdTll.class);
\r
1096 entriesBuilder.setHasMask(false);
\r
1097 final Ipv6NdTllCaseBuilder ipv6NdTllCaseBuilder = new Ipv6NdTllCaseBuilder();
\r
1098 final Ipv6NdTllBuilder ipv6NdTllBuilder = new Ipv6NdTllBuilder();
\r
1099 ipv6NdTllBuilder.setMacAddress(new MacAddress("00:00:00:00:00:06"));
\r
1100 ipv6NdTllCaseBuilder.setIpv6NdTll(ipv6NdTllBuilder.build());
\r
1101 entriesBuilder.setMatchEntryValue(ipv6NdTllCaseBuilder.build());
\r
1102 entries.add(entriesBuilder.build());
\r
1104 entriesBuilder = new MatchEntryBuilder();
\r
1105 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1106 entriesBuilder.setOxmMatchField(Ipv6Exthdr.class);
\r
1107 entriesBuilder.setHasMask(false);
\r
1108 final Ipv6ExthdrCaseBuilder ipv6ExthdrCaseBuilder = new Ipv6ExthdrCaseBuilder();
\r
1109 final Ipv6ExthdrBuilder ipv6ExthdrBuilder = new Ipv6ExthdrBuilder();
\r
1110 ipv6ExthdrBuilder.setPseudoField(new Ipv6ExthdrFlags(true, false, true, false, true, false, true, false, true));
\r
1111 ipv6ExthdrCaseBuilder.setIpv6Exthdr(ipv6ExthdrBuilder.build());
\r
1112 entriesBuilder.setMatchEntryValue(ipv6ExthdrCaseBuilder.build());
\r
1113 builder.setMatchEntry(entries);
\r
1114 entries.add(entriesBuilder.build());
\r
1116 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
1117 .MatchBuilder salMatchBuilder = MatchConvertorImpl.fromOFMatchToSALMatch(builder.build(), new BigInteger("42"), OpenflowVersion.OF13);
\r
1118 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();
\r
1120 final Ipv6Match ipv6Match = (Ipv6Match) builtMatch.getLayer3Match();
\r
1121 Assert.assertEquals("Wrong ipv6 src address", "2001:cdba:0000:0000:0000:0000:3257:9657/128",
\r
1122 ipv6Match.getIpv6Source().getValue());
\r
1123 Assert.assertEquals("Wrong ipv6 dst address", "2001:cdba:0000:0000:0000:0000:3257:9658/128",
\r
1124 ipv6Match.getIpv6Destination().getValue());
\r
1125 Assert.assertEquals("Wrong ipv6 nd target", "2001:cdba:0000:0000:0000:0000:3257:9659",
\r
1126 ipv6Match.getIpv6NdTarget().getValue());
\r
1127 Assert.assertEquals("Wrong ipv6 flabel", 18, ipv6Match.getIpv6Label().getIpv6Flabel().getValue().intValue());
\r
1128 Assert.assertEquals("Wrong ipv6 nd sll", new MacAddress("00:00:00:00:00:05"), ipv6Match.getIpv6NdSll());
\r
1129 Assert.assertEquals("Wrong ipv6 nd tll", new MacAddress("00:00:00:00:00:06"), ipv6Match.getIpv6NdTll());
\r
1130 Assert.assertEquals("Wrong ipv6 ext header", 358, ipv6Match.getIpv6ExtHeader().getIpv6Exthdr().intValue());
\r
1134 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
1135 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
1136 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
1139 public void testLayer3MatchIpv6ExtHeader2() {
\r
1140 final MatchBuilder builder = new MatchBuilder();
\r
1141 builder.setType(OxmMatchType.class);
\r
1142 final List<MatchEntry> entries = new ArrayList<>();
\r
1143 final MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
1144 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1145 entriesBuilder.setOxmMatchField(Ipv6Exthdr.class);
\r
1146 entriesBuilder.setHasMask(true);
\r
1147 final Ipv6ExthdrCaseBuilder ipv6ExthdrCaseBuilder = new Ipv6ExthdrCaseBuilder();
\r
1148 final Ipv6ExthdrBuilder ipv6ExthdrBuilder = new Ipv6ExthdrBuilder();
\r
1149 ipv6ExthdrBuilder.setPseudoField(new Ipv6ExthdrFlags(false, true, false, true, false, true, false, true, false));
\r
1150 ipv6ExthdrBuilder.setMask(new byte[]{1, 2});
\r
1151 ipv6ExthdrCaseBuilder.setIpv6Exthdr(ipv6ExthdrBuilder.build());
\r
1152 entriesBuilder.setMatchEntryValue(ipv6ExthdrCaseBuilder.build());
\r
1153 entries.add(entriesBuilder.build());
\r
1154 builder.setMatchEntry(entries);
\r
1156 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
1157 .MatchBuilder salMatchBuilder = MatchConvertorImpl.fromOFMatchToSALMatch(builder.build(), new BigInteger("42"), OpenflowVersion.OF13);
\r
1158 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();
\r
1160 final Ipv6Match ipv6Match = (Ipv6Match) builtMatch.getLayer3Match();
\r
1161 Assert.assertEquals("Wrong ipv6 ext header", 153, ipv6Match.getIpv6ExtHeader().getIpv6Exthdr().intValue());
\r
1162 Assert.assertEquals("Wrong ipv6 ext header mask", 258, ipv6Match.getIpv6ExtHeader().getIpv6ExthdrMask().intValue());
\r
1166 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
1167 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
1168 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
1171 public void testLayer3MatchArp() {
\r
1172 final MatchBuilder builder = new MatchBuilder();
\r
1173 builder.setType(OxmMatchType.class);
\r
1174 final List<MatchEntry> entries = new ArrayList<>();
\r
1175 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
1176 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1177 entriesBuilder.setOxmMatchField(ArpOp.class);
\r
1178 entriesBuilder.setHasMask(false);
\r
1179 final ArpOpCaseBuilder arpOpCaseBuilder = new ArpOpCaseBuilder();
\r
1180 final ArpOpBuilder arpOpBuilder = new ArpOpBuilder();
\r
1181 arpOpBuilder.setOpCode(17);
\r
1182 arpOpCaseBuilder.setArpOp(arpOpBuilder.build());
\r
1183 entriesBuilder.setMatchEntryValue(arpOpCaseBuilder.build());
\r
1184 entries.add(entriesBuilder.build());
\r
1186 entriesBuilder = new MatchEntryBuilder();
\r
1187 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1188 entriesBuilder.setOxmMatchField(ArpSpa.class);
\r
1189 entriesBuilder.setHasMask(false);
\r
1190 final ArpSpaCaseBuilder arpSpaCaseBuilder = new ArpSpaCaseBuilder();
\r
1191 final ArpSpaBuilder arpSpaBuilder = new ArpSpaBuilder();
\r
1192 arpSpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.3"));
\r
1193 arpSpaCaseBuilder.setArpSpa(arpSpaBuilder.build());
\r
1194 entriesBuilder.setMatchEntryValue(arpSpaCaseBuilder.build());
\r
1195 entries.add(entriesBuilder.build());
\r
1197 entriesBuilder = new MatchEntryBuilder();
\r
1198 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1199 entriesBuilder.setOxmMatchField(ArpTpa.class);
\r
1200 entriesBuilder.setHasMask(false);
\r
1201 final ArpTpaCaseBuilder arpTpaCaseBuilder = new ArpTpaCaseBuilder();
\r
1202 final ArpTpaBuilder arpTpaBuilder = new ArpTpaBuilder();
\r
1203 arpTpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.4"));
\r
1204 arpTpaCaseBuilder.setArpTpa(arpTpaBuilder.build());
\r
1205 entriesBuilder.setMatchEntryValue(arpTpaCaseBuilder.build());
\r
1206 entries.add(entriesBuilder.build());
\r
1208 entriesBuilder = new MatchEntryBuilder();
\r
1209 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1210 entriesBuilder.setOxmMatchField(ArpSha.class);
\r
1211 entriesBuilder.setHasMask(false);
\r
1212 final ArpShaCaseBuilder arpShaCaseBuilder = new ArpShaCaseBuilder();
\r
1213 final ArpShaBuilder arpShaBuilder = new ArpShaBuilder();
\r
1214 arpShaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:03"));
\r
1215 arpShaCaseBuilder.setArpSha(arpShaBuilder.build());
\r
1216 entriesBuilder.setMatchEntryValue(arpShaCaseBuilder.build());
\r
1217 entries.add(entriesBuilder.build());
\r
1219 entriesBuilder = new MatchEntryBuilder();
\r
1220 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1221 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTha.class);
\r
1222 entriesBuilder.setHasMask(false);
\r
1223 final ArpThaCaseBuilder arpThaCaseBuilder = new ArpThaCaseBuilder();
\r
1224 final ArpThaBuilder arpThaBuilder = new ArpThaBuilder();
\r
1225 arpThaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:04"));
\r
1226 arpThaCaseBuilder.setArpTha(arpThaBuilder.build());
\r
1227 entriesBuilder.setMatchEntryValue(arpThaCaseBuilder.build());
\r
1228 entries.add(entriesBuilder.build());
\r
1229 builder.setMatchEntry(entries);
\r
1231 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
1232 .MatchBuilder salMatchBuilder = MatchConvertorImpl.fromOFMatchToSALMatch(builder.build(), new BigInteger("42"), OpenflowVersion.OF13);
\r
1233 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();
\r
1235 final ArpMatch arpMatch = (ArpMatch) builtMatch.getLayer3Match();
\r
1236 Assert.assertEquals("Wrong arp op", 17, arpMatch.getArpOp().intValue());
\r
1237 Assert.assertEquals("Wrong arp spa", "10.0.0.3/32", arpMatch.getArpSourceTransportAddress().getValue());
\r
1238 Assert.assertEquals("Wrong arp tpa", "10.0.0.4/32", arpMatch.getArpTargetTransportAddress().getValue());
\r
1239 Assert.assertEquals("Wrong arp sha", "00:00:00:00:00:03", arpMatch.getArpSourceHardwareAddress().getAddress().getValue());
\r
1240 Assert.assertEquals("Wrong arp tha", "00:00:00:00:00:04", arpMatch.getArpTargetHardwareAddress().getAddress().getValue());
\r
1244 * Test {@link MatchConvertorImpl#fromOFMatchToSALMatch(
\r
1245 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match, java.math.BigInteger,
\r
1246 * org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion)}
\r
1249 public void testLayer3MatchArpWithMasks() {
\r
1250 final MatchBuilder builder = new MatchBuilder();
\r
1251 builder.setType(OxmMatchType.class);
\r
1252 final List<MatchEntry> entries = new ArrayList<>();
\r
1253 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
1254 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1255 entriesBuilder.setOxmMatchField(ArpSpa.class);
\r
1256 entriesBuilder.setHasMask(true);
\r
1257 final ArpSpaCaseBuilder arpSpaCaseBuilder = new ArpSpaCaseBuilder();
\r
1258 final ArpSpaBuilder arpSpaBuilder = new ArpSpaBuilder();
\r
1259 arpSpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.3"));
\r
1260 arpSpaBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});
\r
1261 arpSpaCaseBuilder.setArpSpa(arpSpaBuilder.build());
\r
1262 entriesBuilder.setMatchEntryValue(arpSpaCaseBuilder.build());
\r
1263 entries.add(entriesBuilder.build());
\r
1265 entriesBuilder = new MatchEntryBuilder();
\r
1266 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1267 entriesBuilder.setOxmMatchField(ArpTpa.class);
\r
1268 entriesBuilder.setHasMask(true);
\r
1269 final ArpTpaCaseBuilder arpTpaCaseBuilder = new ArpTpaCaseBuilder();
\r
1270 final ArpTpaBuilder arpTpaBuilder = new ArpTpaBuilder();
\r
1271 arpTpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));
\r
1272 arpTpaBuilder.setMask(new byte[]{(byte) 255, (byte) 128, 0, 0});
\r
1273 arpTpaCaseBuilder.setArpTpa(arpTpaBuilder.build());
\r
1274 entriesBuilder.setMatchEntryValue(arpTpaCaseBuilder.build());
\r
1275 entries.add(entriesBuilder.build());
\r
1277 entriesBuilder = new MatchEntryBuilder();
\r
1278 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1279 entriesBuilder.setOxmMatchField(ArpSha.class);
\r
1280 entriesBuilder.setHasMask(true);
\r
1281 final ArpShaCaseBuilder arpShaCaseBuilder = new ArpShaCaseBuilder();
\r
1282 final ArpShaBuilder arpShaBuilder = new ArpShaBuilder();
\r
1283 arpShaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:03"));
\r
1284 arpShaBuilder.setMask(new byte[]{0, 0, 1, 0, 4, 0});
\r
1285 arpShaCaseBuilder.setArpSha(arpShaBuilder.build());
\r
1286 entriesBuilder.setMatchEntryValue(arpShaCaseBuilder.build());
\r
1287 entries.add(entriesBuilder.build());
\r
1289 entriesBuilder = new MatchEntryBuilder();
\r
1290 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
1291 entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTha.class);
\r
1292 entriesBuilder.setHasMask(true);
\r
1293 final ArpThaCaseBuilder arpThaCaseBuilder = new ArpThaCaseBuilder();
\r
1294 final ArpThaBuilder arpThaBuilder = new ArpThaBuilder();
\r
1295 arpThaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:04"));
\r
1296 arpThaBuilder.setMask(new byte[]{1, 1, 1, 2, 2, 2});
\r
1297 arpThaCaseBuilder.setArpTha(arpThaBuilder.build());
\r
1298 entriesBuilder.setMatchEntryValue(arpThaCaseBuilder.build());
\r
1299 entries.add(entriesBuilder.build());
\r
1301 builder.setMatchEntry(entries);
\r
1303 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
\r
1304 .MatchBuilder salMatchBuilder = MatchConvertorImpl.fromOFMatchToSALMatch(builder.build(), new BigInteger("42"), OpenflowVersion.OF13);
\r
1305 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();
\r
1307 final ArpMatch arpMatch = (ArpMatch) builtMatch.getLayer3Match();
\r
1308 Assert.assertEquals("Wrong arp spa", "10.0.0.3/24", arpMatch.getArpSourceTransportAddress().getValue());
\r
1309 Assert.assertEquals("Wrong arp tpa", "10.0.0.0/9", arpMatch.getArpTargetTransportAddress().getValue());
\r
1310 Assert.assertEquals("Wrong arp sha", "00:00:00:00:00:03", arpMatch.getArpSourceHardwareAddress().getAddress().getValue());
\r
1311 Assert.assertEquals("Wrong arp sha mask", "00:00:01:00:04:00", arpMatch.getArpSourceHardwareAddress().getMask().getValue());
\r
1312 Assert.assertEquals("Wrong arp tha", "00:00:00:00:00:04", arpMatch.getArpTargetHardwareAddress().getAddress().getValue());
\r
1313 Assert.assertEquals("Wrong arp tha mask", "01:01:01:02:02:02", arpMatch.getArpTargetHardwareAddress().getMask().getValue());
\r