From ed2ee5e57b0f65ac4a94aac84cb6c27468878ea4 Mon Sep 17 00:00:00 2001 From: Filip Varga Date: Tue, 23 Mar 2021 12:57:58 +0100 Subject: nat: NAT66 plugin enable&disable calls update Type: improvement Adding support for enable&disable calls (dynamic plugin configuration). API (nat66_plugin_enable_disable) and CLI (nat66 plugin enable/nat66 plugin disable) with support for outside_vrf id configuration. Change-Id: I5637ff1621d6662adc3b7c6f7f8176d84a4b492b Signed-off-by: Filip Varga --- src/plugins/nat/nat66/nat66_api.c | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) (limited to 'src/plugins/nat/nat66/nat66_api.c') diff --git a/src/plugins/nat/nat66/nat66_api.c b/src/plugins/nat/nat66/nat66_api.c index 2a2b3cc07ad..470c1fe48fa 100644 --- a/src/plugins/nat/nat66/nat66_api.c +++ b/src/plugins/nat/nat66/nat66_api.c @@ -23,9 +23,23 @@ #define REPLY_MSG_ID_BASE nm->msg_id_base #include -/*************/ -/*** NAT66 ***/ -/*************/ +static void +vl_api_nat66_plugin_enable_disable_t_handler ( + vl_api_nat66_plugin_enable_disable_t *mp) +{ + nat66_main_t *nm = &nat66_main; + vl_api_nat66_plugin_enable_disable_reply_t *rmp; + int rv = 0; + + if (mp->enable) + { + rv = nat66_plugin_enable (ntohl (mp->outside_vrf)); + } + else + rv = nat66_plugin_disable (); + + REPLY_MACRO (VL_API_NAT66_PLUGIN_ENABLE_DISABLE_REPLY); +} static void vl_api_nat66_add_del_interface_t_handler (vl_api_nat66_add_del_interface_t * @@ -96,6 +110,10 @@ static void vl_api_nat66_interface_dump_t_handler (vl_api_nat66_interface_dump_t * mp) { vl_api_registration_t *rp; + nat66_main_t *nm = &nat66_main; + + if (PREDICT_FALSE (!nm->enabled)) + return; rp = vl_api_client_index_to_registration (mp->client_index); if (rp == 0) @@ -145,6 +163,10 @@ vl_api_nat66_static_mapping_dump_t_handler (vl_api_nat66_static_mapping_dump_t * mp) { vl_api_registration_t *rp; + nat66_main_t *nm = &nat66_main; + + if (PREDICT_FALSE (!nm->enabled)) + return; rp = vl_api_client_index_to_registration (mp->client_index); if (rp == 0) @@ -167,8 +189,6 @@ clib_error_t * nat66_plugin_api_hookup (vlib_main_t * vm) { nat66_main_t *nm = &nat66_main; - nm->msg_id_base = setup_message_id_table (); - return 0; } -- cgit 1.2.3-korg