-static void
-serialize_vnet_sw_hw_interface_set_flags (serialize_main_t * m, va_list * va)
-{
- vnet_sw_hw_interface_state_t *s =
- va_arg (*va, vnet_sw_hw_interface_state_t *);
- serialize (m, serialize_vec_vnet_sw_hw_interface_state, s, 1);
-}
-
-static void
-unserialize_vnet_sw_interface_set_flags (serialize_main_t * m, va_list * va)
-{
- CLIB_UNUSED (mc_main_t * mc) = va_arg (*va, mc_main_t *);
- vnet_sw_hw_interface_state_t s;
-
- unserialize (m, unserialize_vec_vnet_sw_hw_interface_state, &s, 1);
-
- vnet_sw_interface_set_flags_helper
- (vnet_get_main (), s.sw_hw_if_index, s.flags,
- /* helper_flags no redistribution */ 0);
-}
-
-static void
-vnet_sw_interface_set_mtu_cb (vnet_main_t * vnm, u32 sw_if_index, void *ctx)
-{
- u32 *mtu = ctx;
- vnet_sw_interface_t *si = vnet_get_sw_interface (vnm, sw_if_index);
- ASSERT (si);
-
- si->max_l3_packet_bytes[VLIB_TX] = si->max_l3_packet_bytes[VLIB_RX] = *mtu;
- adj_mtu_update (sw_if_index);
-}
-
-/*
- * MTU is set per software interface. Setting MTU on a parent
- * interface will override the MTU setting on sub-interfaces.
- * TODO: If sub-interface MTU is ~0 inherit from parent?
- */
-int
-vnet_sw_interface_set_mtu (vnet_main_t * vnm, u32 sw_if_index, u32 mtu)
-{
- vnet_sw_interface_t *si = vnet_get_sw_interface (vnm, sw_if_index);
- vnet_hw_interface_t *hi = vnet_get_sw_hw_interface (vnm, sw_if_index);
-
- if (mtu < hi->min_packet_bytes)
- return VNET_API_ERROR_INVALID_VALUE;
- if (mtu > hi->max_packet_bytes)
- return VNET_API_ERROR_INVALID_VALUE;
-
- /* If done on a parent interface */
- if (si->sw_if_index == si->sup_sw_if_index)
- {
- if (hi->hw_class_index == ethernet_hw_interface_class.index)
- {
- ethernet_set_flags (vnm, hi->hw_if_index,
- ETHERNET_INTERFACE_FLAG_MTU);
- }
-
- /* Override MTU on any sub-interface */
- vnet_hw_interface_walk_sw (vnm,
- hi->hw_if_index,
- vnet_sw_interface_set_mtu_cb, &mtu);
- }
- else
- {
- si->max_l3_packet_bytes[VLIB_TX] = si->max_l3_packet_bytes[VLIB_RX] =
- mtu;
- adj_mtu_update (sw_if_index);
- }
-
- return 0;
-}
-
-static void
-unserialize_vnet_hw_interface_set_flags (serialize_main_t * m, va_list * va)