osaf/libs/common/cpsv/include/cpnd.h      |   1 +
 osaf/libs/common/cpsv/include/cpnd_cb.h   |   5 +-
 osaf/libs/common/cpsv/include/cpnd_init.h |   3 +-
 osaf/libs/common/cpsv/include/cpsv_shm.h  |   6 +-
 osaf/services/saf/cpsv/cpnd/Makefile.am   |   1 +
 osaf/services/saf/cpsv/cpnd/cpnd_db.c     |   6 +-
 osaf/services/saf/cpsv/cpnd/cpnd_evt.c    |  71 ++++++++++++++++++--------
 osaf/services/saf/cpsv/cpnd/cpnd_main.c   |   7 ++
 osaf/services/saf/cpsv/cpnd/cpnd_proc.c   |  83 ++++++++++++++++++++++--------
 osaf/services/saf/cpsv/cpnd/cpnd_res.c    |  20 +++---
 10 files changed, 143 insertions(+), 60 deletions(-)


diff --git a/osaf/libs/common/cpsv/include/cpnd.h 
b/osaf/libs/common/cpsv/include/cpnd.h
--- a/osaf/libs/common/cpsv/include/cpnd.h
+++ b/osaf/libs/common/cpsv/include/cpnd.h
@@ -34,6 +34,7 @@
 #define CPND_H
 
 #include <stdint.h>
+#include "osaf_extended_name.h"
 #include "ncssysf_def.h"
 #include "ncs_main_papi.h"
 #include "ncssysf_tsk.h"
diff --git a/osaf/libs/common/cpsv/include/cpnd_cb.h 
b/osaf/libs/common/cpsv/include/cpnd_cb.h
--- a/osaf/libs/common/cpsv/include/cpnd_cb.h
+++ b/osaf/libs/common/cpsv/include/cpnd_cb.h
@@ -34,6 +34,9 @@ extern uint32_t gl_cpnd_cb_hdl;
 #define m_CPND_GIVEUP_CPND_CB    ncshm_give_hdl(gl_cpnd_cb_hdl)
 
 #define CPND_MAX_REPLICAS 1000
+#define CPND_MAX_REPLICA_NAME_LENGTH 255
+#define CPND_REP_NAME_MAX_CKPT_NAME_LENGTH (CPND_MAX_REPLICA_NAME_LENGTH - 32)
+
 #define CPSV_GEN_SECTION_ID_SIZE 4
 #define CPSV_WAIT_TIME  1000
 
@@ -169,7 +172,7 @@ typedef struct cpnd_all_repl_write_evt_n
 typedef struct cpnd_ckpt_node {
        NCS_PATRICIA_NODE patnode;
        SaCkptCheckpointHandleT ckpt_id;        /* index for identifying the 
checkpoint */
-       SaNameT ckpt_name;
+       SaConstStringT ckpt_name;
        SaCkptCheckpointCreationAttributesT create_attrib;
        SaCkptCheckpointOpenFlagsT open_flags;
        uint32_t ckpt_lcl_ref_cnt;
diff --git a/osaf/libs/common/cpsv/include/cpnd_init.h 
b/osaf/libs/common/cpsv/include/cpnd_init.h
--- a/osaf/libs/common/cpsv/include/cpnd_init.h
+++ b/osaf/libs/common/cpsv/include/cpnd_init.h
@@ -130,6 +130,7 @@ uint32_t cpnd_all_repl_rsp_expiry(CPND_C
 uint32_t cpnd_open_active_sync_expiry(CPND_CB *cb, CPND_TMR_INFO *tmr_info);
 void cpnd_proc_free_read_data(CPSV_EVT *evt);
 SaUint32T cpnd_get_scAbsenceAllowed_attr();
+SaUint32T cpnd_get_longDnsAllowed_attr();
 /* End cpnd_proc.c */
 
 /* File : ---  cpnd_amf.c */
@@ -163,7 +164,7 @@ void cpnd_evt_node_get(CPND_CB *cb, SaCk
 void cpnd_evt_node_getnext(CPND_CB *cb, SaCkptCheckpointHandleT lcl_ckpt_id, 
CPSV_CPND_ALL_REPL_EVT_NODE **evt_node);
 uint32_t cpnd_evt_node_add(CPND_CB *cb, CPSV_CPND_ALL_REPL_EVT_NODE *evt_node);
 uint32_t cpnd_evt_node_del(CPND_CB *cb, CPSV_CPND_ALL_REPL_EVT_NODE *evt_node);
-CPND_CKPT_NODE *cpnd_ckpt_node_find_by_name(CPND_CB *cpnd_cb, SaNameT 
ckpt_name);
+CPND_CKPT_NODE *cpnd_ckpt_node_find_by_name(CPND_CB *cpnd_cb, SaConstStringT 
ckpt_name);
 CPND_CKPT_SECTION_INFO *cpnd_ckpt_sec_add(CPND_CKPT_NODE *cp_node, 
SaCkptSectionIdT *id, SaTimeT exp_time,
                                          uint32_t gen_flag);
 void cpnd_evt_backup_queue_add(CPND_CKPT_NODE *cp_node, CPND_EVT *evt);
diff --git a/osaf/libs/common/cpsv/include/cpsv_shm.h 
b/osaf/libs/common/cpsv/include/cpsv_shm.h
--- a/osaf/libs/common/cpsv/include/cpsv_shm.h
+++ b/osaf/libs/common/cpsv/include/cpsv_shm.h
@@ -18,6 +18,8 @@
 #ifndef CPSV_SHM_H
 #define CPSV_SHM_H
 
+#include "osaf_extended_name.h"
+
 #define MAX_CLIENTS 1000
 #define MAX_CKPTS  2000
 #define MAX_SIZE  30
@@ -29,7 +31,7 @@
 
 typedef struct cpsv_ckpt_hdr {
        SaCkptCheckpointHandleT ckpt_id;        /* Index for identifying the 
checkpoint */
-       SaNameT ckpt_name;
+       char ckpt_name[kOsafMaxDnLength];
        SaCkptCheckpointCreationAttributesT create_attrib;
        SaCkptCheckpointOpenFlagsT open_flags;
        uint32_t ckpt_lcl_ref_cnt;
@@ -55,7 +57,7 @@ typedef struct cpsv_sect_hdr {
 } CPSV_SECT_HDR;
 
 typedef struct ckpt_info {
-       SaNameT ckpt_name;
+       char ckpt_name[kOsafMaxDnLength];
        SaCkptCheckpointHandleT ckpt_id;
        uint32_t maxSections;
        SaSizeT maxSecSize;
diff --git a/osaf/services/saf/cpsv/cpnd/Makefile.am 
b/osaf/services/saf/cpsv/cpnd/Makefile.am
--- a/osaf/services/saf/cpsv/cpnd/Makefile.am
+++ b/osaf/services/saf/cpsv/cpnd/Makefile.am
@@ -26,6 +26,7 @@ osaf_execbin_PROGRAMS = osafckptnd
 osafckptnd_CPPFLAGS = \
        -DSA_CLM_B01=1 \
        -DNCS_CPND=1  \
+       -DSA_EXTENDED_NAME_SOURCE \
        $(AM_CPPFLAGS) \
        -I$(top_srcdir)/osaf/libs/common/immsv/include \
        -I$(top_srcdir)/osaf/libs/common/cpsv/include
diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_db.c 
b/osaf/services/saf/cpsv/cpnd/cpnd_db.c
--- a/osaf/services/saf/cpsv/cpnd/cpnd_db.c
+++ b/osaf/services/saf/cpsv/cpnd/cpnd_db.c
@@ -158,6 +158,8 @@ void cpnd_ckpt_node_destroy(CPND_CB *cb,
 
        cpnd_ckpt_sec_map_destroy(&cp_node->replica_info);
 
+       free((void *)cp_node->ckpt_name);
+
        m_MMGR_FREE_CPND_CKPT_NODE(cp_node);
        TRACE_LEAVE();
 
@@ -275,7 +277,7 @@ uint32_t cpnd_client_node_del(CPND_CB *c
  *
  * Notes         : None.
  *****************************************************************************/
-CPND_CKPT_NODE *cpnd_ckpt_node_find_by_name(CPND_CB *cpnd_cb, SaNameT 
ckpt_name)
+CPND_CKPT_NODE *cpnd_ckpt_node_find_by_name(CPND_CB *cpnd_cb, SaConstStringT 
ckpt_name)
 {
        CPND_CKPT_NODE *ckpt_node = NULL;
        SaCkptCheckpointHandleT prev_ckpt_id;
@@ -284,7 +286,7 @@ CPND_CKPT_NODE *cpnd_ckpt_node_find_by_n
 
        while (ckpt_node) {
                prev_ckpt_id = ckpt_node->ckpt_id;
-               if (memcmp(&ckpt_name, &ckpt_node->ckpt_name, sizeof(SaNameT)) 
== 0) {
+               if (strcmp(ckpt_name, ckpt_node->ckpt_name) == 0) {
                        return ckpt_node;
                }
                cpnd_ckpt_node_getnext(cpnd_cb, prev_ckpt_id, &ckpt_node);
diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c 
b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c
--- a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c
+++ b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c
@@ -593,7 +593,7 @@ static uint32_t cpnd_evt_proc_ckpt_final
 static uint32_t cpnd_evt_proc_ckpt_open(CPND_CB *cb, CPND_EVT *evt, 
CPSV_SEND_INFO *sinfo)
 {
        CPSV_EVT send_evt, *out_evt = NULL;
-       SaNameT ckpt_name;
+       SaConstStringT ckpt_name = NULL;
        uint32_t rc = NCSCC_RC_SUCCESS;
        CPND_CPD_DEFERRED_REQ_NODE *node = NULL;
        CPND_CKPT_CLIENT_NODE *cl_node = NULL;
@@ -605,12 +605,18 @@ static uint32_t cpnd_evt_proc_ckpt_open(
        TRACE_ENTER();
        memset(&send_evt, '\0', sizeof(CPSV_EVT));
 
+       if ((cpnd_get_longDnsAllowed_attr() == 0) && 
osaf_is_an_extended_name(&evt->info.openReq.ckpt_name)) {
+               LOG_ER("cpnd - longDnsAllowed == false - NOT supporting 
extended name");
+               send_evt.info.cpa.info.openRsp.error = SA_AIS_ERR_INVALID_PARAM;
+               goto agent_rsp;
+       }
+
        if (!cpnd_is_cpd_up(cb)) {
                send_evt.info.cpa.info.openRsp.error = SA_AIS_ERR_TRY_AGAIN;
                goto agent_rsp;
        }
 
-       ckpt_name = evt->info.openReq.ckpt_name;
+       ckpt_name = osaf_extended_name_borrow(&evt->info.openReq.ckpt_name);
        client_hdl = evt->info.openReq.client_hdl;
 
        cpnd_client_node_get(cb, client_hdl, &cl_node);
@@ -714,7 +720,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(
        send_evt.type = CPSV_EVT_TYPE_CPD;
        send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_CREATE;
 
-       send_evt.info.cpd.info.ckpt_create.ckpt_name = ckpt_name;
+       osaf_extended_name_lend(ckpt_name, 
&send_evt.info.cpd.info.ckpt_create.ckpt_name);
        send_evt.info.cpd.info.ckpt_create.attributes = 
evt->info.openReq.ckpt_attrib;
        send_evt.info.cpd.info.ckpt_create.ckpt_flags = 
evt->info.openReq.ckpt_flags;
        send_evt.info.cpd.info.ckpt_create.client_version = cl_node->version;
@@ -723,14 +729,14 @@ static uint32_t cpnd_evt_proc_ckpt_open(
        rc = cpnd_mds_msg_sync_send(cb, NCSMDS_SVC_ID_CPD, cb->cpd_mdest_id, 
&send_evt, &out_evt, CPSV_WAIT_TIME);
 
        if (rc != NCSCC_RC_SUCCESS) {
-               TRACE_4("cpnd ckpt open failure for 
ckpt_name:%s,client_hdl:%llx",ckpt_name.value,client_hdl);
+               TRACE_4("cpnd ckpt open failure for 
ckpt_name:%s,client_hdl:%llx",ckpt_name, client_hdl);
 
                if (rc == NCSCC_RC_REQ_TIMOUT) {
 
                        node = (CPND_CPD_DEFERRED_REQ_NODE 
*)m_MMGR_ALLOC_CPND_CPD_DEFERRED_REQ_NODE;
                        if (!node) {
                                TRACE_4("cpnd cpd deferred req node memory 
allocation for ckpt_name:%s,client_hdl:%llx",
-                               ckpt_name.value, client_hdl);
+                               ckpt_name, client_hdl);
                                send_evt.info.cpa.info.openRsp.error = 
SA_AIS_ERR_NO_MEMORY;
                                goto agent_rsp;
                        }
@@ -738,7 +744,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(
                        memset(node, '\0', sizeof(CPND_CPD_DEFERRED_REQ_NODE));
                        node->evt.type = CPSV_EVT_TYPE_CPD;
                        node->evt.info.cpd.type = 
CPD_EVT_ND2D_CKPT_DESTROY_BYNAME;
-                       node->evt.info.cpd.info.ckpt_destroy_byname.ckpt_name = 
ckpt_name;
+                       osaf_extended_name_lend(ckpt_name, 
&node->evt.info.cpd.info.ckpt_destroy_byname.ckpt_name);
 
                        ncs_enqueue(&cb->cpnd_cpd_deferred_reqs_list, (void 
*)node);
                }
@@ -773,7 +779,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(
 
                cp_node->clist = NULL;
                cp_node->cpnd_dest_list = NULL;
-               cp_node->ckpt_name = ckpt_name;
+               cp_node->ckpt_name = strdup(ckpt_name);
                cp_node->create_attrib = 
out_evt->info.cpnd.info.ckpt_info.attributes;
                cp_node->open_flags = SA_CKPT_CHECKPOINT_CREATE;
 
@@ -828,7 +834,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(
                        rc = cpnd_ckpt_replica_create(cb, cp_node);
                        if (rc == NCSCC_RC_FAILURE) {
                                TRACE_4("cpnd ckpt rep create failed 
ckpt_name:%s,client_hdl:%llx",
-                                               ckpt_name.value, client_hdl);
+                                               ckpt_name, client_hdl);
                                send_evt.info.cpa.info.openRsp.error = 
SA_AIS_ERR_NO_RESOURCES;
                                goto ckpt_node_free_error;
                        }
@@ -837,14 +843,14 @@ static uint32_t cpnd_evt_proc_ckpt_open(
                        rc = cpnd_ckpt_hdr_update(cp_node);
                        if (rc == NCSCC_RC_FAILURE) {
                                TRACE_4("cpnd ckpt hdr update failed 
ckpt_name:%s,client_hdl:%llx",
-                                               ckpt_name.value, client_hdl);
+                                               ckpt_name, client_hdl);
                        }
                }
 
                rc = cpnd_restart_shm_ckpt_update(cb, cp_node, client_hdl);
                if (rc == NCSCC_RC_FAILURE) {
                        TRACE_4("cpnd restart shm ckpt update failed 
ckpt_name:%s,client_hdl:%llx",
-                                       ckpt_name.value, client_hdl);
+                                       ckpt_name, client_hdl);
                        send_evt.info.cpa.info.openRsp.error = 
SA_AIS_ERR_NO_RESOURCES;
                        goto ckpt_shm_node_free_error;
                }
@@ -893,12 +899,12 @@ static uint32_t cpnd_evt_proc_ckpt_open(
                                if (rc == NCSCC_RC_REQ_TIMOUT) {
                                        send_evt.info.cpa.info.openRsp.error = 
SA_AIS_ERR_TIMEOUT;
                                        TRACE_4("cpnd remote to active mds send 
fail with timeout for ckpt_name:%s,cpnd_mdest_id:%"PRIu64",\
-                                                
active_mds_dest:%"PRIu64",ckpt_id:%llx",ckpt_name.value, cb->cpnd_mdest_id, 
cp_node->active_mds_dest, cp_node->ckpt_id);
+                                                
active_mds_dest:%"PRIu64",ckpt_id:%llx",ckpt_name, cb->cpnd_mdest_id, 
cp_node->active_mds_dest, cp_node->ckpt_id);
 
                                } else {
                                        send_evt.info.cpa.info.openRsp.error = 
SA_AIS_ERR_TRY_AGAIN;
                                        TRACE_4("cpnd remote to active mds send 
fail with timeout for ckpt_name:%s,cpnd_mdest_id:%"PRIu64", \
-                                               
active_mds_dest:%"PRIu64",ckpt_id:%llx",ckpt_name.value, cb->cpnd_mdest_id, 
cp_node->active_mds_dest, cp_node->ckpt_id);
+                                               
active_mds_dest:%"PRIu64",ckpt_id:%llx",ckpt_name, cb->cpnd_mdest_id, 
cp_node->active_mds_dest, cp_node->ckpt_id);
 
                                }
                                goto agent_rsp;
@@ -941,7 +947,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(
                        send_evt.info.cpa.info.openRsp.active_dest = 
cp_node->active_mds_dest;
                }
                if (send_evt.info.cpa.info.openRsp.error == SA_AIS_OK) {
-                       TRACE_4("cpnd ckpt open success 
ckpt_name:%s,client_hdl:%llx,ckpt_id:%llx,active_mds_dest:%"PRIu64"",ckpt_name.value,
+                       TRACE_4("cpnd ckpt open success 
ckpt_name:%s,client_hdl:%llx,ckpt_id:%llx,active_mds_dest:%"PRIu64"",ckpt_name,
                        client_hdl, cp_node->ckpt_id,cp_node->active_mds_dest);
                        /* CPND RESTART UPDATE THE SHARED MEMORY WITH CLIENT 
INFO  */
                        cpnd_restart_set_reader_writer_flags_cnt(cb, cl_node);
@@ -1128,10 +1134,17 @@ static uint32_t cpnd_evt_proc_ckpt_unlin
        CPND_CKPT_NODE *cp_node = NULL;
        uint32_t rc = NCSCC_RC_SUCCESS;
        CPND_CPD_DEFERRED_REQ_NODE *node = NULL;
+       SaConstStringT ckpt_name =  
osaf_extended_name_borrow(&evt->info.ulinkReq.ckpt_name);
 
        TRACE_ENTER();
        memset(&send_evt, '\0', sizeof(CPSV_EVT));
 
+       if ((cpnd_get_longDnsAllowed_attr() == 0) && 
osaf_is_an_extended_name(&evt->info.ulinkReq.ckpt_name)) {
+               LOG_ER("cpnd - longDnsAllowed == false - NOT supporting 
extended name");
+               send_evt.info.cpa.info.ulinkRsp.error = 
SA_AIS_ERR_INVALID_PARAM;
+               goto agent_rsp;
+       }
+
        if (!cpnd_is_cpd_up(cb)) {
                send_evt.info.cpa.info.ulinkRsp.error = SA_AIS_ERR_TRY_AGAIN;
                goto agent_rsp;
@@ -1170,14 +1183,14 @@ static uint32_t cpnd_evt_proc_ckpt_unlin
                }
        }
 
-       cp_node = cpnd_ckpt_node_find_by_name(cb, evt->info.ulinkReq.ckpt_name);
+       cp_node = cpnd_ckpt_node_find_by_name(cb, ckpt_name);
        if (cp_node == NULL) {
                if (out_evt != NULL)
                        send_evt.info.cpa.info.ulinkRsp.error = 
out_evt->info.cpnd.info.ulink_ack.error;
                else
                        send_evt.info.cpa.info.ulinkRsp.error = 
SA_AIS_ERR_TIMEOUT;
 
-               TRACE_2("cpnd proc ckpt unlink success 
ckpt_name:%s",evt->info.ulinkReq.ckpt_name.value);
+               TRACE_2("cpnd proc ckpt unlink success ckpt_name:%s", 
ckpt_name);
                goto agent_rsp;
        }
        cp_node->cpa_sinfo = *(sinfo);
@@ -1271,7 +1284,9 @@ static uint32_t cpnd_evt_proc_ckpt_unlin
                cpnd_restart_ckpt_name_length_reset(cb, cp_node);
 
                cp_node->is_unlink = true;
-               cp_node->ckpt_name.length = 0;
+
+               free((void *)cp_node->ckpt_name);
+               cp_node->ckpt_name = strdup("");
 
                if (cp_node->cpnd_rep_create) {
                        rc = cpnd_ckpt_hdr_update(cp_node);
@@ -1521,7 +1536,7 @@ static uint32_t cpnd_evt_proc_ckpt_ckpt_
 
        CPND_CKPT_NODE *cp_node = NULL;
        SaCkptHandleT client_hdl;
-       SaNameT ckpt_name;
+       SaConstStringT ckpt_name;
        CPSV_EVT send_evt;
        uint32_t rc = NCSCC_RC_SUCCESS;
        CPND_CKPT_CLIENT_NODE *cl_node = NULL;
@@ -1529,7 +1544,7 @@ static uint32_t cpnd_evt_proc_ckpt_ckpt_
        TRACE_ENTER();
        memset(&send_evt, '\0', sizeof(CPSV_EVT));
 
-       ckpt_name = evt->info.ckptListUpdate.ckpt_name;
+       ckpt_name = 
osaf_extended_name_borrow(&evt->info.ckptListUpdate.ckpt_name);
        client_hdl = evt->info.ckptListUpdate.client_hdl;
 
        if (((cp_node = cpnd_ckpt_node_find_by_name(cb, ckpt_name)) != NULL) && 
cp_node->is_unlink == false) {
@@ -1545,8 +1560,7 @@ static uint32_t cpnd_evt_proc_ckpt_ckpt_
 
        }
        else {
-               TRACE_4("cpnd ckpt_name get failed or unlinked  for ckpt_name 
:%s",ckpt_name.value);
-
+               TRACE_4("cpnd ckpt_name get failed or unlinked for ckpt_name 
:%s",ckpt_name);
        }
 
        TRACE_LEAVE();
@@ -3611,7 +3625,8 @@ static uint32_t cpnd_evt_proc_nd2nd_ckpt
                                                        
send_evt.info.cpa.info.openRsp.active_dest =
                                                            
cp_node->active_mds_dest;
                                                }
-                                               TRACE_4("cpnd ckpt open success 
for ckpt_name:%s,client_hdl:%llx,ckpt_id:%llx,mds_mdest:%"PRIu64                
                                                ,cp_node->ckpt_name.value, 
evt->info.ckpt_nd2nd_sync.ckpt_sync.client_hdl,
+                                               TRACE_4("cpnd ckpt open success 
for ckpt_name:%s,client_hdl:%llx,ckpt_id:%llx,mds_mdest:%"PRIu64
+                                                               
,cp_node->ckpt_name, evt->info.ckpt_nd2nd_sync.ckpt_sync.client_hdl,
                                                                  
cp_node->ckpt_id, cp_node->active_mds_dest);
                                        } else {
                                                memset(&des_evt, '\0', 
sizeof(CPSV_EVT));
@@ -4098,7 +4113,7 @@ static uint32_t cpnd_evt_proc_ckpt_creat
 
                cp_node->clist = NULL;
                cp_node->cpnd_dest_list = NULL;
-               cp_node->ckpt_name = evt->info.ckpt_create.ckpt_name;
+               cp_node->ckpt_name = 
strdup(osaf_extended_name_borrow(&evt->info.ckpt_create.ckpt_name));
                cp_node->create_attrib = 
evt->info.ckpt_create.ckpt_info.attributes;
                cp_node->ckpt_id = evt->info.ckpt_create.ckpt_info.ckpt_id;
 
@@ -4613,6 +4628,18 @@ uint32_t cpnd_evt_destroy(CPSV_EVT *evt)
                        }
                        break;
                }
+       } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_OPEN) {
+               if 
(osaf_is_an_extended_name(&evt->info.cpnd.info.openReq.ckpt_name))
+                       free((void 
*)osaf_extended_name_borrow(&evt->info.cpnd.info.openReq.ckpt_name));
+       } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_UNLINK) {
+               if 
(osaf_is_an_extended_name(&evt->info.cpnd.info.ulinkReq.ckpt_name))
+                       free((void 
*)osaf_extended_name_borrow(&evt->info.cpnd.info.ulinkReq.ckpt_name));
+       } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_LIST_UPDATE) {
+               if 
(osaf_is_an_extended_name(&evt->info.cpnd.info.ckptListUpdate.ckpt_name))
+                       free((void 
*)osaf_extended_name_borrow(&evt->info.cpnd.info.ckptListUpdate.ckpt_name));
+       } else if (evt->info.cpnd.type == CPND_EVT_D2ND_CKPT_CREATE) {
+               if 
(osaf_is_an_extended_name(&evt->info.cpnd.info.ckpt_create.ckpt_name))
+                       free((void 
*)osaf_extended_name_borrow(&evt->info.cpnd.info.ckpt_create.ckpt_name));
        }
 
        m_MMGR_FREE_CPSV_EVT(evt, NCS_SERVICE_ID_CPND);
diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_main.c 
b/osaf/services/saf/cpsv/cpnd/cpnd_main.c
--- a/osaf/services/saf/cpsv/cpnd/cpnd_main.c
+++ b/osaf/services/saf/cpsv/cpnd/cpnd_main.c
@@ -15,6 +15,7 @@
  *
  */
 
+#include <stdlib.h>
 #include <ncssysf_tsk.h>
 
 #include <logtrace.h>
@@ -27,6 +28,12 @@ static int __init_cpnd(void)
 {
        NCS_LIB_REQ_INFO lib_create;
 
+       /* Enable extended SaNameT */
+       if (setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0) {
+               LOG_ER("Failed to set environment variable: 
SA_ENABLE_EXTENDED_NAMES");
+               return m_LEAP_DBG_SINK(NCSCC_RC_FAILURE);
+       }
+
        /* Init LIB_CREATE request for Server */
        memset(&lib_create, 0, sizeof(lib_create));
        lib_create.i_op = NCS_LIB_REQ_CREATE;
diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c 
b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c
--- a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c
+++ b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c
@@ -55,6 +55,7 @@ static void cpnd_dump_shm_info(NCS_OS_PO
 static void cpnd_dump_ckpt_attri(CPND_CKPT_NODE *cp_node);
 static void cpnd_ckpt_sc_cpnd_mdest_del(CPND_CB *cb);
 static void cpnd_headless_ckpt_node_del(CPND_CB *cb);
+static SaUint32T cpnd_get_imm_attr(char **attribute_names);
 
 /****************************************************************************
  * Name          : cpnd_ckpt_client_add
@@ -455,7 +456,6 @@ uint32_t cpnd_ckpt_replica_create(CPND_C
 
        uint32_t rc = NCSCC_RC_SUCCESS;
        char *buf;
-       uint8_t size = 0, total_length;
        int32_t sec_cnt = 0;
 
        TRACE_ENTER();
@@ -466,14 +466,11 @@ uint32_t cpnd_ckpt_replica_create(CPND_C
                return NCSCC_RC_FAILURE;
        }
 
-       size = cp_node->ckpt_name.length;
-       total_length = size + sizeof(cp_node->ckpt_id) + sizeof(NODE_ID) + 5;
-
-       buf = m_MMGR_ALLOC_CPND_DEFAULT(total_length);
-       memset(buf, '\0', total_length);
-       strncpy(buf, (char *)cp_node->ckpt_name.value, size);
-
-       sprintf(buf + size - 1, "_%d_%llu", 
(uint32_t)m_NCS_NODE_ID_FROM_MDS_DEST(cb->cpnd_mdest_id), cp_node->ckpt_id);
+       buf = m_MMGR_ALLOC_CPND_DEFAULT(CPND_MAX_REPLICA_NAME_LENGTH);
+       memset(buf, '\0', CPND_MAX_REPLICA_NAME_LENGTH);
+       strncpy(buf, cp_node->ckpt_name, CPND_REP_NAME_MAX_CKPT_NAME_LENGTH);
+
+       sprintf(buf + strlen(buf) - 1, "_%u_%llu", 
(uint32_t)m_NCS_NODE_ID_FROM_MDS_DEST(cb->cpnd_mdest_id), cp_node->ckpt_id);
        /* size of chkpt */
        memset(&cp_node->replica_info.open, '\0', 
sizeof(cp_node->replica_info.open));
 
@@ -1816,7 +1813,7 @@ uint32_t cpnd_ckpt_hdr_update(CPND_CKPT_
        memset(&write_req, '\0', sizeof(write_req));
        memset(&ckpt_hdr, '\0', sizeof(CPSV_CKPT_HDR));
        ckpt_hdr.ckpt_id = cp_node->ckpt_id;
-       ckpt_hdr.ckpt_name = cp_node->ckpt_name;
+       strncpy(ckpt_hdr.ckpt_name, cp_node->ckpt_name, kOsafMaxDnLength);
        ckpt_hdr.create_attrib = cp_node->create_attrib;
        ckpt_hdr.open_flags = cp_node->open_flags;
        ckpt_hdr.is_unlink = cp_node->is_unlink;
@@ -2122,7 +2119,7 @@ void cpnd_dump_ckpt_info(CPND_CKPT_NODE 
        CPSV_CPND_DEST_INFO *cpnd_dest_list = NULL;
 
        TRACE("++++++++++++++++++++++++++++++++++++++++++++++++++");
-       TRACE("Ckpt_id - %d  Ckpt Name - %.10s ", (uint32_t)ckpt_node->ckpt_id, 
ckpt_node->ckpt_name.value);
+       TRACE("Ckpt_id - %d  Ckpt Name - %.10s ", (uint32_t)ckpt_node->ckpt_id, 
ckpt_node->ckpt_name);
        if (ckpt_node->is_unlink)
                TRACE("Ckpt Unlinked - ");
        if (ckpt_node->is_close)
@@ -2529,12 +2526,12 @@ void cpnd_proc_ckpt_info_update(CPND_CB 
                remaining_node--;
 
                /* send info to cpd */
-               LOG_NO("cpnd_proc_update_cpd_data::ckpt_name = %s[%llu]", 
(char*)ckpt_node->ckpt_name.value,
+               LOG_NO("cpnd_proc_update_cpd_data::ckpt_name = %s[%llu]", 
(char*)ckpt_node->ckpt_name,
                        ckpt_node->ckpt_id);
                send_evt.type = CPSV_EVT_TYPE_CPD;
                send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_INFO_UPDATE;
                send_evt.info.cpd.info.ckpt_info.ckpt_id = ckpt_node->ckpt_id;
-               send_evt.info.cpd.info.ckpt_info.ckpt_name = 
ckpt_node->ckpt_name;
+               osaf_extended_name_lend(ckpt_node->ckpt_name, 
&send_evt.info.cpd.info.ckpt_info.ckpt_name);
                send_evt.info.cpd.info.ckpt_info.attributes = 
ckpt_node->create_attrib;
                send_evt.info.cpd.info.ckpt_info.ckpt_flags = 
ckpt_node->open_flags;
                send_evt.info.cpd.info.ckpt_info.num_users = 
ckpt_node->ckpt_lcl_ref_cnt;
@@ -2725,6 +2722,56 @@ void cpnd_proc_active_down_ckpt_node_del
 SaUint32T cpnd_get_scAbsenceAllowed_attr()
 {
        SaUint32T rc_attr_val = 0;
+       char *attribute_names[] = {
+               "scAbsenceAllowed",
+               NULL
+       };
+
+       TRACE_ENTER();
+
+       rc_attr_val = cpnd_get_imm_attr(attribute_names);
+
+       TRACE_LEAVE();
+       return rc_attr_val;
+}
+
+/****************************************************************************************
+ * Name          : cpnd_get_longDnsAllowed_attr()
+ *
+ * Description   : This function gets scAbsenceAllowed attribute
+ *
+ * Arguments     : -
+ * 
+ * Return Values : scAbsenceAllowed attribute (0 = not allowed)
+ 
*****************************************************************************************/
+SaUint32T cpnd_get_longDnsAllowed_attr()
+{
+       SaUint32T rc_attr_val = 0;
+       char *attribute_names[] = {
+               "longDnsAllowed",
+               NULL
+       };
+
+       TRACE_ENTER();
+
+       rc_attr_val = cpnd_get_imm_attr(attribute_names);
+
+       TRACE_LEAVE();
+       return rc_attr_val;
+}
+
+/****************************************************************************************
+ * Name          : cpnd_get_imm_attr
+ *
+ * Description   : This function gets IMM attribute
+ *
+ * Arguments     : -
+ * 
+ * Return Values : scAbsenceAllowed attribute (0 = not allowed)
+ 
*****************************************************************************************/
+static SaUint32T cpnd_get_imm_attr(char **attribute_names)
+{
+       SaUint32T rc_attr_val = 0;
        SaAisErrorT rc = SA_AIS_OK;
        SaImmAccessorHandleT accessorHandle;
        SaImmHandleT immOmHandle;
@@ -2733,15 +2780,10 @@ SaUint32T cpnd_get_scAbsenceAllowed_attr
 
        TRACE_ENTER();
 
-       char *attribute_names[] = {
-               "scAbsenceAllowed",
-               NULL
-       };
        char object_name_str[] = "opensafImm=opensafImm,safApp=safImmService";
 
        SaNameT object_name;
-       strncpy((char *) object_name.value, object_name_str, 
SA_MAX_NAME_LENGTH);
-       object_name.length = strlen((char *) object_name.value) + 1;
+       osaf_extended_name_lend(object_name_str, &object_name);
 
        /* Save immutil settings and reconfigure */
        struct ImmutilWrapperProfile tmp_immutilWrapperProfile;
@@ -2767,7 +2809,6 @@ SaUint32T cpnd_get_scAbsenceAllowed_attr
                goto done;
        }
 
-
        rc = immutil_saImmOmAccessorGet_2(accessorHandle, &object_name, 
attribute_names, &attributes);
        if (rc != SA_AIS_OK) {
                TRACE("%s saImmOmAccessorGet_2 Fail '%s'", __FUNCTION__, 
saf_error(rc));
@@ -2776,11 +2817,9 @@ SaUint32T cpnd_get_scAbsenceAllowed_attr
 
        void *value;
 
-       /* Handle the global scAbsenceAllowed_flag */
        attribute = attributes[0];
        TRACE("%s attrName \"%s\"",__FUNCTION__,attribute->attrName);
        if ((attribute != NULL) && (attribute->attrValuesNumber != 0)) {
-               /* scAbsenceAllowed has value. Get the value */
                value = attribute->attrValues[0];
                rc_attr_val = *((SaUint32T *) value);
        }
diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_res.c 
b/osaf/services/saf/cpsv/cpnd/cpnd_res.c
--- a/osaf/services/saf/cpsv/cpnd/cpnd_res.c
+++ b/osaf/services/saf/cpsv/cpnd/cpnd_res.c
@@ -482,7 +482,7 @@ void *cpnd_restart_shm_create(NCS_OS_POS
                                }
 
                                memset(cp_node, '\0', sizeof(CPND_CKPT_NODE));
-                               cp_node->ckpt_name = cp_info.ckpt_name;
+                               cp_node->ckpt_name = strdup(cp_info.ckpt_name);
                                cp_node->ckpt_id = cp_info.ckpt_id;
                                cp_node->offset = cp_info.offset;
                                cp_node->is_close = cp_info.is_close;
@@ -495,12 +495,10 @@ void *cpnd_restart_shm_create(NCS_OS_POS
                                if (cp_info.cpnd_rep_create) {
                                        /* OPEN THE SHARED MEMORY ALREADY 
CREATED FOR CHECKPOINT REPLICA */
                                        /* size=cp_node->ckpt_name.length; */
-                                       size = cp_node->ckpt_name.length;
-                                       total_length = size + 
sizeof(cp_node->ckpt_id) + sizeof(NODE_ID) + 5;
-                                       buf = 
m_MMGR_ALLOC_CPND_DEFAULT(total_length);
-                                       memset(buf, '\0', total_length);
-                                       strncpy(buf, (char 
*)cp_node->ckpt_name.value, size);
-                                       sprintf(buf + size - 1, "_%d_%d", 
(uint32_t)nodeid, (uint32_t)cp_node->ckpt_id);
+                                       buf = 
m_MMGR_ALLOC_CPND_DEFAULT(CPND_MAX_REPLICA_NAME_LENGTH);
+                                       memset(buf, '\0', 
CPND_MAX_REPLICA_NAME_LENGTH);
+                                       strncpy(buf, cp_node->ckpt_name, 
CPND_REP_NAME_MAX_CKPT_NAME_LENGTH);
+                                       sprintf(buf + strlen(buf) - 1, 
"_%u_%llu", (uint32_t)nodeid, cp_node->ckpt_id);
                                        rc = 
cpnd_ckpt_replica_create_res(&ckpt_rep_open, buf, &cp_node, 0, &cp_info, 
cb->shm_alloc_guaranteed);
                                        if (rc != NCSCC_RC_SUCCESS) {
                                                /*   assert(0); */
@@ -511,8 +509,10 @@ void *cpnd_restart_shm_create(NCS_OS_POS
                                        }
                                        cb->num_rep++;
                                }
-                               if (cp_node->is_unlink)
-                                       cp_node->ckpt_name.length = 0;
+                               if (cp_node->is_unlink) {
+                                       free((void *)cp_node->ckpt_name);
+                                       cp_node->ckpt_name = strdup("");
+                               }
 
                                memset(&tmp_cp_info, '\0', sizeof(CKPT_INFO));
                                memcpy(&tmp_cp_info, &cp_info, 
sizeof(CKPT_INFO));
@@ -1021,7 +1021,7 @@ uint32_t cpnd_write_ckpt_info(CPND_CB *c
 
        TRACE_ENTER();
        memset(&ckpt_info, 0, sizeof(CKPT_INFO));
-       ckpt_info.ckpt_name = cp_node->ckpt_name;
+       strncpy(ckpt_info.ckpt_name, cp_node->ckpt_name, kOsafMaxDnLength);
        ckpt_info.ckpt_id = cp_node->ckpt_id;
        ckpt_info.maxSections = cp_node->create_attrib.maxSections;
        ckpt_info.maxSecSize = cp_node->create_attrib.maxSectionSize;

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to