Hi Hoang, Ok , I will check and start testing & reviewing the patch.
-AVM On 8/11/2016 10:11 AM, Vo Minh Hoang wrote: > Dear Mahesh, > > Encode and decode for new messages are implemented in separate functions > like *_encode() and *_decode() so they do not exist in *_edu.c file. > > I find only MDS_CLIENT_MSG_FORMAT_VER and I think that I should not update > this each time adding new message. I am sorry if it is wrong. > > Thank you very much for your review. > Best regards, > Hoang > > -----Original Message----- > From: A V Mahesh [mailto:mahesh.va...@oracle.com] > Sent: Wednesday, August 10, 2016 6:37 PM > To: Hoang Vo <hoang.m...@dektech.com.au> > Cc: opensaf-devel@lists.sourceforge.net > Subject: Re: [PATCH 4 of 8] cpsv: Add new message to support extended > SaNameT v1 [#1574] > > Hi Hoang, > > I am seeing new encode decodes done between D to ND , in this patch ( old > cpd to new cpnd & old cpnd to new cpd ) but not able find edu rules , > please confirm. > > Otherwise it will take unnecessary testing effort. > > If not handled please refer `osaf/libs/common/cpsv/cpsv_edu.c ` file for > MSG_FORMAT_VER handling or any old patches > > -AVM > > > On 8/2/2016 2:14 PM, Hoang Vo wrote: >> osaf/libs/common/cpsv/cpsv_evt.c | 504 > ++++++++++++++++++++++++++++++- >> osaf/libs/common/cpsv/include/cpsv_evt.h | 24 + >> osaf/services/saf/cpsv/cpd/cpd_mds.c | 84 ++++- >> osaf/services/saf/cpsv/cpnd/cpnd_mds.c | 84 ++++- >> 4 files changed, 668 insertions(+), 28 deletions(-) >> >> >> New messages supporting extended SaNameT are introduce. Encoding and > decoding funtions for them are also included. >> diff --git a/osaf/libs/common/cpsv/cpsv_evt.c >> b/osaf/libs/common/cpsv/cpsv_evt.c >> --- a/osaf/libs/common/cpsv/cpsv_evt.c >> +++ b/osaf/libs/common/cpsv/cpsv_evt.c >> @@ -30,11 +30,14 @@ >> >> #include "cpsv.h" >> #include "cpa_tmr.h" >> +#include "osaf_extended_name.h" >> >> FUNC_DECLARATION(CPSV_CKPT_DATA); >> static SaCkptSectionIdT *cpsv_evt_dec_sec_id(NCS_UBAID *i_ub, uint32_t > svc_id); >> static uint32_t cpsv_evt_enc_sec_id(NCS_UBAID *o_ub, SaCkptSectionIdT > *sec_id); >> static void cpsv_convert_sec_id_to_string(char *sec_id_str, >> SaCkptSectionIdT *section_id); >> +static uint32_t cpsv_encode_extended_name_flat(NCS_UBAID *uba, >> +SaNameT *name); static uint32_t >> +cpsv_decode_extended_name_flat(NCS_UBAID *uba, SaNameT *name); >> >> const char *cpa_evt_str[] = { >> "STRING_0", >> @@ -258,6 +261,13 @@ char* cpsv_evt_str(CPSV_EVT *evt, char * >> info->client_hdl, info->ckpt_name.value); >> break; >> } >> + case CPND_EVT_A2ND_CKPT_OPEN_2: >> + { >> + CPSV_A2ND_OPEN_REQ *info = > &evt->info.cpnd.info.openReq; >> + snprintf(o_evt_str, len, > "CPND_EVT_A2ND_CKPT_OPEN_2(hdl=%llu, %s)", >> + info->client_hdl, > osaf_extended_name_borrow(&info->ckpt_name)); >> + break; >> + } >> case CPND_EVT_A2ND_CKPT_CLOSE: >> { >> CPSV_A2ND_CKPT_CLOSE *info = > &evt->info.cpnd.info.closeReq; @@ >> -271,6 +281,12 @@ char* cpsv_evt_str(CPSV_EVT *evt, char * >> snprintf(o_evt_str, len, > "CPND_EVT_A2ND_CKPT_UNLINK(%s)", info->ckpt_name.value); >> break; >> } >> + case CPND_EVT_A2ND_CKPT_UNLINK_2: >> + { >> + CPSV_A2ND_CKPT_UNLINK *info = > &evt->info.cpnd.info.ulinkReq; >> + snprintf(o_evt_str, len, > "CPND_EVT_A2ND_CKPT_UNLINK_2(%s)", > osaf_extended_name_borrow(&info->ckpt_name)); >> + break; >> + } >> case CPND_EVT_A2ND_CKPT_RDSET: >> { >> CPSV_A2ND_RDSET *info = > &evt->info.cpnd.info.rdsetReq; @@ -513,12 >> +529,33 @@ char* cpsv_evt_str(CPSV_EVT *evt, char * >> case CPND_EVT_D2ND_CKPT_CREATE: >> { >> CPSV_D2ND_CKPT_CREATE *info = > &evt->info.cpnd.info.ckpt_create; >> - snprintf(o_evt_str, len, "[%llu] > CPND_EVT_D2ND_CKPT_CREATE(%s, create_rep=%s, active=0x%X)", >> - info->ckpt_info.ckpt_id, > info->ckpt_name.value, >> + snprintf(o_evt_str, len, "[%llu] > CPND_EVT_D2ND_CKPT_CREATE(%s, create_rep=%s, is_act=%s, active=0x%X, > dest_cnt=%d)", >> + info->ckpt_info.ckpt_id, >> +osaf_extended_name_borrow(&info->ckpt_name), >> info->ckpt_info.ckpt_rep_create ? "true" : > "false", >> - > m_NCS_NODE_ID_FROM_MDS_DEST(info->ckpt_info.active_dest)); >> + info->ckpt_info.is_active_exists ? "true" : > "false", >> + > m_NCS_NODE_ID_FROM_MDS_DEST(info->ckpt_info.active_dest), >> + info->ckpt_info.dest_cnt); >> break; >> } >> + case CPND_EVT_D2ND_CKPT_CREATE_2: >> + { >> + CPSV_D2ND_CKPT_CREATE *info = > &evt->info.cpnd.info.ckpt_create; >> + snprintf(o_evt_str, len, "[%llu] > CPND_EVT_D2ND_CKPT_CREATE_2(%s, create_rep=%s, is_act=%s, active=0x%X, > dest_cnt=%d)", >> + info->ckpt_info.ckpt_id, > osaf_extended_name_borrow(&info->ckpt_name), >> + info->ckpt_info.ckpt_rep_create ? "true" : > "false", >> + info->ckpt_info.is_active_exists ? "true" : > "false", >> + > m_NCS_NODE_ID_FROM_MDS_DEST(info->ckpt_info.active_dest), >> + info->ckpt_info.dest_cnt); >> + >> + SaCkptCheckpointCreationAttributesT *attr = > &info->ckpt_info.attributes; >> + TRACE("mSecS=%lld, flags=%d, mSec=%d, mSecIdS=%lld, > ret=%lld, ckptS=%lld", attr->maxSectionSize, >> + attr->creationFlags, attr->maxSections, > attr->maxSectionIdSize, attr->retentionDuration, >> + attr->checkpointSize); >> + for (int i = 0; i < info->ckpt_info.dest_cnt; i++) >> + TRACE("dest[%d] = 0x%" PRIX64 " ", i, > info->ckpt_info.dest_list[i].dest); >> + break; >> + } >> + >> case CPND_EVT_D2ND_CKPT_DESTROY: >> { >> snprintf(o_evt_str, len, "[%llu] > CPND_EVT_D2ND_CKPT_DESTROY", >> evt->info.cpnd.info.ckpt_destroy.ckpt_id); >> @@ -612,6 +649,13 @@ char* cpsv_evt_str(CPSV_EVT *evt, char * >> info->client_hdl, info->ckpt_name.value); >> break; >> } >> + case CPND_EVT_A2ND_CKPT_LIST_UPDATE_2: >> + { >> + CPSV_A2ND_CKPT_LIST_UPDATE *info = > &evt->info.cpnd.info.ckptListUpdate; >> + snprintf(o_evt_str, len, > "CPND_EVT_A2ND_CKPT_LIST_UPDATE_2(hdl=%llu, %s)", >> + info->client_hdl, > osaf_extended_name_borrow(&info->ckpt_name)); >> + break; >> + } >> case CPND_EVT_A2ND_ARRIVAL_CB_UNREG: >> snprintf(o_evt_str, len, > "CPND_EVT_A2ND_ARRIVAL_CB_UNREG(hdl=%llu)", >> evt->info.cpnd.info.arr_ntfy.client_hdl); >> @@ -813,15 +857,35 @@ char* cpsv_evt_str(CPSV_EVT *evt, char * >> case CPD_EVT_ND2D_CKPT_CREATE: >> { >> CPSV_ND2D_CKPT_CREATE *info = > &evt->info.cpd.info.ckpt_create; >> - snprintf(o_evt_str, len, > "CPD_EVT_ND2D_CKPT_CREATE(%s, creationFlags=0x%X)", >> - info->ckpt_name.value, > info->attributes.creationFlags); >> + snprintf(o_evt_str, len, > "CPD_EVT_ND2D_CKPT_CREATE(%s, creationFlags=0x%X, release=%d, majorV=%d, > minorV=%d)", >> + osaf_extended_name_borrow(&info->ckpt_name), > info->attributes.creationFlags, info->client_version.releaseCode, >> + info->client_version.majorVersion, >> +info->client_version.minorVersion); >> break; >> } >> + case CPD_EVT_ND2D_CKPT_CREATE_2: >> + { >> + CPSV_ND2D_CKPT_CREATE *info = > &evt->info.cpd.info.ckpt_create; >> + snprintf(o_evt_str, len, > "CPD_EVT_ND2D_CKPT_CREATE_2(%s, creationFlags=0x%X, release=%d, majorV=%d, > minorV=%d)", >> + osaf_extended_name_borrow(&info->ckpt_name), > info->attributes.creationFlags, info->client_version.releaseCode, >> + info->client_version.majorVersion, >> +info->client_version.minorVersion); >> + >> + SaCkptCheckpointCreationAttributesT *attr = > &info->attributes; >> + TRACE("mSecS=%lld, flags=%d, mSec=%d, mSecIdS=%lld, > ret=%lld, ckptS=%lld", attr->maxSectionSize, >> + attr->creationFlags, attr->maxSections, > attr->maxSectionIdSize, attr->retentionDuration, >> + attr->checkpointSize); >> + break; >> + } >> + >> case CPD_EVT_ND2D_CKPT_UNLINK: >> { >> snprintf(o_evt_str, len, > "CPD_EVT_ND2D_CKPT_UNLINK(%s)", > evt->info.cpd.info.ckpt_ulink.ckpt_name.value); >> break; >> } >> + case CPD_EVT_ND2D_CKPT_UNLINK_2: >> + { >> + snprintf(o_evt_str, len, > "CPD_EVT_ND2D_CKPT_UNLINK_2(%s)", > osaf_extended_name_borrow(&evt->info.cpd.info.ckpt_ulink.ckpt_name)); >> + break; >> + } >> case CPD_EVT_ND2D_CKPT_RDSET: >> { >> CPSV_CKPT_RDSET *info = &evt->info.cpd.info.rd_set; > @@ -891,6 >> +955,12 @@ char* cpsv_evt_str(CPSV_EVT *evt, char * >> snprintf(o_evt_str, len, > "CPD_EVT_ND2D_CKPT_DESTROY_BYNAME(ckpt=%s)", info->ckpt_name.value); >> break; >> } >> + case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2: >> + { >> + CPSV_CKPT_NAME_INFO *info = > &evt->info.cpd.info.ckpt_destroy_byname; >> + snprintf(o_evt_str, len, > "CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2(ckpt=%s)", > osaf_extended_name_borrow(&info->ckpt_name)); >> + break; >> + } >> case CPD_EVT_ND2D_CKPT_CREATED_SECTIONS: >> { >> CPSV_CKPT_NUM_SECTIONS *info = >> &evt->info.cpd.info.ckpt_created_sections; >> @@ -915,6 +985,16 @@ char* cpsv_evt_str(CPSV_EVT *evt, char * >> info->is_last ? "true" : "false"); >> break; >> } >> + case CPD_EVT_ND2D_CKPT_INFO_UPDATE_2: >> + { >> + CPSV_ND2D_CKPT_INFO_UPD *info = > &evt->info.cpd.info.ckpt_info; >> + snprintf(o_evt_str, len, "[%llu] > CPD_EVT_ND2D_CKPT_INFO_UPDATE_2(%s, creationFlags=0x%X, " >> + "openFlags=0x%X, numbers[U/W/R]=[%u/%u/%u], > active=%s, last=%s)", info->ckpt_id, >> + osaf_extended_name_borrow(&info->ckpt_name), > info->attributes.creationFlags, info->ckpt_flags, info->num_users, >> + info->num_writers, info->num_readers, > info->is_active ? "true" : "false", >> + info->is_last ? "true" : "false"); >> + break; >> + } >> default: >> snprintf(o_evt_str, len, "INVALID_CPD_TYPE(type = > %d)", evt->info.cpd.type); >> break; >> @@ -1443,6 +1523,15 @@ uint32_t cpsv_evt_enc_flat(EDU_HDL *edu_ >> > i_evt->info.cpnd.info.ckpt_create.ckpt_info.dest_cnt * > sizeof(CPSV_CPND_DEST_INFO); >> ncs_encode_n_octets_in_uba(o_ub, (uint8_t > *)dest_list, size); >> } >> + } else if (i_evt->info.cpnd.type == > CPND_EVT_D2ND_CKPT_CREATE_2) { >> + CPSV_CPND_DEST_INFO *dest_list = > i_evt->info.cpnd.info.ckpt_create.ckpt_info.dest_list; >> + if > (i_evt->info.cpnd.info.ckpt_create.ckpt_info.dest_cnt) { >> + size = >> + > i_evt->info.cpnd.info.ckpt_create.ckpt_info.dest_cnt * > sizeof(CPSV_CPND_DEST_INFO); >> + ncs_encode_n_octets_in_uba(o_ub, (uint8_t > *)dest_list, size); >> + } >> + cpsv_encode_extended_name_flat(o_ub, >> +&i_evt->info.cpnd.info.ckpt_create.ckpt_name); >> + >> } else if (i_evt->info.cpnd.type == CPSV_D2ND_RESTART_DONE) > { >> CPSV_CPND_DEST_INFO *dest_list = > i_evt->info.cpnd.info.cpnd_restart_done.dest_list; >> if > (i_evt->info.cpnd.info.cpnd_restart_done.dest_cnt) { @@ >> -1455,13 +1544,25 @@ uint32_t cpsv_evt_enc_flat(EDU_HDL *edu_ >> size = > i_evt->info.cpnd.info.ckpt_add.dest_cnt * sizeof(CPSV_CPND_DEST_INFO); >> ncs_encode_n_octets_in_uba(o_ub, (uint8_t > *)dest_list, size); >> } >> - } >> - else if(i_evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_REFCNTSET) >> - { >> - if(i_evt->info.cpnd.info.refCntsetReq.no_of_nodes) >> - cpsv_ref_cnt_encode(o_ub, > &i_evt->info.cpnd.info.refCntsetReq); >> - } >> - } >> + } else if (i_evt->info.cpnd.type == > CPND_EVT_A2ND_CKPT_REFCNTSET) { >> + if (i_evt->info.cpnd.info.refCntsetReq.no_of_nodes) >> + cpsv_ref_cnt_encode(o_ub, > &i_evt->info.cpnd.info.refCntsetReq); >> + } else if (i_evt->info.cpnd.type == > CPND_EVT_A2ND_CKPT_OPEN_2) { >> + cpsv_encode_extended_name_flat(o_ub, > &i_evt->info.cpnd.info.openReq.ckpt_name); >> + } else if (i_evt->info.cpnd.type == > CPND_EVT_A2ND_CKPT_UNLINK_2) { >> + cpsv_encode_extended_name_flat(o_ub, > &i_evt->info.cpnd.info.ulinkReq.ckpt_name); >> + } else if (i_evt->info.cpnd.type == > CPND_EVT_A2ND_CKPT_LIST_UPDATE_2) { >> + cpsv_encode_extended_name_flat(o_ub, > &i_evt->info.cpnd.info.ckptListUpdate.ckpt_name); >> + } >> + } else if (i_evt->type == CPSV_EVT_TYPE_CPD) { >> + if (i_evt->info.cpd.type == CPD_EVT_ND2D_CKPT_CREATE_2) { >> + cpsv_encode_extended_name_flat(o_ub, > &i_evt->info.cpd.info.ckpt_create.ckpt_name); >> + } else if (i_evt->info.cpd.type == > CPD_EVT_ND2D_CKPT_UNLINK_2) { >> + cpsv_encode_extended_name_flat(o_ub, > &i_evt->info.cpd.info.ckpt_ulink.ckpt_name); >> + } else if (i_evt->info.cpd.type == > CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2) { >> + cpsv_encode_extended_name_flat(o_ub, > &i_evt->info.cpd.info.ckpt_destroy_byname.ckpt_name); >> + } >> + } >> return NCSCC_RC_SUCCESS; >> } >> >> @@ -2094,6 +2195,22 @@ uint32_t cpsv_evt_dec_flat(EDU_HDL *edu_ >> } >> break; >> >> + >> + case CPND_EVT_D2ND_CKPT_CREATE_2: >> + >> + if > (o_evt->info.cpnd.info.ckpt_create.ckpt_info.dest_cnt) { >> + CPSV_CPND_DEST_INFO *dest_list = 0; >> + uint32_t size = sizeof(CPSV_CPND_DEST_INFO) > * >> + > o_evt->info.cpnd.info.ckpt_create.ckpt_info.dest_cnt; >> + if (size) >> + dest_list = > m_MMGR_ALLOC_CPSV_SYS_MEMORY(size); >> + if (dest_list && size) >> + ncs_decode_n_octets_from_uba(i_ub, > (uint8_t *)dest_list, size); >> + > o_evt->info.cpnd.info.ckpt_create.ckpt_info.dest_list = dest_list; >> + } >> + cpsv_decode_extended_name_flat(i_ub, > &o_evt->info.cpnd.info.ckpt_create.ckpt_name); >> + break; >> + >> case CPSV_D2ND_RESTART_DONE: >> >> if > (o_evt->info.cpnd.info.cpnd_restart_done.dest_cnt) { @@ >> -2120,10 +2237,34 @@ uint32_t cpsv_evt_dec_flat(EDU_HDL *edu_ >> o_evt->info.cpnd.info.ckpt_add.dest_list = > dest_list; >> } >> break; >> - case CPND_EVT_A2ND_CKPT_REFCNTSET: >> - if(o_evt->info.cpnd.info.refCntsetReq.no_of_nodes) >> - > cpsv_refcnt_ckptid_decode(&o_evt->info.cpnd.info.refCntsetReq,i_ub ); >> - break; >> + case CPND_EVT_A2ND_CKPT_REFCNTSET: >> + if(o_evt->info.cpnd.info.refCntsetReq.no_of_nodes) >> + > cpsv_refcnt_ckptid_decode(&o_evt->info.cpnd.info.refCntsetReq,i_ub ); >> + break; >> + case CPND_EVT_A2ND_CKPT_OPEN_2: >> + cpsv_decode_extended_name_flat(i_ub, > &o_evt->info.cpnd.info.openReq.ckpt_name); >> + break; >> + case CPND_EVT_A2ND_CKPT_UNLINK_2: >> + cpsv_decode_extended_name_flat(i_ub, > &o_evt->info.cpnd.info.ulinkReq.ckpt_name); >> + break; >> + case CPND_EVT_A2ND_CKPT_LIST_UPDATE_2: >> + cpsv_decode_extended_name_flat(i_ub, > &o_evt->info.cpnd.info.ckptListUpdate.ckpt_name); >> + break; >> + default: >> + break; >> + } >> + } else if (o_evt->type == CPSV_EVT_TYPE_CPD) { >> + switch (o_evt->info.cpd.type) >> + { >> + case CPD_EVT_ND2D_CKPT_CREATE_2: >> + cpsv_decode_extended_name_flat(i_ub, > &o_evt->info.cpd.info.ckpt_create.ckpt_name); >> + break; >> + case CPD_EVT_ND2D_CKPT_UNLINK_2: >> + cpsv_decode_extended_name_flat(i_ub, > &o_evt->info.cpd.info.ckpt_ulink.ckpt_name); >> + break; >> + case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2: >> + cpsv_decode_extended_name_flat(i_ub, > &o_evt->info.cpd.info.ckpt_destroy_byname.ckpt_name); >> + break; >> default: >> break; >> } >> @@ -2265,3 +2406,334 @@ void cpsv_convert_sec_id_to_string(char >> strncpy(sec_id_str, "(NULL)", MAX_SEC_ID_LEN); >> } >> } >> + >> +uint32_t cpsv_encode_extended_name(NCS_UBAID *uba, SaNameT *name) { >> + uint32_t rc; >> + >> + if(!osaf_is_an_extended_name(name)) >> + return NCSCC_RC_SUCCESS; >> + >> + SaConstStringT value = osaf_extended_name_borrow(name); >> + uint16_t length = osaf_extended_name_length(name); >> + >> + /* Encode name length */ >> + if (length > kOsafMaxDnLength) { >> + LOG_ER("SaNameT length too long: %d", length); >> + return NCSCC_RC_FAILURE; >> + } >> + osaf_encode_uint16(uba, length); >> + >> + /* Encode name value */ >> + rc = ncs_encode_n_octets_in_uba(uba, (uint8_t*)value, > (uint32_t)length); >> + return rc; >> +} >> +uint32_t cpsv_decode_extended_name(NCS_UBAID *uba, SaNameT *name) { >> + uint16_t length = 0; >> + uint32_t rc; >> + if(!osaf_is_an_extended_name(name)) >> + return NCSCC_RC_SUCCESS; >> + >> + /* Decode name length */ >> + osaf_decode_uint16(uba, &length); >> + if (length > kOsafMaxDnLength) { >> + LOG_ER("SaNameT length too long: %d", length); >> + return NCSCC_RC_FAILURE; >> + } >> + >> + /* Decode name value */ >> + char* value = (char*) malloc(length + 1); >> + if (value == NULL) { >> + LOG_ER("Out of memory"); >> + return NCSCC_RC_FAILURE; >> + } >> + rc = ncs_decode_n_octets_from_uba(uba, (uint8_t*) value, (uint32_t) > length); >> + value[length] = '\0'; >> + osaf_extended_name_steal(value, name); >> + return rc; >> +} >> + >> +static uint32_t cpsv_encode_extended_name_flat(NCS_UBAID *uba, >> +SaNameT *name) { >> + uint32_t rc; >> + >> + if(!osaf_is_an_extended_name(name)) >> + return NCSCC_RC_SUCCESS; >> + >> + SaConstStringT value = osaf_extended_name_borrow(name); >> + uint16_t length = osaf_extended_name_length(name); >> + >> + /* Encode name length */ >> + if (length > kOsafMaxDnLength) { >> + LOG_ER("SaNameT length too long: %d", length); >> + return NCSCC_RC_FAILURE; >> + } >> + rc = ncs_encode_n_octets_in_uba(uba, (uint8_t*)&length, > sizeof(length)); >> + if (rc != NCSCC_RC_SUCCESS) >> + return rc; >> + >> + /* Encode name value */ >> + rc = ncs_encode_n_octets_in_uba(uba, (uint8_t*)value, > (uint32_t)length); >> + return rc; >> +} >> + >> +static uint32_t cpsv_decode_extended_name_flat(NCS_UBAID *uba, >> +SaNameT *name) { >> + uint16_t length = 0; >> + uint32_t rc; >> + if(!osaf_is_an_extended_name(name)) >> + return NCSCC_RC_SUCCESS; >> + >> + /* Decode name length */ >> + rc = ncs_decode_n_octets_from_uba(uba, (uint8_t*)&length, > sizeof(length)); >> + if (rc != NCSCC_RC_SUCCESS) >> + return rc; >> + >> + if (length > kOsafMaxDnLength) { >> + LOG_ER("SaNameT length too long: %d", length); >> + return NCSCC_RC_FAILURE; >> + } >> + >> + /* Decode name value */ >> + char* value = (char*) malloc(length + 1); >> + if (value == NULL) { >> + LOG_ER("Out of memory"); >> + return NCSCC_RC_FAILURE; >> + } >> + rc = ncs_decode_n_octets_from_uba(uba, (uint8_t*) value, (uint32_t) > length); >> + value[length] = '\0'; >> + osaf_extended_name_steal(value, name); >> + return rc; >> +} >> + >> +void cpsv_ckpt_dest_list_encode(NCS_UBAID *io_uba, >> +CPSV_CPND_DEST_INFO *dest_list, uint32_t dest_cnt) { >> + TRACE_ENTER(); >> + >> + if ((dest_list == NULL) || (dest_cnt == 0)) { >> + TRACE_LEAVE(); >> + return; >> + } >> + >> + int i = 0; >> + for (i = 0; i < dest_cnt; i++) { >> + uint8_t *stream = ncs_enc_reserve_space(io_uba, > sizeof(MDS_DEST)); >> + ncs_encode_64bit(&stream, dest_list[i].dest); >> + ncs_enc_claim_space(io_uba, sizeof(MDS_DEST)); >> + } >> + >> + TRACE_LEAVE(); >> +} >> + >> +void cpsv_ckpt_dest_list_decode(NCS_UBAID *io_uba, >> +CPSV_CPND_DEST_INFO **o_dest_list, uint32_t dest_cnt) { >> + TRACE_ENTER(); >> + >> + int i = 0; >> + >> + if (dest_cnt == 0) { >> + TRACE_LEAVE(); >> + return; >> + } >> + >> + *o_dest_list = > m_MMGR_ALLOC_CPSV_SYS_MEMORY(sizeof(CPSV_CPND_DEST_INFO) * dest_cnt); >> + CPSV_CPND_DEST_INFO *dest_list = *o_dest_list; >> + >> + for (i = 0; i < dest_cnt; i++) { >> + CPSV_CPND_DEST_INFO dest_info; >> + uint8_t *stream = ncs_dec_flatten_space(io_uba, (uint8_t > *)&dest_info, sizeof(MDS_DEST)); >> + dest_list[i].dest = ncs_decode_64bit(&stream); >> + ncs_dec_skip_space(io_uba, sizeof(MDS_DEST)); >> + } >> + >> + TRACE_LEAVE(); >> +} >> + >> +void cpsv_ckpt_creation_attribute_encode(NCS_UBAID *io_uba, >> +SaCkptCheckpointCreationAttributesT *attributes) { >> + osaf_encode_uint32(io_uba, attributes->creationFlags); >> + osaf_encode_uint64(io_uba, attributes->checkpointSize); >> + osaf_encode_satimet(io_uba, attributes->retentionDuration); >> + osaf_encode_uint32(io_uba, attributes->maxSections); >> + osaf_encode_uint64(io_uba, attributes->maxSectionSize); >> + osaf_encode_uint64(io_uba, attributes->maxSectionIdSize); } >> + >> +void cpsv_ckpt_creation_attribute_decode(NCS_UBAID *io_uba, >> +SaCkptCheckpointCreationAttributesT *attributes) { >> + osaf_decode_uint32(io_uba, &attributes->creationFlags); >> + osaf_decode_uint64(io_uba, (uint64_t *)&attributes->checkpointSize); >> + osaf_decode_satimet(io_uba, &attributes->retentionDuration); >> + osaf_decode_uint32(io_uba, &attributes->maxSections); >> + osaf_decode_uint64(io_uba, (uint64_t *)&attributes->maxSectionSize); >> + osaf_decode_uint64(io_uba, (uint64_t >> +*)&attributes->maxSectionIdSize); } >> + >> +uint32_t cpsv_d2nd_ckpt_create_2_encode(CPSV_D2ND_CKPT_CREATE >> +*create_data, NCS_UBAID *io_uba) { >> + TRACE_ENTER(); >> + >> + osaf_encode_sanamet(io_uba, &create_data->ckpt_name); >> + >> + osaf_encode_uint32(io_uba, create_data->ckpt_info.error); >> + osaf_encode_uint64(io_uba, create_data->ckpt_info.ckpt_id); >> + osaf_encode_bool(io_uba, create_data->ckpt_info.is_active_exists); >> + cpsv_ckpt_creation_attribute_encode(io_uba, > &create_data->ckpt_info.attributes); >> + osaf_encode_uint64(io_uba, create_data->ckpt_info.active_dest); >> + osaf_encode_bool(io_uba, create_data->ckpt_info.ckpt_rep_create); >> + osaf_encode_uint32(io_uba, create_data->ckpt_info.dest_cnt); >> + cpsv_ckpt_dest_list_encode(io_uba, create_data->ckpt_info.dest_list, >> +create_data->ckpt_info.dest_cnt); >> + >> + cpsv_encode_extended_name(io_uba, &create_data->ckpt_name); >> + >> + TRACE_LEAVE(); >> + return NCSCC_RC_SUCCESS; >> +} >> + >> +uint32_t cpsv_d2nd_ckpt_create_2_decode(CPSV_D2ND_CKPT_CREATE >> +*create_data, NCS_UBAID *io_uba) { >> + TRACE_ENTER(); >> + >> + osaf_decode_sanamet(io_uba, &create_data->ckpt_name); >> + >> + osaf_decode_uint32(io_uba, &create_data->ckpt_info.error); >> + osaf_decode_uint64(io_uba, (uint64_t > *)&create_data->ckpt_info.ckpt_id); >> + osaf_decode_bool(io_uba, &create_data->ckpt_info.is_active_exists); >> + cpsv_ckpt_creation_attribute_decode(io_uba, > &create_data->ckpt_info.attributes); >> + osaf_decode_uint64(io_uba, &create_data->ckpt_info.active_dest); >> + osaf_decode_bool(io_uba, &create_data->ckpt_info.ckpt_rep_create); >> + osaf_decode_uint32(io_uba, &create_data->ckpt_info.dest_cnt); >> + cpsv_ckpt_dest_list_decode(io_uba, >> +&create_data->ckpt_info.dest_list, create_data->ckpt_info.dest_cnt); >> + >> + cpsv_decode_extended_name(io_uba, &create_data->ckpt_name); >> + >> + TRACE_LEAVE(); >> + return NCSCC_RC_SUCCESS; >> +} >> + >> +uint32_t cpsv_nd2d_ckpt_create_2_encode(CPSV_ND2D_CKPT_CREATE >> +*create_data, NCS_UBAID *io_uba) { >> + TRACE_ENTER(); >> + >> + osaf_encode_sanamet(io_uba, &create_data->ckpt_name); >> + cpsv_ckpt_creation_attribute_encode(io_uba, > &create_data->attributes); >> + osaf_encode_uint32(io_uba, create_data->ckpt_flags); >> + osaf_encode_uint8(io_uba, create_data->client_version.releaseCode); >> + osaf_encode_uint8(io_uba, create_data->client_version.majorVersion); >> + osaf_encode_uint8(io_uba, create_data->client_version.minorVersion); >> + >> + cpsv_encode_extended_name(io_uba, &create_data->ckpt_name); >> + >> + TRACE_LEAVE(); >> + return NCSCC_RC_SUCCESS; >> +} >> + >> +uint32_t cpsv_nd2d_ckpt_create_2_decode(CPSV_ND2D_CKPT_CREATE >> +*create_data, NCS_UBAID *io_uba) { >> + TRACE_ENTER(); >> + >> + osaf_decode_sanamet(io_uba, &create_data->ckpt_name); >> + cpsv_ckpt_creation_attribute_decode(io_uba, > &create_data->attributes); >> + osaf_decode_uint32(io_uba, &create_data->ckpt_flags); >> + osaf_decode_uint8(io_uba, &create_data->client_version.releaseCode); >> + osaf_decode_uint8(io_uba, > &create_data->client_version.majorVersion); >> + osaf_decode_uint8(io_uba, >> +&create_data->client_version.minorVersion); >> + >> + cpsv_decode_extended_name(io_uba, &create_data->ckpt_name); >> + >> + TRACE_LEAVE(); >> + return NCSCC_RC_SUCCESS; >> +} >> + >> +uint32_t cpsv_nd2d_ckpt_unlink_2_encode(CPSV_ND2D_CKPT_UNLINK >> +*unlink_info, NCS_UBAID *io_uba) { >> + TRACE_ENTER(); >> + >> + osaf_encode_sanamet(io_uba, &unlink_info->ckpt_name); >> + cpsv_encode_extended_name(io_uba, &unlink_info->ckpt_name); >> + >> + TRACE_LEAVE(); >> + return NCSCC_RC_SUCCESS; >> +} >> + >> +uint32_t cpsv_nd2d_ckpt_unlink_2_decode(CPSV_ND2D_CKPT_UNLINK >> +*unlink_info, NCS_UBAID *io_uba) { >> + TRACE_ENTER(); >> + >> + osaf_decode_sanamet(io_uba, &unlink_info->ckpt_name); >> + cpsv_decode_extended_name(io_uba, &unlink_info->ckpt_name); >> + >> + TRACE_LEAVE(); >> + return NCSCC_RC_SUCCESS; >> +} >> + >> +uint32_t cpsv_nd2d_ckpt_destroy_byname_2_encode(CPSV_CKPT_NAME_INFO >> +*ckpt_info, NCS_UBAID *io_uba) { >> + TRACE_ENTER(); >> + >> + osaf_encode_sanamet(io_uba, &ckpt_info->ckpt_name); >> + cpsv_encode_extended_name(io_uba, &ckpt_info->ckpt_name); >> + >> + TRACE_LEAVE(); >> + return NCSCC_RC_SUCCESS; >> +} >> + >> +uint32_t cpsv_nd2d_ckpt_destroy_byname_2_decode(CPSV_CKPT_NAME_INFO >> +*ckpt_info, NCS_UBAID *io_uba) { >> + TRACE_ENTER(); >> + >> + osaf_decode_sanamet(io_uba, &ckpt_info->ckpt_name); >> + cpsv_decode_extended_name(io_uba, &ckpt_info->ckpt_name); >> + >> + TRACE_LEAVE(); >> + return NCSCC_RC_SUCCESS; >> +} >> + >> +uint32_t cpsv_nd2d_ckpt_info_update_encode(CPSV_ND2D_CKPT_INFO_UPD >> +*update_info, NCS_UBAID *io_uba) { >> + TRACE_ENTER(); >> + >> + osaf_encode_uint64(io_uba, update_info->ckpt_id); >> + osaf_encode_sanamet(io_uba, &update_info->ckpt_name); >> + cpsv_ckpt_creation_attribute_encode(io_uba, > &update_info->attributes); >> + osaf_encode_uint32(io_uba, update_info->ckpt_flags); >> + osaf_encode_uint8(io_uba, update_info->client_version.releaseCode); >> + osaf_encode_uint8(io_uba, update_info->client_version.majorVersion); >> + osaf_encode_uint8(io_uba, update_info->client_version.minorVersion); >> + osaf_encode_bool(io_uba, update_info->is_active); >> + osaf_encode_uint32(io_uba, update_info->num_users); >> + osaf_encode_uint32(io_uba, update_info->num_writers); >> + osaf_encode_uint32(io_uba, update_info->num_readers); >> + osaf_encode_bool(io_uba, update_info->is_last); >> + osaf_encode_bool(io_uba, update_info->is_unlink); >> + >> + cpsv_encode_extended_name(io_uba, &update_info->ckpt_name); >> + >> + TRACE_LEAVE(); >> + return NCSCC_RC_SUCCESS; >> +} >> + >> +uint32_t cpsv_nd2d_ckpt_info_update_decode(CPSV_ND2D_CKPT_INFO_UPD >> +*update_info, NCS_UBAID *io_uba) { >> + TRACE_ENTER(); >> + >> + osaf_decode_uint64(io_uba, (uint64_t *)&update_info->ckpt_id); >> + osaf_decode_sanamet(io_uba, &update_info->ckpt_name); >> + cpsv_ckpt_creation_attribute_decode(io_uba, > &update_info->attributes); >> + osaf_decode_uint32(io_uba, &update_info->ckpt_flags); >> + osaf_decode_uint8(io_uba, &update_info->client_version.releaseCode); >> + osaf_decode_uint8(io_uba, > &update_info->client_version.majorVersion); >> + osaf_decode_uint8(io_uba, > &update_info->client_version.minorVersion); >> + osaf_decode_bool(io_uba, &update_info->is_active); >> + osaf_decode_uint32(io_uba, &update_info->num_users); >> + osaf_decode_uint32(io_uba, &update_info->num_writers); >> + osaf_decode_uint32(io_uba, &update_info->num_readers); >> + osaf_decode_bool(io_uba, &update_info->is_last); >> + osaf_decode_bool(io_uba, &update_info->is_unlink); >> + >> + cpsv_decode_extended_name(io_uba, &update_info->ckpt_name); >> + >> + TRACE_LEAVE(); >> + return NCSCC_RC_SUCCESS; >> +} >> diff --git a/osaf/libs/common/cpsv/include/cpsv_evt.h >> b/osaf/libs/common/cpsv/include/cpsv_evt.h >> --- a/osaf/libs/common/cpsv/include/cpsv_evt.h >> +++ b/osaf/libs/common/cpsv/include/cpsv_evt.h >> @@ -191,6 +191,13 @@ typedef enum cpnd_evt_type { >> CPND_EVT_A2ND_CKPT_LIST_UPDATE, /* Checkpoint ckpt list update >> Call > */ >> CPND_EVT_A2ND_ARRIVAL_CB_UNREG, /* Checkpoint Arrival Callback > Un-Register*/ >> CPND_EVT_D2ND_CKPT_INFO_UPDATE_ACK, /* Checkpoint information > update ack */ >> + >> + /* Events support extended SaNameT */ >> + CPND_EVT_A2ND_CKPT_OPEN_2, /* Checkpoint Open Request */ >> + CPND_EVT_A2ND_CKPT_UNLINK_2, /* Checkpoint Unlink Call */ >> + CPND_EVT_A2ND_CKPT_LIST_UPDATE_2, /* Checkpoint ckpt list > update Call */ >> + CPND_EVT_D2ND_CKPT_CREATE_2, /* ckpt create evt for > Non-collocated */ >> + >> CPND_EVT_MAX >> >> }CPND_EVT_TYPE; >> @@ -221,6 +228,13 @@ typedef enum cpd_evt_type { >> CPD_EVT_ND2D_CKPT_CREATED_SECTIONS, >> CPD_EVT_TIME_OUT, >> CPD_EVT_ND2D_CKPT_INFO_UPDATE, /* Checkpoint information update */ >> + >> + /* Events support extended SaNameT */ >> + CPD_EVT_ND2D_CKPT_CREATE_2, >> + CPD_EVT_ND2D_CKPT_UNLINK_2, >> + CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2, >> + CPD_EVT_ND2D_CKPT_INFO_UPDATE_2, >> + >> CPD_EVT_MAX >> } CPD_EVT_TYPE; >> >> @@ -897,6 +911,16 @@ uint32_t cpsv_nd2a_read_data_encode(CPSV >> uint32_t cpsv_data_access_rsp_decode(CPSV_ND2A_DATA_ACCESS_RSP > *data_rsp, NCS_UBAID *io_uba, MDS_CLIENT_MSG_FORMAT_VER i_msg_fmt_ver); >> uint32_t cpsv_nd2a_read_data_decode(CPSV_ND2A_READ_DATA *read_data, > NCS_UBAID *io_uba); >> uint32_t cpsv_data_access_rsp_encode(CPSV_ND2A_DATA_ACCESS_RSP >> *data_rsp, NCS_UBAID *io_uba, MDS_CLIENT_MSG_FORMAT_VER >> o_msg_fmt_ver); >> +uint32_t cpsv_d2nd_ckpt_create_2_encode(CPSV_D2ND_CKPT_CREATE >> +*create_data, NCS_UBAID *io_uba); uint32_t >> +cpsv_d2nd_ckpt_create_2_decode(CPSV_D2ND_CKPT_CREATE *create_data, >> +NCS_UBAID *io_uba); uint32_t >> +cpsv_nd2d_ckpt_create_2_encode(CPSV_ND2D_CKPT_CREATE *create_data, >> +NCS_UBAID *io_uba); uint32_t >> +cpsv_nd2d_ckpt_create_2_decode(CPSV_ND2D_CKPT_CREATE *create_data, >> +NCS_UBAID *io_uba); uint32_t >> +cpsv_nd2d_ckpt_unlink_2_encode(CPSV_ND2D_CKPT_UNLINK *unlink_info, >> +NCS_UBAID *io_uba); uint32_t >> +cpsv_nd2d_ckpt_unlink_2_decode(CPSV_ND2D_CKPT_UNLINK *unlink_info, >> +NCS_UBAID *io_uba); uint32_t >> +cpsv_nd2d_ckpt_destroy_byname_2_encode(CPSV_CKPT_NAME_INFO >> +*ckpt_info, NCS_UBAID *io_uba); uint32_t >> +cpsv_nd2d_ckpt_destroy_byname_2_decode(CPSV_CKPT_NAME_INFO >> +*ckpt_info, NCS_UBAID *io_uba); uint32_t >> +cpsv_nd2d_ckpt_info_update_encode(CPSV_ND2D_CKPT_INFO_UPD >> +*update_info, NCS_UBAID *io_uba); uint32_t >> +cpsv_nd2d_ckpt_info_update_decode(CPSV_ND2D_CKPT_INFO_UPD >> +*update_info, NCS_UBAID *io_uba); >> void cpsv_evt_trace(char *svc_name, CPSV_EVT_REQUEST request, >> CPSV_EVT *evt, MDS_DEST mds_dest); >> >> /* >> diff --git a/osaf/services/saf/cpsv/cpd/cpd_mds.c >> b/osaf/services/saf/cpsv/cpd/cpd_mds.c >> --- a/osaf/services/saf/cpsv/cpd/cpd_mds.c >> +++ b/osaf/services/saf/cpsv/cpd/cpd_mds.c >> @@ -309,8 +309,9 @@ uint32_t cpd_mds_callback(struct ncsmds_ >> > **************************************************************************** > **/ >> static uint32_t cpd_mds_enc(CPD_CB *cb, MDS_CALLBACK_ENC_INFO *enc_info) >> { >> - CPSV_EVT *msg_ptr = NULL; >> EDU_ERR ederror = 0; >> + NCS_UBAID *io_uba = enc_info->io_uba; >> + uint32_t rc = NCSCC_RC_SUCCESS; >> >> /* Get the Msg Format version from the SERVICE_ID & > RMT_SVC_PVT_SUBPART_VERSION */ >> if (enc_info->i_to_svc_id == NCSMDS_SVC_ID_CPA) { @@ -327,13 >> +328,35 @@ static uint32_t cpd_mds_enc(CPD_CB *cb, >> >> if (enc_info->o_msg_fmt_ver) { >> >> - msg_ptr = (CPSV_EVT *)enc_info->i_msg; >> + CPSV_EVT *pevt = (CPSV_EVT *)enc_info->i_msg; >> + uint8_t *pstream = NULL; >> + >> + if (pevt->type == CPSV_EVT_TYPE_CPND) { >> + switch (pevt->info.cpnd.type) { >> + case CPND_EVT_D2ND_CKPT_CREATE: >> + >> + pstream = ncs_enc_reserve_space(io_uba, 12); >> + if (!pstream) >> + return > m_CPSV_DBG_SINK(NCSCC_RC_FAILURE, >> + "Memory alloc > failed in cpnd_mds_enc \n"); >> + ncs_encode_32bit(&pstream, pevt->type); >> + ncs_encode_32bit(&pstream, > pevt->info.cpnd.error); >> + ncs_encode_32bit(&pstream, > pevt->info.cpnd.type); >> + ncs_enc_claim_space(io_uba, 12); >> + >> + rc = > cpsv_d2nd_ckpt_create_2_encode(&pevt->info.cpnd.info.ckpt_create, io_uba); >> + return rc; >> + >> + default: >> + break; >> + } >> + } >> >> return (m_NCS_EDU_VER_EXEC(&cb->edu_hdl, > FUNC_NAME(CPSV_EVT), >> - enc_info->io_uba, > EDP_OP_TYPE_ENC, msg_ptr, &ederror, >> + enc_info->io_uba, > EDP_OP_TYPE_ENC, pevt, &ederror, >> enc_info->i_rem_svc_pvt_ver)); >> } else { >> - TRACE_4("INVALID MSG FORMAT IN ENC FULL"); /* Drop The > Message,Format Version Invalid */ >> + LOG_IN("INVALID MSG FORMAT IN ENC FULL"); /* Drop The > Message,Format Version Invalid */ >> return NCSCC_RC_FAILURE; >> } >> >> @@ -358,6 +381,7 @@ static uint32_t cpd_mds_dec(CPD_CB *cb, >> EDU_ERR ederror = 0; >> uint32_t rc = NCSCC_RC_SUCCESS; >> bool is_valid_msg_fmt = false; >> + uint8_t local_data[20]; >> >> if (dec_info->i_fr_svc_id == NCSMDS_SVC_ID_CPND) { >> is_valid_msg_fmt = >> m_NCS_MSG_FORMAT_IS_VALID(dec_info->i_msg_fmt_ver, >> @@ -371,16 +395,64 @@ static uint32_t cpd_mds_dec(CPD_CB *cb, >> >> memset(msg_ptr, 0, sizeof(CPSV_EVT)); >> dec_info->o_msg = (NCSCONTEXT)msg_ptr; >> + uint8_t *pstream = ncs_dec_flatten_space(dec_info->io_uba, > local_data, 8); >> + msg_ptr->type = ncs_decode_32bit(&pstream); >> + >> + if (msg_ptr->type == CPSV_EVT_TYPE_CPD) { >> + msg_ptr->info.cpd.type = ncs_decode_32bit(&pstream); >> + >> + switch (msg_ptr->info.cpd.type) { >> + case CPD_EVT_ND2D_CKPT_CREATE_2: >> + ncs_dec_skip_space(dec_info->io_uba, 8); >> + rc = > cpsv_nd2d_ckpt_create_2_decode(&msg_ptr->info.cpd.info.ckpt_create, > dec_info->io_uba); >> + if (rc != NCSCC_RC_SUCCESS) { >> + LOG_ER("cpd mds decode failed "); >> + > m_MMGR_FREE_CPSV_EVT(dec_info->o_msg, NCS_SERVICE_ID_CPD); >> + } >> + return rc; >> + >> + case CPD_EVT_ND2D_CKPT_UNLINK_2: >> + ncs_dec_skip_space(dec_info->io_uba, 8); >> + rc = > cpsv_nd2d_ckpt_unlink_2_decode(&msg_ptr->info.cpd.info.ckpt_ulink, > dec_info->io_uba); >> + if (rc != NCSCC_RC_SUCCESS) { >> + LOG_ER("cpd mds decode failed "); >> + > m_MMGR_FREE_CPSV_EVT(dec_info->o_msg, NCS_SERVICE_ID_CPD); >> + } >> + return rc; >> + >> + >> + case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2: >> + ncs_dec_skip_space(dec_info->io_uba, 8); >> + rc = > cpsv_nd2d_ckpt_destroy_byname_2_decode(&msg_ptr->info.cpd.info.ckpt_destroy_ > byname, dec_info->io_uba); >> + if (rc != NCSCC_RC_SUCCESS) { >> + LOG_ER("cpd mds decode failed "); >> + > m_MMGR_FREE_CPSV_EVT(dec_info->o_msg, NCS_SERVICE_ID_CPD); >> + } >> + return rc; >> + >> + case CPD_EVT_ND2D_CKPT_INFO_UPDATE: >> + ncs_dec_skip_space(dec_info->io_uba, 8); >> + rc = > cpsv_nd2d_ckpt_info_update_decode(&msg_ptr->info.cpd.info.ckpt_info, > dec_info->io_uba); >> + if (rc != NCSCC_RC_SUCCESS) { >> + LOG_ER("cpd mds decode failed "); >> + > m_MMGR_FREE_CPSV_EVT(dec_info->o_msg, NCS_SERVICE_ID_CPD); >> + } >> + return rc; >> + >> + default: >> + break; >> + } >> + } >> >> rc = m_NCS_EDU_EXEC(&cb->edu_hdl, FUNC_NAME(CPSV_EVT), >> dec_info->io_uba, EDP_OP_TYPE_DEC, > (CPSV_EVT **)&dec_info->o_msg, &ederror); >> if (rc != NCSCC_RC_SUCCESS) { >> - TRACE_4("cpd mds decode failed "); >> + LOG_ER("cpd mds decode failed "); >> m_MMGR_FREE_CPSV_EVT(dec_info->o_msg, > NCS_SERVICE_ID_CPD); >> } >> return rc; >> } else { >> - TRACE_4("cpd mds dec failed"); >> + LOG_ER("cpd mds dec failed - invalid fmr_ver = %d", >> +dec_info->i_msg_fmt_ver); >> return NCSCC_RC_FAILURE; >> } >> } >> diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_mds.c >> b/osaf/services/saf/cpsv/cpnd/cpnd_mds.c >> --- a/osaf/services/saf/cpsv/cpnd/cpnd_mds.c >> +++ b/osaf/services/saf/cpsv/cpnd/cpnd_mds.c >> @@ -330,6 +330,7 @@ static uint32_t cpnd_mds_enc(CPND_CB *cb >> ncs_enc_claim_space(io_uba, 8); >> >> rc = >> cpsv_data_access_rsp_encode(&pevt->info.cpa.info.sec_data_rsp, io_uba, >> enc_info->o_msg_fmt_ver); >> + TRACE_LEAVE(); >> return rc; >> } >> >> @@ -347,6 +348,7 @@ static uint32_t cpnd_mds_enc(CPND_CB *cb >> ncs_enc_claim_space(io_uba, 12); >> >> rc = >> cpsv_ckpt_access_encode(&pevt->info.cpnd.info.ckpt_nd2nd_sync, >> io_uba); >> + TRACE_LEAVE(); >> return rc; >> >> case > CPSV_EVT_ND2ND_CKPT_SECT_ACTIVE_DATA_ACCESS_REQ: >> @@ -361,6 +363,7 @@ static uint32_t cpnd_mds_enc(CPND_CB *cb >> ncs_enc_claim_space(io_uba, 12); >> >> rc = >> cpsv_ckpt_access_encode(&pevt->info.cpnd.info.ckpt_nd2nd_data, >> io_uba); >> + TRACE_LEAVE(); >> return rc; >> >> case > CPSV_EVT_ND2ND_CKPT_SECT_ACTIVE_DATA_ACCESS_RSP: >> @@ -375,14 +378,76 @@ static uint32_t cpnd_mds_enc(CPND_CB *cb >> ncs_enc_claim_space(io_uba, 12); >> >> rc = >> cpsv_data_access_rsp_encode(&pevt->info.cpnd.info.ckpt_nd2nd_data_rsp, >> io_uba, enc_info->o_msg_fmt_ver); >> + TRACE_LEAVE(); >> return rc; >> + >> + default: >> + break; >> + } >> + } else if (pevt->type == CPSV_EVT_TYPE_CPD) { >> + switch (pevt->info.cpd.type) { >> + case CPD_EVT_ND2D_CKPT_CREATE_2: >> + pstream = ncs_enc_reserve_space(io_uba, 8); >> + if (!pstream) >> + return > m_CPSV_DBG_SINK(NCSCC_RC_FAILURE, >> + "Memory alloc > failed in cpnd_mds_enc \n"); >> + ncs_encode_32bit(&pstream, pevt->type); /* > CPSV_EVT Type */ >> + ncs_encode_32bit(&pstream, > pevt->info.cpd.type); /* cpnd_evt SubType */ >> + ncs_enc_claim_space(io_uba, 8); >> + >> + rc = > cpsv_nd2d_ckpt_create_2_encode(&pevt->info.cpd.info.ckpt_create, io_uba); >> + TRACE_LEAVE(); >> + return rc; >> + >> + case CPD_EVT_ND2D_CKPT_UNLINK_2: >> + pstream = ncs_enc_reserve_space(io_uba, 8); >> + if (!pstream) >> + return > m_CPSV_DBG_SINK(NCSCC_RC_FAILURE, >> + "Memory alloc > failed in cpnd_mds_enc \n"); >> + ncs_encode_32bit(&pstream, pevt->type); /* > CPSV_EVT Type */ >> + ncs_encode_32bit(&pstream, > pevt->info.cpd.type); /* cpnd_evt SubType */ >> + ncs_enc_claim_space(io_uba, 8); >> + >> + rc = > cpsv_nd2d_ckpt_unlink_2_encode(&pevt->info.cpd.info.ckpt_ulink, io_uba); >> + TRACE_LEAVE(); >> + return rc; >> + >> + case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2: >> + pstream = ncs_enc_reserve_space(io_uba, 8); >> + if (!pstream) >> + return > m_CPSV_DBG_SINK(NCSCC_RC_FAILURE, >> + "Memory alloc > failed in cpnd_mds_enc \n"); >> + ncs_encode_32bit(&pstream, pevt->type); /* > CPSV_EVT Type */ >> + ncs_encode_32bit(&pstream, > pevt->info.cpd.type); /* cpnd_evt SubType */ >> + ncs_enc_claim_space(io_uba, 8); >> + >> + rc = > cpsv_nd2d_ckpt_destroy_byname_2_encode(&pevt->info.cpd.info.ckpt_destroy_byn > ame, io_uba); >> + TRACE_LEAVE(); >> + return rc; >> + >> + case CPD_EVT_ND2D_CKPT_INFO_UPDATE: >> + pstream = ncs_enc_reserve_space(io_uba, 8); >> + if (!pstream) >> + return > m_CPSV_DBG_SINK(NCSCC_RC_FAILURE, >> + "Memory alloc > failed in cpnd_mds_enc \n"); >> + ncs_encode_32bit(&pstream, pevt->type); /* > CPSV_EVT Type */ >> + ncs_encode_32bit(&pstream, > pevt->info.cpd.type); /* cpnd_evt SubType */ >> + ncs_enc_claim_space(io_uba, 8); >> + >> + rc = > cpsv_nd2d_ckpt_info_update_encode(&pevt->info.cpd.info.ckpt_info, io_uba); >> + TRACE_LEAVE(); >> + return rc; >> + >> + >> default: >> break; >> } >> } >> /* For all other Cases Invoke EDU encode */ >> - return (m_NCS_EDU_EXEC(&cb->cpnd_edu_hdl, > FUNC_NAME(CPSV_EVT), >> - enc_info->io_uba, EDP_OP_TYPE_ENC, > pevt, &ederror)); >> + rc = m_NCS_EDU_EXEC(&cb->cpnd_edu_hdl, FUNC_NAME(CPSV_EVT), >> + enc_info->io_uba, EDP_OP_TYPE_ENC, > pevt, &ederror); >> + TRACE_LEAVE(); >> + return rc; >> } else { >> TRACE_LEAVE(); >> return m_CPSV_DBG_SINK(NCSCC_RC_FAILURE, "INVALID MSG FORMAT > IN ENCODE FULL\n"); /* Drop The Message - Incompatible Message Format > Version */ >> @@ -523,10 +588,16 @@ static uint32_t cpnd_mds_dec(CPND_CB *cb >> > dec_info->io_uba,dec_info->i_msg_fmt_ver); >> goto free; >> >> - case CPND_EVT_A2ND_CKPT_REFCNTSET: >> - ncs_dec_skip_space(dec_info->io_uba, 12); >> - rc = > cpsv_refcnt_ckptid_decode(&msg_ptr->info.cpnd.info.refCntsetReq,dec_info->io > _uba); >> - goto free; >> + case CPND_EVT_A2ND_CKPT_REFCNTSET: >> + ncs_dec_skip_space(dec_info->io_uba, 12); >> + rc = > cpsv_refcnt_ckptid_decode(&msg_ptr->info.cpnd.info.refCntsetReq,dec_info->io > _uba); >> + goto free; >> + >> + case CPND_EVT_D2ND_CKPT_CREATE: >> + ncs_dec_skip_space(dec_info->io_uba, 12); >> + rc = > cpsv_d2nd_ckpt_create_2_decode(&msg_ptr->info.cpnd.info.ckpt_create, > dec_info->io_uba); >> + goto free; >> + >> default: >> break; >> } >> @@ -584,6 +655,7 @@ static uint32_t cpnd_mds_enc_flat(CPND_C >> > CPND_WRT_CPD_SUBPART_VER_MAX, cpnd_cpd_msg_fmt_table); >> >> } >> + TRACE("o_msg_fmt_ver=%d, i_rem_svc_pvt_ver=%d", info->o_msg_fmt_ver, >> +info->i_rem_svc_pvt_ver); >> >> if (info->o_msg_fmt_ver) { >> evt = (CPSV_EVT *)info->i_msg; > > > ------------------------------------------------------------------------------ What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. http://sdm.link/zohodev2dev _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel