ip: Protocol Independent IP Neighbors
[vpp.git] / src / vnet / l2 / l2.api
index 7a1fb49..0666359 100644 (file)
  * limitations under the License.
  */
 
-option version = "2.0.1";
+option version = "2.2.2";
+
+import "vnet/ip/ip_types.api";
+import "vnet/ethernet/ethernet_types.api";
+import "vnet/interface_types.api";
 
 /** \brief Reply to l2_xconnect_dump 
     @param context - sender context which was passed in the request
@@ -151,7 +155,7 @@ autoreply define want_l2_macs_events
   u32 learn_limit;
   u8  scan_delay;
   u8  max_macs_in_event;
-  u8  enable_disable;
+  bool enable_disable;
   u32 pid;
 };
 
@@ -162,7 +166,7 @@ autoreply define want_l2_macs_events
                     3 => MAC move (sw_if_index changed)
     @param flags - flag bits to provide other info, not yet used
 */
-typeonly define mac_entry
+typedef mac_entry
 {
   u32 sw_if_index;
   u8  mac_addr[6];
@@ -244,6 +248,7 @@ autoreply define bridge_domain_set_mac_age
     @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
+    @param arp_ufwd - enable/disable arp unicast forwarding in the bd
     @param mac_age - mac aging time in min, 0 for disabled
     @param is_add - add or delete flag
 */
@@ -257,6 +262,7 @@ autoreply define bridge_domain_add_del
   u8 forward;
   u8 learn;
   u8 arp_term;
+  u8 arp_ufwd;
   u8 mac_age;
   u8 bd_tag[64];
   u8 is_add;
@@ -279,7 +285,7 @@ define bridge_domain_dump
     @param sw_if_index - sw_if_index in the domain
     @param shg - split horizon group for the interface
 */
-typeonly manual_print manual_endian define bridge_domain_sw_if
+typedef bridge_domain_sw_if
 {
   u32 context;
   u32 sw_if_index;
@@ -293,6 +299,7 @@ typeonly manual_print manual_endian define bridge_domain_sw_if
     @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
+    @param arp_ufwd - arp unicast forwarding state on all interfaces in the bd
     @param mac_age - mac aging time in min, 0 for disabled
     @param bd_tag - optional textual tag for the bridge domain
     @param n_sw_ifs - number of sw_if_index's in the domain
@@ -306,6 +313,7 @@ manual_print manual_endian define bridge_domain_details
   u8 forward;
   u8 learn;
   u8 arp_term;
+  u8 arp_ufwd;
   u8 mac_age;
   u8 bd_tag[64];
   u32 bvi_sw_if_index;
@@ -317,11 +325,13 @@ manual_print manual_endian define bridge_domain_details
 /** \brief Flags that can be changed on a bridge domain */
 enum bd_flags
 {
+  BRIDGE_API_FLAG_NONE = 0x0,
   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,
+  BRIDGE_API_FLAG_ARP_UFWD = 0x20,
 };
 
 /** \brief Set bridge flags request
@@ -470,19 +480,34 @@ autoreply define sw_interface_set_l2_bridge
     @param context - sender context, to match reply w/ request
     @param bd_id - the bridge domain to set the flags for
     @param is_add - if non-zero, add the entry, else clear it
-    @param is_ipv6 - if non-zero, ipv6 address, else ipv4 address
-    @param mac_address - MAC address
-    @param 
+    @param ip - ipv4 or ipv6 address
+    @param mac - MAC address
 */
+
+typedef bd_ip_mac
+{
+  u32 bd_id;
+  vl_api_address_t ip;
+  vl_api_mac_address_t mac;
+};
+
 autoreply define bd_ip_mac_add_del
 {
   u32 client_index;
   u32 context;
-  u32 bd_id;
   u8 is_add;
-  u8 is_ipv6;
-  u8 ip_address[16];
-  u8 mac_address[6];
+  vl_api_bd_ip_mac_t entry;
+};
+
+/** \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
@@ -494,10 +519,7 @@ autoreply define bd_ip_mac_add_del
 define bd_ip_mac_details
 {
   u32 context;
-  u32 bd_id;
-  u8 is_ipv6;
-  u8 ip_address[16];
-  u8 mac_address[6];
+  vl_api_bd_ip_mac_t entry;
 };
 
 /** \brief Dump bridge domain IP to MAC entries
@@ -539,6 +561,81 @@ autoreply define sw_interface_set_vpath
   u8 enable;
 };
 
+/** \brief Create BVI interface instance request
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param mac_address - mac addr to assign to the interface if none-zero
+    @param user_instance - requested instance, ~0 => dynamically allocate
+*/
+define bvi_create
+{
+  u32 client_index;
+  u32 context;
+  vl_api_mac_address_t mac;
+  u32 user_instance;
+};
+
+/** \brief Create BVI interface instance response
+    @param context - sender context, to match reply w/ request
+    @param sw_if_index - sw index of the interface that was created
+    @param retval - return code for the request
+*/
+define bvi_create_reply
+{
+  u32 context;
+  i32 retval;
+  u32 sw_if_index;
+};
+
+/** \brief Delete BVI interface request
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param sw_if_index - sw index of the interface that was created
+*/
+autoreply define bvi_delete
+{
+  u32 client_index;
+  u32 context;
+  u32 sw_if_index;
+};
+
+/** \brief Register for IP4 ARP resolution event on receing ARP reply or
+           MAC/IP info from ARP requests in L2 BDs
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param enable - 1 => register for events, 0 => cancel registration
+    @param pid - sender's pid
+*/
+autoreply define want_l2_arp_term_events
+{
+  u32 client_index;
+  u32 context;
+  bool enable;
+  u32 pid;
+};
+
+/** \brief Tell client about an IP4 ARP resolution event or
+           MAC/IP info from ARP requests in L2 BDs
+    @param client_index - opaque cookie to identify the sender
+    @param pid - client pid registered to receive notification
+    @param ip - IP address of new ARP term entry
+    @param sw_if_index - interface of new ARP term entry
+    @param mac - MAC address of new ARP term entry
+*/
+define l2_arp_term_event
+{
+  u32 client_index;
+  u32 pid;
+  vl_api_address_t ip;
+  vl_api_interface_index_t sw_if_index;
+  vl_api_mac_address_t mac;
+};
+
+service {
+  rpc want_l2_arp_term_events returns want_l2_arp_term_events_reply
+    events l2_arp_term_event;
+};
+
 /*
  * Local Variables:
  * eval: (c-set-style "gnu")