From: Andrew Yourtchenko Date: Tue, 22 Aug 2017 11:10:01 +0000 (+0200) Subject: vl_api_sw_interface_set_mtu_t_handler: fix assert in vnet_get_hw_interface X-Git-Tag: v17.07.01~3 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=778df28c2a1520f58c293700c578bdd73e61cecf;p=vpp.git vl_api_sw_interface_set_mtu_t_handler: fix assert in vnet_get_hw_interface The handler was calling the routines with sw_if_index instead of hw_if_index, fix that by an extra call to vnet_get_sw_interface, and check that the interface type is VNET_SW_INTERFACE_TYPE_HARDWARE before proceeding. Change-Id: I4a6f65f44e250ecdb2b72d2693c9d7db5a52b966 Signed-off-by: Andrew Yourtchenko --- diff --git a/src/vnet/interface_api.c b/src/vnet/interface_api.c index ab0b255ab5a..94e78f6d6f2 100644 --- a/src/vnet/interface_api.c +++ b/src/vnet/interface_api.c @@ -98,8 +98,15 @@ vl_api_sw_interface_set_mtu_t_handler (vl_api_sw_interface_set_mtu_t * mp) VALIDATE_SW_IF_INDEX (mp); - vnet_hw_interface_t *hi = vnet_get_hw_interface (vnm, sw_if_index); - ethernet_interface_t *eif = ethernet_get_interface (em, sw_if_index); + vnet_sw_interface_t *si = vnet_get_sw_interface (vnm, sw_if_index); + if (si->type != VNET_SW_INTERFACE_TYPE_HARDWARE) + { + rv = VNET_API_ERROR_INVALID_VALUE; + goto bad_sw_if_index; + } + + vnet_hw_interface_t *hi = vnet_get_hw_interface (vnm, si->hw_if_index); + ethernet_interface_t *eif = ethernet_get_interface (em, si->hw_if_index); if (!eif) { @@ -122,7 +129,7 @@ vl_api_sw_interface_set_mtu_t_handler (vl_api_sw_interface_set_mtu_t * mp) if (hi->max_packet_bytes != mtu) { hi->max_packet_bytes = mtu; - ethernet_set_flags (vnm, sw_if_index, flags); + ethernet_set_flags (vnm, si->hw_if_index, flags); } BAD_SW_IF_INDEX_LABEL;