aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/vnet/interface.c31
-rw-r--r--src/vnet/interface.h3
2 files changed, 30 insertions, 4 deletions
diff --git a/src/vnet/interface.c b/src/vnet/interface.c
index dff1793712a..c882a8381b7 100644
--- a/src/vnet/interface.c
+++ b/src/vnet/interface.c
@@ -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);
}
diff --git a/src/vnet/interface.h b/src/vnet/interface.h
index 5c15d29f453..9be38709020 100644
--- a/src/vnet/interface.h
+++ b/src/vnet/interface.h
@@ -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),