GBP: add allowed ethertypes to contracts
[vpp.git] / src / plugins / gbp / gbp.api
index bf42243..e96cb50 100644 (file)
@@ -19,9 +19,16 @@ option version = "2.0.0";
 import "vnet/ip/ip_types.api";
 import "vnet/ethernet/ethernet_types.api";
 
+enum gbp_bridge_domain_flags
+{
+  GBP_BD_API_FLAG_NONE = 0,
+  GBP_BD_API_FLAG_DO_NOT_LEARN = 1,
+};
+
 typedef gbp_bridge_domain
 {
   u32 bd_id;
+  vl_api_gbp_bridge_domain_flags_t flags;
   u32 bvi_sw_if_index;
   u32 uu_fwd_sw_if_index;
 };
@@ -88,12 +95,13 @@ define gbp_route_domain_details
 
 enum gbp_endpoint_flags
 {
-  NONE = 0,
-  BOUNCE = 0x1,
-  REMOTE = 0x2,
-  LEARNT = 0x4,
+  GBP_API_ENDPOINT_FLAG_NONE = 0,
+  GBP_API_ENDPOINT_FLAG_BOUNCE = 0x1,
+  GBP_API_ENDPOINT_FLAG_REMOTE = 0x2,
+  GBP_API_ENDPOINT_FLAG_LEARNT = 0x4,
   /* hey Ole WTF */
-  REMOTE_LEARNT = 0x6,
+  GBP_API_ENDPOINT_FLAG_REMOTE_LEARNT = 0x6,
+  GBP_API_ENDPOINT_FLAG_EXTERNAL = 0x8,
 };
 
 typedef gbp_endpoint_tun
@@ -213,6 +221,7 @@ enum gbp_subnet_type
   GBP_API_SUBNET_TRANSPORT,
   GBP_API_SUBNET_STITCHED_INTERNAL,
   GBP_API_SUBNET_STITCHED_EXTERNAL,
+  GBP_API_SUBNET_L3_OUT,
 };
 
 typeonly define gbp_subnet
@@ -244,11 +253,50 @@ define gbp_subnet_details
   vl_api_gbp_subnet_t subnet;
 };
 
-typeonly define gbp_contract
+typedef gbp_next_hop
+{
+  vl_api_address_t ip;
+  vl_api_mac_address_t mac;
+  u32 bd_id;
+  u32 rd_id;
+};
+
+enum gbp_hash_mode
+{
+  GBP_API_HASH_MODE_SRC_IP,
+  GBP_API_HASH_MODE_DST_IP,
+  GBP_API_HASH_MODE_SYMMETRIC,
+};
+
+typedef gbp_next_hop_set
+{
+  vl_api_gbp_hash_mode_t hash_mode;
+  u8 n_nhs;
+  vl_api_gbp_next_hop_t nhs[8];
+};
+
+enum gbp_rule_action
+{
+  GBP_API_RULE_PERMIT,
+  GBP_API_RULE_DENY,
+  GBP_API_RULE_REDIRECT,
+};
+
+typedef gbp_rule
+{
+  vl_api_gbp_rule_action_t action;
+  vl_api_gbp_next_hop_set_t nh_set;
+};
+
+typedef gbp_contract
 {
   u16 src_epg;
   u16 dst_epg;
   u32 acl_index;
+  u8  n_rules;
+  vl_api_gbp_rule_t rules[n_rules];
+  u8 n_ether_types;
+  u16 allowed_ethertypes[n_ether_types];
 };
 
 autoreply define gbp_contract_add_del
@@ -335,6 +383,33 @@ define gbp_vxlan_tunnel_details
   vl_api_gbp_vxlan_tunnel_t tunnel;
 };
 
+typeonly define gbp_ext_itf
+{
+  u32 sw_if_index;
+  u32 bd_id;
+  u32 rd_id;
+};
+
+autoreply define gbp_ext_itf_add_del
+{
+  u32 client_index;
+  u32 context;
+  u8  is_add;
+  vl_api_gbp_ext_itf_t ext_itf;
+};
+
+define gbp_ext_itf_dump
+{
+  u32 client_index;
+  u32 context;
+};
+
+define gbp_ext_itf_details
+{
+  u32 context;
+  vl_api_gbp_ext_itf_t ext_itf;
+};
+
 /*
  * Local Variables:
  * eval: (c-set-style "gnu")