use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev171207.path.attributes.attributes.Aggregator in project bgpcep by opendaylight.
the class AbstractBmpPerPeerMessageParserTest method testPerPeerHeader.
@Test
public void testPerPeerHeader() {
final byte[] msgBytes = { (byte) 0x00, (byte) 0x40, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, // IPV4 192.168.1.1
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xC0, (byte) 0xA8, (byte) 0x01, (byte) 0x01, // AS 168
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xA8, // Peer BGP ID 1.1.1.1
(byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0x01, // Timestamp
(byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04 };
final PeerHeader perHeader = AbstractBmpPerPeerMessageParser.parsePerPeerHeader(Unpooled.wrappedBuffer(msgBytes));
final PeerHeaderBuilder phBuilder = new PeerHeaderBuilder();
phBuilder.setType(PeerType.forValue(0));
phBuilder.setAdjRibInType(AdjRibInType.forValue(1));
phBuilder.setIpv4(true);
phBuilder.setAddress(new IpAddress(new Ipv4Address("192.168.1.1")));
phBuilder.setAs(new AsNumber(168L));
phBuilder.setBgpId(new Ipv4Address("1.1.1.1"));
phBuilder.setTimestampSec(new Timestamp(16909060L));
phBuilder.setTimestampMicro(new Timestamp(16909060L));
assertEquals(perHeader, phBuilder.build());
final ByteBuf aggregator = Unpooled.buffer();
this.parser.serializePerPeerHeader(perHeader, aggregator);
assertArrayEquals(msgBytes, ByteArray.getAllBytes(aggregator));
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev171207.path.attributes.attributes.Aggregator in project bgpcep by opendaylight.
the class AbstractBmpPerPeerMessageParserTest method testSerializeMessageBody.
@Test
public void testSerializeMessageBody() {
final PeerHeader perHeader = AbstractBmpPerPeerMessageParser.parsePerPeerHeader(Unpooled.wrappedBuffer(this.ipv6MsgWithDistinguishergBytes));
final PeerUpNotification peerNotif = new PeerUpNotificationBuilder().setPeerHeader(perHeader).build();
final ByteBuf aggregator = Unpooled.buffer();
this.parser.serializeMessageBody(peerNotif, aggregator);
assertArrayEquals(this.ipv6MsgWithDistinguishergBytes, ByteArray.getAllBytes(aggregator));
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev171207.path.attributes.attributes.Aggregator in project bgpcep by opendaylight.
the class BGPParserTest method testGetUpdateMessage3.
/*
* Tests more AS Numbers in AS_PATH, AGGREGATOR, ORIGIN.INCOMPLETE
*
* ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff <- marker
* 00 4b <- length (75) - including header
* 02 <- message type
* 00 00 <- withdrawn routes length
* 00 30 <- total path attribute length (48)
* 40 <- attribute flags
* 01 <- attribute type code (origin)
* 01 <- attribute length
* 02 <- Origin value (Incomplete)
* 40 <- attribute flags
* 02 <- attribute type code (as path)
* 10 <- attribute length
* 02 <- AS_SEQUENCE
* 01 <- path segment count
* 00 00 00 1e <- path segment value (30)
* 01 <- AS_SET
* 02 <- path segment count
* 00 00 00 0a <- path segment value (10)
* 00 00 00 14 <- path segment value (20)
* 40 <- attribute flags
* 03 <- attribute type (Next hop)
* 04 <- attribute length
* 0a 00 00 09 <- value (10.0.0.9)
* 80 <- attribute flags
* 04 <- attribute type code (multi exit disc)
* 04 <- attribute length
* 00 00 00 00 <- value
* c0 <- attribute flags
* 07 <- attribute type (Aggregator)
* 08 <- attribute length
* 00 00 00 1e <- value (AS number = 30)
* 0a 00 00 09 <- value (IP address = 10.0.0.9)
*
* //NLRI
* 15 ac 10 00 <- IPv4 Prefix (172.16.0.0 / 21)
*/
@Test
public void testGetUpdateMessage3() throws Exception {
final byte[] body = ByteArray.cutBytes(inputBytes.get(2), MessageUtil.COMMON_HEADER_LENGTH);
final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(inputBytes.get(2), MessageUtil.MARKER_LENGTH, LENGTH_FIELD_LENGTH));
final Update message = BGPParserTest.updateParser.parseMessageBody(Unpooled.copiedBuffer(body), messageLength);
final UpdateBuilder builder = new UpdateBuilder();
// check nlri
final List<Nlri> nlris = Lists.newArrayList(new NlriBuilder().setPrefix(new Ipv4Prefix("172.16.0.0/21")).build());
builder.setNlri(nlris);
assertEquals(builder.getNlri(), message.getNlri());
// check fields
assertNull(message.getWithdrawnRoutes());
// attributes
final List<AsNumber> asNumbers = new ArrayList<>();
asNumbers.add(new AsNumber(30L));
final List<Segments> asPath = Lists.newArrayList();
asPath.add(new SegmentsBuilder().setAsSequence(asNumbers).build());
final List<AsNumber> asSet = Lists.newArrayList(new AsNumber(10L), new AsNumber(20L));
asPath.add(new SegmentsBuilder().setAsSet(asSet).build());
final Aggregator aggregator = new AggregatorBuilder().setAsNumber(new AsNumber((long) 30)).setNetworkAddress(new Ipv4Address("10.0.0.9")).build();
final Ipv4NextHopCase nextHop = new Ipv4NextHopCaseBuilder().setIpv4NextHop(new Ipv4NextHopBuilder().setGlobal(new Ipv4Address("10.0.0.9")).build()).build();
// check path attributes
final Attributes attrs = message.getAttributes();
final AttributesBuilder paBuilder = new AttributesBuilder();
paBuilder.setOrigin(new OriginBuilder().setValue(BgpOrigin.Incomplete).build());
assertEquals(paBuilder.getOrigin(), attrs.getOrigin());
paBuilder.setAsPath(new AsPathBuilder().setSegments(asPath).build());
assertEquals(paBuilder.getAsPath(), attrs.getAsPath());
paBuilder.setCNextHop(nextHop);
assertEquals(paBuilder.getCNextHop(), attrs.getCNextHop());
paBuilder.setMultiExitDisc(new MultiExitDiscBuilder().setMed((long) 0).build());
assertEquals(paBuilder.getMultiExitDisc(), attrs.getMultiExitDisc());
paBuilder.setAggregator(aggregator);
assertEquals(paBuilder.getAggregator(), attrs.getAggregator());
paBuilder.setUnrecognizedAttributes(Collections.emptyList());
builder.setAttributes(paBuilder.build());
assertEquals(builder.build(), message);
final ByteBuf buffer = Unpooled.buffer();
BGPParserTest.updateParser.serializeMessage(message, buffer);
assertArrayEquals(inputBytes.get(2), ByteArray.readAllBytes(buffer));
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev171207.path.attributes.attributes.Aggregator in project bgpcep by opendaylight.
the class AggregatorAttributeParser method parseAttribute.
/**
* Parse {@link Aggregator} from bytes
*
* @param buffer byte buffer to be parsed
* @param builder AttributesBuilder into which parsed {@link Aggregator} will be set
*/
@Override
public void parseAttribute(final ByteBuf buffer, final AttributesBuilder builder) {
final AsNumber asNumber = this.refCache.getSharedReference(new AsNumber(buffer.readUnsignedInt()));
final Ipv4Address address = Ipv4Util.addressForByteBuf(buffer);
builder.setAggregator(new AggregatorBuilder().setAsNumber(asNumber).setNetworkAddress(address).build());
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev171207.path.attributes.attributes.Aggregator in project bgpcep by opendaylight.
the class RangeTlvParser method serializeSubTlvs.
private static void serializeSubTlvs(final ByteBuf aggregator, final List<SubTlvs> subTlvs) {
for (final SubTlvs subTlv : subTlvs) {
ByteBuf buffer = Unpooled.buffer();
final RangeSubTlv rangeSubTlv = subTlv.getRangeSubTlv();
if (rangeSubTlv instanceof PrefixSidTlvCase) {
final PrefixSidTlvCase prefixSidTlv = (PrefixSidTlvCase) rangeSubTlv;
SrPrefixAttributesParser.serializePrefixAttributes(prefixSidTlv.getFlags(), prefixSidTlv.getAlgorithm(), prefixSidTlv.getSidLabelIndex(), buffer);
TlvUtil.writeTLV(PREFIX_SID, buffer, aggregator);
} else if (rangeSubTlv instanceof Ipv6PrefixSidTlvCase) {
final Ipv6PrefixSidTlvCase prefixSidTlv = (Ipv6PrefixSidTlvCase) rangeSubTlv;
Ipv6SrPrefixAttributesParser.serializePrefixAttributes(prefixSidTlv.getAlgorithm(), buffer);
TlvUtil.writeTLV(IPV6_PREFIX_SID, buffer, aggregator);
} else if (rangeSubTlv instanceof BindingSidTlvCase) {
final BindingSidTlvCase rangeTlv = (BindingSidTlvCase) rangeSubTlv;
BindingSidLabelParser.serializeBindingSidAttributes(rangeTlv.getWeight(), rangeTlv.getFlags(), rangeTlv.getBindingSubTlvs(), buffer);
TlvUtil.writeTLV(BINDING_SID, buffer, aggregator);
} else if (rangeSubTlv instanceof SidLabelTlvCase) {
buffer = SidLabelIndexParser.serializeSidValue(((SidLabelTlvCase) rangeSubTlv).getSidLabelIndex());
TlvUtil.writeTLV(SID_TYPE, buffer, aggregator);
}
}
}
Aggregations