From 5ae454312c2ffccf47e4b8c430c81f1a3d067e67 Mon Sep 17 00:00:00 2001 From: Filip Varga Date: Mon, 26 Jul 2021 20:59:21 +0200 Subject: nat: NAT44ED configuration refactor Refactoring and cleaning up address allocation functions & ip table update callbacks. Type: refactor Change-Id: I9a11700a5f335b64d0d84e04d8e16d040624e01b Signed-off-by: Filip Varga --- src/plugins/nat/nat44-ed/nat44_ed_cli.c | 48 ++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 19 deletions(-) (limited to 'src/plugins/nat/nat44-ed/nat44_ed_cli.c') diff --git a/src/plugins/nat/nat44-ed/nat44_ed_cli.c b/src/plugins/nat/nat44-ed/nat44_ed_cli.c index 9b3480cb9e4..af8ae8e6bd9 100644 --- a/src/plugins/nat/nat44-ed/nat44_ed_cli.c +++ b/src/plugins/nat/nat44-ed/nat44_ed_cli.c @@ -419,9 +419,13 @@ add_address_command_fn (vlib_main_t * vm, for (i = 0; i < count; i++) { if (is_add) - rv = snat_add_address (sm, &this_addr, vrf_id, twice_nat); + { + rv = nat44_ed_add_address (&this_addr, vrf_id, twice_nat); + } else - rv = snat_del_address (sm, this_addr, 0, twice_nat); + { + rv = nat44_ed_del_address (this_addr, 0, twice_nat); + } switch (rv) { @@ -1294,15 +1298,13 @@ snat_add_interface_address_command_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { - snat_main_t *sm = &snat_main; unformat_input_t _line_input, *line_input = &_line_input; - u32 sw_if_index; - int rv; - int is_del = 0; + snat_main_t *sm = &snat_main; clib_error_t *error = 0; + int rv, is_del = 0; u8 twice_nat = 0; + u32 sw_if_index; - /* Get a line of input. */ if (!unformat_user (input, unformat_line_input, line_input)) return clib_error_return (0, NAT44_ED_EXPECTED_ARGUMENT); @@ -1312,9 +1314,13 @@ snat_add_interface_address_command_fn (vlib_main_t * vm, sm->vnet_main, &sw_if_index)) ; else if (unformat (line_input, "twice-nat")) - twice_nat = 1; + { + twice_nat = 1; + } else if (unformat (line_input, "del")) - is_del = 1; + { + is_del = 1; + } else { error = clib_error_return (0, "unknown input '%U'", @@ -1323,17 +1329,21 @@ snat_add_interface_address_command_fn (vlib_main_t * vm, } } - rv = snat_add_interface_address (sm, sw_if_index, is_del, twice_nat); - - switch (rv) + if (!is_del) { - case 0: - break; - - default: - error = clib_error_return (0, "snat_add_interface_address returned %d", - rv); - goto done; + rv = nat44_ed_add_interface_address (sw_if_index, twice_nat); + if (rv) + { + error = clib_error_return (0, "add address returned %d", rv); + } + } + else + { + rv = nat44_ed_del_interface_address (sw_if_index, twice_nat); + if (rv) + { + error = clib_error_return (0, "del address returned %d", rv); + } } done: -- cgit 1.2.3-korg