ip: set ip4 mask for ip_copy and ip_set when dealing with ip4 type 26/27626/5
authorjiangxiaoming <jiangxiaoming@outlook.com>
Mon, 22 Jun 2020 01:06:16 +0000 (09:06 +0800)
committerNeale Ranns <nranns@cisco.com>
Mon, 6 Jul 2020 08:42:14 +0000 (08:42 +0000)
Type: fix

Signed-off-by: jiangxiaoming <jiangxiaoming@outlook.com>
Change-Id: I3ace7dfe3ddacb4f7fa7a974a2ffe2b3cf902ff9

src/vnet/ip/ip.c

index 38e53fd..bceb529 100644 (file)
@@ -81,7 +81,10 @@ void
 ip_copy (ip46_address_t * dst, ip46_address_t * src, u8 is_ip4)
 {
   if (is_ip4)
-    dst->ip4.as_u32 = src->ip4.as_u32;
+    {
+      ip46_address_mask_ip4 (dst);
+      dst->ip4.as_u32 = src->ip4.as_u32;
+    }
   else
     clib_memcpy_fast (&dst->ip6, &src->ip6, sizeof (ip6_address_t));
 }
@@ -90,7 +93,10 @@ void
 ip_set (ip46_address_t * dst, void *src, u8 is_ip4)
 {
   if (is_ip4)
-    dst->ip4.as_u32 = ((ip4_address_t *) src)->as_u32;
+    {
+      ip46_address_mask_ip4 (dst);
+      dst->ip4.as_u32 = ((ip4_address_t *) src)->as_u32;
+    }
   else
     clib_memcpy_fast (&dst->ip6, (ip6_address_t *) src,
                      sizeof (ip6_address_t));