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

Reply via email to