Merge "Fixing OF Multipart messages 1) So we have a MultipartRequestDesc message...
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / util / OF10MatchSerializer.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
2 package org.opendaylight.openflowjava.protocol.impl.util;\r
3 \r
4 import io.netty.buffer.ByteBuf;\r
5 \r
6 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.v10.grouping.MatchV10;\r
7 \r
8 /**\r
9  * Serializes ofp_match (OpenFlow v1.0) structure\r
10  * @author michal.polkorab\r
11  */\r
12 public abstract class OF10MatchSerializer {\r
13 \r
14     private static final byte PADDING_IN_MATCH = 1;\r
15     private static final byte PADDING_IN_MATCH_2 = 2;\r
16     \r
17     /**\r
18      * Encodes ofp_match (OpenFlow v1.0)\r
19      * @param out output ByteBuf that match will be written into\r
20      * @param match match to be encoded\r
21      */\r
22     public static void encodeMatchV10(ByteBuf out, MatchV10 match) {\r
23         out.writeInt(match.getWildcards().intValue());\r
24         out.writeShort(match.getInPort());\r
25         out.writeBytes(match.getDlSrc().getValue().getBytes());\r
26         out.writeBytes(match.getDlDst().getValue().getBytes());\r
27         out.writeShort(match.getDlVlan());\r
28         out.writeByte(match.getDlVlanPcp());\r
29         ByteBufUtils.padBuffer(PADDING_IN_MATCH, out);\r
30         out.writeShort(match.getDlType());\r
31         out.writeByte(match.getNwTos());\r
32         out.writeByte(match.getNwProto());\r
33         ByteBufUtils.padBuffer(PADDING_IN_MATCH_2, out);\r
34         String[] srcGroups = match.getNwSrc().getValue().split(".");\r
35         for (int i = 0; i < srcGroups.length; i++) {\r
36             out.writeByte(Integer.parseInt(srcGroups[i]));\r
37         }\r
38         String[] dstGroups = match.getNwSrc().getValue().split(".");\r
39         for (int i = 0; i < dstGroups.length; i++) {\r
40             out.writeByte(Integer.parseInt(dstGroups[i]));\r
41         }\r
42         out.writeShort(match.getTpSrc());\r
43         out.writeShort(match.getTpDst());\r
44     }\r
45     \r
46 }\r