X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fcnat%2Fcnat.api;h=e253084e74eead78de09a447d7e8e79994ee97ca;hb=516b0adf6;hp=685f9e1714622839de12d054ea07370dacdea48c;hpb=27647a27c7b1e800547e3a3ea97b099b25618177;p=vpp.git diff --git a/src/plugins/cnat/cnat.api b/src/plugins/cnat/cnat.api index 685f9e17146..e253084e74e 100644 --- a/src/plugins/cnat/cnat.api +++ b/src/plugins/cnat/cnat.api @@ -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 *