interface-flags; fix coverity error found in conversion 79/15579/2
authorNeale Ranns <nranns@cisco.com>
Mon, 29 Oct 2018 08:55:24 +0000 (01:55 -0700)
committerNeale Ranns <nranns@cisco.com>
Mon, 29 Oct 2018 10:38:31 +0000 (03:38 -0700)
Change-Id: I2eafac4ce810fe53454b729d81161ec80d036db7
Signed-off-by: Neale Ranns <nranns@cisco.com>
src/vnet/interface.c
src/vnet/interface.h

index dff1793..c882a83 100644 (file)
@@ -109,6 +109,17 @@ unserialize_vec_vnet_sw_hw_interface_state (serialize_main_t * m,
     }
 }
 
+static vnet_sw_interface_flags_t
+vnet_hw_interface_flags_to_sw (vnet_hw_interface_flags_t hwf)
+{
+  vnet_sw_interface_flags_t swf = VNET_SW_INTERFACE_FLAG_NONE;
+
+  if (hwf & VNET_HW_INTERFACE_FLAG_LINK_UP)
+    swf |= VNET_SW_INTERFACE_FLAG_ADMIN_UP;
+
+  return (swf);
+}
+
 void
 serialize_vnet_interface_state (serialize_main_t * m, va_list * va)
 {
@@ -150,7 +161,7 @@ serialize_vnet_interface_state (serialize_main_t * m, va_list * va)
       {
        vec_add2 (sts, st, 1);
        st->sw_hw_if_index = hif->hw_if_index;
-       st->flags = hif->flags;
+       st->flags = vnet_hw_interface_flags_to_sw(hif->flags);
       }
   }));
   /* *INDENT-ON* */
@@ -160,6 +171,17 @@ serialize_vnet_interface_state (serialize_main_t * m, va_list * va)
   vec_free (sts);
 }
 
+static vnet_hw_interface_flags_t
+vnet_sw_interface_flags_to_hw (vnet_sw_interface_flags_t swf)
+{
+  vnet_hw_interface_flags_t hwf = VNET_HW_INTERFACE_FLAG_NONE;
+
+  if (swf & VNET_SW_INTERFACE_FLAG_ADMIN_UP)
+    hwf |= VNET_HW_INTERFACE_FLAG_LINK_UP;
+
+  return (hwf);
+}
+
 void
 unserialize_vnet_interface_state (serialize_main_t * m, va_list * va)
 {
@@ -195,8 +217,11 @@ unserialize_vnet_interface_state (serialize_main_t * m, va_list * va)
 
   vec_unserialize (m, &sts, unserialize_vec_vnet_sw_hw_interface_state);
   vec_foreach (st, sts)
-    vnet_hw_interface_set_flags_helper (vnm, st->sw_hw_if_index, st->flags,
-                                       /* no distribute */ 0);
+  {
+    vnet_hw_interface_set_flags_helper
+      (vnm, st->sw_hw_if_index, vnet_sw_interface_flags_to_hw (st->flags),
+       /* no distribute */ 0);
+  }
   vec_free (sts);
 }
 
index 5c15d29..9be3870 100644 (file)
@@ -484,6 +484,7 @@ __VA_ARGS__ vnet_hw_interface_class_t x
 
 typedef enum vnet_hw_interface_flags_t_
 {
+  VNET_HW_INTERFACE_FLAG_NONE,
   /* Hardware link state is up. */
   VNET_HW_INTERFACE_FLAG_LINK_UP = (1 << 0),
   /* Hardware duplex state */
@@ -692,7 +693,7 @@ extern vnet_mtu_t vnet_link_to_mtu (vnet_link_t link);
 
 typedef enum vnet_sw_interface_flags_t_
 {
-  VNET_SW_INTERFACE_FLAG_ADMIN_NONE = 0,
+  VNET_SW_INTERFACE_FLAG_NONE = 0,
   /* Interface is "up" meaning administratively up.
      Up in the sense of link state being up is maintained by hardware interface. */
   VNET_SW_INTERFACE_FLAG_ADMIN_UP = (1 << 0),