diff options
Diffstat (limited to 'src/plugins/nat')
-rw-r--r-- | src/plugins/nat/nat.api | 16 | ||||
-rwxr-xr-x | src/plugins/nat/nat.c | 12 | ||||
-rw-r--r-- | src/plugins/nat/nat_api.c | 9 |
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* */ } |