+ .setCNextHop(new Ipv4NextHopCaseBuilder().setIpv4NextHop(new Ipv4NextHopBuilder().setGlobal(
+ new Ipv4AddressNoZone("127.0.0.1")).build()).build())
+ .build();
+ final ByteBuf buffer = Unpooled.buffer(mpReachBytes.length);
+ nlriReg.serializeMpReach(mpReach, buffer);
+ assertArrayEquals(mpReachBytes, buffer.array());
+ assertEquals(mpReach, nlriReg.parseMpReach(Unpooled.wrappedBuffer(mpReachBytes), CONSTRAINT));
+ verify(activator.nlriParser, times(1)).parseNlri(any(ByteBuf.class), any(MpReachNlriBuilder.class), any());
+ }
+
+ @Test
+ public void testMpReachWithZeroNextHop() throws BGPParsingException {
+ final NlriRegistry nlriReg = ctx.getNlriRegistry();
+ final byte[] mpReachBytes = {
+ 0x00, 0x01, 0x01, 0x00, 0x00
+ };
+ final MpReachNlri mpReach = new MpReachNlriBuilder()
+ .setAfi(Ipv4AddressFamily.class)
+ .setSafi(UnicastSubsequentAddressFamily.class)
+ .build();
+ final ByteBuf buffer = Unpooled.buffer(mpReachBytes.length);
+ nlriReg.serializeMpReach(mpReach, buffer);
+ assertArrayEquals(mpReachBytes, buffer.array());
+ assertEquals(mpReach, nlriReg.parseMpReach(Unpooled.wrappedBuffer(mpReachBytes), CONSTRAINT));
+ }
+
+ @Test
+ public void testMpReachIpv6() throws BGPParsingException {
+ final NlriRegistry nlriReg = ctx.getNlriRegistry();
+ final byte[] mpReachBytes = {
+ 0x00, 0x02, 0x01, 0x00, 0x00
+ };
+ final MpReachNlri mpReach = new MpReachNlriBuilder()
+ .setAfi(Ipv6AddressFamily.class)
+ .setSafi(UnicastSubsequentAddressFamily.class)