The version in saImmO{m,i}Initialize is input/output parameter and is declared
as non-constant for both IMM OM and OI API according to SAF spec.
But in immutil wrapper library, some are declared as constant and don't update
the in/out version before returning from such wrappers.
This patch makes that parameter non-const and do update the version
before returning from wrapper APIs. Also fix the wrong usage of
these wrapper, passed const version, in some services/applications.
---
src/amf/amfd/imm.cc | 11 +++++++----
src/amf/amfnd/util.cc | 3 ++-
src/log/apitest/imm_tstutil.c | 5 ++++-
src/log/apitest/logtest.c | 9 ++++++---
src/log/apitest/logtestfr.c | 6 ++++--
src/log/apitest/tet_log_runtime_cfgobj.c | 3 ++-
src/log/logd/lgs_config.cc | 3 ++-
src/log/logd/lgs_imm.cc | 15 ++++++++++-----
src/log/logd/lgs_imm_gcfg.cc | 7 +++++--
src/osaf/immutil/immutil.c | 20 +++++++++++++++-----
src/osaf/immutil/immutil.h | 6 +++---
src/smf/smfd/SmfAdminState.cc | 4 ++--
src/smf/smfd/SmfExecControlHdl.cc | 3 ++-
13 files changed, 64 insertions(+), 31 deletions(-)
diff --git a/src/amf/amfd/imm.cc b/src/amf/amfd/imm.cc
index 47c0e5a..8c70325 100644
--- a/src/amf/amfd/imm.cc
+++ b/src/amf/amfd/imm.cc
@@ -1461,6 +1461,7 @@ done:
SaAisErrorT avd_imm_init(void *avd_cb) {
SaAisErrorT error = SA_AIS_OK;
AVD_CL_CB *cb = (AVD_CL_CB *)avd_cb;
+ SaVersionT local_version = immVersion;
TRACE_ENTER();
@@ -1471,13 +1472,13 @@ SaAisErrorT avd_imm_init(void *avd_cb) {
cb->avd_imm_status = AVD_IMM_INIT_ONGOING;
if ((error = immutil_saImmOiInitialize_2(&cb->immOiHandle, &avd_callbacks,
- &immVersion)) != SA_AIS_OK) {
+ &local_version)) != SA_AIS_OK) {
LOG_ER("saImmOiInitialize failed %u", error);
goto done;
}
if ((error = immutil_saImmOmInitialize(&cb->immOmHandle, nullptr,
- &immVersion)) != SA_AIS_OK) {
+ &local_version)) != SA_AIS_OK) {
LOG_ER("saImmOmInitialize failed %u", error);
goto done;
}
@@ -2075,6 +2076,7 @@ void avd_imm_update_runtime_attrs(void) {
*/
static void *avd_imm_reinit_bg_thread(void *_cb) {
SaAisErrorT rc = SA_AIS_OK;
+ SaVersionT local_version;
AVD_CL_CB *cb = (AVD_CL_CB *)_cb;
AVD_EVT *evt;
uint32_t status;
@@ -2098,9 +2100,10 @@ static void *avd_imm_reinit_bg_thread(void *_cb) {
avd_cb->immOiHandle = 0;
avd_cb->is_implementer = false;
+ local_version = immVersion;
if ((rc = immutil_saImmOiInitialize_2(&cb->immOiHandle, &avd_callbacks,
- &immVersion)) != SA_AIS_OK) {
+ &local_version)) != SA_AIS_OK) {
LOG_ER("saImmOiInitialize failed %u", rc);
osaf_mutex_unlock_ordie(&imm_reinit_mutex);
exit(EXIT_FAILURE);
@@ -2141,7 +2144,7 @@ static void *avd_imm_reinit_bg_thread(void *_cb) {
/* Lets re-initialize Om interface also. */
(void)immutil_saImmOmFinalize(cb->immOmHandle);
if ((rc = immutil_saImmOmInitialize(&cb->immOmHandle, nullptr,
- &immVersion)) != SA_AIS_OK) {
+ &local_version)) != SA_AIS_OK) {
LOG_ER("saImmOmInitialize failed %u", rc);
continue;
}
diff --git a/src/amf/amfnd/util.cc b/src/amf/amfnd/util.cc
index f6dbb49..38bf426 100644
--- a/src/amf/amfnd/util.cc
+++ b/src/amf/amfnd/util.cc
@@ -250,8 +250,9 @@ const char *avnd_failed_state_file_location(void) {
SaAisErrorT saImmOmInitialize_cond(SaImmHandleT *immHandle,
const SaImmCallbacksT *immCallbacks,
const SaVersionT *version) {
+ SaVersionT local_version = *version;
if (avnd_cb->scs_absence_max_duration == 0) {
- return immutil_saImmOmInitialize(immHandle, immCallbacks, version);
+ return immutil_saImmOmInitialize(immHandle, immCallbacks, &local_version);
}
SaVersionT localVer = *version;
diff --git a/src/log/apitest/imm_tstutil.c b/src/log/apitest/imm_tstutil.c
index 194dffa..2143f83 100644
--- a/src/log/apitest/imm_tstutil.c
+++ b/src/log/apitest/imm_tstutil.c
@@ -32,6 +32,7 @@ bool get_multivalue_type_string_from_imm(SaImmHandleT
*omHandle,
{
SaAisErrorT om_rc = SA_AIS_OK;
SaImmAccessorHandleT accessorHandle;
+ SaVersionT local_version;
SaImmAttrValuesT_2 *attribute;
SaImmAttrValuesT_2 **attributes;
bool func_rc = true;
@@ -39,10 +40,12 @@ bool get_multivalue_type_string_from_imm(SaImmHandleT
*omHandle,
// printf(">> get_multivalue_string_type_from_imm()\n");
do {
+ local_version = kImmVersion;
/* Make sure this is a NULL pointer if no values are found */
*multivalue_array = NULL;
- om_rc = immutil_saImmOmInitialize(omHandle, NULL, &kImmVersion);
+ om_rc = immutil_saImmOmInitialize(omHandle, NULL,
+ &local_version);
if (om_rc != SA_AIS_OK) {
printf("immutil_saImmOmInitialize Fail '%s'\n",
saf_error(om_rc));
diff --git a/src/log/apitest/logtest.c b/src/log/apitest/logtest.c
index f8fe135..aabd1e5 100644
--- a/src/log/apitest/logtest.c
+++ b/src/log/apitest/logtest.c
@@ -102,6 +102,7 @@ void init_logrootpath(void)
SaImmHandleT omHandle;
SaConstStringT config = "logConfig=1,safApp=safLogService";
SaNameT objectName;
+ SaVersionT local_version = kImmVersion;
SaImmAccessorHandleT accessorHandle;
SaImmAttrValuesT_2 *attribute;
SaImmAttrValuesT_2 **attributes;
@@ -112,7 +113,7 @@ void init_logrootpath(void)
saAisNameLend(config, &objectName);
/* NOTE: immutil init osaf_assert if error */
- (void)immutil_saImmOmInitialize(&omHandle, NULL, &kImmVersion);
+ (void)immutil_saImmOmInitialize(&omHandle, NULL, &local_version);
(void)immutil_saImmOmAccessorInitialize(omHandle, &accessorHandle);
/* Get all attributes of the object */
@@ -140,6 +141,7 @@ int get_attr_value(SaNameT *inObjName, char *inAttr, void
*outValue)
{
SaImmHandleT omHandle;
SaImmAccessorHandleT accessorHandle;
+ SaVersionT local_version = kImmVersion;
SaImmAttrValuesT_2 *attribute = NULL;
SaImmAttrValuesT_2 **attributes;
SaAisErrorT ais_rc = SA_AIS_OK;
@@ -147,7 +149,7 @@ int get_attr_value(SaNameT *inObjName, char *inAttr, void
*outValue)
int rc = 0;
/* NOTE: immutil init osaf_assert if error */
- (void)immutil_saImmOmInitialize(&omHandle, NULL, &kImmVersion);
+ (void)immutil_saImmOmInitialize(&omHandle, NULL, &local_version);
(void)immutil_saImmOmAccessorInitialize(omHandle, &accessorHandle);
/* Get all attributes of the object */
@@ -286,6 +288,7 @@ int get_active_sc(void)
SaImmHandleT omHandle;
SaConstStringT objname = "safSu=SC-1,safSg=2N,safApp=OpenSAF";
SaNameT objectName1;
+ SaVersionT local_version = kImmVersion;
SaImmAccessorHandleT accessorHandle;
SaImmAttrValuesT_2 **attributes;
const char saAmfSUNumCurrActiveSIs[] = "saAmfSUNumCurrActiveSIs";
@@ -296,7 +299,7 @@ int get_active_sc(void)
saAisNameLend(objname, &objectName1);
/* NOTE: immutil init osaf_assert if error
*/
- (void)immutil_saImmOmInitialize(&omHandle, NULL, &kImmVersion);
+ (void)immutil_saImmOmInitialize(&omHandle, NULL, &local_version);
(void)immutil_saImmOmAccessorInitialize(omHandle, &accessorHandle);
/* Get attributes of the object
diff --git a/src/log/apitest/logtestfr.c b/src/log/apitest/logtestfr.c
index b2ef30b..a110240 100644
--- a/src/log/apitest/logtestfr.c
+++ b/src/log/apitest/logtestfr.c
@@ -91,11 +91,12 @@ static int get_active_sc(void)
const char saAmfSUNumCurrActiveSIs[] = "saAmfSUNumCurrActiveSIs";
SaImmAttrNameT attributeNames[2] = {(char *)saAmfSUNumCurrActiveSIs,
NULL};
+ SaVersionT local_version = kImmVersion;
SaUint32T curr_act_sis = 0;
/* NOTE: immutil init osaf_assert if error
*/
- (void)immutil_saImmOmInitialize(&omHandle, NULL, &kImmVersion);
+ (void)immutil_saImmOmInitialize(&omHandle, NULL, &local_version);
(void)immutil_saImmOmAccessorInitialize(omHandle, &accessorHandle);
/* Get attributes of the object
@@ -191,9 +192,10 @@ void get_logRootDirectory(char *path_str)
const char logRootDirectory_name[] = "logRootDirectory";
SaImmAttrNameT attributeNames[2] = {(char *)logRootDirectory_name,
NULL};
+ SaVersionT local_version = kImmVersion;
/* NOTE: immutil init osaf_assert if error */
- (void)immutil_saImmOmInitialize(&omHandle, NULL, &kImmVersion);
+ (void)immutil_saImmOmInitialize(&omHandle, NULL, &local_version);
(void)immutil_saImmOmAccessorInitialize(omHandle, &accessorHandle);
/* Get all attributes of the object */
diff --git a/src/log/apitest/tet_log_runtime_cfgobj.c
b/src/log/apitest/tet_log_runtime_cfgobj.c
index 047296c..ae83e65 100644
--- a/src/log/apitest/tet_log_runtime_cfgobj.c
+++ b/src/log/apitest/tet_log_runtime_cfgobj.c
@@ -37,13 +37,14 @@ void log_rt_cf_obj_compare(void)
SaNameT object_name;
SaImmAccessorHandleT accessorHandle;
SaImmAttrValuesT_2 **attributes;
+ SaVersionT local_version = kImmVersion;
uint32_t r_cnt = 0; /* Counter for attributes in runtime object */
uint32_t c_cnt = 0;
SaAisErrorT ais_rc = SA_AIS_OK;
int tst_res = 0; /* Test result: 0 = PASS */
/* NOTE: immutil will osaf_assert if error */
- (void)immutil_saImmOmInitialize(&omHandle, NULL, &kImmVersion);
+ (void)immutil_saImmOmInitialize(&omHandle, NULL, &local_version);
(void)immutil_saImmOmAccessorInitialize(omHandle, &accessorHandle);
/* Count attributes in configuration object
diff --git a/src/log/logd/lgs_config.cc b/src/log/logd/lgs_config.cc
index 4190e30..71d7318 100644
--- a/src/log/logd/lgs_config.cc
+++ b/src/log/logd/lgs_config.cc
@@ -975,6 +975,7 @@ static void read_logsv_config_obj_2() {
SaImmAccessorHandleT accessorHandle;
SaImmAttrValuesT_2 *attribute;
SaImmAttrValuesT_2 **attributes;
+ SaVersionT local_version = kImmVersion;
int i = 0;
int n;
@@ -982,7 +983,7 @@ static void read_logsv_config_obj_2() {
/* NOTE: immutil init will osaf_assert if error */
SaAisErrorT om_rc =
- immutil_saImmOmInitialize(&omHandle, nullptr, &kImmVersion);
+ immutil_saImmOmInitialize(&omHandle, nullptr, &local_version);
if (om_rc != SA_AIS_OK) {
LOG_ER("immutil_saImmOmInitialize failed: %s", saf_error(om_rc));
osaf_abort(0);
diff --git a/src/log/logd/lgs_imm.cc b/src/log/logd/lgs_imm.cc
index 60870fa..f772dd5 100644
--- a/src/log/logd/lgs_imm.cc
+++ b/src/log/logd/lgs_imm.cc
@@ -973,6 +973,7 @@ static lgs_stream_defval_t *get_SaLogStreamConfig_default()
{
SaImmClassCategoryT cc;
SaImmAttrDefinitionT_2 **attributes = NULL;
SaImmAttrDefinitionT_2 *attribute = NULL;
+ SaVersionT local_version = kImmVersion;
TRACE_ENTER();
if (lgs_stream_defval_updated_flag == false) {
@@ -980,7 +981,7 @@ static lgs_stream_defval_t *get_SaLogStreamConfig_default()
{
* We are only interested in saLogStreamMaxLogFileSize and
* saLogStreamFixedLogRecordSize
*/
- rc = immutil_saImmOmInitialize(&om_handle, NULL, &kImmVersion);
+ rc = immutil_saImmOmInitialize(&om_handle, NULL, &local_version);
if (rc != SA_AIS_OK) {
TRACE("immutil_saImmOmInitialize fail rc=%d", rc);
}
@@ -2908,6 +2909,7 @@ SaAisErrorT lgs_imm_init_configStreams(lgs_cb_t *cb) {
SaImmSearchParametersT_2 objectSearch;
SaImmAttrValuesT_2 **attributes;
SaImmAttrDefinitionT_2** attr_definitions;
+ SaVersionT local_version = kImmVersion;
int wellknownStreamId = 0;
int appStreamId = 3;
uint32_t streamId = 0;
@@ -2916,7 +2918,7 @@ SaAisErrorT lgs_imm_init_configStreams(lgs_cb_t *cb) {
SaBoolT endloop = SA_FALSE, jstart = SA_TRUE;
TRACE_ENTER();
- om_rc = immutil_saImmOmInitialize(&omHandle, NULL, &kImmVersion);
+ om_rc = immutil_saImmOmInitialize(&omHandle, NULL, &local_version);
if (om_rc != SA_AIS_OK) {
LOG_ER("immutil_saImmOmInitialize failed %s", saf_error(om_rc));
osaf_abort(0);
@@ -3309,13 +3311,14 @@ void lgs_search_stream_objects() {
SaAisErrorT ais_rc = SA_AIS_OK;
SaImmHandleT immOmHandle;
SaImmSearchHandleT immSearchHandle;
+ SaVersionT local_version = kImmVersion;
const char *class_name = "SaLogStream";
TRACE_ENTER();
/* Intialize Om API
*/
- ais_rc = immutil_saImmOmInitialize(&immOmHandle, NULL, &kImmVersion);
+ ais_rc = immutil_saImmOmInitialize(&immOmHandle, NULL, &local_version);
if (ais_rc != SA_AIS_OK) {
LOG_WA("%s saImmOmInitialize FAIL %d", __FUNCTION__, ais_rc);
goto done;
@@ -3479,6 +3482,7 @@ int lgs_get_streamobj_attr(SaImmAttrValuesT_2
***attrib_out,
int rc = 0;
SaAisErrorT ais_rc = SA_AIS_OK;
SaImmAccessorHandleT accessorHandle;
+ SaVersionT local_version = kImmVersion;
char *attribute_names[] = {
const_cast<char *>("saLogStreamFileName"),
const_cast<char *>("saLogStreamPathName"),
@@ -3503,7 +3507,7 @@ int lgs_get_streamobj_attr(SaImmAttrValuesT_2
***attrib_out,
/* Initialize Om API
*/
- ais_rc = immutil_saImmOmInitialize(immOmHandle, NULL, &kImmVersion);
+ ais_rc = immutil_saImmOmInitialize(immOmHandle, NULL, &local_version);
if (ais_rc != SA_AIS_OK) {
LOG_WA("\t%s saImmOmInitialize FAIL %d", __FUNCTION__, ais_rc);
rc = -1;
@@ -3584,6 +3588,7 @@ SaUint32T *lgs_get_scAbsenceAllowed_attr(SaUint32T
*attr_val) {
SaImmHandleT immOmHandle;
SaImmAttrValuesT_2 *attribute;
SaImmAttrValuesT_2 **attributes;
+ SaVersionT local_version = kImmVersion;
TRACE_ENTER();
char *attribute_names[] = {const_cast<char *>("scAbsenceAllowed"), NULL};
@@ -3599,7 +3604,7 @@ SaUint32T *lgs_get_scAbsenceAllowed_attr(SaUint32T
*attr_val) {
/* Initialize Om API
*/
- ais_rc = immutil_saImmOmInitialize(&immOmHandle, NULL, &kImmVersion);
+ ais_rc = immutil_saImmOmInitialize(&immOmHandle, NULL, &local_version);
if (ais_rc != SA_AIS_OK) {
LOG_WA("\t%s saImmOmInitialize FAIL %d", __FUNCTION__, ais_rc);
goto done;
diff --git a/src/log/logd/lgs_imm_gcfg.cc b/src/log/logd/lgs_imm_gcfg.cc
index f7d59d1..64a5f3f 100644
--- a/src/log/logd/lgs_imm_gcfg.cc
+++ b/src/log/logd/lgs_imm_gcfg.cc
@@ -571,6 +571,7 @@ static int read_network_name() {
SaNameT object_name;
SaImmAttrValuesT_2 **attributes;
SaImmAttrValuesT_2 *attribute;
+ SaVersionT local_version = kImmVersion;
void *value = NULL;
/* Setup search initialize parameters */
@@ -589,7 +590,7 @@ static int read_network_name() {
/*
* Initialize an IMM object manager
*/
- ais_rc = immutil_saImmOmInitialize(&om_handle, NULL, &kImmVersion);
+ ais_rc = immutil_saImmOmInitialize(&om_handle, NULL, &local_version);
if (ais_rc != SA_AIS_OK) {
TRACE("immutil_saImmOmInitialize FAIL %s", saf_error(ais_rc));
rc = -1;
@@ -685,6 +686,7 @@ done:
static int applier_init(SaImmOiHandleT *imm_appl_hdl,
SaSelectionObjectT *imm_appl_selobj) {
SaAisErrorT ais_rc = SA_AIS_OK;
+ SaVersionT local_version = kImmVersion;
int rc = 0;
TRACE_ENTER();
@@ -705,7 +707,8 @@ static int applier_init(SaImmOiHandleT *imm_appl_hdl,
}
/* Initialize OI for applier and get OI handle */
- ais_rc = immutil_saImmOiInitialize_2(imm_appl_hdl, &callbacks, &kImmVersion);
+ ais_rc = immutil_saImmOiInitialize_2(imm_appl_hdl, &callbacks,
+ &local_version);
if (ais_rc != SA_AIS_OK) {
LOG_WA("immutil_saImmOiInitialize_2 Failed %s", saf_error(ais_rc));
rc = -1;
diff --git a/src/osaf/immutil/immutil.c b/src/osaf/immutil/immutil.c
index 1add1d0..e10a8ff 100644
--- a/src/osaf/immutil/immutil.c
+++ b/src/osaf/immutil/immutil.c
@@ -610,8 +610,9 @@ SaImmClassNameT immutil_get_className(const SaNameT
*objectName)
SaImmAccessorHandleT accessorHandle;
SaImmAttrValuesT_2 **attributes;
SaImmAttrNameT attributeNames[] = {"SaImmAttrClassName", NULL};
+ SaVersionT localVer = immVersion;
- if (immutil_saImmOmInitialize(&omHandle, NULL, &immVersion) !=
+ if (immutil_saImmOmInitialize(&omHandle, NULL, &localVer) !=
SA_AIS_OK)
goto done;
if (immutil_saImmOmAccessorInitialize(omHandle, &accessorHandle) !=
@@ -639,9 +640,10 @@ SaAisErrorT immutil_get_attrValueType(const
SaImmClassNameT className,
SaImmClassCategoryT classCategory;
SaImmAttrDefinitionT_2 *attrDef;
SaImmAttrDefinitionT_2 **attrDefinitions;
+ SaVersionT localVer = immVersion;
int i = 0;
- if ((rc = immutil_saImmOmInitialize(&omHandle, NULL, &immVersion)) !=
+ if ((rc = immutil_saImmOmInitialize(&omHandle, NULL, &localVer)) !=
SA_AIS_OK) {
return rc;
}
@@ -1083,7 +1085,7 @@ struct ImmutilWrapperProfile immutilWrapperProfile = {1,
25, 400};
SaAisErrorT
immutil_saImmOiInitialize_2(SaImmOiHandleT *immOiHandle,
const SaImmOiCallbacksT_2 *immOiCallbacks,
- const SaVersionT *version)
+ SaVersionT *version)
{
/* Version parameter is in/out i.e. must be mutable and should not be
re-used from previous call in a retry loop. */
@@ -1100,6 +1102,8 @@ immutil_saImmOiInitialize_2(SaImmOiHandleT *immOiHandle,
saImmOiInitialize_2(immOiHandle, immOiCallbacks, &localVer);
nTries++;
}
+
+ *version = localVer;
if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
immutilError("saImmOiInitialize FAILED, rc = %d", (int)rc);
return rc;
@@ -1108,7 +1112,7 @@ immutil_saImmOiInitialize_2(SaImmOiHandleT *immOiHandle,
SaAisErrorT
immutil_saImmOiInitialize_o3(SaImmOiHandleT *immOiHandle,
const SaImmOiCallbacksT_o3 *immOiCallbacks,
- const SaVersionT *version)
+ SaVersionT *version)
{
/* Version parameter is in/out i.e. must be mutable and should not be
re-used from previous call in a retry loop. */
@@ -1125,6 +1129,8 @@ immutil_saImmOiInitialize_o3(SaImmOiHandleT *immOiHandle,
&localVer);
nTries++;
}
+
+ *version = localVer;
if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
immutilError("saImmOiInitialize_o3 FAILED, rc = %d", (int)rc);
return rc;
@@ -1515,7 +1521,7 @@ SaAisErrorT immutil_saImmOiAugmentCcbInitialize(
SaAisErrorT immutil_saImmOmInitialize(SaImmHandleT *immHandle,
const SaImmCallbacksT *immCallbacks,
- const SaVersionT *version)
+ SaVersionT *version)
{
/* Version parameter is in/out i.e. must be mutable and should not be
re-used from previous call in a retry loop. */
@@ -1530,6 +1536,8 @@ SaAisErrorT immutil_saImmOmInitialize(SaImmHandleT
*immHandle,
rc = saImmOmInitialize(immHandle, immCallbacks, &localVer);
nTries++;
}
+
+ *version = localVer;
if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
immutilError("saImmOmInitialize FAILED, rc = %d", (int)rc);
return rc;
@@ -1553,6 +1561,8 @@ SaAisErrorT immutil_saImmOmInitialize_o2(SaImmHandleT
*immHandle,
rc = saImmOmInitialize_o2(immHandle, immCallbacks, &localVer);
nTries++;
}
+
+ *version = localVer;
if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
immutilError(" FAILED, rc = %d", (int)rc);
return rc;
diff --git a/src/osaf/immutil/immutil.h b/src/osaf/immutil/immutil.h
index dc6449b..63e710f 100644
--- a/src/osaf/immutil/immutil.h
+++ b/src/osaf/immutil/immutil.h
@@ -421,11 +421,11 @@ struct ImmutilWrapperProfile {
*/
EXTERN_C SaAisErrorT immutil_saImmOiInitialize_2(
SaImmOiHandleT *immOiHandle, const SaImmOiCallbacksT_2 *immOiCallbacks,
- const SaVersionT *version);
+ SaVersionT *version);
EXTERN_C SaAisErrorT immutil_saImmOiInitialize_o3(
SaImmOiHandleT *immOiHandle, const SaImmOiCallbacksT_o3 *immOiCallbacks,
- const SaVersionT *version);
+ SaVersionT *version);
EXTERN_C SaAisErrorT immutil_saImmOiSelectionObjectGet(
SaImmOiHandleT immOiHandle, SaSelectionObjectT *selectionObject);
@@ -500,7 +500,7 @@ EXTERN_C SaAisErrorT immutil_saImmOiAugmentCcbInitialize(
EXTERN_C SaAisErrorT immutil_saImmOmInitialize(
SaImmHandleT *immHandle, const SaImmCallbacksT *immCallbacks,
- const SaVersionT *version);
+ SaVersionT *version);
EXTERN_C SaAisErrorT immutil_saImmOmInitialize_o2(
SaImmHandleT *immHandle, const SaImmCallbacksT_o2 *immCallbacks,
diff --git a/src/smf/smfd/SmfAdminState.cc b/src/smf/smfd/SmfAdminState.cc
index 9508447..52bdf4b 100644
--- a/src/smf/smfd/SmfAdminState.cc
+++ b/src/smf/smfd/SmfAdminState.cc
@@ -264,12 +264,13 @@ done:
//
bool SmfAdminStateHandler::initImmOmAndSetAdminOwnerName() {
SaAisErrorT ais_rc = SA_AIS_ERR_TRY_AGAIN;
+ SaVersionT local_version = immVersion_;
int timeout_try_cnt = 6;
bool rc = true;
// OM handle
while (timeout_try_cnt > 0) {
- ais_rc = immutil_saImmOmInitialize(&omHandle_, NULL, &immVersion_);
+ ais_rc = immutil_saImmOmInitialize(&omHandle_, NULL, &local_version);
if (ais_rc != SA_AIS_ERR_TIMEOUT) break;
timeout_try_cnt--;
}
@@ -973,4 +974,3 @@ bool
SmfAdminStateHandler::adminOperation(SaAmfAdminOperationIdT adminOperation,
TRACE_LEAVE2("rc=%d", rc);
return rc;
}
-
diff --git a/src/smf/smfd/SmfExecControlHdl.cc
b/src/smf/smfd/SmfExecControlHdl.cc
index e97b765..bb5f9a5 100644
--- a/src/smf/smfd/SmfExecControlHdl.cc
+++ b/src/smf/smfd/SmfExecControlHdl.cc
@@ -373,6 +373,7 @@ bool SmfExecControlObjHandler::copyExecControlObject() {
*/
bool SmfExecControlObjHandler::createImmOmHandles() {
SaAisErrorT ais_rc = SA_AIS_ERR_TRY_AGAIN;
+ SaVersionT local_version = m_immVersion;
int timeout_try_cnt = 6;
bool rc = true;
@@ -382,7 +383,7 @@ bool SmfExecControlObjHandler::createImmOmHandles() {
// OM handle
while (timeout_try_cnt > 0) {
- ais_rc = immutil_saImmOmInitialize(&m_omHandle, NULL, &m_immVersion);
+ ais_rc = immutil_saImmOmInitialize(&m_omHandle, NULL, &local_version);
if (ais_rc != SA_AIS_ERR_TIMEOUT) break;
timeout_try_cnt--;
}
--
1.9.1
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel