MFIB-API: when programming an (S,G) fix the grp-len 46/15146/2
authorNeale Ranns <neale.ranns@cisco.com>
Thu, 4 Oct 2018 15:36:56 +0000 (08:36 -0700)
committerDave Barach <openvpp@barachs.net>
Thu, 4 Oct 2018 17:50:59 +0000 (17:50 +0000)
Change-Id: I97052d29080501de53fe95499c860faf0765e81d
Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
src/vnet/ip/ip_api.c
test/test_ip_mcast.py

index b0a7e82..91832a0 100644 (file)
@@ -1298,6 +1298,8 @@ api_mroute_add_del_t_handler (vl_api_ip_mroute_add_del_t * mp,
                   sizeof (pfx.fp_src_addr.ip4));
       memset (&nh.ip6, 0, sizeof (nh.ip6));
       clib_memcpy (&nh.ip4, mp->nh_address, sizeof (nh.ip4));
+      if (!ip46_address_is_zero (&pfx.fp_src_addr))
+       pfx.fp_len = 64;
     }
   else
     {
@@ -1306,6 +1308,8 @@ api_mroute_add_del_t_handler (vl_api_ip_mroute_add_del_t * mp,
       clib_memcpy (&pfx.fp_src_addr.ip6, mp->src_address,
                   sizeof (pfx.fp_src_addr.ip6));
       clib_memcpy (&nh.ip6, mp->nh_address, sizeof (nh.ip6));
+      if (!ip46_address_is_zero (&pfx.fp_src_addr))
+       pfx.fp_len = 256;
     }
 
   mfib_entry_index = mroute_add_del_handler (mp->is_add,
index 1a39e9a..cca4f80 100644 (file)
@@ -217,7 +217,7 @@ class TestIPMcast(VppTestCase):
         route_1_1_1_1_232_1_1_1 = VppIpMRoute(
             self,
             "1.1.1.1",
-            "232.1.1.1", 64,
+            "232.1.1.1", 27,  # any grp-len is ok when src is set
             MRouteEntryFlags.MFIB_ENTRY_FLAG_NONE,
             [VppMRoutePath(self.pg0.sw_if_index,
                            MRouteItfFlags.MFIB_ITF_FLAG_ACCEPT),
@@ -425,7 +425,7 @@ class TestIPMcast(VppTestCase):
         route_2001_ff01_1 = VppIpMRoute(
             self,
             "2001::1",
-            "ff01::1", 256,
+            "ff01::1", 0,  # any grp-len is ok when src is set
             MRouteEntryFlags.MFIB_ENTRY_FLAG_NONE,
             [VppMRoutePath(self.pg0.sw_if_index,
                            MRouteItfFlags.MFIB_ITF_FLAG_ACCEPT,