Hi Hoang,
ACK for [PATCH 3 of 8] with following minor comment
I think API should return SA_AIS_ERR_TOO_BIG = 26 instead of
SA_AIS_ERR_INVALID_PARAM ( please sync-up with other service return
values ).
Note : tested default functionality , LONG DN functionality not tested
in full fledged
-AVM
On 8/18/2016 12:48 PM, Hoang Vo wrote:
> osaf/libs/agents/saf/cpa/Makefile.am | 1 +
> osaf/libs/agents/saf/cpa/cpa_api.c | 36
> ++++++++++++++++----------------
> osaf/libs/agents/saf/cpa/cpa_db.c | 2 +
> osaf/libs/agents/saf/cpa/cpa_mds.c | 2 +-
> osaf/libs/agents/saf/cpa/cpa_proc.c | 2 +-
> osaf/libs/common/cpsv/include/cpa.h | 1 +
> osaf/libs/common/cpsv/include/cpa_cb.h | 2 +-
> osaf/libs/common/cpsv/include/cpa_proc.h | 2 +-
> 8 files changed, 26 insertions(+), 22 deletions(-)
>
>
> diff --git a/osaf/libs/agents/saf/cpa/Makefile.am
> b/osaf/libs/agents/saf/cpa/Makefile.am
> --- a/osaf/libs/agents/saf/cpa/Makefile.am
> +++ b/osaf/libs/agents/saf/cpa/Makefile.am
> @@ -22,6 +22,7 @@ noinst_LTLIBRARIES = libcpa.la
>
> libcpa_la_CPPFLAGS = \
> -DNCS_CPA=1 \
> + -DSA_EXTENDED_NAME_SOURCE \
> $(AM_CPPFLAGS) \
> -I$(top_srcdir)/osaf/libs/common/cpsv/include
>
> diff --git a/osaf/libs/agents/saf/cpa/cpa_api.c
> b/osaf/libs/agents/saf/cpa/cpa_api.c
> --- a/osaf/libs/agents/saf/cpa/cpa_api.c
> +++ b/osaf/libs/agents/saf/cpa/cpa_api.c
> @@ -870,19 +870,20 @@ SaAisErrorT saCkptCheckpointOpen(SaCkptH
> bool locked = false;
> uint32_t time_out=0;
> CPA_GLOBAL_CKPT_NODE *gc_node = NULL;
> + SaConstStringT ckpt_name = NULL;
>
> TRACE_ENTER2("SaCkptCheckpointHandleT passed is %llx",ckptHandle);
> - if ((checkpointName == NULL) || (checkpointHandle == NULL) ||
> (checkpointName->length == 0)) {
> + if ((checkpointName == NULL) || (checkpointHandle == NULL) ||
> (osaf_extended_name_length(checkpointName) == 0)) {
> TRACE_4("Cpa CkptOpen Api failed with return
> value:%d,ckptHandle:%llx", SA_AIS_ERR_INVALID_PARAM, ckptHandle);
> TRACE_LEAVE2("API return code = %u", rc);
> return SA_AIS_ERR_INVALID_PARAM;
> }
>
> - m_CPSV_SET_SANAMET(checkpointName);
> + ckpt_name = osaf_extended_name_borrow(checkpointName);
>
> /* SA_AIS_ERR_INVALID_PARAM, bullet 4 in SAI-AIS-CKPT-B.02.02
> Section 3.6.1 saCkptCheckpointOpen() and
> saCkptCheckpointOpenAsync(), Return Values */
> - if (strncmp((const char *)checkpointName->value, "safCkpt=", 8) !=
> 0) {
> + if (strncmp(ckpt_name, "safCkpt=", 8) != 0) {
> TRACE_4("Cpa CkptOpen:DN failed with return
> value:%d,ckptHandle:%llx", SA_AIS_ERR_INVALID_PARAM, ckptHandle);
> TRACE_LEAVE2("API return code = %u", rc);
> return SA_AIS_ERR_INVALID_PARAM;
[AVM] I think this should return SA_AIS_ERR_TOO_BIG = 26 ( please
sync-up with other service return values )
> @@ -909,7 +910,7 @@ SaAisErrorT saCkptCheckpointOpen(SaCkptH
>
>
> /* Draft Validations */
> - rc = cpa_open_attr_validate(checkpointCreationAttributes,
> checkpointOpenFlags, checkpointName);
> + rc = cpa_open_attr_validate(checkpointCreationAttributes,
> checkpointOpenFlags);
> if (rc != SA_AIS_OK) {
> /* No need to log, already logged inside the
> cpa_open_attr_validate */
> goto done;
> @@ -965,7 +966,7 @@ SaAisErrorT saCkptCheckpointOpen(SaCkptH
> lc_node->cl_hdl = ckptHandle;
> lc_node->open_flags = checkpointOpenFlags;
>
> - lc_node->ckpt_name = *checkpointName;
> + lc_node->ckpt_name = strdup(ckpt_name);
>
> /* Add CPA_LOCAL_CKPT_NODE to lcl_ckpt_hdl_tree */
> proc_rc = cpa_lcl_ckpt_node_add(&cb->lcl_ckpt_tree, lc_node);
> @@ -984,7 +985,7 @@ SaAisErrorT saCkptCheckpointOpen(SaCkptH
> evt.info.cpnd.info.openReq.client_hdl = ckptHandle;
> evt.info.cpnd.info.openReq.lcl_ckpt_hdl = lc_node->lcl_ckpt_hdl;
>
> - evt.info.cpnd.info.openReq.ckpt_name = *checkpointName;
> + osaf_extended_name_lend(ckpt_name,
> &evt.info.cpnd.info.openReq.ckpt_name);
>
> if (checkpointCreationAttributes) {
> evt.info.cpnd.info.openReq.ckpt_attrib =
> *checkpointCreationAttributes;
> @@ -1128,6 +1129,7 @@ gl_node_add_fail:
>
> lc_node_add_fail:
> if (lc_node != NULL) {
> + free((void *)lc_node->ckpt_name);
> m_MMGR_FREE_CPA_LOCAL_CKPT_NODE(lc_node);
> }
>
> @@ -1179,6 +1181,7 @@ SaAisErrorT saCkptCheckpointOpenAsync(Sa
> CPA_LOCAL_CKPT_NODE *lc_node = NULL;
> CPA_CLIENT_NODE *cl_node = NULL;
> uint32_t proc_rc = NCSCC_RC_SUCCESS;
> + SaConstStringT ckpt_name = NULL;
>
> TRACE_ENTER2("SaCkptCheckpointHandleT passed is %llx",ckptHandle);
>
> @@ -1188,19 +1191,17 @@ SaAisErrorT saCkptCheckpointOpenAsync(Sa
> return SA_AIS_ERR_INVALID_PARAM;
> }
>
> - /* Draft Validations */
> -
> - m_CPSV_SET_SANAMET(checkpointName);
> + ckpt_name = osaf_extended_name_borrow(checkpointName);
>
> /* SA_AIS_ERR_INVALID_PARAM, bullet 4 in SAI-AIS-CKPT-B.02.02
> Section 3.6.1 saCkptCheckpointOpen() and
> saCkptCheckpointOpenAsync(), Return Values */
> - if (strncmp((const char *)checkpointName->value, "safCkpt=", 8) !=
> 0) {
> + if (strncmp(ckpt_name, "safCkpt=", 8) != 0) {
> TRACE_4("cpa CkptOpen:DN Api failed with return
> value:%d,ckptHandle:%llx", SA_AIS_ERR_INVALID_PARAM, ckptHandle);
> TRACE_LEAVE2("API return code = %u", rc);
> return SA_AIS_ERR_INVALID_PARAM;
> }
>
> - rc = cpa_open_attr_validate(checkpointCreationAttributes,
> checkpointOpenFlags, checkpointName);
> + rc = cpa_open_attr_validate(checkpointCreationAttributes,
> checkpointOpenFlags);
> if (rc != SA_AIS_OK) {
> /* No need to log, it is already logged inside */
> goto done;
> @@ -1261,7 +1262,7 @@ SaAisErrorT saCkptCheckpointOpenAsync(Sa
> lc_node->lcl_ckpt_hdl = NCS_PTR_TO_UNS64_CAST(lc_node);
> lc_node->cl_hdl = ckptHandle;
> lc_node->open_flags = checkpointOpenFlags;
> - lc_node->ckpt_name = *checkpointName;
> + lc_node->ckpt_name = strdup(ckpt_name);
>
> /* Add CPA_LOCAL_CKPT_NODE to lcl_ckpt_hdl_tree */
> proc_rc = cpa_lcl_ckpt_node_add(&cb->lcl_ckpt_tree, lc_node);
> @@ -1280,7 +1281,7 @@ SaAisErrorT saCkptCheckpointOpenAsync(Sa
> evt.info.cpnd.info.openReq.client_hdl = ckptHandle;
> evt.info.cpnd.info.openReq.lcl_ckpt_hdl = lc_node->lcl_ckpt_hdl;
>
> - evt.info.cpnd.info.openReq.ckpt_name = *checkpointName;
> + osaf_extended_name_lend(ckpt_name,
> &evt.info.cpnd.info.openReq.ckpt_name);
>
> if (checkpointCreationAttributes) {
> evt.info.cpnd.info.openReq.ckpt_attrib =
> *checkpointCreationAttributes;
> @@ -1365,6 +1366,7 @@ SaAisErrorT saCkptCheckpointOpenAsync(Sa
>
> lc_node_add_fail:
> if (lc_node != NULL) {
> + free((void *)lc_node->ckpt_name);
> m_MMGR_FREE_CPA_LOCAL_CKPT_NODE(lc_node);
> }
>
> @@ -1583,6 +1585,7 @@ SaAisErrorT saCkptCheckpointUnlink(SaCkp
> uint32_t proc_rc = NCSCC_RC_SUCCESS;
> CPA_CLIENT_NODE *cl_node = NULL;
> CPA_CB *cb = NULL;
> + SaConstStringT ckpt_name = NULL;
>
> TRACE_ENTER2("SaCkptCheckpointHandleT passed is %llx",ckptHandle);
> /* For unlink CPA will not perform any operation other than passing
> @@ -1593,7 +1596,7 @@ SaAisErrorT saCkptCheckpointUnlink(SaCkp
> return rc;
> }
>
> - m_CPSV_SET_SANAMET(checkpointName);
> + ckpt_name = osaf_extended_name_borrow(checkpointName);
>
> /* retrieve CPA CB */
> m_CPA_RETRIEVE_CB(cb);
> @@ -1634,10 +1637,7 @@ SaAisErrorT saCkptCheckpointUnlink(SaCkp
> evt.type = CPSV_EVT_TYPE_CPND;
> evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_UNLINK;
>
> - /* evt.info.cpnd.info.ulinkReq.ckpt_name.length =
> checkpointName->length;
> -
> memcpy(evt.info.cpnd.info.ulinkReq.ckpt_name.value,checkpointName->value,checkpointName->length);
> */
> -
> - evt.info.cpnd.info.ulinkReq.ckpt_name = *checkpointName;
> + osaf_extended_name_lend(ckpt_name,
> &evt.info.cpnd.info.ulinkReq.ckpt_name);
>
> /* IF CPND IS DOWN */
> if (false == cb->is_cpnd_up) {
> diff --git a/osaf/libs/agents/saf/cpa/cpa_db.c
> b/osaf/libs/agents/saf/cpa/cpa_db.c
> --- a/osaf/libs/agents/saf/cpa/cpa_db.c
> +++ b/osaf/libs/agents/saf/cpa/cpa_db.c
> @@ -267,6 +267,8 @@ uint32_t cpa_lcl_ckpt_node_delete(CPA_CB
> ncshm_destroy_hdl(NCS_SERVICE_ID_CPA,
> lc_node->async_req_tmr.uarg);
> }
>
> + free((void *)lc_node->ckpt_name);
> +
> m_MMGR_FREE_CPA_LOCAL_CKPT_NODE(lc_node);
> }
>
> diff --git a/osaf/libs/agents/saf/cpa/cpa_mds.c
> b/osaf/libs/agents/saf/cpa/cpa_mds.c
> --- a/osaf/libs/agents/saf/cpa/cpa_mds.c
> +++ b/osaf/libs/agents/saf/cpa/cpa_mds.c
> @@ -517,7 +517,7 @@ static uint32_t cpa_mds_svc_evt(CPA_CB *
> evt.type = CPSV_EVT_TYPE_CPND;
> evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_LIST_UPDATE;
> evt.info.cpnd.info.ckptListUpdate.client_hdl =
> lc_node->cl_hdl;
> - evt.info.cpnd.info.ckptListUpdate.ckpt_name =
> lc_node->ckpt_name ;
> + osaf_extended_name_lend(lc_node->ckpt_name,
> &evt.info.cpnd.info.ckptListUpdate.ckpt_name);
>
> proc_rc = cpa_mds_msg_send(cb->cpa_mds_hdl,
> &cb->cpnd_mds_dest, &evt, NCSMDS_SVC_ID_CPND);
>
> diff --git a/osaf/libs/agents/saf/cpa/cpa_proc.c
> b/osaf/libs/agents/saf/cpa/cpa_proc.c
> --- a/osaf/libs/agents/saf/cpa/cpa_proc.c
> +++ b/osaf/libs/agents/saf/cpa/cpa_proc.c
> @@ -87,7 +87,7 @@ uint32_t cpa_version_validate(SaVersionT
>
> ******************************************************************************/
> uint32_t cpa_open_attr_validate(const SaCkptCheckpointCreationAttributesT
> *checkpointCreationAttributes,
> - SaCkptCheckpointOpenFlagsT checkpointOpenFlags,
> const SaNameT *checkpointName)
> + SaCkptCheckpointOpenFlagsT checkpointOpenFlags)
> {
> SaCkptCheckpointCreationFlagsT creationFlags = 0;
> /* Check the Open Flags is set, it should */
> diff --git a/osaf/libs/common/cpsv/include/cpa.h
> b/osaf/libs/common/cpsv/include/cpa.h
> --- a/osaf/libs/common/cpsv/include/cpa.h
> +++ b/osaf/libs/common/cpsv/include/cpa.h
> @@ -33,6 +33,7 @@
> #ifndef CPA_H
> #define CPA_H
>
> +#include "osaf_extended_name.h"
> #include "cpsv.h"
> #include "cpa_dl_api.h"
> #include "cpsv_papi.h"
> diff --git a/osaf/libs/common/cpsv/include/cpa_cb.h
> b/osaf/libs/common/cpsv/include/cpa_cb.h
> --- a/osaf/libs/common/cpsv/include/cpa_cb.h
> +++ b/osaf/libs/common/cpsv/include/cpa_cb.h
> @@ -41,7 +41,7 @@ typedef struct cpa_local_ckpt_node {
> SaCkptHandleT cl_hdl; /* client handle */
> SaCkptCheckpointHandleT gbl_ckpt_hdl; /* globally aware handle */
> SaCkptCheckpointOpenFlagsT open_flags;
> - SaNameT ckpt_name;
> + SaConstStringT ckpt_name;
> CPA_TMR async_req_tmr; /* Timer used for async requests */
> uint32_t sect_iter_cnt;
> } CPA_LOCAL_CKPT_NODE;
> diff --git a/osaf/libs/common/cpsv/include/cpa_proc.h
> b/osaf/libs/common/cpsv/include/cpa_proc.h
> --- a/osaf/libs/common/cpsv/include/cpa_proc.h
> +++ b/osaf/libs/common/cpsv/include/cpa_proc.h
> @@ -42,7 +42,7 @@ uint32_t cpa_process_evt(CPA_CB *cb, CPS
> uint32_t cpa_version_validate(SaVersionT *version);
> uint32_t cpa_open_attr_validate(const SaCkptCheckpointCreationAttributesT
> *checkpointCreationAttributes,
> - SaCkptCheckpointOpenFlagsT
> checkpointOpenFlags, const SaNameT *checkpointName);
> + SaCkptCheckpointOpenFlagsT
> checkpointOpenFlags);
>
> uint32_t cpa_callback_ipc_init(CPA_CLIENT_NODE *client_info);
> void cpa_callback_ipc_destroy(CPA_CLIENT_NODE *client_info);
------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel