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