gcc8 and Wstringop-truncation
[vpp.git] / src / vnet / devices / virtio / vhost-user.c
index 34b131c..f6406d4 100644 (file)
@@ -248,8 +248,8 @@ map_guest_mem (vhost_user_intf_t * vui, uword addr, u32 * hint)
   r = _mm_blend_epi16 (r, _mm_and_si128 (rl, rh), 0x88);
 
   r = _mm_shuffle_epi8 (r, _mm_set_epi64x (0, 0x0e060c040a020800));
-  i = __builtin_ctzll (_mm_movemask_epi8 (r) |
-                      (1 << VHOST_MEMORY_MAX_NREGIONS));
+  i = count_trailing_zeros (_mm_movemask_epi8 (r) |
+                           (1 << VHOST_MEMORY_MAX_NREGIONS));
 
   if (i < vui->nregions)
     {
@@ -275,7 +275,7 @@ map_guest_mem (vhost_user_intf_t * vui, uword addr, u32 * hint)
 
   if (u32)
     {
-      i = __builtin_ctzll (u32);
+      i = count_trailing_zeros (u32);
       goto vhost_map_guest_mem_done;
     }
 
@@ -290,7 +290,7 @@ map_guest_mem (vhost_user_intf_t * vui, uword addr, u32 * hint)
 
   if (u32)
     {
-      i = __builtin_ctzll (u32);
+      i = count_trailing_zeros (u32);
       goto vhost_map_guest_mem_done;
     }
 
@@ -305,7 +305,7 @@ map_guest_mem (vhost_user_intf_t * vui, uword addr, u32 * hint)
 
   if (u32)
     {
-      i = __builtin_ctzll (u32);
+      i = count_trailing_zeros (u32);
       goto vhost_map_guest_mem_done;
     }
 
@@ -318,7 +318,7 @@ map_guest_mem (vhost_user_intf_t * vui, uword addr, u32 * hint)
   u32 |= ((vgetq_lane_u8 (vreinterpretq_u8_u64 (r), 0) & 0x1) << 6);
   u32 |= ((vgetq_lane_u8 (vreinterpretq_u8_u64 (r), 8) & 0x1) << 7);
 
-  i = __builtin_ctzll (u32 | (1 << VHOST_MEMORY_MAX_NREGIONS));
+  i = count_trailing_zeros (u32 | (1 << VHOST_MEMORY_MAX_NREGIONS));
 
 vhost_map_guest_mem_done:
   if (i < vui->nregions)
@@ -2548,16 +2548,14 @@ vhost_user_interface_admin_up_down (vnet_main_t * vnm, u32 hw_if_index,
                                    u32 flags)
 {
   vnet_hw_interface_t *hif = vnet_get_hw_interface (vnm, hw_if_index);
-  uword is_up = (flags & VNET_SW_INTERFACE_FLAG_ADMIN_UP) != 0;
   vhost_user_main_t *vum = &vhost_user_main;
   vhost_user_intf_t *vui =
     pool_elt_at_index (vum->vhost_user_interfaces, hif->dev_instance);
+  u32 hw_flags = 0;
+  vui->admin_up = (flags & VNET_SW_INTERFACE_FLAG_ADMIN_UP) != 0;
+  hw_flags = vui->admin_up ? VNET_HW_INTERFACE_FLAG_LINK_UP : 0;
 
-  vui->admin_up = is_up;
-
-  if (is_up && vui->is_up)
-    vnet_hw_interface_set_flags (vnm, vui->hw_if_index,
-                                VNET_HW_INTERFACE_FLAG_LINK_UP);
+  vnet_hw_interface_set_flags (vnm, vui->hw_if_index, hw_flags);
 
   return /* no error */ 0;
 }
@@ -2869,8 +2867,7 @@ vhost_user_create_ethernet (vnet_main_t * vnm, vlib_main_t * vm,
   if (error)
     clib_error_report (error);
 
-  vnet_sw_interface_t *si = vnet_get_hw_sw_interface (vnm, vui->hw_if_index);
-  vnet_sw_interface_set_mtu (vnm, si->sw_if_index, 9000);
+  vnet_sw_interface_set_mtu (vnm, vui->sw_if_index, 9000);
 }
 
 /*
@@ -3191,8 +3188,8 @@ vhost_user_dump_ifs (vnet_main_t * vnm, vlib_main_t * vm,
       vuid->is_server = vui->unix_server_index != ~0;
       vuid->sock_errno = vui->sock_errno;
       strncpy ((char *) vuid->sock_filename, (char *) vui->sock_filename,
-              ARRAY_LEN (vuid->sock_filename) - 1);
-
+              sizeof (vuid->sock_filename));
+      vuid->sock_filename[ARRAY_LEN (vuid->sock_filename) - 1] = '\0';
       s = format (s, "%v%c", hi->name, 0);
 
       strncpy ((char *) vuid->if_name, (char *) s,
@@ -3253,6 +3250,13 @@ show_vhost_user_command_fn (vlib_main_t * vm,
       if (unformat
          (input, "%U", unformat_vnet_hw_interface, vnm, &hw_if_index))
        {
+         hi = vnet_get_hw_interface (vnm, hw_if_index);
+         if (vhost_user_dev_class.index != hi->dev_class_index)
+           {
+             error = clib_error_return (0, "unknown input `%U'",
+                                        format_unformat_error, input);
+             goto done;
+           }
          vec_add1 (hw_if_indices, hw_if_index);
        }
       else if (unformat (input, "descriptors") || unformat (input, "desc"))