use of org.opendaylight.protocol.bgp.parser.spi.pojo.PeerSpecificParserConstraintImpl in project bgpcep by opendaylight.
the class BGPParserTest method testParseUpdateMessageWithMalformedAttributes.
/*
* Tests withdrawn routes with malformed attribute.
*
* ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff <- marker
* 00 36 <- length (54) - including header
* 02 <- message type
* 00 00 <- withdrawn routes length
* 00 1b <- total path attribute length (27)
* 40 <- attribute flags
* 01 <- attribute type code (origin)
* 01 <- WRONG attribute length
* 00 <- Origin value (IGP)
* 40 <- attribute flags
* 03 <- attribute type code (Next Hop)
* 04 <- attribute length
* 0a 00 00 02 <- value (10.0.0.2)
* 40 <- attribute flags
* 0e <- attribute type code (MP_REACH)
* 0d <- attribute length
* 00 01 <- AFI (Ipv4)
* 01 <- SAFI (Unicast)
* 04 <- next hop length
* ff ff ff ff <- next hop
* 00 <- reserved
* 18 <- length
* 0a 00 01 <- prefix (10.0.1.0)
* //NLRI
* 18 <- length
* 0a 00 02 <- prefix (10.0.2.0)
*/
@Test
public void testParseUpdateMessageWithMalformedAttributes() throws Exception {
final PeerSpecificParserConstraintImpl constraint = new PeerSpecificParserConstraintImpl();
constraint.addPeerConstraint(RevisedErrorHandlingSupport.class, RevisedErrorHandlingSupportImpl.forExternalPeer());
final Update message = (Update) messageRegistry.parseMessage(Unpooled.wrappedBuffer(input.get(0)), constraint);
assertNotNull(message);
assertNull(message.getNlri());
final List<WithdrawnRoutes> withdrawnRoutes = message.getWithdrawnRoutes();
assertNotNull(withdrawnRoutes);
assertEquals(1, withdrawnRoutes.size());
final Attributes attributes = message.getAttributes();
assertNotNull(attributes);
assertNull(attributes.augmentation(AttributesReach.class));
final AttributesUnreach AttributesUnreach = attributes.augmentation(AttributesUnreach.class);
assertNotNull(AttributesUnreach);
final MpUnreachNlri mpUnreachNlri = AttributesUnreach.getMpUnreachNlri();
assertNotNull(mpUnreachNlri);
}
use of org.opendaylight.protocol.bgp.parser.spi.pojo.PeerSpecificParserConstraintImpl in project bgpcep by opendaylight.
the class BGPParserTest method testUpdateMessageWithMalformedAttribute.
/*
* Tests withdrawn routes with malformed attribute.
*
* ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff <- marker
* 00 35 <- length (53) - including header
* 02 <- message type
* 00 00 <- withdrawn routes length
* 00 1a <- total path attribute length (26)
* 40 <- attribute flags
* 01 <- attribute type code (origin)
* 02 <- WRONG attribute length
* 00 <- Origin value (IGP)
* 40 <- attribute flags
* 03 <- attribute type code (Next Hop)
* 04 <- attribute length
* 0a 00 00 02 <- value (10.0.0.2)
* 40 <- attribute flags
* 0e <- attribute type code (MP_REACH)
* 00 01 <- AFI (Ipv4)
* 01 <- SAFI (Unicast)
* 04 <- next hop length
* ff ff ff ff <- next hop
* 00 <- reserved
* 18 <- length
* 0a 00 01 <- prefix (10.0.1.0)
* //NLRI
* 18 <- length
* 0a 00 02 <- prefix (10.0.2.0)
*/
@Test
public void testUpdateMessageWithMalformedAttribute() throws BGPDocumentedException {
final byte[] body = ByteArray.cutBytes(INPUT_BYTES.get(7), MessageUtil.COMMON_HEADER_LENGTH);
final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(INPUT_BYTES.get(6), MessageUtil.MARKER_LENGTH, LENGTH_FIELD_LENGTH));
final PeerSpecificParserConstraintImpl constraint = new PeerSpecificParserConstraintImpl();
constraint.addPeerConstraint(RevisedErrorHandlingSupport.class, RevisedErrorHandlingSupportImpl.forExternalPeer());
final Update message = BGPParserTest.updateParser.parseMessageBody(Unpooled.copiedBuffer(body), messageLength, constraint);
assertNotNull(message);
assertNull(message.getNlri());
final List<WithdrawnRoutes> withdrawnRoutes = message.getWithdrawnRoutes();
assertNotNull(withdrawnRoutes);
assertEquals(1, withdrawnRoutes.size());
}
Aggregations