X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fl2%2Fl2.api;h=f756b87868ce2e7ca15cb5e4a5190e0642ac7140;hb=54bc5e40c;hp=3fb6de0d073c258827210248d9bf8bc09a8821da;hpb=f7b7fa53b7eaec81d8c00c1023fb7d01f1f9761f;p=vpp.git diff --git a/src/vnet/l2/l2.api b/src/vnet/l2/l2.api index 3fb6de0d073..f756b87868c 100644 --- a/src/vnet/l2/l2.api +++ b/src/vnet/l2/l2.api @@ -14,7 +14,10 @@ * limitations under the License. */ -option version = "2.0.0"; +option version = "2.2.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 @@ -158,20 +161,22 @@ autoreply define want_l2_macs_events /** \brief Entry for learned or aged MAC in L2 MAC Events @param sw_if_index - sw_if_index in the domain @param mac_addr - mac_address - @is_del - 0 => newly learned MAC, 1 => aged out MAC + @param action - 0 => newly learned MAC, 1 => MAC deleted by ager + 3 => MAC move (sw_if_index changed) + @param flags - flag bits to provide other info, not yet used */ typeonly define mac_entry { u32 sw_if_index; u8 mac_addr[6]; - u8 is_del; - u8 spare; + u8 action; + u8 flags; }; /** \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 @@ -238,10 +243,11 @@ 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 + @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 */ @@ -255,6 +261,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; @@ -287,10 +294,11 @@ 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 + @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 @@ -304,20 +312,33 @@ 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; + 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_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 @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 { @@ -325,7 +346,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 @@ -417,23 +438,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; }; @@ -442,9 +479,8 @@ 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 */ autoreply define bd_ip_mac_add_del { @@ -452,9 +488,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 @@ -468,7 +540,7 @@ autoreply define l2_interface_efp_filter u32 client_index; u32 context; u32 sw_if_index; - u32 enable_disable; + u8 enable_disable; }; /** \brief Interface set vpath request @@ -485,6 +557,44 @@ 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; +}; + /* * Local Variables: * eval: (c-set-style "gnu")