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)
{
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;
}
static void
-send_sw_interface_flags (vpe_api_main_t * am,
+send_sw_interface_event (vpe_api_main_t * am,
+ vpe_client_registration_t * reg,
unix_shared_memory_queue_t * q,
vnet_sw_interface_t * swif)
{
- vl_api_sw_interface_set_flags_t *mp;
+ vl_api_sw_interface_event_t *mp;
vnet_main_t *vnm = am->vnet_main;
vnet_hw_interface_t *hi = vnet_get_sup_hw_interface (vnm,
swif->sw_if_index);
mp = vl_msg_api_alloc (sizeof (*mp));
memset (mp, 0, sizeof (*mp));
- mp->_vl_msg_id = ntohs (VL_API_SW_INTERFACE_SET_FLAGS);
+ mp->_vl_msg_id = ntohs (VL_API_SW_INTERFACE_EVENT);
mp->sw_if_index = ntohl (swif->sw_if_index);
+ mp->client_index = reg->client_index;
+ mp->pid = reg->client_pid;
mp->admin_up_down = (swif->flags & VNET_SW_INTERFACE_FLAG_ADMIN_UP) ? 1 : 0;
mp->link_up_down = (hi->flags & VNET_HW_INTERFACE_FLAG_LINK_UP) ? 1 : 0;
event_data[i]))
{
swif = vnet_get_sw_interface (vnm, event_data[i]);
- send_sw_interface_flags (vam, q, swif);
+ send_sw_interface_event (vam, reg, q, swif);
}
}
}));