aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/nat
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/nat')
-rw-r--r--src/plugins/nat/nat.api16
-rwxr-xr-xsrc/plugins/nat/nat.c12
-rw-r--r--src/plugins/nat/nat_api.c9
3 files changed, 36 insertions, 1 deletions
diff --git a/src/plugins/nat/nat.api b/src/plugins/nat/nat.api
index 6a9472bb4b1..45e504fa2ff 100644
--- a/src/plugins/nat/nat.api
+++ b/src/plugins/nat/nat.api
@@ -13,7 +13,7 @@
* limitations under the License.
*/
-option version = "3.0.0";
+option version = "3.1.0";
/**
* @file nat.api
@@ -67,6 +67,8 @@ define nat_show_config
@param static_mapping_only - if 1 dynamic translations disabled
@param static_mapping_connection_tracking - if 1 create session data
@param deterministic - if 1 deterministic mapping
+ @param endpoint_dependent - if 1 endpoint-dependent mode
+ @param out2in_dpo - if 1 out2in dpo mode
@param translation_buckets - number of translation hash buckets
@param translation_memory_size - translation hash memory size
@param user_buckets - number of user hash buckets
@@ -74,6 +76,11 @@ define nat_show_config
@param max_translations_per_user - maximum number of translations per user
@param outside_vrf_id - outside VRF id
@param inside_vrf_id - default inside VRF id
+ @param dslite_ce - if DS-Lite is CE/B4 element, if 0 AFTR elemet
+ @param nat64_bib_buckets - number of NAT64 BIB hash buckets
+ @param nat64_bib_memory_size - memory size of NAT64 BIB hash
+ @param nat64_st_buckets - number of NAT64 session table hash buckets
+ @param nat64_st_memory_size - memory size of NAT64 session table hash
*/
define nat_show_config_reply
{
@@ -82,6 +89,8 @@ define nat_show_config_reply
u8 static_mapping_only;
u8 static_mapping_connection_tracking;
u8 deterministic;
+ u8 endpoint_dependent;
+ u8 out2in_dpo;
u32 translation_buckets;
u32 translation_memory_size;
u32 user_buckets;
@@ -89,6 +98,11 @@ define nat_show_config_reply
u32 max_translations_per_user;
u32 outside_vrf_id;
u32 inside_vrf_id;
+ u8 dslite_ce;
+ u32 nat64_bib_buckets;
+ u32 nat64_bib_memory_size;
+ u32 nat64_st_buckets;
+ u32 nat64_st_memory_size;
};
/** \brief Set NAT workers
diff --git a/src/plugins/nat/nat.c b/src/plugins/nat/nat.c
index ff3b2ed8a5f..bb82e924947 100755
--- a/src/plugins/nat/nat.c
+++ b/src/plugins/nat/nat.c
@@ -2812,6 +2812,18 @@ snat_config (vlib_main_t * vm, unformat_input_t * input)
format_unformat_error, input);
}
+ if (sm->deterministic && sm->endpoint_dependent)
+ return clib_error_return (
+ 0, "deterministic and endpoint-dependent modes are mutually exclusive");
+
+ if (static_mapping_only && (sm->deterministic || sm->endpoint_dependent))
+ return clib_error_return (
+ 0, "static mapping only mode available only for simple nat");
+
+ if (sm->out2in_dpo && (sm->deterministic || sm->endpoint_dependent))
+ return clib_error_return (
+ 0, "out2in dpo mode available only for simple nat");
+
/* for show commands, etc. */
sm->translation_buckets = translation_buckets;
sm->translation_memory_size = translation_memory_size;
diff --git a/src/plugins/nat/nat_api.c b/src/plugins/nat/nat_api.c
index d467861d94c..629045f8c31 100644
--- a/src/plugins/nat/nat_api.c
+++ b/src/plugins/nat/nat_api.c
@@ -97,6 +97,8 @@ vl_api_nat_show_config_t_handler (vl_api_nat_show_config_t * mp)
{
vl_api_nat_show_config_reply_t *rmp;
snat_main_t *sm = &snat_main;
+ dslite_main_t *dm = &dslite_main;
+ nat64_main_t *n64m = &nat64_main;
int rv = 0;
/* *INDENT-OFF* */
@@ -113,6 +115,13 @@ vl_api_nat_show_config_t_handler (vl_api_nat_show_config_t * mp)
rmp->static_mapping_connection_tracking =
sm->static_mapping_connection_tracking;
rmp->deterministic = sm->deterministic;
+ rmp->endpoint_dependent = sm->endpoint_dependent;
+ rmp->out2in_dpo = sm->out2in_dpo;
+ rmp->dslite_ce = dm->is_ce;
+ rmp->nat64_bib_buckets = n64m->bib_buckets;
+ rmp->nat64_bib_memory_size = n64m->bib_memory_size;
+ rmp->nat64_st_buckets = n64m->st_buckets;
+ rmp->nat64_st_memory_size = n64m->st_memory_size;
}));
/* *INDENT-ON* */
}