L2 BD API to flush all IP-MAC entries in the specified BD
[vpp.git] / src / vnet / l2 / l2.api
index 05b250b..f16a8ad 100644 (file)
  * limitations under the License.
  */
 
-option version = "2.0.1";
+option version = "2.1.2";
+
+import "vnet/ip/ip_types.api";
+import "vnet/ethernet/ethernet_types.api";
 
 /** \brief Reply to l2_xconnect_dump 
     @param context - sender context which was passed in the request
@@ -135,7 +138,7 @@ autoreply define l2fib_add_del
   u8 bvi_mac;
 };
 
-/** \brief Register to recive L2 MAC events for leanred and aged MAC
+/** \brief Register to receive L2 MAC events for learned and aged MAC
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
     @param learn_limit - MAC learn limit, 0 => default to 1000
@@ -173,7 +176,7 @@ typeonly define mac_entry
 /** \brief L2 MAC event for a list of learned or aged MACs
     @param client_index - opaque cookie to identify the sender
     @param pid - client pid registered to receive notification
-    @param n_macs - number of learned/aged MAC enntries
+    @param n_macs - number of learned/aged MAC entries
     @param mac - array of learned/aged MAC entries
 */
 define l2_macs_event
@@ -240,7 +243,7 @@ autoreply define bridge_domain_set_mac_age
     @param context - sender context, to match reply w/ request
     @param bd_id - the bridge domain to create
     @param flood - enable/disable bcast/mcast flooding in the bd
-    @param uu_flood - enable/disable uknown unicast flood in the bd
+    @param uu_flood - enable/disable unknown unicast flood in the bd
     @param forward - enable/disable forwarding on all interfaces in the bd
     @param learn - enable/disable learning on all interfaces in the bd
     @param arp_term - enable/disable arp termination in the bd
@@ -289,7 +292,7 @@ typeonly manual_print manual_endian define bridge_domain_sw_if
 /** \brief L2 bridge domain operational state response
     @param bd_id - the bridge domain id
     @param flood - bcast/mcast flooding state on all interfaces in the bd
-    @param uu_flood - uknown unicast flooding state on all interfaces in the bd
+    @param uu_flood - unknown unicast flooding state on all interfaces in the bd
     @param forward - forwarding state on all interfaces in the bd
     @param learn - learning state on all interfaces in the bd
     @param arp_term - arp termination state on all interfaces in the bd
@@ -309,17 +312,27 @@ manual_print manual_endian define bridge_domain_details
   u8 mac_age;
   u8 bd_tag[64];
   u32 bvi_sw_if_index;
+  u32 uu_fwd_sw_if_index;
   u32 n_sw_ifs;
   vl_api_bridge_domain_sw_if_t sw_if_details[n_sw_ifs];
 };
 
-/** \brief Set bridge flags (such as L2_LEARN, L2_FWD, L2_FLOOD, 
-    L2_UU_FLOOD, or L2_ARP_TERM bits) request
+/** \brief Flags that can be changed on a bridge domain */
+enum bd_flags
+{
+  BRIDGE_API_FLAG_LEARN = 0x1,
+  BRIDGE_API_FLAG_FWD = 0x2,
+  BRIDGE_API_FLAG_FLOOD = 0x4,
+  BRIDGE_API_FLAG_UU_FLOOD = 0x8,
+  BRIDGE_API_FLAG_ARP_TERM = 0x10,
+};
+
+/** \brief Set bridge flags request
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
     @param bd_id - the bridge domain to set the flags for
     @param is_set - if non-zero, set the flags, else clear them
-    @param feature_bitmap - bits (as above) that are non-zero to set or clear
+    @param flags - flags that are non-zero to set or clear
 */
 define bridge_flags
 {
@@ -327,7 +340,7 @@ define bridge_flags
   u32 context;
   u32 bd_id;
   u8 is_set;
-  u32 feature_bitmap;
+  vl_api_bd_flags_t flags;
 };
 
 /** \brief Set bridge flags response
@@ -419,23 +432,39 @@ autoreply define sw_interface_set_l2_xconnect
   u8 enable;
 };
 
+/**
+ * @brief An enumeration of the type of ports that can be added
+ *        to a bridge domain
+ */
+enum l2_port_type
+{
+  /* a 'normal' interface, i.e. not BVI or UU-Flood */
+  L2_API_PORT_TYPE_NORMAL = 0,
+  /* a BVI interface in the BD */
+  L2_API_PORT_TYPE_BVI = 1,
+  /* The interface on which to forward unknown unicast packets
+   * If this is not set for a BD then UU is flooded */
+  L2_API_PORT_TYPE_UU_FWD = 2,
+};
+
 /** \brief Interface bridge mode request
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
     @param rx_sw_if_index - the interface
     @param bd_id - bridge domain id
-    @param bvi - Setup interface as a bvi, bridge mode only
-    @param shg - Shared horizon group, for bridge mode only
+    @param port_type - port_mode, see #l2_port_type
+    @param shg - Split horizon group, for bridge mode only
     @param enable - Enable beige mode if not 0, else set to L3 mode
 */
+
 autoreply define sw_interface_set_l2_bridge
 {
   u32 client_index;
   u32 context;
   u32 rx_sw_if_index;
   u32 bd_id;
+  vl_api_l2_port_type_t port_type;
   u8 shg;
-  u8 bvi;
   u8 enable;
 };
 
@@ -454,9 +483,45 @@ autoreply define bd_ip_mac_add_del
   u32 context;
   u32 bd_id;
   u8 is_add;
+  vl_api_address_t ip;
+  vl_api_mac_address_t mac;
+};
+
+/** \brief Flush bridge domain IP to MAC entries
+    @param client_index - opaque cookie to identify the sender
+    @param bd_id - bridge domain identifier
+*/
+autoreply define bd_ip_mac_flush
+{
+  u32 client_index;
+  u32 context;
+  u32 bd_id;
+};
+
+/** \brief bridge domain IP to MAC entry details structure
+    @param bd_id - bridge domain table id
+    @param is_ipv6 - if non-zero, ipv6 address, else ipv4 address
+    @param ip_address - ipv4 or ipv6 address
+    @param mac_address - MAC address
+*/
+define bd_ip_mac_details
+{
+  u32 context;
+  u32 bd_id;
   u8 is_ipv6;
   u8 ip_address[16];
-  u8 mac_address[6];
+  vl_api_mac_address_t mac_address;
+};
+
+/** \brief Dump bridge domain IP to MAC entries
+    @param client_index - opaque cookie to identify the sender
+    @param bd_id - bridge domain identifier
+*/
+define bd_ip_mac_dump
+{
+  u32 client_index;
+  u32 context;
+  u32 bd_id;
 };
 
 /** \brief L2 interface ethernet flow point filtering enable/disable request