2 * Copyright (c) 2016 Brocade Communications Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.openflowjava.protocol.impl.deserialization.match.ext;
10 import io.netty.buffer.ByteBuf;
11 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
12 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.TcpFlags;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.TcpFlagsContainer;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.TcpFlagsContainerBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.oxm.container.match.entry.value.experimenter.id._case.TcpFlagsBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.oxm.container.match.entry.value.ExperimenterIdCaseBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ExperimenterClass;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder;
25 * Created by Anil Vishnoi (avishnoi@Brocade.com) on 7/26/16.
27 public class OnfOxmTcpFlagsDeserializer extends AbstractOxmExperimenterMatchEntryDeserializer
28 implements OFDeserializer<MatchEntry> {
31 public MatchEntry deserialize(ByteBuf input) {
32 MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder(deserializeHeader(input));
33 ExperimenterIdCaseBuilder expCaseBuilder = createExperimenterIdCase(matchEntryBuilder, input);
34 addTcpFlagsAugmentation(input, expCaseBuilder, matchEntryBuilder.isHasMask());
35 matchEntryBuilder.setMatchEntryValue(expCaseBuilder.build());
36 return matchEntryBuilder.build();
40 private static void addTcpFlagsAugmentation(ByteBuf input, ExperimenterIdCaseBuilder expCaseBuilder, boolean hasMask) {
41 TcpFlagsContainerBuilder flagsContainerBuilder = new TcpFlagsContainerBuilder();
42 TcpFlagsBuilder flagsBuilder = new TcpFlagsBuilder();
43 flagsBuilder.setFlags(input.readUnsignedShort());
45 byte[] mask = new byte[EncodeConstants.SIZE_OF_SHORT_IN_BYTES];
46 input.readBytes(mask);
47 flagsBuilder.setMask(mask);
49 flagsContainerBuilder.setTcpFlags(flagsBuilder.build());
50 expCaseBuilder.addAugmentation(TcpFlagsContainer.class, flagsContainerBuilder.build());
54 * @return oxm_field class
57 protected Class<? extends MatchField> getOxmField() {
58 return TcpFlags.class;
62 * @return oxm_class class
65 protected Class<? extends OxmClassBase> getOxmClass() {
66 return ExperimenterClass.class;