X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=bgp%2Flinkstate%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fprotocol%2Fbgp%2Flinkstate%2Fattribute%2FLinkAttributesParser.java;h=04eb63de455df428769940a040c23458a7c03781;hb=e4f0738f33ad5a5203434fe52b9949a38b458f7d;hp=0f74986d90235c6ca8d280db7a9890e185e06620;hpb=5194c42e9892b73ba24876ce2d7919913751fcb7;p=bgpcep.git diff --git a/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/attribute/LinkAttributesParser.java b/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/attribute/LinkAttributesParser.java index 0f74986d90..04eb63de45 100644 --- a/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/attribute/LinkAttributesParser.java +++ b/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/attribute/LinkAttributesParser.java @@ -7,6 +7,7 @@ */ package org.opendaylight.protocol.bgp.linkstate.attribute; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Charsets; import com.google.common.collect.Multimap; import io.netty.buffer.ByteBuf; @@ -14,11 +15,11 @@ import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; import java.util.ArrayList; import java.util.Arrays; -import java.util.BitSet; import java.util.List; import java.util.Map.Entry; import org.opendaylight.protocol.bgp.linkstate.attribute.sr.SrLinkAttributesParser; import org.opendaylight.protocol.bgp.linkstate.spi.TlvUtil; +import org.opendaylight.protocol.util.BitArray; import org.opendaylight.protocol.util.ByteArray; import org.opendaylight.protocol.util.Ipv4Util; import org.opendaylight.protocol.util.Ipv6Util; @@ -43,17 +44,24 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev import org.slf4j.Logger; import org.slf4j.LoggerFactory; -final class LinkAttributesParser { +@VisibleForTesting +public final class LinkAttributesParser { private static final Logger LOG = LoggerFactory.getLogger(LinkAttributesParser.class); + private LinkAttributesParser() { + throw new UnsupportedOperationException(); + } + private static final int UNRESERVED_BW_COUNT = 8; private static final int BANDWIDTH_LENGTH = 4; // MPLS protection mask bits - private static final int LDP_BIT = 7; - private static final int RSVP_BIT = 6; + private static final int FLAGS_SIZE = 8; + + private static final int LDP_BIT = 0; + private static final int RSVP_BIT = 1; /* Link Attribute TLVs */ private static final int REMOTE_IPV4_ROUTER_ID = 1030; @@ -141,7 +149,7 @@ final class LinkAttributesParser { LOG.debug("Parsed Link Protection Type {}", lpt); break; case MPLS_PROTOCOL: - final BitSet bits = BitSet.valueOf(ByteArray.readAllBytes(value)); + final BitArray bits = BitArray.valueOf(value, FLAGS_SIZE); builder.setMplsProtocol(new MplsProtocolMask(bits.get(LDP_BIT), bits.get(RSVP_BIT))); LOG.debug("Parsed MPLS Protocols: {}", builder.getMplsProtocol()); break; @@ -249,14 +257,10 @@ final class LinkAttributesParser { private static void serializeMplsProtocolMask(final MplsProtocolMask mplsProtocolMask, final ByteBuf byteAggregator ) { if (mplsProtocolMask != null) { final ByteBuf mplsProtocolMaskBuf = Unpooled.buffer(1); - final BitSet mask = new BitSet(Byte.SIZE); - if (mplsProtocolMask.isLdp() != null) { - mask.set(LDP_BIT, mplsProtocolMask.isLdp()); - } - if (mplsProtocolMask.isRsvpte() != null) { - mask.set(RSVP_BIT, mplsProtocolMask.isRsvpte()); - } - mplsProtocolMaskBuf.writeBytes(mask.toByteArray()); + final BitArray mask = new BitArray(FLAGS_SIZE); + mask.set(LDP_BIT, mplsProtocolMask.isLdp()); + mask.set(RSVP_BIT, mplsProtocolMask.isRsvpte()); + mask.toByteBuf(mplsProtocolMaskBuf); TlvUtil.writeTLV(MPLS_PROTOCOL, mplsProtocolMaskBuf, byteAggregator); } }