Support for bridge domain free text tag
[vpp.git] / src / vnet / interface_api.c
index ab0b255..113728c 100644 (file)
@@ -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;
@@ -571,19 +578,22 @@ event_data_cmp (void *a1, void *a2)
 }
 
 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;
@@ -638,7 +648,7 @@ link_state_process (vlib_main_t * vm,
                                          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);
                   }
               }
           }));