/* Hey Emacs use -*- mode: C -*- */
/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
+ * Copyright (c) 2023 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
used to control the ABF plugin
*/
-option version = "0.1.0";
+option version = "0.3.0";
import "vnet/ip/ip_types.api";
import "vnet/fib/fib_types.api";
import "vnet/interface_types.api";
+import "vnet/ip/ip.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
{
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;
+ vl_api_cnat_lb_type_t lb_type;
u32 n_paths;
+ vl_api_ip_flow_hash_config_v2_t flow_hash_config;
vl_api_cnat_endpoint_tuple_t paths[n_paths];
};
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
*