diff --git a/radio/fhi_72/mplane/config-mplane.c b/radio/fhi_72/mplane/config-mplane.c index 94d3bbe49e..69ff1fd2b3 100644 --- a/radio/fhi_72/mplane/config-mplane.c +++ b/radio/fhi_72/mplane/config-mplane.c @@ -91,3 +91,27 @@ bool validate_config_mplane(ru_session_t *ru_session) return true; } + +bool commit_config_mplane(ru_session_t *ru_session) +{ + int timeout = CLI_RPC_REPLY_TIMEOUT; + struct nc_rpc *rpc; + NC_WD_MODE wd = NC_WD_ALL; + NC_PARAMTYPE param = NC_PARAMTYPE_CONST; + int confirmed = 0; + int32_t confirm_timeout = 0; + char *persist = NULL, *persist_id = NULL; + + MP_LOG_I("RPC request to RU \"%s\" = candidate datastore.\n", ru_session->ru_ip_add); + rpc = nc_rpc_commit(confirmed, confirm_timeout, persist, persist_id, param); + AssertError(rpc != NULL, return false, "[MPLANE] RPC creation failed.\n"); + + bool success = rpc_send_recv((struct nc_session *)ru_session->session, rpc, wd, timeout, NULL); + AssertError(success, return false, "[MPLANE] Failed to commit candidate datastore.\n"); + + MP_LOG_I("Successfully commited CU-planes configuration into running datastore for RU \"%s\".\n", ru_session->ru_ip_add); + + nc_rpc_free(rpc); + + return true; +} diff --git a/radio/fhi_72/mplane/config-mplane.h b/radio/fhi_72/mplane/config-mplane.h index ba3c926954..c8451ca8a0 100644 --- a/radio/fhi_72/mplane/config-mplane.h +++ b/radio/fhi_72/mplane/config-mplane.h @@ -29,4 +29,6 @@ bool edit_config_mplane(ru_session_t *ru_session, const char *buffer, const open bool validate_config_mplane(ru_session_t *ru_session); +bool commit_config_mplane(ru_session_t *ru_session); + #endif /* CONFIGURE_MPLANE_H */ diff --git a/radio/fhi_72/mplane/init-mplane.c b/radio/fhi_72/mplane/init-mplane.c index f3560850fe..352a564cec 100644 --- a/radio/fhi_72/mplane/init-mplane.c +++ b/radio/fhi_72/mplane/init-mplane.c @@ -181,6 +181,9 @@ bool manage_ru(ru_session_t *ru_session, const openair0_config_t *oai, const siz success = validate_config_mplane(ru_session); AssertError(success, return false, "[MPLANE] Unable to validate the RU configuration.\n"); + + success = commit_config_mplane(ru_session); + AssertError(success, return false, "[MPLANE] Unable to commit the RU configuration.\n"); } free(operational_ds);