cnat: Add calico/k8s src policy
[vpp.git] / src / plugins / cnat / cnat.api
index 685f9e1..e253084 100644 (file)
@@ -19,7 +19,7 @@
     used to control the ABF plugin
 */
 
-option version = "0.1.0";
+option version = "0.2.0";
 import "vnet/ip/ip_types.api";
 import "vnet/fib/fib_types.api";
 import "vnet/interface_types.api";
@@ -29,6 +29,20 @@ enum cnat_translation_flags:u8
   CNAT_TRANSLATION_ALLOC_PORT = 1,
 };
 
+enum cnat_endpoint_tuple_flags:u8
+{
+  /* Dont translate said endpoint tuple but
+   * still forward */
+  CNAT_EPT_NO_NAT = 1,
+};
+
+
+enum cnat_lb_type:u8
+{
+  CNAT_LB_TYPE_DEFAULT = 0,
+  CNAT_LB_TYPE_MAGLEV = 1,
+};
+
 /* An enpoint is either
  * An IP & a port
  * An interface, an address familiy and a port */
@@ -44,6 +58,7 @@ typedef cnat_endpoint_tuple
 {
   vl_api_cnat_endpoint_t dst_ep;
   vl_api_cnat_endpoint_t src_ep;
+  u8 flags;
 };
 
 typedef cnat_translation
@@ -53,6 +68,7 @@ typedef cnat_translation
   vl_api_ip_proto_t ip_proto;
   u8 is_real_ip;
   u8 flags;
+  vl_api_cnat_lb_type_t lb_type;
   u32 n_paths;
   vl_api_cnat_endpoint_tuple_t paths[n_paths];
 };
@@ -143,7 +159,7 @@ define cnat_get_snat_addresses_reply
   vl_api_interface_index_t sw_if_index;
 };
 
-autoreply define cnat_add_del_snat_prefix
+autoreply define cnat_snat_policy_add_del_exclude_pfx
 {
   u32 client_index;
   u32 context;
@@ -151,6 +167,41 @@ autoreply define cnat_add_del_snat_prefix
   vl_api_prefix_t prefix;
 };
 
+enum cnat_snat_policy_table:u8
+{
+  CNAT_POLICY_INCLUDE_V4 = 0,
+  CNAT_POLICY_INCLUDE_V6 = 1,
+  CNAT_POLICY_POD = 2,
+};
+
+autoreply define cnat_snat_policy_add_del_if
+{
+  u32 client_index;
+  u32 context;
+  vl_api_interface_index_t sw_if_index;
+  u8 is_add;
+  vl_api_cnat_snat_policy_table_t table;
+};
+
+/* A snat policy controls what traffic is srcNATed */
+enum cnat_snat_policies:u8
+{
+  /* No filter applied, srcNAT everything */
+  CNAT_POLICY_NONE = 0,
+  /* Filter by interface list : snat_policy_add_del_if
+   * and prefix list : snat_policy_add_del_if */
+  CNAT_POLICY_IF_PFX = 1,
+  /* Kubernetes specific policy */
+  CNAT_POLICY_K8S = 2,
+};
+
+autoreply define cnat_set_snat_policy
+{
+  u32 client_index;
+  u32 context;
+  vl_api_cnat_snat_policies_t policy;
+};
+
 /*
  * fd.io coding-style-patch-verification: ON
  *