X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Finterface.c;h=37f27ea49ea60648576a391ca632138bed15884c;hb=5100aa9cb;hp=dff1793712ac85ba9c2f1f3e5730c14de1b5c975;hpb=6e43e0680fc21c6a986289cec4406c3624d3bbe6;p=vpp.git diff --git a/src/vnet/interface.c b/src/vnet/interface.c index dff1793712a..37f27ea49ea 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); } @@ -280,8 +305,7 @@ vnet_hw_interface_set_flags_helper (vnet_main_t * vnm, u32 hw_if_index, (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. */ @@ -1388,7 +1412,7 @@ vnet_rename_interface (vnet_main_t * vnm, u32 hw_if_index, char *new_name) 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); @@ -1433,7 +1457,7 @@ vnet_hw_interface_change_mac_address_helper (vnet_main_t * vnm, 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);