Hi Canh,

Ack with a minor comment, tagged [Vu].

Regards, Vu

> -----Original Message-----
> From: Canh Van Truong [mailto:[email protected]]
> Sent: Monday, October 2, 2017 2:28 PM
> To: [email protected]; [email protected]
> Cc: [email protected]; Canh Van Truong
> <[email protected]>
> Subject: [PATCH 1/1] log: fix incorrect handling of version when
initializing
> OpenSAF APIs in log service [#2516]
> 
> The version used when initializing the API is in many cases stored in a
global
> variable and this global variable is used every time the API is
initialized.
> The version is given as a pointer to this variable. The problem is that
this
> variable is defined as an [in/out] parameter that gives the version to use
> when
> initializing [in] but the value shall be changed by the agent to the
highest
> version supported by the initialized service [out]. This means that the
next
> time the API is initialized it may be initialized with a higher version.
> 
> This patch help to fix that always initialize  OpenSaf API with correct
version
> in log service.
> ---
>  src/log/apitest/imm_tstutil.c                 |  5 ++--
>  src/log/apitest/logtest.c                     |  8 +++---
>  src/log/apitest/logtest.h                     |  4 ++-
>  src/log/apitest/logtestfr.c                   | 12 +++++----
>  src/log/apitest/logutil.c                     |  6 +++--
>  src/log/apitest/tet_LogOiOps.c                |  4 +--
>  src/log/apitest/tet_Log_recov.c               | 11 +++++---
>  src/log/apitest/tet_log_longDN.c              |  7 ++---
>  src/log/apitest/tet_log_runtime_cfgobj.c      |  3 +--
>  src/log/apitest/tet_multiple_thread.c         |  6 +++--
>  src/log/apitest/tet_saLogFilterSetCallbackT.c |  8 ++++--
>  src/log/apitest/tet_saLogInitialize.c         | 38
+++++++++++++++------------
>  src/log/apitest/tet_saLogStreamOpen_2.c       | 10 ++++---
>  src/log/logd/lgs.h                            |  4 +++
>  src/log/logd/lgs_amf.cc                       |  6 +----
>  src/log/logd/lgs_clm.cc                       |  7 ++---
>  src/log/logd/lgs_config.cc                    |  3 +--
>  src/log/logd/lgs_imm.cc                       | 19 +++++++-------
>  src/log/logd/lgs_imm_gcfg.cc                  |  8 +++---
>  src/log/tools/saf_logger.c                    | 10 ++++---
>  20 files changed, 102 insertions(+), 77 deletions(-)
> 
> diff --git a/src/log/apitest/imm_tstutil.c b/src/log/apitest/imm_tstutil.c
> index 723b9b522..f7849cd33 100644
> --- a/src/log/apitest/imm_tstutil.c
> +++ b/src/log/apitest/imm_tstutil.c
> @@ -22,7 +22,8 @@
>  #include "base/saf_error.h"
>  #include "base/osaf_extended_name.h"
> 
> -static SaVersionT immVersion = {'A', 2, 11};
> +const SaVersionT kImmVersion = {'A', 02, 11};
> +
> 
>  bool get_multivalue_type_string_from_imm(SaImmHandleT *omHandle,
>                                        SaConstStringT objectName,
> @@ -41,7 +42,7 @@ bool
> get_multivalue_type_string_from_imm(SaImmHandleT *omHandle,
>               /* Make sure this is a NULL pointer if no values are found
*/
>               *multivalue_array = NULL;
> 
> -             om_rc = immutil_saImmOmInitialize(omHandle, NULL,
> &immVersion);
> +             om_rc = immutil_saImmOmInitialize(omHandle, NULL,
> &kImmVersion);
>               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 256495726..897551bc4 100644
> --- a/src/log/apitest/logtest.c
> +++ b/src/log/apitest/logtest.c
> @@ -85,8 +85,6 @@ SaLogRecordT genLogRecord = {
>      .logHeader.genericHdr.logSvcUsrName = &logSvcUsrName,
>      .logBuffer = &genLogBuffer};
> 
> -SaVersionT logVersion = {'A', 0x02, 0x03};
> -SaVersionT immVersion = {'A', 2, 11};
>  SaAisErrorT rc;
>  SaLogHandleT logHandle;
>  SaLogStreamHandleT logStreamHandle;
> @@ -111,7 +109,7 @@ void init_logrootpath(void)
> 
>       saAisNameLend(config, &objectName);
>       /* NOTE: immutil init osaf_assert if error */
> -     (void)immutil_saImmOmInitialize(&omHandle, NULL, &immVersion);
> +     (void)immutil_saImmOmInitialize(&omHandle, NULL,
> &kImmVersion);
>       (void)immutil_saImmOmAccessorInitialize(omHandle,
> &accessorHandle);
> 
>       /* Get all attributes of the object */
> @@ -147,7 +145,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, &immVersion);
> +     (void)immutil_saImmOmInitialize(&omHandle, NULL,
> &kImmVersion);
>       (void)immutil_saImmOmAccessorInitialize(omHandle,
> &accessorHandle);
> 
>       /* Get all attributes of the object */
> @@ -296,7 +294,7 @@ int get_active_sc(void)
>       saAisNameLend(objname, &objectName1);
>       /* NOTE: immutil init osaf_assert if error
>        */
> -     (void)immutil_saImmOmInitialize(&omHandle, NULL, &immVersion);
> +     (void)immutil_saImmOmInitialize(&omHandle, NULL,
> &kImmVersion);
>       (void)immutil_saImmOmAccessorInitialize(omHandle,
> &accessorHandle);
> 
>       /* Get attributes of the object
> diff --git a/src/log/apitest/logtest.h b/src/log/apitest/logtest.h
> index 9b91871ed..68f9df608 100644
> --- a/src/log/apitest/logtest.h
> +++ b/src/log/apitest/logtest.h
> @@ -65,7 +65,6 @@ extern SaNameT notificationObject;
>  extern SaNameT configurationObject;
>  extern SaNameT saNameT_Object_256;
>  extern SaNameT saNameT_appstream_name_256;
> -extern SaVersionT logVersion;
>  extern SaAisErrorT rc;
>  extern SaLogHandleT logHandle;
>  extern SaLogStreamHandleT logStreamHandle;
> @@ -78,6 +77,9 @@ extern SaNameT logSvcUsrName;
>  extern SaLogRecordT genLogRecord;
>  extern char log_root_path[];
> 
> +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;
>  void printf_v(const char *format, ...) __attribute__((format(printf, 1,
2)));
> diff --git a/src/log/apitest/logtestfr.c b/src/log/apitest/logtestfr.c
> index df5721181..799cad069 100644
> --- a/src/log/apitest/logtestfr.c
> +++ b/src/log/apitest/logtestfr.c
> @@ -41,8 +41,6 @@
> 
> /*************************************************************
> ******************
>   * Global variables and defines
>   */
> -static SaVersionT logVersion = {'A', 0x02, 0x03};
> -static SaVersionT immVersion = {'A', 2, 11};
> 
>  static SaLogHandleT logHandle;
>  static SaLogStreamHandleT logStreamHandle;
> @@ -61,6 +59,9 @@ const char logfile_path_str[] = "logtestfr_path";
>  const SaUint32T logrec_max_size = 256;
>  const SaUint64T logfile_max_size = 256 * 10;
> 
> +const SaVersionT kLogVersion = {'A', 0x02, 0x03};
> +const SaVersionT kImmVersion = {'A', 02, 11};
> +
>  #define STREAM_NAME_STR "safLgStr=logtestfr_stream"
>  #define IMMLIST_CMD "immlist safLgStr=logtestfr_stream"
>  #define LOGTEST_MSG "logtestfr test message"
> @@ -94,7 +95,7 @@ static int get_active_sc(void)
> 
>       /* NOTE: immutil init osaf_assert if error
>        */
> -     (void)immutil_saImmOmInitialize(&omHandle, NULL, &immVersion);
> +     (void)immutil_saImmOmInitialize(&omHandle, NULL,
> &kImmVersion);
>       (void)immutil_saImmOmAccessorInitialize(omHandle,
> &accessorHandle);
> 
>       /* Get attributes of the object
> @@ -193,7 +194,7 @@ void get_logRootDirectory(char *path_str)
>       void *value;
> 
>       /* NOTE: immutil init osaf_assert if error */
> -     (void)immutil_saImmOmInitialize(&omHandle, NULL, &immVersion);
> +     (void)immutil_saImmOmInitialize(&omHandle, NULL,
> &kImmVersion);
>       (void)immutil_saImmOmAccessorInitialize(omHandle,
> &accessorHandle);
> 
>       /* Get all attributes of the object */
> @@ -237,6 +238,7 @@ static int init_log_open_stream(SaAisErrorT *ais_rc)
>  {
>       int rc = 0;
>       int trycnt = 0;
> +     SaVersionT log_version = kLogVersion;
> 
>       /* Prepare callback */
>       logCallbacks.saLogWriteLogCallback = log_write_callback;
> @@ -245,7 +247,7 @@ static int init_log_open_stream(SaAisErrorT *ais_rc)
>       do {
>               /* Try again loop. If other error end loop */
>               *ais_rc =
> -                 saLogInitialize(&logHandle, &logCallbacks, &logVersion);
> +                 saLogInitialize(&logHandle, &logCallbacks,
&log_version);
[Vu] Does `log_version` need to restore to original value in the while loop?
>               if (*ais_rc != SA_AIS_ERR_TRY_AGAIN) {
>                       break;
>               }
> diff --git a/src/log/apitest/logutil.c b/src/log/apitest/logutil.c
> index efc39204b..59d255515 100644
> --- a/src/log/apitest/logutil.c
> +++ b/src/log/apitest/logutil.c
> @@ -68,12 +68,14 @@ int systemCall(const char *command)
>   */
>  SaAisErrorT logInitialize(void)
>  {
> +     SaVersionT log_version = kLogVersion;
>       SaAisErrorT rc =
> -         saLogInitialize(&logHandle, &logCallbacks, &logVersion);
> +         saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       unsigned int nTries = 1;
>       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < logProfile.nTries) {
>               usleep(logProfile.retryInterval * 1000);
> -             rc = saLogInitialize(&logHandle, &logCallbacks,
&logVersion);
> +             log_version = kLogVersion;
> +             rc = saLogInitialize(&logHandle, &logCallbacks,
> &log_version);
>               nTries++;
>       }
> 
> diff --git a/src/log/apitest/tet_LogOiOps.c
b/src/log/apitest/tet_LogOiOps.c
> index 7068b09d1..ba6fde6cc 100644
> --- a/src/log/apitest/tet_LogOiOps.c
> +++ b/src/log/apitest/tet_LogOiOps.c
> @@ -1443,11 +1443,11 @@ void saLogOi_50()
> 
>  static int get_filter_cnt_attr(const SaNameT *objName)
>  {
> -     SaVersionT immVersion = {'A', 2, 11};
> +     SaVersionT imm_version = kImmVersion;
>       int filter_cnt = -1;
>       SaImmHandleT immOmHandle;
>       SaImmAccessorHandleT immAccHandle;
> -     saImmOmInitialize(&immOmHandle, NULL, &immVersion);
> +     saImmOmInitialize(&immOmHandle, NULL, &imm_version);
>       saImmOmAccessorInitialize(immOmHandle, &immAccHandle);
> 
>       SaImmAttrNameT fobj = {"logStreamDiscardedCounter"};
> diff --git a/src/log/apitest/tet_Log_recov.c
> b/src/log/apitest/tet_Log_recov.c
> index 8b406872a..2a88d39ed 100644
> --- a/src/log/apitest/tet_Log_recov.c
> +++ b/src/log/apitest/tet_Log_recov.c
> @@ -328,7 +328,7 @@ done:
> 
>  /**
>   * Initialize the log API
> - * For API version see GLOBAL logVersion
> + * For API version see GLOBAL kLogVersion
>   * No callback
>   *
>   * @param logHandle [out]
> @@ -339,6 +339,7 @@ static SaAisErrorT tst_LogInitialize(SaLogHandleT
> *log_handle, int trycnt_max)
>  {
>       int trycnt = 0;
>       SaAisErrorT ais_rc = SA_AIS_OK;
> +     SaVersionT log_version = kLogVersion;
> 
>       /* Prepare callback */
>       logCallbacks.saLogWriteLogCallback = log_write_callback;
> @@ -348,7 +349,7 @@ static SaAisErrorT tst_LogInitialize(SaLogHandleT
> *log_handle, int trycnt_max)
>               do {
>                       /* Try again loop. If other error end loop */
>                       ais_rc = saLogInitialize(log_handle, &logCallbacks,
> -                                              &logVersion);
> +                                              &log_version);
>                       if (ais_rc != SA_AIS_ERR_TRY_AGAIN) {
>                               break;
>                       }
> @@ -357,10 +358,11 @@ static SaAisErrorT tst_LogInitialize(SaLogHandleT
> *log_handle, int trycnt_max)
>                               /* Give up try again */
>                               break;
>                       }
> +                     log_version = kLogVersion;
>               } while (ais_rc != SA_AIS_OK);
>       } else {
>               ais_rc =
> -                 saLogInitialize(log_handle, &logCallbacks, &logVersion);
> +                 saLogInitialize(log_handle, &logCallbacks,
&log_version);
>       }
> 
>       return ais_rc;
> @@ -1768,6 +1770,7 @@ void saLogRecov_openRtStream(void)
>       SaConstStringT data = "safLgStr=rtCleanup";
>       saAisNameLend(data, &logStreamName);
>       SaLogFileCreateAttributesT_2 appLogFileCreateAttributes;
> +     SaVersionT log_version = kLogVersion;
> 
>       /* Cleanup the test directory */
>       sprintf(command, "rm -rf %s/logtest_rtStream_cleanup",
> log_root_path);
> @@ -1786,7 +1789,7 @@ void saLogRecov_openRtStream(void)
>       appLogFileCreateAttributes.maxFilesRotated = 4;
>       appLogFileCreateAttributes.logFileFmt = NULL;
> 
> -     rc = saLogInitialize(&logHandleRecv, &logCallbacks, &logVersion);
> +     rc = saLogInitialize(&logHandleRecv, &logCallbacks, &log_version);
>       if (rc != SA_AIS_OK) {
>               fprintf(stderr, "Failed at saLogInitialize: %d\n ",
(int)rc);
>               test_validate(rc, SA_AIS_OK);
> diff --git a/src/log/apitest/tet_log_longDN.c
> b/src/log/apitest/tet_log_longDN.c
> index c6474f2e3..43ba88330 100644
> --- a/src/log/apitest/tet_log_longDN.c
> +++ b/src/log/apitest/tet_log_longDN.c
> @@ -84,7 +84,6 @@ static SaNameT notifyingObjLd;
>  static SaNameT logStreamNameLd;
>  static SaLogBufferT logBufferLd;
>  static SaNtfClassIdT notificationClassIdLd = {1, 2, 3};
> -static SaVersionT logVersionLd = {'A', 2, 3};
>  static SaInvocationT invocationLd;
>  static SaAisErrorT errorLd;
> 
> @@ -447,13 +446,15 @@ static SaAisErrorT initLog(void)
>  {
>       SaAisErrorT error;
>       unsigned int wait_time = 0;
> +     SaVersionT log_version = kLogVersion;
> 
> -     error = saLogInitialize(&logHandleLd, &logCallbacksLd,
> &logVersionLd);
> +     error = saLogInitialize(&logHandleLd, &logCallbacksLd,
> &log_version);
>       while (error == SA_AIS_ERR_TRY_AGAIN && wait_time <
> TEN_SECONDS) {
>               usleep(HUNDRED_MS);
>               wait_time += HUNDRED_MS;
> +             log_version = kLogVersion;
>               error = saLogInitialize(&logHandleLd, &logCallbacksLd,
> -                                     &logVersionLd);
> +                                     &log_version);
>       }
> 
>       return error;
> diff --git a/src/log/apitest/tet_log_runtime_cfgobj.c
> b/src/log/apitest/tet_log_runtime_cfgobj.c
> index 0d7a682a3..047296cbb 100644
> --- a/src/log/apitest/tet_log_runtime_cfgobj.c
> +++ b/src/log/apitest/tet_log_runtime_cfgobj.c
> @@ -22,7 +22,6 @@
>  #include "base/saf_error.h"
>  #include "osaf/immutil/immutil.h"
> 
> -static SaVersionT immVersion = {'A', 2, 11};
> 
>  /**
>   * Log configuration config obj <=> runtime obj
> @@ -44,7 +43,7 @@ void log_rt_cf_obj_compare(void)
>       int tst_res = 0; /* Test result: 0 = PASS */
> 
>       /* NOTE: immutil will osaf_assert if error */
> -     (void)immutil_saImmOmInitialize(&omHandle, NULL, &immVersion);
> +     (void)immutil_saImmOmInitialize(&omHandle, NULL,
> &kImmVersion);
>       (void)immutil_saImmOmAccessorInitialize(omHandle,
> &accessorHandle);
> 
>       /* Count attributes in configuration object
> diff --git a/src/log/apitest/tet_multiple_thread.c
> b/src/log/apitest/tet_multiple_thread.c
> index b45b5739b..a41185e0f 100644
> --- a/src/log/apitest/tet_multiple_thread.c
> +++ b/src/log/apitest/tet_multiple_thread.c
> @@ -156,12 +156,14 @@ void *create_and_close_log_handle(void
> *thread_num)
>  {
>       SaAisErrorT rc_me = SA_AIS_OK;
>       unsigned int nTries = 1;
> +     SaVersionT log_version = kLogVersion;
> 
> -     rc_me = saLogInitialize(&logHandle_me, &logCallbacks,
> &logVersion);
> +     rc_me = saLogInitialize(&logHandle_me, &logCallbacks,
> &log_version);
>       while (rc_me == SA_AIS_ERR_TRY_AGAIN && nTries < 50) {
>               usleep(100 * 1000);
> +             log_version = kLogVersion;
>               rc_me =
> -                 saLogInitialize(&logHandle_me, &logCallbacks,
> &logVersion);
> +                 saLogInitialize(&logHandle_me, &logCallbacks,
> &log_version);
>               nTries++;
>       }
>       if (rc_me != SA_AIS_OK) {
> diff --git a/src/log/apitest/tet_saLogFilterSetCallbackT.c
> b/src/log/apitest/tet_saLogFilterSetCallbackT.c
> index 61ee89cd0..5c0408e35 100644
> --- a/src/log/apitest/tet_saLogFilterSetCallbackT.c
> +++ b/src/log/apitest/tet_saLogFilterSetCallbackT.c
> @@ -191,9 +191,10 @@ void saLogFilterSetCallbackT_03(void)
>       const unsigned int serverity_filter[2] = {7, 15};
>       SaUint32T v_saLogStreamSeverityFilter = 127;
>       SaLogStreamHandleT logStreamHandle[2];
> +     SaVersionT log_version = kLogVersion;
> 
>       logCallbacks.saLogFilterSetCallback = logFilterSetCallbackT;
> -     rc = saLogInitialize(&logHandle, &logCallbacks, &logVersion);
> +     rc = saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       if (rc != SA_AIS_OK) {
>               test_validate(rc, SA_AIS_OK);
>               return;
> @@ -305,10 +306,13 @@ void saLogFilterSetCallbackT_04(void)
>       SaLogStreamHandleT logStreamHandle[MAX_CLIENTS];
>       SaLogHandleT logHandle[MAX_CLIENTS];
>       SaSelectionObjectT selectionObject[MAX_CLIENTS];
> +     SaVersionT log_version;
> 
>       logCallbacks.saLogFilterSetCallback = logFilterSetCallbackT;
>       for (int i = 0; i < MAX_CLIENTS; i++) {
> -             rc = saLogInitialize(&logHandle[i], &logCallbacks,
> &logVersion);
> +             log_version = kLogVersion;
> +             rc =
> +                 saLogInitialize(&logHandle[i], &logCallbacks,
> &log_version);
>               if (rc != SA_AIS_OK) {
>                       test_validate(rc, SA_AIS_OK);
>                       return;
> diff --git a/src/log/apitest/tet_saLogInitialize.c
> b/src/log/apitest/tet_saLogInitialize.c
> index c37c078d0..3d31c8e21 100644
> --- a/src/log/apitest/tet_saLogInitialize.c
> +++ b/src/log/apitest/tet_saLogInitialize.c
> @@ -20,20 +20,23 @@
> 
>  void saLogInitialize_01(void)
>  {
> -     rc = saLogInitialize(&logHandle, &logCallbacks, &logVersion);
> +     SaVersionT log_version = kLogVersion;
> +     rc = saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       logFinalize();
>       test_validate(rc, SA_AIS_OK);
>  }
> 
>  void saLogInitialize_02(void)
>  {
> -     rc = saLogInitialize(NULL, &logCallbacks, &logVersion);
> +     SaVersionT log_version = kLogVersion;
> +     rc = saLogInitialize(NULL, &logCallbacks, &log_version);
>       test_validate(rc, SA_AIS_ERR_INVALID_PARAM);
>  }
> 
>  void saLogInitialize_03(void)
>  {
> -     rc = saLogInitialize(&logHandle, NULL, &logVersion);
> +     SaVersionT log_version = kLogVersion;
> +     rc = saLogInitialize(&logHandle, NULL, &log_version);
>       logFinalize();
>       test_validate(rc, SA_AIS_OK);
>  }
> @@ -46,49 +49,50 @@ void saLogInitialize_04(void)
> 
>  void saLogInitialize_05(void)
>  {
> -     rc = saLogInitialize(0, &logCallbacks, &logVersion);
> +     SaVersionT log_version = kLogVersion;
> +     rc = saLogInitialize(0, &logCallbacks, &log_version);
>       test_validate(rc, SA_AIS_ERR_INVALID_PARAM);
>  }
> 
>  void saLogInitialize_06(void)
>  {
> -     SaVersionT version = {0, 0, 0};
> +     SaVersionT log_version = {0, 0, 0};
> 
> -     rc = saLogInitialize(&logHandle, &logCallbacks, &version);
> +     rc = saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       test_validate(rc, SA_AIS_ERR_VERSION);
>  }
> 
>  void saLogInitialize_07(void)
>  {
> -     SaVersionT version = {'B', 1, 1};
> +     SaVersionT log_version = {'B', 1, 1};
> 
> -     rc = saLogInitialize(&logHandle, &logCallbacks, &version);
> +     rc = saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       test_validate(rc, SA_AIS_ERR_VERSION);
>  }
> 
>  void saLogInitialize_08(void)
>  {
> -     SaVersionT version = {'A', 2, 1};
> +     SaVersionT log_version = {'A', 2, 1};
> 
> -     rc = saLogInitialize(&logHandle, &logCallbacks, &version);
> +     rc = saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       logFinalize();
>       test_validate(rc, SA_AIS_OK);
>  }
> 
>  void saLogInitialize_09(void)
>  {
> -     SaVersionT version = {'A', 3, 0};
> +     SaVersionT log_version = {'A', 3, 0};
> 
> -     rc = saLogInitialize(&logHandle, &logCallbacks, &version);
> +     rc = saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       test_validate(rc, SA_AIS_ERR_VERSION);
>  }
> 
>  void saLogInitialize_10(void)
>  {
> -     SaVersionT version = logVersion;
> +     SaVersionT log_version = kLogVersion;
> 
> -     version.minorVersion = logVersion.minorVersion + 1;
> -     rc = saLogInitialize(&logHandle, &logCallbacks, &version);
> +     log_version.minorVersion += 1;
> +     rc = saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       logFinalize();
> 
>       test_validate(rc, SA_AIS_ERR_VERSION);
> @@ -96,9 +100,9 @@ void saLogInitialize_10(void)
> 
>  void saLogInitialize_11(void)
>  {
> -     SaVersionT version = {'A', 2};
> +     SaVersionT log_version = {'A', 2};
> 
> -     rc = saLogInitialize(&logHandle, &logCallbacks, &version);
> +     rc = saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       logFinalize();
> 
>       test_validate(rc, SA_AIS_OK);
> diff --git a/src/log/apitest/tet_saLogStreamOpen_2.c
> b/src/log/apitest/tet_saLogStreamOpen_2.c
> index 42e0e70c9..779cbd5cf 100644
> --- a/src/log/apitest/tet_saLogStreamOpen_2.c
> +++ b/src/log/apitest/tet_saLogStreamOpen_2.c
> @@ -859,11 +859,13 @@ void *saLogInitialize_1(void *arg)
>       SaLogStreamHandleT logStreamHandle1;
>       SaLogHandleT logHandle1;
>       int time_wait = 10*1000; // Wait for timeout is 10 seconds
> +     SaVersionT log_version;
> 
>       struct timespec timeout_time;
>       osaf_set_millis_timeout(time_wait, &timeout_time);
>       while (!osaf_is_timeout(&timeout_time)) {
> -             *rt = saLogInitialize(&logHandle1, &logCallbacks,
> &logVersion);
> +             log_version = kLogVersion;
> +             *rt = saLogInitialize(&logHandle1, &logCallbacks,
> &log_version);
>               if (*rt != SA_AIS_ERR_TRY_AGAIN)
>                       break;
>               osaf_nanosleep(&kHundredMilliseconds);
> @@ -995,9 +997,10 @@ void saLogStreamOpen_BadOp(void)
>       SaAisErrorT rc;
>       char command[1000];
>       int loop;
> +     SaVersionT log_version = kLogVersion;
> 
>       cond_check();
> -     rc = saLogInitialize(&logHandle, &logCallbacks, &logVersion);
> +     rc = saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       if (rc != SA_AIS_OK) {
>               fprintf(stderr, "Failed at saLogInitialize: %d \n",
(int)rc);
>               test_validate(rc, SA_AIS_OK);
> @@ -1048,9 +1051,10 @@ void saLogStreamClose_BadOp(void)
>       SaAisErrorT rc;
>       char command[1000];
>       int loop;
> +     SaVersionT log_version = kLogVersion;
> 
>       cond_check();
> -     rc = saLogInitialize(&logHandle, &logCallbacks, &logVersion);
> +     rc = saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       if (rc != SA_AIS_OK) {
>               fprintf(stderr, "Failed at saLogInitialize: %d \n",
(int)rc);
>               test_validate(rc, SA_AIS_OK);
> diff --git a/src/log/logd/lgs.h b/src/log/logd/lgs.h
> index 8e1e4efa3..18e6d9281 100644
> --- a/src/log/logd/lgs.h
> +++ b/src/log/logd/lgs.h
> @@ -80,6 +80,10 @@
>    2 /* Store logs on local file system on \
>         each node */
> 
> +const SaVersionT kAmfVersion = {'B', 0x01, 0x01};
> +const SaVersionT kClmVersion = {'B', 0x04, 0x01};
> +const SaVersionT kImmVersion = {'A', 0x02, 0x0B};
> +
>  /*
> ==============================================================
> ==========
>   *   DATA DECLARATIONS
>   *
> ==============================================================
> ==========
> diff --git a/src/log/logd/lgs_amf.cc b/src/log/logd/lgs_amf.cc
> index d62be99a2..6fa044ff2 100644
> --- a/src/log/logd/lgs_amf.cc
> +++ b/src/log/logd/lgs_amf.cc
> @@ -438,7 +438,7 @@ static SaAisErrorT amf_healthcheck_start(lgs_cb_t
> *lgs_cb) {
> 
> **************************************************************
> ************/
>  SaAisErrorT lgs_amf_init(lgs_cb_t *cb) {
>    SaAmfCallbacksT amfCallbacks;
> -  SaVersionT amf_version;
> +  SaVersionT amf_version = kAmfVersion;
>    SaAisErrorT error;
> 
>    TRACE_ENTER();
> @@ -457,10 +457,6 @@ SaAisErrorT lgs_amf_init(lgs_cb_t *cb) {
>    amfCallbacks.saAmfComponentTerminateCallback =
> amf_comp_terminate_callback;
>    amfCallbacks.saAmfCSIRemoveCallback = amf_csi_rmv_callback;
> 
> -  amf_version.releaseCode = 'B';
> -  amf_version.majorVersion = 0x01;
> -  amf_version.minorVersion = 0x01;
> -
>    /* Initialize the AMF library */
>    error = saAmfInitialize(&cb->amf_hdl, &amfCallbacks, &amf_version);
>    if (error != SA_AIS_OK) {
> diff --git a/src/log/logd/lgs_clm.cc b/src/log/logd/lgs_clm.cc
> index 87aba0e47..51e07789a 100644
> --- a/src/log/logd/lgs_clm.cc
> +++ b/src/log/logd/lgs_clm.cc
> @@ -330,13 +330,13 @@ static const SaClmCallbacksT_4 clm_callbacks =
> {0, lgs_clm_track_cbk};
>   * @return  SaAisErrorT
>   */
>  void *lgs_clm_init_thread(void *cb) {
> -  static SaVersionT clmVersion = {'B', 0x04, 0x01};
>    lgs_cb_t *_lgs_cb = reinterpret_cast<lgs_cb_t *>(cb);
>    SaAisErrorT rc;
> 
>    TRACE_ENTER();
> 
> -  rc = saClmInitialize_4(&_lgs_cb->clm_hdl, &clm_callbacks, &clmVersion);
> +  SaVersionT clm_version = kClmVersion;
> +  rc = saClmInitialize_4(&_lgs_cb->clm_hdl, &clm_callbacks,
&clm_version);
>    while ((rc == SA_AIS_ERR_TRY_AGAIN) || (rc == SA_AIS_ERR_TIMEOUT) ||
>           (rc == SA_AIS_ERR_UNAVAILABLE)) {
>      if (_lgs_cb->clm_hdl != 0) {
> @@ -345,7 +345,8 @@ void *lgs_clm_init_thread(void *cb) {
>      }
> 
>      base::Sleep(base::kOneHundredMilliseconds);
> -    rc = saClmInitialize_4(&_lgs_cb->clm_hdl, &clm_callbacks,
&clmVersion);
> +    clm_version = kClmVersion;
> +    rc = saClmInitialize_4(&_lgs_cb->clm_hdl, &clm_callbacks,
> &clm_version);
>    }
>    if (rc != SA_AIS_OK) {
>      LOG_ER("saClmInitialize failed with error: %d", rc);
> diff --git a/src/log/logd/lgs_config.cc b/src/log/logd/lgs_config.cc
> index aec7204f6..89600adfa 100644
> --- a/src/log/logd/lgs_config.cc
> +++ b/src/log/logd/lgs_config.cc
> @@ -42,7 +42,6 @@
>  #include "log/logd/lgs.h"
>  #include "log/logd/lgs_common.h"
> 
> -static SaVersionT immVersion = {'A', 2, 11};
> 
>  /* Mutex for making read and write of configuration data thread safe */
>  pthread_mutex_t lgs_config_data_mutex = PTHREAD_MUTEX_INITIALIZER;
> @@ -983,7 +982,7 @@ static void read_logsv_config_obj_2() {
> 
>    /* NOTE: immutil init will osaf_assert if error */
>    SaAisErrorT om_rc =
> -      immutil_saImmOmInitialize(&omHandle, nullptr, &immVersion);
> +      immutil_saImmOmInitialize(&omHandle, nullptr, &kImmVersion);
>    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 605024fb7..a4d8f0fce 100644
> --- a/src/log/logd/lgs_imm.cc
> +++ b/src/log/logd/lgs_imm.cc
> @@ -75,8 +75,6 @@ static const char *log_file_format[] = {
>      DEFAULT_ALM_NOT_FORMAT_EXP, DEFAULT_ALM_NOT_FORMAT_EXP,
>      DEFAULT_APP_SYS_FORMAT_EXP, DEFAULT_APP_SYS_FORMAT_EXP};
> 
> -static SaVersionT immVersion = {'A', 2, 11};
> -
>  static const SaImmOiImplementerNameT implementerName =
>      const_cast<SaImmOiImplementerNameT>("safLogService");
>  static const SaImmClassNameT logConfig_str =
> @@ -977,7 +975,7 @@ static lgs_stream_defval_t
> *get_SaLogStreamConfig_default() {
>       * We are only interested in saLogStreamMaxLogFileSize and
>       * saLogStreamFixedLogRecordSize
>       */
> -    rc = immutil_saImmOmInitialize(&om_handle, NULL, &immVersion);
> +    rc = immutil_saImmOmInitialize(&om_handle, NULL, &kImmVersion);
>      if (rc != SA_AIS_OK) {
>        TRACE("immutil_saImmOmInitialize fail rc=%d", rc);
>      }
> @@ -2884,7 +2882,6 @@ SaAisErrorT lgs_imm_init_configStreams(lgs_cb_t
> *cb) {
>    int int_rc = 0;
>    log_stream_t *stream;
>    SaImmHandleT omHandle;
> -  SaVersionT immVersion = {'A', 2, 1};
>    SaImmSearchHandleT immSearchHandle;
>    SaImmSearchParametersT_2 objectSearch;
>    SaImmAttrValuesT_2 **attributes;
> @@ -2897,7 +2894,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, &immVersion);
> +  om_rc = immutil_saImmOmInitialize(&omHandle, NULL, &kImmVersion);
>    if (om_rc != SA_AIS_OK) {
>      LOG_ER("immutil_saImmOmInitialize failed %s", saf_error(om_rc));
>      osaf_abort(0);
> @@ -3042,12 +3039,14 @@ void lgs_imm_init_OI_handle(SaImmOiHandleT
> *immOiHandle,
>    TRACE_ENTER();
> 
>    /* Initialize IMM OI service */
> -  rc = saImmOiInitialize_2(immOiHandle, &callbacks, &immVersion);
> +  SaVersionT imm_version = kImmVersion;
> +  rc = saImmOiInitialize_2(immOiHandle, &callbacks, &imm_version);
>    while ((rc == SA_AIS_ERR_TRY_AGAIN) &&
>           (msecs_waited < max_waiting_time_60s)) {
>      usleep(sleep_delay_ms * 1000);
>      msecs_waited += sleep_delay_ms;
> -    rc = saImmOiInitialize_2(immOiHandle, &callbacks, &immVersion);
> +    imm_version = kImmVersion;
> +    rc = saImmOiInitialize_2(immOiHandle, &callbacks, &imm_version);
>    }
>    if (rc != SA_AIS_OK) {
>      lgs_exit("saImmOiInitialize_2 failed", SA_AMF_COMPONENT_RESTART);
> @@ -3294,7 +3293,7 @@ void lgs_search_stream_objects() {
> 
>    /* Intialize Om API
>     */
> -  ais_rc = immutil_saImmOmInitialize(&immOmHandle, NULL,
> &immVersion);
> +  ais_rc = immutil_saImmOmInitialize(&immOmHandle, NULL,
> &kImmVersion);
>    if (ais_rc != SA_AIS_OK) {
>      LOG_WA("%s saImmOmInitialize FAIL %d", __FUNCTION__, ais_rc);
>      goto done;
> @@ -3482,7 +3481,7 @@ int lgs_get_streamobj_attr(SaImmAttrValuesT_2
> ***attrib_out,
> 
>    /* Initialize Om API
>     */
> -  ais_rc = immutil_saImmOmInitialize(immOmHandle, NULL, &immVersion);
> +  ais_rc = immutil_saImmOmInitialize(immOmHandle, NULL,
> &kImmVersion);
>    if (ais_rc != SA_AIS_OK) {
>      LOG_WA("\t%s saImmOmInitialize FAIL %d", __FUNCTION__, ais_rc);
>      rc = -1;
> @@ -3578,7 +3577,7 @@ SaUint32T
> *lgs_get_scAbsenceAllowed_attr(SaUint32T *attr_val) {
> 
>    /* Initialize Om API
>     */
> -  ais_rc = immutil_saImmOmInitialize(&immOmHandle, NULL,
> &immVersion);
> +  ais_rc = immutil_saImmOmInitialize(&immOmHandle, NULL,
> &kImmVersion);
>    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 4c6b91f28..f7d59d17e 100644
> --- a/src/log/logd/lgs_imm_gcfg.cc
> +++ b/src/log/logd/lgs_imm_gcfg.cc
> @@ -27,6 +27,7 @@
>  #include "base/logtrace.h"
>  #include <saImmOi.h>
>  #include <saImmOm.h>
> +#include "log/logd/lgs.h"
>  #include "osaf/immutil/immutil.h"
>  #include "base/osaf_time.h"
>  #include "base/osaf_poll.h"
> @@ -74,8 +75,6 @@ static const SaImmClassNameT gcfg_class =
>      const_cast<SaImmClassNameT>("OpensafConfig");
>  static const SaImmOiImplementerNameT applier_name =
>      const_cast<SaImmOiImplementerNameT>("@safLogService_appl");
> -/* IMM handling */
> -static SaVersionT immVersion = {'A', 2, 11};
> 
>  /* Network name handling */
>  static char *network_name = NULL; /* Save pointer to current name */
> @@ -573,6 +572,7 @@ static int read_network_name() {
>    SaImmAttrValuesT_2 **attributes;
>    SaImmAttrValuesT_2 *attribute;
>    void *value = NULL;
> +
>    /* Setup search initialize parameters */
>    SaImmSearchHandleT searchHandle;
>    SaImmSearchParametersT_2 searchParam;
> @@ -589,7 +589,7 @@ static int read_network_name() {
>    /*
>     * Initialize an IMM object manager
>     */
> -  ais_rc = immutil_saImmOmInitialize(&om_handle, NULL, &immVersion);
> +  ais_rc = immutil_saImmOmInitialize(&om_handle, NULL, &kImmVersion);
>    if (ais_rc != SA_AIS_OK) {
>      TRACE("immutil_saImmOmInitialize FAIL %s", saf_error(ais_rc));
>      rc = -1;
> @@ -705,7 +705,7 @@ 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,
> &immVersion);
> +  ais_rc = immutil_saImmOiInitialize_2(imm_appl_hdl, &callbacks,
> &kImmVersion);
>    if (ais_rc != SA_AIS_OK) {
>      LOG_WA("immutil_saImmOiInitialize_2 Failed %s", saf_error(ais_rc));
>      rc = -1;
> diff --git a/src/log/tools/saf_logger.c b/src/log/tools/saf_logger.c
> index 1b898d06e..05b1fcf56 100644
> --- a/src/log/tools/saf_logger.c
> +++ b/src/log/tools/saf_logger.c
> @@ -59,12 +59,13 @@
>  static void logWriteLogCallbackT(SaInvocationT invocation, SaAisErrorT
> error);
> 
>  static SaLogCallbacksT logCallbacks = {0, 0, logWriteLogCallbackT};
> -static SaVersionT logVersion = {'A', 2, 3};
> 
>  static char *progname = "saflogger";
>  static SaInvocationT cb_invocation;
>  static SaAisErrorT cb_error;
> 
> +const SaVersionT kLogVersion = {'A', 2, 3};
> +
>  static SaTimeT get_current_SaTime(void)
>  {
>       struct timeval tv;
> @@ -461,11 +462,14 @@ int main(int argc, char *argv[])
>       }
> 
>       wait_time = 0;
> -     error = saLogInitialize(&logHandle, &logCallbacks, &logVersion);
> +     SaVersionT log_version = kLogVersion;
> +     error = saLogInitialize(&logHandle, &logCallbacks, &log_version);
>       while (error == SA_AIS_ERR_TRY_AGAIN && wait_time <
> TEN_SECONDS) {
>               usleep(HUNDRED_MS);
>               wait_time += HUNDRED_MS;
> -             error = saLogInitialize(&logHandle, &logCallbacks,
> &logVersion);
> +             log_version = kLogVersion;
> +             error =
> +                   saLogInitialize(&logHandle, &logCallbacks,
&log_version);
>       }
> 
>       if (error != SA_AIS_OK) {
> --
> 2.13.0



------------------------------------------------------------------------------
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

Reply via email to