Hi Thang,

I think it would be nice you can separate two commits, one for test, one for 
gcc/g++ 10 code changes.

Thanks,
Minh
________________________________
From: Thang Duc Nguyen <thang.d.ngu...@dektech.com.au>
Sent: Wednesday, March 16, 2022 11:44 AM
To: Hieu Hong Hoang <hieu.h.ho...@dektech.com.au>; Thien Minh Huynh 
<thien.m.hu...@dektech.com.au>; Minh Hon Chau <minh.c...@dektech.com.au>
Cc: opensaf-devel@lists.sourceforge.net <opensaf-devel@lists.sourceforge.net>; 
Thang Duc Nguyen <thang.d.ngu...@dektech.com.au>
Subject: [PATCH 1/1] osaf: support compile with gcc/g++ 10 [#3307]

- Fix error to support gcc/g++ 10.
- Fix memleak in api test.
---
 src/ckpt/agent/cpa_cb.h                       |  2 +-
 src/ckpt/apitest/test_cpa.c                   |  2 +
 src/ckpt/apitest/test_cpa_util.c              | 13 ++-
 src/ckpt/apitest/test_cpsv_conf.h             |  2 +-
 src/ckpt/ckptd/cpd_amf.c                      |  1 -
 src/ckpt/ckptd/cpd_init.h                     |  2 +-
 src/evt/agent/eda.h                           |  2 +-
 src/evt/apitest/tet_eda.c                     | 32 ++++++++
 src/evt/apitest/tet_eda.h                     | 80 ++++++++++++-------
 src/evt/apitest/tet_edsv_func.c               |  1 +
 src/evt/evtd/eds.h                            |  2 +-
 src/evt/evtd/eds_amf.h                        |  6 +-
 src/evt/evtd/eds_cb.h                         |  2 +-
 .../test_saImmOmThreadInterference.c          |  4 +-
 src/imm/immd/immd.h                           |  2 +-
 src/lck/apitest/tet_gld.c                     |  1 -
 src/lck/apitest/tet_glnd.c                    |  2 -
 src/lck/lckd/gld_dl_api.h                     |  2 +-
 src/lck/lcknd/glnd_cb.h                       |  4 +-
 src/log/apitest/logtest.c                     |  6 ++
 src/log/apitest/logtest.h                     |  6 +-
 src/log/logd/lgs_dest.cc                      |  4 +-
 src/mds/apitest/mdstipc.h                     | 30 +++----
 src/mds/apitest/mdstipc_api.c                 | 17 ++++
 src/mds/mds_core.h                            | 30 +++----
 src/mds/mds_dt_common.c                       |  3 +
 src/mds/mds_dt_tcp.c                          |  3 +-
 src/mds/mds_dt_tcp.h                          |  2 +-
 src/mds/mds_dt_tipc.c                         |  2 -
 src/mds/mds_main.c                            | 47 +++++++++++
 src/msg/msgnd/mqnd_db.h                       |  2 +-
 tools/devel/fenced/node_state_hdlr_pl.cc      |  1 +
 32 files changed, 224 insertions(+), 91 deletions(-)

diff --git a/src/ckpt/agent/cpa_cb.h b/src/ckpt/agent/cpa_cb.h
index ac48c6c4f..d6335830f 100644
--- a/src/ckpt/agent/cpa_cb.h
+++ b/src/ckpt/agent/cpa_cb.h
@@ -119,7 +119,7 @@ typedef struct cpa_cb {

 } CPA_CB;

-uint32_t gl_cpa_hdl;
+extern uint32_t gl_cpa_hdl;

 typedef struct cpa_prcess_evt_sync {
   NCS_QELEM qelem;
diff --git a/src/ckpt/apitest/test_cpa.c b/src/ckpt/apitest/test_cpa.c
index 6c37e91d5..0093b91ea 100644
--- a/src/ckpt/apitest/test_cpa.c
+++ b/src/ckpt/apitest/test_cpa.c
@@ -364,6 +364,7 @@ void fill_testcase_data()
         *(ckpt_name + length) = '.';
         saAisNameLend(ckpt_name,
                       &tcd.all_replicas_ckpt_with_valid_extended_name_length);
+       free(ckpt_name);

         ckpt_name = malloc(INVALID_EXTENDED_NAME_LENGTH);
         memset(ckpt_name, 0, INVALID_EXTENDED_NAME_LENGTH);
@@ -374,6 +375,7 @@ void fill_testcase_data()
         *(ckpt_name + length) = '.';
         saAisNameLend(ckpt_name,
                       
&tcd.all_replicas_ckpt_with_invalid_extended_name_length);
+       free(ckpt_name);

         /* Variables for sec create */
         tcd.sec_id1 = (SaUint8T *)"11";
diff --git a/src/ckpt/apitest/test_cpa_util.c b/src/ckpt/apitest/test_cpa_util.c
index 474e76f0d..7da36e0c1 100644
--- a/src/ckpt/apitest/test_cpa_util.c
+++ b/src/ckpt/apitest/test_cpa_util.c
@@ -24,6 +24,7 @@ extern const char *saf_error_string[];
 int gl_try_again_cnt;
 int gl_tmout_cnt;
 int gl_sync_pointnum;
+NCSCONTEXT gl_task_hdl = NULL;
 int tmoutFlag;

 int cpsv_test_result(SaAisErrorT rc, SaAisErrorT exp_out, char *test_case,
@@ -651,23 +652,24 @@ void selection_thread_blocking(NCSCONTEXT arg)
                 m_TEST_CPSV_PRINTF("\n Dispatching FAILED %d \n", rc);
         else
                 m_TEST_CPSV_PRINTF("\n Thread selected \n");
+       m_NCS_TASK_RELEASE(gl_task_hdl);
 }

 void cpsv_createthread(SaCkptHandleT *cl_hdl)
 {
         SaAisErrorT rc;
-       NCSCONTEXT thread_handle;

         rc = m_NCS_TASK_CREATE((NCS_OS_CB)selection_thread_blocking,
                                (NCSCONTEXT)cl_hdl, "cpsv_block_test", 0,
-                              SCHED_OTHER, 8000, &thread_handle);
+                              SCHED_OTHER, 8000, &gl_task_hdl);
         if (rc != NCSCC_RC_SUCCESS) {
                 m_TEST_CPSV_PRINTF(" Failed to create thread\n");
                 return;
         }

-       rc = m_NCS_TASK_START(thread_handle);
+       rc = m_NCS_TASK_START(gl_task_hdl);
         if (rc != NCSCC_RC_SUCCESS) {
+               m_NCS_TASK_RELEASE(gl_task_hdl);
                 m_TEST_CPSV_PRINTF(" Failed to start thread\n");
                 return;
         }
@@ -3007,6 +3009,11 @@ static void ntfCallback(SaNtfSubscriptionIdT 
subscriptionId,
                         break;
                 }
         } while (false);
+
+       if (notification->notificationType == SA_NTF_TYPE_STATE_CHANGE)
+               saNtfNotificationFree(
+                   notification->notification.stateChangeNotification
+                       .notificationHandle);
 }

 int test_ckptNtfStateChange(int i, CONFIG_FLAG cfg_flg)
diff --git a/src/ckpt/apitest/test_cpsv_conf.h 
b/src/ckpt/apitest/test_cpsv_conf.h
index d33be6779..2d35f5dc1 100644
--- a/src/ckpt/apitest/test_cpsv_conf.h
+++ b/src/ckpt/apitest/test_cpsv_conf.h
@@ -154,7 +154,7 @@ struct cpsv_testcase_data {
   int ntfTest;
 };

-struct cpsv_testcase_data tcd;
+extern struct cpsv_testcase_data tcd;

 extern int test_ckptInitialize(int i, CONFIG_FLAG cfg_flg);
 extern int test_ckptSelectionObject(int i, CONFIG_FLAG cfg_flg);
diff --git a/src/ckpt/ckptd/cpd_amf.c b/src/ckpt/ckptd/cpd_amf.c
index 48d06c167..0d0cd3cf4 100644
--- a/src/ckpt/ckptd/cpd_amf.c
+++ b/src/ckpt/ckptd/cpd_amf.c
@@ -37,7 +37,6 @@
 #include "ckpt/ckptd/cpd_imm.h"
 #define NCS_2_0 1
 #if NCS_2_0 /* Required for NCS 2.0 */
-extern uint32_t gl_cpd_cb_hdl;
 extern const SaImmOiImplementerNameT implementer_name;

 /****************************************************************************
diff --git a/src/ckpt/ckptd/cpd_init.h b/src/ckpt/ckptd/cpd_init.h
index 0c02642e4..cf3466bb1 100644
--- a/src/ckpt/ckptd/cpd_init.h
+++ b/src/ckpt/ckptd/cpd_init.h
@@ -33,7 +33,7 @@
 #include <saAmf.h>
 #include "cpd_cb.h"

-uint32_t gl_cpd_cb_hdl;
+extern uint32_t gl_cpd_cb_hdl;

 /* Macro to get the component name for the component type */
 #define m_CPD_TASKNAME "CPD"
diff --git a/src/evt/agent/eda.h b/src/evt/agent/eda.h
index 4d1991cd9..138c91010 100644
--- a/src/evt/agent/eda.h
+++ b/src/evt/agent/eda.h
@@ -39,7 +39,7 @@
 #include "base/logtrace.h"

 /* EDA CB global handle declaration */
-uint32_t gl_eda_hdl;
+extern uint32_t gl_eda_hdl;

 /* EDA Default MDS timeout value */
 #define EDA_MDS_DEF_TIMEOUT 100
diff --git a/src/evt/apitest/tet_eda.c b/src/evt/apitest/tet_eda.c
index 4c551df9c..bc56233e6 100644
--- a/src/evt/apitest/tet_eda.c
+++ b/src/evt/apitest/tet_eda.c
@@ -16,6 +16,38 @@ int gl_minor_version = 0x01;

 SaEvtLimitIdT gl_limitId;
 SaLimitValueT gl_limitValue;
+int gl_tNode1, gl_tNode2, gl_tNode3, gl_node_id, gl_jCount, gl_allocatedNumber,
+    gl_patternLength, gl_tCount, gl_tCase, gl_iteration, gl_listNumber,
+    gl_error, subCount, gl_err, gl_cbk, iCmpCount, tempDataSize, gl_hide;
+char gl_eventData[20];
+NCSCONTEXT gl_t_handle;
+SaEvtHandleT gl_evtHandle;
+SaEvtHandleT gl_threadEvtHandle;
+SaVersionT gl_version;
+SaAisErrorT gl_rc;
+SaSelectionObjectT gl_selObject;
+SaDispatchFlagsT gl_dispatchFlags;
+SaNameT gl_channelName;
+SaNameT gl_publisherName;
+SaEvtChannelOpenFlagsT gl_channelOpenFlags;
+SaTimeT gl_timeout;
+SaTimeT gl_retentionTime;
+SaTimeT gl_publishTime;
+SaEvtChannelHandleT gl_channelHandle;
+SaInvocationT gl_invocation;
+SaEvtEventHandleT gl_eventHandle;
+SaEvtEventHandleT gl_eventDeliverHandle;
+SaEvtEventIdT gl_evtId;
+SaEvtEventPatternArrayT gl_patternArray;
+SaEvtEventPriorityT gl_priority;
+SaSizeT gl_eventDataSize;
+SaEvtEventFilterArrayT gl_filterArray;
+SaEvtSubscriptionIdT gl_subscriptionId;
+SaEvtSubscriptionIdT gl_dupSubscriptionId;
+SaEvtEventPatternT gl_pattern[2];
+SaEvtEventFilterT gl_filter[1];
+NCSCONTEXT eda_thread_handle;
+NCSCONTEXT subscription_handle;

 SaTimeT gl_timeout = 100000000000.0;
 SaInvocationT gl_invocation = 3;
diff --git a/src/evt/apitest/tet_eda.h b/src/evt/apitest/tet_eda.h
index 8240f92ae..ec33abbe6 100644
--- a/src/evt/apitest/tet_eda.h
+++ b/src/evt/apitest/tet_eda.h
@@ -44,33 +44,54 @@

 void tet_result(int result);

-int gl_act;
-int gl_tNode1, gl_tNode2, gl_tNode3, gl_node_id, gl_jCount, gl_allocatedNumber,
-    gl_patternLength, gl_tCount, gl_tCase, gl_iteration, gl_listNumber,
-    gl_error, subCount, gl_err, gl_cbk, iCmpCount, tempDataSize, gl_hide;
-char *gl_saf_msg, *tempData;
-char gl_eventData[20];
-NCSCONTEXT gl_t_handle;
-SaEvtHandleT gl_evtHandle, gl_threadEvtHandle;
-SaVersionT gl_version;
-SaAisErrorT gl_rc;
-SaSelectionObjectT gl_selObject;
-SaDispatchFlagsT gl_dispatchFlags;
-SaNameT gl_channelName, gl_publisherName;
-SaEvtChannelOpenFlagsT gl_channelOpenFlags;
-SaTimeT gl_timeout, gl_retentionTime, gl_publishTime;
-SaEvtChannelHandleT gl_channelHandle;
-SaInvocationT gl_invocation;
-SaEvtEventHandleT gl_eventHandle, gl_eventDeliverHandle;
-SaEvtEventIdT gl_evtId;
-SaEvtEventPatternArrayT gl_patternArray;
-SaEvtEventPriorityT gl_priority;
-SaSizeT gl_eventDataSize;
-SaEvtEventFilterArrayT gl_filterArray;
-SaEvtSubscriptionIdT gl_subscriptionId, gl_dupSubscriptionId;
-SaEvtEventPatternT gl_pattern[2];
-SaEvtEventFilterT gl_filter[1];
-SaEvtCallbacksT gl_evtCallbacks;
+extern int gl_tNode1;
+extern int gl_tNode2;
+extern int gl_tNode3;
+extern int gl_node_id;
+extern int gl_jCount;
+extern int gl_allocatedNumber;
+extern int gl_patternLength;
+extern int gl_tCount;
+extern int gl_tCase;
+extern int gl_iteration;
+extern int gl_listNumber;
+extern int gl_error;
+extern int subCount;
+extern int gl_err;
+extern int gl_cbk;
+extern int iCmpCount;
+extern int tempDataSize;
+extern int gl_hide;
+extern char *gl_saf_msg;
+extern char *tempData;
+extern char gl_eventData[20];
+extern NCSCONTEXT gl_t_handle;
+extern SaEvtHandleT gl_evtHandle;
+extern SaEvtHandleT gl_threadEvtHandle;
+extern SaVersionT gl_version;
+extern SaAisErrorT gl_rc;
+extern SaSelectionObjectT gl_selObject;
+extern SaDispatchFlagsT gl_dispatchFlags;
+extern SaNameT gl_channelName;
+extern SaNameT gl_publisherName;
+extern SaEvtChannelOpenFlagsT gl_channelOpenFlags;
+extern SaTimeT gl_timeout;
+extern SaTimeT gl_retentionTime;
+extern SaTimeT gl_publishTime;
+extern SaEvtChannelHandleT gl_channelHandle;
+extern SaInvocationT gl_invocation;
+extern SaEvtEventHandleT gl_eventHandle;
+extern SaEvtEventHandleT gl_eventDeliverHandle;
+extern SaEvtEventIdT gl_evtId;
+extern SaEvtEventPatternArrayT gl_patternArray;
+extern SaEvtEventPriorityT gl_priority;
+extern SaSizeT gl_eventDataSize;
+extern SaEvtEventFilterArrayT gl_filterArray;
+extern SaEvtSubscriptionIdT gl_subscriptionId;
+extern SaEvtSubscriptionIdT gl_dupSubscriptionId;
+extern SaEvtEventPatternT gl_pattern[2];
+extern SaEvtEventFilterT gl_filter[1];
+extern SaEvtCallbacksT gl_evtCallbacks;
 void EvtOpenCallback(SaInvocationT invocationCallback,
                      SaEvtChannelHandleT asyncChannelHandle, SaAisErrorT 
error);
 void EvtDeliverCallback(SaEvtSubscriptionIdT subscriptionId,
@@ -85,9 +106,10 @@ struct gl_list {
   char *gl_eventData;
 };

-NCSCONTEXT eda_thread_handle, subscription_handle;
+extern NCSCONTEXT eda_thread_handle;
+extern NCSCONTEXT subscription_handle;
 /*******String Constants*******/
-const char *gl_saf_error[32];
+extern const char *gl_saf_error[32];

 typedef enum {
   EDSV_TEST = 1,
diff --git a/src/evt/apitest/tet_edsv_func.c b/src/evt/apitest/tet_edsv_func.c
index 18a17c398..991961978 100644
--- a/src/evt/apitest/tet_edsv_func.c
+++ b/src/evt/apitest/tet_edsv_func.c
@@ -11,6 +11,7 @@ extern SaEvtEventPatternT gl_pattern[2];
 extern SaEvtEventFilterT gl_filter[1];
 extern const char *gl_saf_error[32];
 int gl_b03_flag = 0;
+char *tempData;
 /***********************************************/
 /*************Functionality Testing*************/
 /***********************************************/
diff --git a/src/evt/evtd/eds.h b/src/evt/evtd/eds.h
index bc9c4296d..3545d7757 100644
--- a/src/evt/evtd/eds.h
+++ b/src/evt/evtd/eds.h
@@ -72,6 +72,6 @@
 #include "base/daemon.h"

 /* EDS CB global handle declaration */
-uint32_t gl_eds_hdl;
+extern uint32_t gl_eds_hdl;

 #endif  // EVT_EVTD_EDS_H_
diff --git a/src/evt/evtd/eds_amf.h b/src/evt/evtd/eds_amf.h
index e9aeaa6c6..b8e85a0d3 100644
--- a/src/evt/evtd/eds_amf.h
+++ b/src/evt/evtd/eds_amf.h
@@ -46,11 +46,13 @@ uint32_t eds_active_state_handler(EDS_CB *cb, SaInvocationT 
invocation);
 uint32_t eds_standby_state_handler(EDS_CB *cb, SaInvocationT invocation);
 uint32_t eds_quiescing_state_handler(EDS_CB *cb, SaInvocationT invocation);
 uint32_t eds_quiesced_state_handler(EDS_CB *cb, SaInvocationT invocation);
+/*
+// AMF HA state can transit to a maximum of the two defined states.
 struct next_HAState {
   uint8_t nextState1;
   uint8_t nextState2;
-} nextStateInfo; /* AMF HA state can transit to a maximum of the two defined
-                    states */
+} nextStateInfo;
+*/

 #define VALIDATE_STATE(curr, next)                  \
   ((curr > MAX_HA_STATE) || (next > MAX_HA_STATE))  \
diff --git a/src/evt/evtd/eds_cb.h b/src/evt/evtd/eds_cb.h
index c127ead2d..19c48cd25 100644
--- a/src/evt/evtd/eds_cb.h
+++ b/src/evt/evtd/eds_cb.h
@@ -40,7 +40,7 @@
 #include "base/ncssysf_tmr.h"

 /* global variables */
-uint32_t gl_eds_hdl;
+extern uint32_t gl_eds_hdl;

 struct eda_reg_list_tag;

diff --git a/src/imm/apitest/management/test_saImmOmThreadInterference.c 
b/src/imm/apitest/management/test_saImmOmThreadInterference.c
index ea63b978a..6db239228 100644
--- a/src/imm/apitest/management/test_saImmOmThreadInterference.c
+++ b/src/imm/apitest/management/test_saImmOmThreadInterference.c
@@ -40,7 +40,7 @@ static void saImmOiAdminOperationCallback(
         immutil_saImmOiAdminOperationResult(immOiHandle, invocation, 
SA_AIS_OK);
 }

-SaImmOiCallbacksT_2 immOiCallbacks = {
+SaImmOiCallbacksT_2 immOiCallbacks_1 = {
     saImmOiAdminOperationCallback, NULL, NULL, NULL, NULL, NULL, NULL, NULL};

 static void *implementer_thread(void *arg)
@@ -139,7 +139,7 @@ void saImmOmThreadInterference_01(void)
         isOiDone = 0;
         isOmDone = 0;
         safassert(
-           immutil_saImmOiInitialize_2(&immOiHandle, &immOiCallbacks, 
&immVersion),
+           immutil_saImmOiInitialize_2(&immOiHandle, &immOiCallbacks_1, 
&immVersion),
             SA_AIS_OK);
         safassert(immutil_saImmOiImplementerSet(immOiHandle, implementerName),
                   SA_AIS_OK);
diff --git a/src/imm/immd/immd.h b/src/imm/immd/immd.h
index d8456d3c1..28fbac1e3 100644
--- a/src/imm/immd/immd.h
+++ b/src/imm/immd/immd.h
@@ -43,7 +43,7 @@
 #include "immd_sbedu.h"
 #include "base/ncs_mda_pvt.h"

-IMMD_CB *immd_cb;
+extern IMMD_CB *immd_cb;

 extern uint32_t initialize_for_assignment(IMMD_CB *cb, SaAmfHAStateT ha_state);

diff --git a/src/lck/apitest/tet_gld.c b/src/lck/apitest/tet_gld.c
index 7180d00db..cf63720b6 100644
--- a/src/lck/apitest/tet_gld.c
+++ b/src/lck/apitest/tet_gld.c
@@ -2,7 +2,6 @@

 #include "tet_glsv.h"

-extern uint32_t gl_gld_hdl;

 void tet_run_gld() { tet_create_gld(); }

diff --git a/src/lck/apitest/tet_glnd.c b/src/lck/apitest/tet_glnd.c
index 9bd2bab57..c017f4b92 100644
--- a/src/lck/apitest/tet_glnd.c
+++ b/src/lck/apitest/tet_glnd.c
@@ -2,8 +2,6 @@

 #include "tet_glsv.h"

-extern uint32_t gl_glnd_hdl;
-
 void tet_run_glnd()
 {

diff --git a/src/lck/lckd/gld_dl_api.h b/src/lck/lckd/gld_dl_api.h
index 6476a7181..c4412918b 100644
--- a/src/lck/lckd/gld_dl_api.h
+++ b/src/lck/lckd/gld_dl_api.h
@@ -33,7 +33,7 @@
 #include "base/ncsgl_defs.h"
 #include "base/ncs_lib.h"

-uint32_t gl_gld_hdl;
+extern uint32_t gl_gld_hdl;
 uint32_t gld_lib_req(NCS_LIB_REQ_INFO *req_info);

 #endif  // LCK_LCKD_GLD_DL_API_H_
diff --git a/src/lck/lcknd/glnd_cb.h b/src/lck/lcknd/glnd_cb.h
index 3b82f605f..77a1f889b 100644
--- a/src/lck/lcknd/glnd_cb.h
+++ b/src/lck/lcknd/glnd_cb.h
@@ -28,8 +28,8 @@ extern "C" {
 #endif

 /* global variables */
-uint32_t gl_glnd_hdl;
-NCSCONTEXT gl_glnd_task_hdl;
+extern uint32_t gl_glnd_hdl;
+extern NCSCONTEXT gl_glnd_task_hdl;

 /* macros for the global varibales */
 #define m_GLND_RETRIEVE_GLND_CB_HDL gl_glnd_hdl
diff --git a/src/log/apitest/logtest.c b/src/log/apitest/logtest.c
index d86a2d0ab..730db1199 100644
--- a/src/log/apitest/logtest.c
+++ b/src/log/apitest/logtest.c
@@ -61,6 +61,12 @@ SaNameT saNameT_appstream_name_256;

 static char buf[2048];

+bool tag_flg;
+
+bool silent_flg;
+
+bool verbose_flg;
+
 SaLogBufferT alarmStreamBuffer = {
     .logBuf = (SaUint8T *)buf, .logBufSize = 0,
 };
diff --git a/src/log/apitest/logtest.h b/src/log/apitest/logtest.h
index e04492086..5dba510e8 100644
--- a/src/log/apitest/logtest.h
+++ b/src/log/apitest/logtest.h
@@ -81,20 +81,20 @@ const static SaVersionT kLogVersion = {'A', 0x02, 0x03};
 const static SaVersionT kImmVersion = {'A', 02, 11};

 /* Vebose mode. If set some test cases will print extra information */
-bool verbose_flg;
+extern bool verbose_flg;
 void printf_v(const char *format, ...) __attribute__((format(printf, 1, 2)));

 /* Silent mode. If set test cases printing information will be silent
  * Only affects stdout. Do not affect default printouts for PASS/FAIL info
  */
-bool silent_flg;
+extern bool silent_flg;
 void printf_s(const char *format, ...) __attribute__((format(printf, 1, 2)));

 /* Tag mode. Same as silent mode except that a TAG is printed on stdout when
  * time to take an external action. E.g. TAG_ND means stop SC nodes.
  * The tag is printed on a separate line.
  */
-bool tag_flg;
+extern bool tag_flg;
 void print_t(const char *format, ...) __attribute__((format(printf, 1, 2)));

 /* Extra test cases */
diff --git a/src/log/logd/lgs_dest.cc b/src/log/logd/lgs_dest.cc
index bf5064d21..943de15ea 100644
--- a/src/log/logd/lgs_dest.cc
+++ b/src/log/logd/lgs_dest.cc
@@ -199,14 +199,14 @@ void DestinationHandler::FormCfgDestMsg(const 
std::string& dest,
   if (tmp.size() > 1) {
     strncpy(msg->type, tmp[kType].c_str(), kMaxChar - 1);
   }
-  if (tmp.size() == kSize) strncpy(msg->value, tmp[kValue].c_str(), kMaxChar);
+  if (tmp.size() == kSize) memcpy(msg->value, tmp[kValue].c_str(), kMaxChar);
 }

 void DestinationHandler::FormDelDestMsg(const std::string& dest,
                                         DelDestMsg* msg) {
   osafassert(msg != nullptr);
   const VectorString tmp = logutil::Parser(dest, kDelimeter);
-  strncpy(msg->name, tmp[kName].c_str(), kMaxChar);
+  memcpy(msg->name, tmp[kName].c_str(), kMaxChar);
 }

 bool DestinationHandler::VectorFind(const VectorString& vec,
diff --git a/src/mds/apitest/mdstipc.h b/src/mds/apitest/mdstipc.h
index b84c303e6..7d288802f 100644
--- a/src/mds/apitest/mdstipc.h
+++ b/src/mds/apitest/mdstipc.h
@@ -152,24 +152,24 @@ typedef struct COUNTER {
 } COUNTER;

 /********************* GLOBAL variables ********************/
-TET_ADEST gl_tet_adest;
-TET_VDEST
+extern TET_ADEST gl_tet_adest;
+extern TET_VDEST
     gl_tet_vdest[4]; /*change it to 6 to run VDS Redundancy: 101 for Stress*/
-TET_SVC gl_tet_svc;
-TET_MDS_RECVD_MSG_INFO gl_rcvdmsginfo, gl_direct_rcvmsginfo;
-TET_EVENT_INFO gl_event_data;
-int gl_vdest_indx;
-MDS_DIRECT_BUFF direct_buff;
+extern TET_SVC gl_tet_svc;
+extern TET_MDS_RECVD_MSG_INFO gl_rcvdmsginfo;
+extern TET_MDS_RECVD_MSG_INFO gl_direct_rcvmsginfo;
+extern TET_EVENT_INFO gl_event_data;
+extern int gl_vdest_indx;
+extern MDS_DIRECT_BUFF direct_buff;

 /*Callback Failure*/
-int gl_COPY_CB_FAIL;
-int gl_SYS_EVENT_CB_FAIL;
-int gl_ENC_CB_FAIL;
-int gl_DEC_CB_FAIL;
-int gl_ENC_FLAT_CB_FAIL;
-int gl_DEC_FLAT_CB_FAIL;
-int gl_RECEIVE_CB_FAIL;
-int gl_COPY_CB_FAIL;
+extern int gl_COPY_CB_FAIL;
+extern int gl_SYS_EVENT_CB_FAIL;
+extern int gl_ENC_CB_FAIL;
+extern int gl_DEC_CB_FAIL;
+extern int gl_ENC_FLAT_CB_FAIL;
+extern int gl_DEC_FLAT_CB_FAIL;
+extern int gl_RECEIVE_CB_FAIL;

 uint32_t tet_mds_svc_callback(NCSMDS_CALLBACK_INFO *);
 /******************MDS call back routines *********************************/
diff --git a/src/mds/apitest/mdstipc_api.c b/src/mds/apitest/mdstipc_api.c
index 581ea53f3..8d09761e1 100644
--- a/src/mds/apitest/mdstipc_api.c
+++ b/src/mds/apitest/mdstipc_api.c
@@ -39,6 +39,23 @@ MDS_SVC_ID svc_ids[3] = {2006, 2007, 2008};
 pthread_mutex_t safe_printf_mutex = PTHREAD_MUTEX_INITIALIZER;
 pthread_mutex_t gl_mutex = PTHREAD_MUTEX_INITIALIZER;

+int gl_vdest_indx;
+TET_ADEST gl_tet_adest;
+TET_VDEST gl_tet_vdest[4];
+TET_SVC gl_tet_svc;
+TET_MDS_RECVD_MSG_INFO gl_rcvdmsginfo, gl_direct_rcvmsginfo;
+TET_EVENT_INFO gl_event_data;
+MDS_DIRECT_BUFF direct_buff;
+
+/*Callback Failure*/
+int gl_COPY_CB_FAIL;
+int gl_SYS_EVENT_CB_FAIL;
+int gl_ENC_CB_FAIL;
+int gl_DEC_CB_FAIL;
+int gl_ENC_FLAT_CB_FAIL;
+int gl_DEC_FLAT_CB_FAIL;
+int gl_RECEIVE_CB_FAIL;
+
 void safe_printf(const char* format, ... ) {
         pthread_mutex_lock(&safe_printf_mutex);
         va_list args;
diff --git a/src/mds/mds_core.h b/src/mds/mds_core.h
index dad62cdc5..661bd85ea 100644
--- a/src/mds/mds_core.h
+++ b/src/mds/mds_core.h
@@ -600,65 +600,65 @@ extern "C" {
 /* ******************************************** */

 /* Initialization of MDTM Module */
-uint32_t (*mds_mdtm_init)(NODE_ID node_id, uint32_t *mds_tipc_ref);
+extern uint32_t (*mds_mdtm_init)(NODE_ID node_id, uint32_t *mds_tipc_ref);

 /* Destroying the MDTM Module*/
-uint32_t (*mds_mdtm_destroy)(void);
+extern uint32_t (*mds_mdtm_destroy)(void);

-uint32_t (*mds_mdtm_send)(MDTM_SEND_REQ *req);
+extern uint32_t (*mds_mdtm_send)(MDTM_SEND_REQ *req);

 /* SVC Install */
-uint32_t (*mds_mdtm_svc_install)(PW_ENV_ID pwe_id, MDS_SVC_ID svc_id,
+extern uint32_t (*mds_mdtm_svc_install)(PW_ENV_ID pwe_id, MDS_SVC_ID svc_id,
                                  NCSMDS_SCOPE_TYPE install_scope,
                                  V_DEST_RL role, MDS_VDEST_ID vdest_id,
                                  NCS_VDEST_TYPE vdest_policy,
                                  MDS_SVC_PVT_SUB_PART_VER mds_svc_pvt_ver);

 /* SVC Uninstall */
-uint32_t (*mds_mdtm_svc_uninstall)(PW_ENV_ID pwe_id, MDS_SVC_ID svc_id,
+extern uint32_t (*mds_mdtm_svc_uninstall)(PW_ENV_ID pwe_id, MDS_SVC_ID svc_id,
                                    NCSMDS_SCOPE_TYPE install_scope,
                                    V_DEST_RL role, MDS_VDEST_ID vdest_id,
                                    NCS_VDEST_TYPE vdest_policy,
                                    MDS_SVC_PVT_SUB_PART_VER mds_svc_pvt_ver);

 /* SVC Subscribe */
-uint32_t (*mds_mdtm_svc_subscribe)(PW_ENV_ID pwe_id, MDS_SVC_ID svc_id,
+extern uint32_t (*mds_mdtm_svc_subscribe)(PW_ENV_ID pwe_id, MDS_SVC_ID svc_id,
                                    NCSMDS_SCOPE_TYPE subscribe_scope,
                                    MDS_SVC_HDL local_svc_hdl,
                                    MDS_SUBTN_REF_VAL *subtn_ref_val);

 /*  added svc_hdl */
 /* SVC Unsubscribe */
-uint32_t (*mds_mdtm_svc_unsubscribe)(PW_ENV_ID pwe_id, MDS_SVC_ID svc_id,
+extern uint32_t (*mds_mdtm_svc_unsubscribe)(PW_ENV_ID pwe_id, MDS_SVC_ID 
svc_id,
                                      NCSMDS_SCOPE_TYPE subscribe_scope,
                                      MDS_SUBTN_REF_VAL subtn_ref_val);

 /* VDEST Install */
-uint32_t (*mds_mdtm_vdest_install)(MDS_VDEST_ID vdest_id);
+extern uint32_t (*mds_mdtm_vdest_install)(MDS_VDEST_ID vdest_id);

 /* VDEST Uninstall */
-uint32_t (*mds_mdtm_vdest_uninstall)(MDS_VDEST_ID vdest_id);
+extern uint32_t (*mds_mdtm_vdest_uninstall)(MDS_VDEST_ID vdest_id);

 /* VDEST Subscribe */
-uint32_t (*mds_mdtm_vdest_subscribe)(MDS_VDEST_ID vdest_id,
+extern uint32_t (*mds_mdtm_vdest_subscribe)(MDS_VDEST_ID vdest_id,
                                      MDS_SUBTN_REF_VAL *subtn_ref_val);

 /* VDEST Unsubscribe */
-uint32_t (*mds_mdtm_vdest_unsubscribe)(MDS_VDEST_ID vdest_id,
+extern uint32_t (*mds_mdtm_vdest_unsubscribe)(MDS_VDEST_ID vdest_id,
                                        MDS_SUBTN_REF_VAL subtn_ref_val);

 /* Tx Register (For incrementing the use count) */
-uint32_t (*mds_mdtm_tx_hdl_register)(MDS_DEST adest);
+extern uint32_t (*mds_mdtm_tx_hdl_register)(MDS_DEST adest);

 /* Tx Unregister (For decrementing the use count) */
-uint32_t (*mds_mdtm_tx_hdl_unregister)(MDS_DEST adest);
+extern uint32_t (*mds_mdtm_tx_hdl_unregister)(MDS_DEST adest);

 /* Node subscription */
-uint32_t (*mds_mdtm_node_subscribe)(MDS_SVC_HDL svc_hdl,
+extern uint32_t (*mds_mdtm_node_subscribe)(MDS_SVC_HDL svc_hdl,
                                     MDS_SUBTN_REF_VAL *subtn_ref_val);

 /* Node unsubscription */
-uint32_t (*mds_mdtm_node_unsubscribe)(MDS_SUBTN_REF_VAL subtn_ref_val);
+extern uint32_t (*mds_mdtm_node_unsubscribe)(MDS_SUBTN_REF_VAL subtn_ref_val);

 #ifdef __cplusplus
 }
diff --git a/src/mds/mds_dt_common.c b/src/mds/mds_dt_common.c
index 6f1bd8a2e..85784e4b6 100644
--- a/src/mds/mds_dt_common.c
+++ b/src/mds/mds_dt_common.c
@@ -24,6 +24,9 @@
 #include "base/osaf_utility.h"
 #include "base/osaf_secutil.h"

+MDTM_REF_HDL_LIST *mdtm_ref_hdl_list_hdr;
+NCS_PATRICIA_TREE mdtm_reassembly_list;
+
 static SYSF_MBX mdtm_mbx_common;
 static MDTM_TX_TYPE mdtm_transport;
 static uint32_t mdtm_fill_data(MDTM_REASSEMBLY_QUEUE *reassem_queue,
diff --git a/src/mds/mds_dt_tcp.c b/src/mds/mds_dt_tcp.c
index 0aa1c59d5..a79317b6d 100644
--- a/src/mds/mds_dt_tcp.c
+++ b/src/mds/mds_dt_tcp.c
@@ -66,8 +66,7 @@ extern MDS_SUBTN_REF_VAL mdtm_handle;
 extern uint32_t mdtm_global_frag_num_tcp;

 uint32_t mds_socket_domain = AF_UNIX;
-MDTM_REF_HDL_LIST *mdtm_ref_hdl_list_hdr;
-NCS_PATRICIA_TREE mdtm_reassembly_list;
+MDTM_TCP_CB *tcp_cb;

 /* Get the pid of the process */
 pid_t mdtm_pid;
diff --git a/src/mds/mds_dt_tcp.h b/src/mds/mds_dt_tcp.h
index 1065464b8..350d53490 100644
--- a/src/mds/mds_dt_tcp.h
+++ b/src/mds/mds_dt_tcp.h
@@ -50,7 +50,7 @@ typedef struct mdtm_tcp_cb {

 } MDTM_TCP_CB;

-MDTM_TCP_CB *tcp_cb;
+extern MDTM_TCP_CB *tcp_cb;

 typedef enum mds_mdtm_dtm_msg_types {
   MDS_MDTM_DTM_PID_TYPE = 1,
diff --git a/src/mds/mds_dt_tipc.c b/src/mds/mds_dt_tipc.c
index 5c4260c08..5da5cdeaf 100644
--- a/src/mds/mds_dt_tipc.c
+++ b/src/mds/mds_dt_tipc.c
@@ -160,8 +160,6 @@ struct sockaddr_tipc topsrv;

 static MDS_SUBTN_REF_VAL handle;
 static uint16_t num_subscriptions;
-MDTM_REF_HDL_LIST *mdtm_ref_hdl_list_hdr;
-NCS_PATRICIA_TREE mdtm_reassembly_list;

 uint32_t mdtm_global_frag_num;

diff --git a/src/mds/mds_main.c b/src/mds/mds_main.c
index 0bcb2f996..9f0a9aa45 100644
--- a/src/mds/mds_main.c
+++ b/src/mds/mds_main.c
@@ -53,6 +53,53 @@
 #define MDS_MDTM_CONNECT_PATH PKGLOCALSTATEDIR "/osaf_dtm_intra_server"
 #endif

+/* Initialization of MDTM Module */
+uint32_t (*mds_mdtm_init)(NODE_ID node_id, uint32_t *mds_tipc_ref);
+/* Destroying the MDTM Module*/
+uint32_t (*mds_mdtm_destroy)(void);
+uint32_t (*mds_mdtm_send)(MDTM_SEND_REQ *req);
+/* SVC Install */
+uint32_t (*mds_mdtm_svc_install)(PW_ENV_ID pwe_id, MDS_SVC_ID svc_id,
+                                 NCSMDS_SCOPE_TYPE install_scope,
+                                 V_DEST_RL role, MDS_VDEST_ID vdest_id,
+                                 NCS_VDEST_TYPE vdest_policy,
+                                 MDS_SVC_PVT_SUB_PART_VER mds_svc_pvt_ver);
+/* SVC Uninstall */
+uint32_t (*mds_mdtm_svc_uninstall)(PW_ENV_ID pwe_id, MDS_SVC_ID svc_id,
+                                   NCSMDS_SCOPE_TYPE install_scope,
+                                   V_DEST_RL role, MDS_VDEST_ID vdest_id,
+                                   NCS_VDEST_TYPE vdest_policy,
+                                   MDS_SVC_PVT_SUB_PART_VER mds_svc_pvt_ver);
+/* SVC Subscribe */
+uint32_t (*mds_mdtm_svc_subscribe)(PW_ENV_ID pwe_id, MDS_SVC_ID svc_id,
+                                   NCSMDS_SCOPE_TYPE subscribe_scope,
+                                   MDS_SVC_HDL local_svc_hdl,
+                                   MDS_SUBTN_REF_VAL *subtn_ref_val);
+/*  added svc_hdl */
+/* SVC Unsubscribe */
+uint32_t (*mds_mdtm_svc_unsubscribe)(PW_ENV_ID pwe_id, MDS_SVC_ID svc_id,
+                                     NCSMDS_SCOPE_TYPE subscribe_scope,
+                                     MDS_SUBTN_REF_VAL subtn_ref_val);
+/* VDEST Install */
+uint32_t (*mds_mdtm_vdest_install)(MDS_VDEST_ID vdest_id);
+/* VDEST Uninstall */
+uint32_t (*mds_mdtm_vdest_uninstall)(MDS_VDEST_ID vdest_id);
+/* VDEST Subscribe */
+uint32_t (*mds_mdtm_vdest_subscribe)(MDS_VDEST_ID vdest_id,
+                                     MDS_SUBTN_REF_VAL *subtn_ref_val);
+/* VDEST Unsubscribe */
+uint32_t (*mds_mdtm_vdest_unsubscribe)(MDS_VDEST_ID vdest_id,
+                                       MDS_SUBTN_REF_VAL subtn_ref_val);
+/* Tx Register (For incrementing the use count) */
+uint32_t (*mds_mdtm_tx_hdl_register)(MDS_DEST adest);
+/* Tx Unregister (For decrementing the use count) */
+uint32_t (*mds_mdtm_tx_hdl_unregister)(MDS_DEST adest);
+/* Node subscription */
+uint32_t (*mds_mdtm_node_subscribe)(MDS_SVC_HDL svc_hdl,
+                                    MDS_SUBTN_REF_VAL *subtn_ref_val);
+/* Node unsubscription */
+uint32_t (*mds_mdtm_node_unsubscribe)(MDS_SUBTN_REF_VAL subtn_ref_val);
+
 extern uint32_t mds_socket_domain;
 void mds_init_transport(void);
 bool tipc_mode_enabled = false;
diff --git a/src/msg/msgnd/mqnd_db.h b/src/msg/msgnd/mqnd_db.h
index b78024e22..fee43e58a 100644
--- a/src/msg/msgnd/mqnd_db.h
+++ b/src/msg/msgnd/mqnd_db.h
@@ -33,7 +33,7 @@
 #include <saClm.h>
 #include <saImmOi.h>
 /* Decleration for global variable */
-uint32_t gl_mqnd_cb_hdl;
+extern uint32_t gl_mqnd_cb_hdl;

 /* Macros for reading global database */
 #define m_MQND_STORE_HDL(hdl) (gl_mqnd_cb_hdl = (hdl))
diff --git a/tools/devel/fenced/node_state_hdlr_pl.cc 
b/tools/devel/fenced/node_state_hdlr_pl.cc
index 6bf032e5a..db76d649a 100644
--- a/tools/devel/fenced/node_state_hdlr_pl.cc
+++ b/tools/devel/fenced/node_state_hdlr_pl.cc
@@ -26,6 +26,7 @@
 #include <cstring>
 #include <thread>
 #include <utility>
+#include <cstdlib>

 NodeStateHdlrPl::NodeStateHdlrPl() {
   syslog(LOG_INFO, "NodeStateHdlrPl instantiated");
--
2.25.1


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

Reply via email to