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";
enum cnat_translation_flags:u8
{
CNAT_TRANSLATION_ALLOC_PORT = 1,
+ CNAT_TRANSLATION_NO_RETURN_SESSION = 4,
};
+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 */
typedef cnat_endpoint
{
vl_api_address_t addr;
+ vl_api_interface_index_t sw_if_index;
+ vl_api_address_family_t if_af;
u16 port;
};
{
vl_api_cnat_endpoint_t dst_ep;
vl_api_cnat_endpoint_t src_ep;
+ u8 flags;
};
typedef cnat_translation
vl_api_ip_proto_t ip_proto;
u8 is_real_ip;
u8 flags;
- u8 n_paths;
+ vl_api_cnat_lb_type_t lb_type;
+ u32 n_paths;
vl_api_cnat_endpoint_tuple_t paths[n_paths];
};
vl_api_cnat_endpoint_t dst;
vl_api_cnat_endpoint_t new;
vl_api_ip_proto_t ip_proto;
+ u8 location;
f64 timestamp;
};
u32 context;
vl_api_ip4_address_t snat_ip4;
vl_api_ip6_address_t snat_ip6;
+ vl_api_interface_index_t sw_if_index;
+};
+
+define cnat_get_snat_addresses
+{
+ u32 client_index;
+ u32 context;
+};
+
+define cnat_get_snat_addresses_reply
+{
+ u32 context;
+ i32 retval;
+ u32 id;
+ vl_api_ip4_address_t snat_ip4;
+ vl_api_ip6_address_t snat_ip6;
+ 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;
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,
+ CNAT_POLICY_HOST = 3,
+};
+
+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
*