2 * Copyright (c) 2013 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
8 package org.opendaylight.openflowjava.protocol.impl.serialization;
\r
10 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
\r
11 import org.opendaylight.openflowjava.protocol.impl.serialization.match.NxmTcpFlagSerializer;
\r
12 import org.opendaylight.openflowjava.protocol.impl.serialization.match.NxmTunnelIpv4DstSerializer;
\r
13 import org.opendaylight.openflowjava.protocol.impl.serialization.match.NxmTunnelIpv4SrcSerializer;
\r
14 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmArpOpSerializer;
\r
15 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmArpShaSerializer;
\r
16 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmArpSpaSerializer;
\r
17 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmArpThaSerializer;
\r
18 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmArpTpaSerializer;
\r
19 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmEthDstSerializer;
\r
20 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmEthSrcSerializer;
\r
21 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmEthTypeSerializer;
\r
22 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIcmpv4CodeSerializer;
\r
23 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIcmpv4TypeSerializer;
\r
24 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIcmpv6CodeSerializer;
\r
25 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIcmpv6TypeSerializer;
\r
26 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmInPhyPortSerializer;
\r
27 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmInPortSerializer;
\r
28 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpDscpSerializer;
\r
29 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpEcnSerializer;
\r
30 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpProtoSerializer;
\r
31 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv4DstSerializer;
\r
32 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv4SrcSerializer;
\r
33 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6DstSerializer;
\r
34 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6ExtHdrSerializer;
\r
35 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6FlabelSerializer;
\r
36 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6NdSllSerializer;
\r
37 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6NdTargetSerializer;
\r
38 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6NdTllSerializer;
\r
39 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6SrcSerializer;
\r
40 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmMetadataSerializer;
\r
41 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmMplsBosSerializer;
\r
42 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmMplsLabelSerializer;
\r
43 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmMplsTcSerializer;
\r
44 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmPbbIsidSerializer;
\r
45 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmSctpDstSerializer;
\r
46 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmSctpSrcSerializer;
\r
47 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmTcpDstSerializer;
\r
48 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmTcpSrcSerializer;
\r
49 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmTunnelIdSerializer;
\r
50 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmUdpDstSerializer;
\r
51 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmUdpSrcSerializer;
\r
52 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmVlanPcpSerializer;
\r
53 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmVlanVidSerializer;
\r
54 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
\r
55 import org.opendaylight.openflowjava.protocol.impl.util.EnhancedKeyRegistryHelper;
\r
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpOp;
\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpSha;
\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpSpa;
\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpTha;
\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpTpa;
\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthDst;
\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthSrc;
\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthType;
\r
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv4Code;
\r
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv4Type;
\r
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv6Code;
\r
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv6Type;
\r
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPhyPort;
\r
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPort;
\r
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpDscp;
\r
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpEcn;
\r
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpProto;
\r
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Dst;
\r
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Src;
\r
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Dst;
\r
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Exthdr;
\r
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Flabel;
\r
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdSll;
\r
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdTarget;
\r
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdTll;
\r
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Src;
\r
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Metadata;
\r
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsBos;
\r
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsLabel;
\r
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsTc;
\r
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm1Class;
\r
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OpenflowBasicClass;
\r
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.PbbIsid;
\r
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.SctpDst;
\r
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.SctpSrc;
\r
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TcpDst;
\r
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TcpFlag;
\r
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TcpSrc;
\r
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TunnelId;
\r
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TunnelIpv4Dst;
\r
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TunnelIpv4Src;
\r
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.UdpDst;
\r
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.UdpSrc;
\r
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.VlanPcp;
\r
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.VlanVid;
\r
103 * Initializes serializer registry with match entry serializers
\r
104 * @author michal.polkorab
\r
106 public class MatchEntriesInitializer {
\r
109 * Registers match entry serializers into provided registry
\r
110 * @param serializerRegistry registry to be initialized with match entry serializers
\r
112 public static void registerMatchEntrySerializers(SerializerRegistry serializerRegistry) {
\r
113 // register OF v1.3 OpenflowBasicClass match entry serializers
\r
114 Class<OpenflowBasicClass> oxmClass = OpenflowBasicClass.class;
\r
115 EnhancedKeyRegistryHelper<OpenflowBasicClass> registryHelper =
\r
116 new EnhancedKeyRegistryHelper<>(EncodeConstants.OF13_VERSION_ID, oxmClass, serializerRegistry);
\r
117 registryHelper.registerSerializer(InPort.class, new OxmInPortSerializer());
\r
118 registryHelper.registerSerializer(InPhyPort.class, new OxmInPhyPortSerializer());
\r
119 registryHelper.registerSerializer(Metadata.class, new OxmMetadataSerializer());
\r
120 registryHelper.registerSerializer(EthDst.class, new OxmEthDstSerializer());
\r
121 registryHelper.registerSerializer(EthSrc.class, new OxmEthSrcSerializer());
\r
122 registryHelper.registerSerializer(EthType.class, new OxmEthTypeSerializer());
\r
123 registryHelper.registerSerializer(VlanVid.class, new OxmVlanVidSerializer());
\r
124 registryHelper.registerSerializer(VlanPcp.class, new OxmVlanPcpSerializer());
\r
125 registryHelper.registerSerializer(IpDscp.class, new OxmIpDscpSerializer());
\r
126 registryHelper.registerSerializer(IpEcn.class, new OxmIpEcnSerializer());
\r
127 registryHelper.registerSerializer(IpProto.class, new OxmIpProtoSerializer());
\r
128 registryHelper.registerSerializer(Ipv4Src.class, new OxmIpv4SrcSerializer());
\r
129 registryHelper.registerSerializer(Ipv4Dst.class, new OxmIpv4DstSerializer());
\r
130 registryHelper.registerSerializer(TcpSrc.class, new OxmTcpSrcSerializer());
\r
131 registryHelper.registerSerializer(TcpDst.class, new OxmTcpDstSerializer());
\r
132 registryHelper.registerSerializer(UdpSrc.class, new OxmUdpSrcSerializer());
\r
133 registryHelper.registerSerializer(UdpDst.class, new OxmUdpDstSerializer());
\r
134 registryHelper.registerSerializer(SctpSrc.class, new OxmSctpSrcSerializer());
\r
135 registryHelper.registerSerializer(SctpDst.class, new OxmSctpDstSerializer());
\r
136 registryHelper.registerSerializer(Icmpv4Type.class, new OxmIcmpv4TypeSerializer());
\r
137 registryHelper.registerSerializer(Icmpv4Code.class, new OxmIcmpv4CodeSerializer());
\r
138 registryHelper.registerSerializer(ArpOp.class, new OxmArpOpSerializer());
\r
139 registryHelper.registerSerializer(ArpSpa.class, new OxmArpSpaSerializer());
\r
140 registryHelper.registerSerializer(ArpTpa.class, new OxmArpTpaSerializer());
\r
141 registryHelper.registerSerializer(ArpSha.class, new OxmArpShaSerializer());
\r
142 registryHelper.registerSerializer(ArpTha.class, new OxmArpThaSerializer());
\r
143 registryHelper.registerSerializer(Ipv6Src.class, new OxmIpv6SrcSerializer());
\r
144 registryHelper.registerSerializer(Ipv6Dst.class, new OxmIpv6DstSerializer());
\r
145 registryHelper.registerSerializer(Ipv6Flabel.class, new OxmIpv6FlabelSerializer());
\r
146 registryHelper.registerSerializer(Icmpv6Type.class, new OxmIcmpv6TypeSerializer());
\r
147 registryHelper.registerSerializer(Icmpv6Code.class, new OxmIcmpv6CodeSerializer());
\r
148 registryHelper.registerSerializer(Ipv6NdTarget.class, new OxmIpv6NdTargetSerializer());
\r
149 registryHelper.registerSerializer(Ipv6NdSll.class, new OxmIpv6NdSllSerializer());
\r
150 registryHelper.registerSerializer(Ipv6NdTll.class, new OxmIpv6NdTllSerializer());
\r
151 registryHelper.registerSerializer(MplsLabel.class, new OxmMplsLabelSerializer());
\r
152 registryHelper.registerSerializer(MplsTc.class, new OxmMplsTcSerializer());
\r
153 registryHelper.registerSerializer(MplsBos.class, new OxmMplsBosSerializer());
\r
154 registryHelper.registerSerializer(PbbIsid.class, new OxmPbbIsidSerializer());
\r
155 registryHelper.registerSerializer(TunnelId.class, new OxmTunnelIdSerializer());
\r
156 registryHelper.registerSerializer(Ipv6Exthdr.class, new OxmIpv6ExtHdrSerializer());
\r
158 // Register OpenFlow NXM1Class match entry serializer
\r
159 Class<Nxm1Class> nxm1Class = Nxm1Class.class;
\r
160 EnhancedKeyRegistryHelper<Nxm1Class> nxm1RegistryHelper =
\r
161 new EnhancedKeyRegistryHelper<>(EncodeConstants.OF13_VERSION_ID, nxm1Class, serializerRegistry);
\r
162 nxm1RegistryHelper.registerSerializer(TunnelIpv4Dst.class, new NxmTunnelIpv4DstSerializer());
\r
163 nxm1RegistryHelper.registerSerializer(TunnelIpv4Src.class, new NxmTunnelIpv4SrcSerializer());
\r
164 nxm1RegistryHelper.registerSerializer(TcpFlag.class, new NxmTcpFlagSerializer());
\r