Mass replace CRLF->LF
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / serialization / MatchEntriesInitializer.java
1 /*
2  * Copyright (c) 2013 Pantheon Technologies s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.openflowjava.protocol.impl.serialization;
9
10 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
11 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
12 import org.opendaylight.openflowjava.protocol.impl.serialization.match.NxmTcpFlagSerializer;
13 import org.opendaylight.openflowjava.protocol.impl.serialization.match.NxmTunnelIpv4DstSerializer;
14 import org.opendaylight.openflowjava.protocol.impl.serialization.match.NxmTunnelIpv4SrcSerializer;
15 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmArpOpSerializer;
16 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmArpShaSerializer;
17 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmArpSpaSerializer;
18 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmArpThaSerializer;
19 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmArpTpaSerializer;
20 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmEthDstSerializer;
21 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmEthSrcSerializer;
22 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmEthTypeSerializer;
23 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIcmpv4CodeSerializer;
24 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIcmpv4TypeSerializer;
25 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIcmpv6CodeSerializer;
26 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIcmpv6TypeSerializer;
27 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmInPhyPortSerializer;
28 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmInPortSerializer;
29 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpDscpSerializer;
30 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpEcnSerializer;
31 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpProtoSerializer;
32 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv4DstSerializer;
33 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv4SrcSerializer;
34 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6DstSerializer;
35 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6ExtHdrSerializer;
36 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6FlabelSerializer;
37 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6NdSllSerializer;
38 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6NdTargetSerializer;
39 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6NdTllSerializer;
40 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmIpv6SrcSerializer;
41 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmMetadataSerializer;
42 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmMplsBosSerializer;
43 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmMplsLabelSerializer;
44 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmMplsTcSerializer;
45 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmPbbIsidSerializer;
46 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmSctpDstSerializer;
47 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmSctpSrcSerializer;
48 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmTcpDstSerializer;
49 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmTcpSrcSerializer;
50 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmTunnelIdSerializer;
51 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmUdpDstSerializer;
52 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmUdpSrcSerializer;
53 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmVlanPcpSerializer;
54 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmVlanVidSerializer;
55 import org.opendaylight.openflowjava.protocol.impl.util.MatchEntrySerializerRegistryHelper;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpOp;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpSha;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpSpa;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpTha;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpTpa;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthDst;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthSrc;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthType;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv4Code;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv4Type;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv6Code;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv6Type;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPhyPort;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPort;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpDscp;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpEcn;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpProto;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Dst;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Src;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Dst;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Exthdr;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Flabel;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdSll;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdTarget;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdTll;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Src;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Metadata;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsBos;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsLabel;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsTc;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm1Class;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OpenflowBasicClass;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.PbbIsid;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.SctpDst;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.SctpSrc;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TcpDst;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TcpFlag;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TcpSrc;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TunnelId;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TunnelIpv4Dst;
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TunnelIpv4Src;
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.UdpDst;
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.UdpSrc;
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.VlanPcp;
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.VlanVid;
101
102 /**
103  * Initializes serializer registry with match entry serializers
104  * @author michal.polkorab
105  */
106 public final class MatchEntriesInitializer {
107
108     private MatchEntriesInitializer() {
109         throw new UnsupportedOperationException("Utility class shouldn't be instantiated");
110     }
111
112     /**
113      * Registers match entry serializers into provided registry
114      * @param serializerRegistry registry to be initialized with match entry serializers
115      */
116     public static void registerMatchEntrySerializers(SerializerRegistry serializerRegistry) {
117         // register OF v1.3 OpenflowBasicClass match entry serializers
118         Class<OpenflowBasicClass> oxmClass = OpenflowBasicClass.class;
119         MatchEntrySerializerRegistryHelper<OpenflowBasicClass> helper =
120                 new MatchEntrySerializerRegistryHelper<>(EncodeConstants.OF13_VERSION_ID,
121                         oxmClass, serializerRegistry);
122         helper.registerSerializer(InPort.class, new OxmInPortSerializer());
123         helper.registerSerializer(InPhyPort.class, new OxmInPhyPortSerializer());
124         helper.registerSerializer(Metadata.class, new OxmMetadataSerializer());
125         helper.registerSerializer(EthDst.class, new OxmEthDstSerializer());
126         helper.registerSerializer(EthSrc.class, new OxmEthSrcSerializer());
127         helper.registerSerializer(EthType.class, new OxmEthTypeSerializer());
128         helper.registerSerializer(VlanVid.class, new OxmVlanVidSerializer());
129         helper.registerSerializer(VlanPcp.class, new OxmVlanPcpSerializer());
130         helper.registerSerializer(IpDscp.class, new OxmIpDscpSerializer());
131         helper.registerSerializer(IpEcn.class, new OxmIpEcnSerializer());
132         helper.registerSerializer(IpProto.class, new OxmIpProtoSerializer());
133         helper.registerSerializer(Ipv4Src.class, new OxmIpv4SrcSerializer());
134         helper.registerSerializer(Ipv4Dst.class, new OxmIpv4DstSerializer());
135         helper.registerSerializer(TcpSrc.class, new OxmTcpSrcSerializer());
136         helper.registerSerializer(TcpDst.class, new OxmTcpDstSerializer());
137         helper.registerSerializer(UdpSrc.class, new OxmUdpSrcSerializer());
138         helper.registerSerializer(UdpDst.class, new OxmUdpDstSerializer());
139         helper.registerSerializer(SctpSrc.class, new OxmSctpSrcSerializer());
140         helper.registerSerializer(SctpDst.class, new OxmSctpDstSerializer());
141         helper.registerSerializer(Icmpv4Type.class, new OxmIcmpv4TypeSerializer());
142         helper.registerSerializer(Icmpv4Code.class, new OxmIcmpv4CodeSerializer());
143         helper.registerSerializer(ArpOp.class, new OxmArpOpSerializer());
144         helper.registerSerializer(ArpSpa.class, new OxmArpSpaSerializer());
145         helper.registerSerializer(ArpTpa.class, new OxmArpTpaSerializer());
146         helper.registerSerializer(ArpSha.class, new OxmArpShaSerializer());
147         helper.registerSerializer(ArpTha.class, new OxmArpThaSerializer());
148         helper.registerSerializer(Ipv6Src.class, new OxmIpv6SrcSerializer());
149         helper.registerSerializer(Ipv6Dst.class, new OxmIpv6DstSerializer());
150         helper.registerSerializer(Ipv6Flabel.class, new OxmIpv6FlabelSerializer());
151         helper.registerSerializer(Icmpv6Type.class, new OxmIcmpv6TypeSerializer());
152         helper.registerSerializer(Icmpv6Code.class, new OxmIcmpv6CodeSerializer());
153         helper.registerSerializer(Ipv6NdTarget.class, new OxmIpv6NdTargetSerializer());
154         helper.registerSerializer(Ipv6NdSll.class, new OxmIpv6NdSllSerializer());
155         helper.registerSerializer(Ipv6NdTll.class, new OxmIpv6NdTllSerializer());
156         helper.registerSerializer(MplsLabel.class, new OxmMplsLabelSerializer());
157         helper.registerSerializer(MplsTc.class, new OxmMplsTcSerializer());
158         helper.registerSerializer(MplsBos.class, new OxmMplsBosSerializer());
159         helper.registerSerializer(PbbIsid.class, new OxmPbbIsidSerializer());
160         helper.registerSerializer(TunnelId.class, new OxmTunnelIdSerializer());
161         helper.registerSerializer(Ipv6Exthdr.class, new OxmIpv6ExtHdrSerializer());
162
163         // Register OpenFlow NXM1Class match entry serializer
164         Class<Nxm1Class> nxm1Class = Nxm1Class.class;
165         MatchEntrySerializerRegistryHelper<Nxm1Class> nxm1RegistryHelper =
166                 new MatchEntrySerializerRegistryHelper<>(EncodeConstants.OF13_VERSION_ID,
167                         nxm1Class, serializerRegistry);
168         nxm1RegistryHelper.registerSerializer(TunnelIpv4Dst.class, new NxmTunnelIpv4DstSerializer());
169         nxm1RegistryHelper.registerSerializer(TunnelIpv4Src.class, new NxmTunnelIpv4SrcSerializer());
170         nxm1RegistryHelper.registerSerializer(TcpFlag.class, new NxmTcpFlagSerializer());
171     }
172 }