diff options
author | YohanPipereau <ypiperea@cisco.com> | 2019-03-06 14:01:58 +0100 |
---|---|---|
committer | YohanPipereau <ypiperea@cisco.com> | 2019-03-29 14:39:36 +0100 |
commit | a760dfb253161911fc3aa3c8b879c461d53ade6e (patch) | |
tree | 0e79953f4ed5615879a58f49a74df3f9c6739a42 /src/plugins/ietf/ietf_nat.c | |
parent | 2b9b6b9b130b75799a40989c0ebe5040fa3e45fb (diff) |
Sweetcomb global cleanup
-Merge IETF and Openconfig to use SCVPP 2
-Move L2 bridge from sc_vpp_interface to sc_vpp_v3po
-Implement tav2 dump
-Make openconfig-interfaces functions static
-Try one more dispatch after failure in VAPI_CALL
-Add error return code for scvpp
-Remove unused length maccros
-Return appropriate error code for interface dump when interface not found
-Improve scvpp test suite
-Change get_interface_id prototype
-Use interface_dump_iface in openconfig_interface.
-No more vapi types in openconfig_interfaces.c
-Move openconfig_local_routing VAPI operations to sc_vpp_ip
-Implement a multiple dump with a stack data structure
-Comment out state_cb code from openconfig_local_routing to use new
functions later.
-Rename YANG model to their fully qualified name : <module>@<revision>
-Remove headers almost empty and put registration declaration in
sc_model.h
-Shorten vapi context global variable name
-Reorganize scvpp unit test suite
-Add instructions to Makefile to install/uninstall YANG models in sysrepo.
-Add this new instructions to README.md.
-Reimplement interface_dump_all
-Use a common message at INFO Log Level to know when sysrepo callbacks
are triggered
-Remove old structure to perform dump of all interfaces
-Reimplement get_interface_name and add scvpp test for it
-Clean sys_util
-Use UNUSED maccro everywhere to have lighter prototypes
-Have ietf-interfaces:interfaces-state work with new dump function
-Add setup and teardown for NAT tests
-Remove unused tapv2 dump
-Remove useless sysrepo module callback
-Remove xpath_find_first_key usage in openconfig-interfaces
-Remove xpath_find_first_key in oc_local_routing and in the rest of
sweetcomb
-Reorganize scvpp include dir and fix scvpp_test new warnings
-Fix scvpp tests for ip routes
-Factorize scvpp nat and test return code of its function
-Correct test_dump_if_all if there is an existing hardware interface
-Implement a per-prefix dump in scvpp
-free changes iterator in ietf-interfaces
-Add new XPATH in oc local-routing
-Introduce helper methods for sysrepo config callbacks
-Factorize config callback
-Refactor the openconfig-local-routing config callback
-Use common foreach_change to iterate over changes in all models
-Create a sample directory gathering example of configurations supposed
to work with sweetcomb
-Fix state callback of oc-local-routing
-Add new sample for get operation on next-hop
-foreach_elt maccro condition forgets to read one element
Change-Id: I8e87fce577a00337977588f057a6e095a20f457c
Signed-off-by: YohanPipereau <ypiperea@cisco.com>
Diffstat (limited to 'src/plugins/ietf/ietf_nat.c')
-rw-r--r-- | src/plugins/ietf/ietf_nat.c | 54 |
1 files changed, 18 insertions, 36 deletions
diff --git a/src/plugins/ietf/ietf_nat.c b/src/plugins/ietf/ietf_nat.c index 86c8570..9b2890e 100644 --- a/src/plugins/ietf/ietf_nat.c +++ b/src/plugins/ietf/ietf_nat.c @@ -14,10 +14,11 @@ * limitations under the License. */ -#include "ietf_nat.h" -#include "sc_vpp_comm.h" -#include "sc_vpp_interface.h" -#include "sc_vpp_nat.h" +#include <scvpp/comm.h> +#include <scvpp/interface.h> +#include <scvpp/nat.h> + +#include "../sc_model.h" #include <assert.h> #include <string.h> @@ -30,17 +31,6 @@ #include "../sys_util.h" -static int ietf_nat_mod_cb( - __attribute__((unused)) sr_session_ctx_t *session, - __attribute__((unused)) const char *module_name, - __attribute__((unused)) sr_notif_event_t event, - __attribute__((unused)) void *private_ctx) -{ - SRP_LOG_INF("Module subscribe: %s", module_name); - - return SR_ERR_OK; -} - /** * @brief Wrapper struct for VAPI address range payload. */ @@ -103,8 +93,7 @@ static int parse_instance_policy_external_ip_address_pool( if (sr_xpath_node_name_eq(val->xpath, "pool-id")) { SRP_LOG_WRN("%s not supported.", val->xpath); } else if(sr_xpath_node_name_eq(val->xpath, "external-ip-pool")) { - rc = get_address_from_prefix(tmp_str, val->data.string_val, - VPP_IP4_ADDRESS_STRING_LEN, &prefix); + rc = prefix2address(tmp_str, val->data.string_val, &prefix); if (0 != rc) { SRP_LOG_ERR_MSG("Error translate"); return SR_ERR_INVAL_ARG; @@ -136,8 +125,9 @@ static int parse_instance_policy_external_ip_address_pool( // XPATH: /ietf-nat:nat/instances/instance[id='%s']/policy[id='%s']/external-ip-address-pool[pool-id='%s']/ static int instances_instance_policy_external_ip_address_pool_cb( sr_session_ctx_t *ds, const char *xpath, sr_notif_event_t event, - __attribute__((unused)) void *private_ctx) + void *private_ctx) { + UNUSED(private_ctx); sr_error_t rc = SR_ERR_OK; sr_change_iter_t *it = NULL; sr_change_oper_t oper; @@ -150,6 +140,8 @@ static int instances_instance_policy_external_ip_address_pool_cb( ARG_CHECK2(SR_ERR_INVAL_ARG, ds, xpath); + SRP_LOG_INF("In %s", __FUNCTION__); + new_address_r.payload.vrf_id = ~0; old_address_r.payload.vrf_id = ~0; @@ -165,8 +157,7 @@ static int instances_instance_policy_external_ip_address_pool_cb( return SR_ERR_OK; } - while (sr_get_change_next(ds, it, &oper, - &old_val, &new_val) == SR_ERR_OK) { + foreach_change (ds, it, oper, old_val, new_val) { SRP_LOG_DBG("A change detected in '%s', op=%d", new_val ? new_val->xpath : old_val->xpath, oper); @@ -345,8 +336,7 @@ static int parse_instance_mapping_table_mapping_entry( return SR_ERR_INVAL_ARG; } - rc = get_address_from_prefix(tmp_str, val->data.string_val, - VPP_IP4_PREFIX_STRING_LEN, NULL); + rc = prefix2address(tmp_str, val->data.string_val, NULL); if (0 != rc) { SRP_LOG_ERR_MSG("Error translate"); return SR_ERR_INVAL_ARG; @@ -367,8 +357,7 @@ static int parse_instance_mapping_table_mapping_entry( return SR_ERR_INVAL_ARG; } - rc = get_address_from_prefix(tmp_str, val->data.string_val, - VPP_IP4_ADDRESS_STRING_LEN, NULL); + rc = prefix2address(tmp_str, val->data.string_val, NULL); if (0 != rc) { SRP_LOG_ERR_MSG("Error translate"); return SR_ERR_INVAL_ARG; @@ -402,8 +391,9 @@ static int parse_instance_mapping_table_mapping_entry( // XPATH: /ietf-nat:nat/instances/instance[id='%s']/mapping-table/mapping-entry[index='%s']/ static int instances_instance_mapping_table_mapping_entry_cb( sr_session_ctx_t *ds, const char *xpath, sr_notif_event_t event, - __attribute__((unused)) void *private_ctx) + void *private_ctx) { + UNUSED(private_ctx); sr_error_t rc = SR_ERR_OK; sr_change_iter_t *it = NULL; sr_change_oper_t oper; @@ -416,6 +406,8 @@ static int instances_instance_mapping_table_mapping_entry_cb( ARG_CHECK2(SR_ERR_INVAL_ARG, ds, xpath); + SRP_LOG_INF("In %s", __FUNCTION__); + new_mapping.mtype = UNKNOWN; old_mapping.mtype = UNKNOWN; @@ -431,8 +423,7 @@ static int instances_instance_mapping_table_mapping_entry_cb( return SR_ERR_OK; } - while (sr_get_change_next(ds, it, &oper, - &old_val, &new_val) == SR_ERR_OK) { + foreach_change (ds, it, oper, old_val, new_val) { SRP_LOG_DBG("A change detected in '%s', op=%d", new_val ? new_val->xpath : old_val->xpath, oper); @@ -503,15 +494,6 @@ error: const xpath_t ietf_nat_xpaths[IETF_NAT_SIZE] = { { - .xpath = "ietf-nat", - .method = MODULE, - .datastore = SR_DS_RUNNING, - .cb.mcb = ietf_nat_mod_cb, - .private_ctx = NULL, - .priority = 0, - .opts = SR_SUBSCR_EV_ENABLED | SR_SUBSCR_APPLY_ONLY | SR_SUBSCR_CTX_REUSE - }, - { .xpath = "/ietf-nat:nat/instances/instance/policy/external-ip-address-pool", .method = XPATH, .datastore = SR_DS_RUNNING, |