}
}
+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)
{
{
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* */
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)
{
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);
}
(helper_flags & VNET_INTERFACE_SET_FLAGS_HELPER_IS_CREATE) != 0;
mask =
- (VNET_HW_INTERFACE_FLAG_LINK_UP | VNET_HW_INTERFACE_FLAG_DUPLEX_MASK |
- VNET_HW_INTERFACE_FLAG_SPEED_MASK);
+ (VNET_HW_INTERFACE_FLAG_LINK_UP | VNET_HW_INTERFACE_FLAG_DUPLEX_MASK);
flags &= mask;
/* Call hardware interface add/del callbacks. */
static clib_error_t *
vnet_hw_interface_change_mac_address_helper (vnet_main_t * vnm,
u32 hw_if_index,
- u8 * mac_address)
+ const u8 * mac_address)
{
clib_error_t *error = 0;
vnet_hw_interface_t *hi = vnet_get_hw_interface (vnm, hw_if_index);
clib_error_t *
vnet_hw_interface_change_mac_address (vnet_main_t * vnm, u32 hw_if_index,
- u8 * mac_address)
+ const u8 * mac_address)
{
return vnet_hw_interface_change_mac_address_helper
(vnm, hw_if_index, mac_address);