BUG-4381: flowspec next_hop length
[bgpcep.git] / bgp / parser-spi / src / test / java / org / opendaylight / protocol / bgp / parser / spi / pojo / SimpleRegistryTest.java
index 6b9f92902393e7b23007ffc1b4386a28bfac947b..8eeb0a9d80a00f1ecd071d2afaec5eaa10bebddd 100644 (file)
@@ -14,7 +14,6 @@ import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import org.junit.After;
@@ -39,6 +38,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mult
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.attributes.MpUnreachNlri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.attributes.MpUnreachNlriBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv6AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.Ipv4NextHopCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.ipv4.next.hop._case.Ipv4NextHopBuilder;
@@ -153,6 +153,38 @@ public class SimpleRegistryTest {
         verify(this.activator.nlriParser, times(1)).parseNlri(Mockito.any(ByteBuf.class), Mockito.any(MpReachNlriBuilder.class));
     }
 
+    @Test
+    public void testMpReachWithZeroNextHop() throws BGPParsingException {
+        final NlriRegistry nlriReg = this.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)));
+    }
+
+    @Test
+    public void testMpReachIpv6() throws BGPParsingException {
+        final NlriRegistry nlriReg = this.ctx.getNlriRegistry();
+        final byte[] mpReachBytes = {
+            0x00, 0x02, 0x01, 0x00, 0x00
+        };
+        final MpReachNlri mpReach = new MpReachNlriBuilder()
+            .setAfi(Ipv6AddressFamily.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)));
+    }
+
     @Test
     public void testMpUnReachParser() throws BGPParsingException {
         final NlriRegistry nlriReg = this.ctx.getNlriRegistry();