X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=bgp%2Fparser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fprotocol%2Fbgp%2Fparser%2Fimpl%2Fmessage%2Fupdate%2FMultiExitDiscriminatorAttributeParser.java;h=201490a9776f2fa37f412672b9e843315101207f;hb=refs%2Fchanges%2F17%2F7517%2F20;hp=bd0db5acfd76df31f0ffd333d943a289c04372bb;hpb=c55a210ae10488e4cda316018577ead2a41461a9;p=bgpcep.git diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/update/MultiExitDiscriminatorAttributeParser.java b/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/update/MultiExitDiscriminatorAttributeParser.java index bd0db5acfd..201490a977 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/update/MultiExitDiscriminatorAttributeParser.java +++ b/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/update/MultiExitDiscriminatorAttributeParser.java @@ -7,16 +7,36 @@ */ package org.opendaylight.protocol.bgp.parser.impl.message.update; +import io.netty.buffer.ByteBuf; +import org.opendaylight.protocol.bgp.parser.AttributeFlags; import org.opendaylight.protocol.bgp.parser.spi.AttributeParser; -import org.opendaylight.protocol.util.ByteArray; +import org.opendaylight.protocol.bgp.parser.spi.AttributeSerializer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.PathAttributes; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.MultiExitDisc; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.MultiExitDiscBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.PathAttributesBuilder; +import org.opendaylight.yangtools.yang.binding.DataObject; -public final class MultiExitDiscriminatorAttributeParser implements AttributeParser { - public static final int TYPE = 4; +public final class MultiExitDiscriminatorAttributeParser implements AttributeParser, AttributeSerializer { - @Override - public void parseAttribute(final byte[] bytes, final PathAttributesBuilder builder) { - builder.setMultiExitDisc(new MultiExitDiscBuilder().setMed(ByteArray.bytesToLong(bytes)).build()); - } -} \ No newline at end of file + public static final int TYPE = 4; + public static final int ATTR_LENGTH = 4; + + @Override + public void parseAttribute(final ByteBuf buffer, final PathAttributesBuilder builder) { + builder.setMultiExitDisc(new MultiExitDiscBuilder().setMed(buffer.readUnsignedInt()).build()); + } + + @Override + public void serializeAttribute(DataObject attribute, ByteBuf byteAggregator) { + PathAttributes pathAttributes = (PathAttributes) attribute; + MultiExitDisc multiExitDisc = pathAttributes.getMultiExitDisc(); + if (multiExitDisc == null) { + return; + } + byteAggregator.writeByte(AttributeFlags.OPTIONAL); + byteAggregator.writeByte(TYPE); + byteAggregator.writeByte(ATTR_LENGTH); + byteAggregator.writeInt(multiExitDisc.getMed().intValue()); + } +}