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