use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.originator.srgb.tlv.SrgbValue in project bgpcep by opendaylight.
the class OriginatorSrgbTlvParser method parseSrgbs.
private static List<SrgbValue> parseSrgbs(final ByteBuf buffer) {
checkState(buffer.readableBytes() % SRGB_LENGTH == 0, "Number of SRGBs does not fit available bytes.");
final List<SrgbValue> ret = new ArrayList<>();
while (buffer.isReadable()) {
ret.add(new SrgbValueBuilder().setBase(new Srgb(readUint24(buffer))).setRange(new Srgb(readUint24(buffer))).build());
}
return ret;
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.originator.srgb.tlv.SrgbValue in project bgpcep by opendaylight.
the class BgpPrefixSidTlvsTest method testOriginatorParser.
@Test
public void testOriginatorParser() {
final OriginatorSrgbTlvParser parser = new OriginatorSrgbTlvParser();
final List<SrgbValue> list = new ArrayList<>();
final Srgb srgb1 = new Srgb(Uint32.ONE);
final Srgb srgb2 = new Srgb(Uint32.TWO);
list.add(new SrgbValueBuilder().setBase(srgb1).setRange(srgb2).build());
list.add(new SrgbValueBuilder().setBase(srgb2).setRange(srgb1).build());
final LuOriginatorSrgbTlv tlv = new LuOriginatorSrgbTlvBuilder().setSrgbValue(list).build();
final ByteBuf serialized = Unpooled.buffer(14);
parser.serializeBgpPrefixSidTlv(tlv, serialized);
final byte[] expected = new byte[] { 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 2, 0, 0, 1 };
assertArrayEquals(expected, serialized.array());
final LuOriginatorSrgbTlv parsed = parser.parseBgpPrefixSidTlv(serialized);
assertEquals(tlv.getSrgbValue().size(), parsed.getSrgbValue().size());
assertEquals(tlv.getSrgbValue().get(0).getBase(), srgb1);
assertEquals(tlv.getSrgbValue().get(0).getRange(), srgb2);
assertEquals(tlv.getSrgbValue().get(1).getBase(), srgb2);
assertEquals(tlv.getSrgbValue().get(1).getRange(), srgb1);
assertEquals(3, parser.getType());
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.originator.srgb.tlv.SrgbValue in project bgpcep by opendaylight.
the class OriginatorSrgbTlvParser method serializeBgpPrefixSidTlv.
@Override
public void serializeBgpPrefixSidTlv(final BgpPrefixSidTlv tlv, final ByteBuf valueBuf) {
checkArgument(tlv instanceof LuOriginatorSrgbTlv, "Incoming TLV is not LuOriginatorSrgbTlv");
final LuOriginatorSrgbTlv luTlv = (LuOriginatorSrgbTlv) tlv;
valueBuf.writeZero(ORIGINATOR_FLAGS_BYTES);
for (final SrgbValue val : luTlv.nonnullSrgbValue()) {
writeUint24(valueBuf, val.getBase());
writeUint24(valueBuf, val.getRange());
}
}
Aggregations