/* * Copyright (c) 2016 Brocade Communications Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.openflowjava.protocol.impl.deserialization.match.ext; import io.netty.buffer.ByteBuf; import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer; import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.TcpFlags; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.TcpFlagsContainer; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.TcpFlagsContainerBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.oxm.container.match.entry.value.experimenter.id._case.TcpFlagsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.oxm.container.match.entry.value.ExperimenterIdCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ExperimenterClass; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder; /** * Created by Anil Vishnoi (avishnoi@Brocade.com) on 7/26/16. */ public class OnfOxmTcpFlagsDeserializer extends AbstractOxmExperimenterMatchEntryDeserializer implements OFDeserializer<MatchEntry> { @Override public MatchEntry deserialize(ByteBuf input) { MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder(deserializeHeader(input)); ExperimenterIdCaseBuilder expCaseBuilder = createExperimenterIdCase(matchEntryBuilder, input); addTcpFlagsAugmentation(input, expCaseBuilder, matchEntryBuilder.isHasMask()); matchEntryBuilder.setMatchEntryValue(expCaseBuilder.build()); return matchEntryBuilder.build(); } private static void addTcpFlagsAugmentation(ByteBuf input, ExperimenterIdCaseBuilder expCaseBuilder, boolean hasMask) { TcpFlagsContainerBuilder flagsContainerBuilder = new TcpFlagsContainerBuilder(); TcpFlagsBuilder flagsBuilder = new TcpFlagsBuilder(); flagsBuilder.setFlags(input.readUnsignedShort()); if (hasMask) { byte[] mask = new byte[EncodeConstants.SIZE_OF_SHORT_IN_BYTES]; input.readBytes(mask); flagsBuilder.setMask(mask); } flagsContainerBuilder.setTcpFlags(flagsBuilder.build()); expCaseBuilder.addAugmentation(TcpFlagsContainer.class, flagsContainerBuilder.build()); } /** * @return oxm_field class */ @Override protected Class<? extends MatchField> getOxmField() { return TcpFlags.class; } /** * @return oxm_class class */ @Override protected Class<? extends OxmClassBase> getOxmClass() { return ExperimenterClass.class; } }