Hi Hung,

Reviewed the patch.
Ack from me.

Thanks,
Zoran

-----Original Message-----
From: Hung Nguyen [mailto:hung.d.ngu...@dektech.com.au] 
Sent: Friday, June 24, 2016 1:37 PM
To: Zoran Milinkovic <zoran.milinko...@ericsson.com>; 
reddy.neelaka...@oracle.com
Cc: opensaf-devel@lists.sourceforge.net
Subject: [PATCH 1 of 1] immtool: Add missing wrappers for IMM APIs [#1891]

 osaf/libs/common/immsv/include/immutil.h |  125 +++++++++-
 osaf/tools/safimm/src/immutil.c          |  364 +++++++++++++++++++++++++++++++
 samples/immsv/immutils/immutil.c         |  364 +++++++++++++++++++++++++++++++
 samples/immsv/immutils/immutil.h         |  125 +++++++++-
 4 files changed, 942 insertions(+), 36 deletions(-)


Add wrappers for:

saImmOiInitialize_o3
saImmOiAugmentCcbInitialize
saImmOiObjectImplementerSet
saImmOiObjectImplementerSet_o3
saImmOiObjectImplementerRelease
saImmOiObjectImplementerRelease_o3
saImmOiRtObjectCreate_o3
saImmOiRtObjectDelete_o3
saImmOiRtObjectUpdate_o3

saImmOmInitialize_o2
saImmOmSelectionObjectGet
saImmOmAccessorGet_o3
saImmOmSearchInitialize_o3
saImmOmSearchNext_o3
saImmOmAdminOwnerClear_o3
saImmOmAdminOwnerRelease_o3
saImmOmAdminOwnerSet_o3
saImmOmAdminOperationInvoke_o3
saImmOmAdminOperationInvokeAsync_2
saImmOmAdminOperationInvokeAsync_o3
saImmOmCcbObjectCreate_o3
saImmOmCcbObjectDelete_o3
saImmOmCcbObjectModify_o3

diff --git a/osaf/libs/common/immsv/include/immutil.h 
b/osaf/libs/common/immsv/include/immutil.h
--- a/osaf/libs/common/immsv/include/immutil.h
+++ b/osaf/libs/common/immsv/include/immutil.h
@@ -424,6 +424,10 @@ EXTERN_C SaAisErrorT immutil_saImmOiInit
     SaImmOiHandleT *immOiHandle, const SaImmOiCallbacksT_2 *immOiCallbacks,
     const SaVersionT *version);
 
+EXTERN_C SaAisErrorT immutil_saImmOiInitialize_o3(
+    SaImmOiHandleT * immOiHandle, const SaImmOiCallbacksT_o3 *immOiCallbacks,
+    const SaVersionT * version);
+
 EXTERN_C SaAisErrorT immutil_saImmOiSelectionObjectGet(
     SaImmOiHandleT immOiHandle, SaSelectionObjectT *selectionObject);
 
@@ -433,6 +437,22 @@ EXTERN_C SaAisErrorT immutil_saImmOiClas
 EXTERN_C SaAisErrorT immutil_saImmOiClassImplementerRelease(
     SaImmOiHandleT immOiHandle, const char *className);
 
+EXTERN_C SaAisErrorT immutil_saImmOiObjectImplementerSet(
+    SaImmOiHandleT immOiHandle, const SaNameT *objectName,
+    SaImmScopeT scope);
+
+EXTERN_C SaAisErrorT immutil_saImmOiObjectImplementerSet_o3(
+    SaImmOiHandleT immOiHandle, const char* objectName,
+    SaImmScopeT scope);
+
+EXTERN_C SaAisErrorT immutil_saImmOiObjectImplementerRelease(
+    SaImmOiHandleT immOiHandle, const SaNameT *objectName,
+    SaImmScopeT scope);
+
+EXTERN_C SaAisErrorT immutil_saImmOiObjectImplementerRelease_o3(
+    SaImmOiHandleT immOiHandle, const char* objectName,
+    SaImmScopeT scope);
+
 EXTERN_C SaAisErrorT immutil_saImmOiImplementerSet(
     SaImmOiHandleT immOiHandle, const SaImmOiImplementerNameT implementerName);
 
@@ -447,12 +467,19 @@ EXTERN_C SaAisErrorT immutil_saImmOiRtOb
     SaImmOiHandleT immOiHandle, const SaImmClassNameT className,
     const char *parentName, const SaImmAttrValuesT_2 **attrValues);
 
+EXTERN_C SaAisErrorT immutil_saImmOiRtObjectCreate_o3(
+    SaImmOiHandleT immOiHandle, const SaImmClassNameT className,
+    const char* objectName, const SaImmAttrValuesT_2 **attrValues);
+
 EXTERN_C SaAisErrorT immutil_saImmOiRtObjectDelete(SaImmOiHandleT immOiHandle,
                                                    const SaNameT *objectName);
 
 EXTERN_C SaAisErrorT immutil_saImmOiRtObjectDelete_o2(
     SaImmOiHandleT immOiHandle, const char *objectName);
 
+EXTERN_C SaAisErrorT immutil_saImmOiRtObjectDelete_o3(
+    SaImmOiHandleT immOiHandle, const char* objectName);
+
 EXTERN_C SaAisErrorT immutil_saImmOiRtObjectUpdate_2(
     SaImmOiHandleT immOiHandle, const SaNameT *objectName,
     const SaImmAttrModificationT_2 **attrMods);
@@ -461,6 +488,10 @@ EXTERN_C SaAisErrorT immutil_saImmOiRtOb
     SaImmOiHandleT immOiHandle, const char *objectName,
     const SaImmAttrModificationT_2 **attrMods);
 
+EXTERN_C SaAisErrorT immutil_saImmOiRtObjectUpdate_o3(
+    SaImmOiHandleT immOiHandle, const char* objectName,
+    const SaImmAttrModificationT_2 **attrMods);
+
 EXTERN_C SaAisErrorT immutil_saImmOiAdminOperationResult(
     SaImmOiHandleT immOiHandle, SaInvocationT invocation, SaAisErrorT result);
 
@@ -468,12 +499,23 @@ EXTERN_C SaAisErrorT immutil_saImmOiAdmi
     SaImmOiHandleT immOiHandle, SaInvocationT invocation, SaAisErrorT result,
     const SaImmAdminOperationParamsT_2 **returnParams);
 
+EXTERN_C SaAisErrorT immutil_saImmOiAugmentCcbInitialize(
+    SaImmOiHandleT immOiHandle, SaImmOiCcbIdT ccbId64,
+    SaImmCcbHandleT *ccbHandle, SaImmAdminOwnerHandleT *ownerHandle);
+
 EXTERN_C SaAisErrorT immutil_saImmOmInitialize(
     SaImmHandleT *immHandle, const SaImmCallbacksT *immCallbacks,
     const SaVersionT *version);
 
+EXTERN_C SaAisErrorT immutil_saImmOmInitialize_o2(
+    SaImmHandleT *immHandle, const SaImmCallbacksT_o2 *immCallbacks,
+    SaVersionT *version);
+
 EXTERN_C SaAisErrorT immutil_saImmOmFinalize(SaImmHandleT immHandle);
 
+EXTERN_C SaAisErrorT immutil_saImmOmSelectionObjectGet(
+    SaImmHandleT immHandle, SaSelectionObjectT *selectionObject);
+
 EXTERN_C SaAisErrorT immutil_saImmOmAccessorInitialize(
     SaImmHandleT immHandle, SaImmAccessorHandleT *accessorHandle);
 
@@ -485,6 +527,10 @@ EXTERN_C SaAisErrorT immutil_saImmOmAcce
     SaImmAccessorHandleT accessorHandle, const char *objectName,
     const SaImmAttrNameT *attributeNames, SaImmAttrValuesT_2 ***attributes);
 
+EXTERN_C SaAisErrorT immutil_saImmOmAccessorGet_o3(
+    SaImmAccessorHandleT accessorHandle, const char* objectName,
+    const SaImmAttrNameT *attributeNames, SaImmAttrValuesT_2 ***attributes);
+
 EXTERN_C SaAisErrorT immutil_saImmOmAccessorGetConfigAttrs(
     SaImmAccessorHandleT accessorHandle, const SaNameT *objectName,
     SaImmAttrValuesT_2 ***attributes);
@@ -501,7 +547,7 @@ EXTERN_C SaAisErrorT immutil_saImmOmClas
     SaImmCcbHandleT immCcbHandle, const SaImmClassNameT className);
 
 /**
- * Wrapper for saImmOmSearchInitialize_2/o2 The SA_AIS_ERR_NOT_EXIST error code
+ * Wrapper for saImmOmSearchInitialize_2/_o2/_o3 The SA_AIS_ERR_NOT_EXIST 
error code
  * is not considered an error and is always returned even if "errorsAreFatal" 
is
  * set.
  */
@@ -521,6 +567,12 @@ immutil_saImmOmSearchInitialize_o2(SaImm
                                    const SaImmAttrNameT *attributeNames,
                                    SaImmSearchHandleT *searchHandle);
 
+EXTERN_C SaAisErrorT
+immutil_saImmOmSearchInitialize_o3(SaImmHandleT immHandle, const char* 
rootName,
+                                   SaImmScopeT scope, SaImmSearchOptionsT 
searchOptions,
+                                   const SaImmSearchParametersT_2 
*searchParam, const SaImmAttrNameT *attributeNames,
+                                   SaImmSearchHandleT *searchHandle);
+
 /**
  * Wrapper for saImmOmSearchFinalize
  */
@@ -528,7 +580,7 @@ EXTERN_C SaAisErrorT
 immutil_saImmOmSearchFinalize(SaImmSearchHandleT searchHandle);
 
 /**
- * Wrapper for saImmOmSearchNext_2/o2 The SA_AIS_ERR_NOT_EXIST error code is 
not
+ * Wrapper for saImmOmSearchNext_2/o2/_o3 The SA_AIS_ERR_NOT_EXIST error code 
is not
  * considered an error and is always returned even if "errorsAreFatal" is set.
  */
 EXTERN_C SaAisErrorT
@@ -540,8 +592,12 @@ EXTERN_C SaAisErrorT
 immutil_saImmOmSearchNext_o2(SaImmSearchHandleT searchHandle, char 
**objectName,
                              SaImmAttrValuesT_2 ***attributes);
 
+EXTERN_C SaAisErrorT
+immutil_saImmOmSearchNext_o3(SaImmSearchHandleT searchHandle, char** 
objectName,
+                             SaImmAttrValuesT_2 ***attributes);
+
 /**
- * Wrapper for saImmOmAdminOwnerClear/_o2
+ * Wrapper for saImmOmAdminOwnerClear/_o2/_o3
  */
 EXTERN_C SaAisErrorT
 immutil_saImmOmAdminOwnerClear(SaImmHandleT immHandle,
@@ -551,6 +607,10 @@ EXTERN_C SaAisErrorT
 immutil_saImmOmAdminOwnerClear_o2(SaImmHandleT immHandle,
                                   const char **objectNames, SaImmScopeT scope);
 
+EXTERN_C SaAisErrorT
+immutil_saImmOmAdminOwnerClear_o3(SaImmHandleT immHandle,
+                                  const char** objectNames, SaImmScopeT scope);
+
 /**
  * Wrapper for saImmOiFinalize
  */
@@ -597,7 +657,7 @@ EXTERN_C SaAisErrorT immutil_saImmOmCcbA
 EXTERN_C SaAisErrorT immutil_saImmOmCcbValidate(SaImmCcbHandleT immCcbHandle);
 
 /**
- * Wrapper for saImmOmAdminOwnerSet/_o2
+ * Wrapper for saImmOmAdminOwnerSet/_o2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerSet(
     SaImmAdminOwnerHandleT ownerHandle, const SaNameT** name,
@@ -606,8 +666,12 @@ EXTERN_C SaAisErrorT immutil_saImmOmAdmi
 EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerSet_o2(
     SaImmAdminOwnerHandleT ownerHandle, const char ** name, SaImmScopeT scope);
 
+EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerSet_o3(
+    SaImmAdminOwnerHandleT adminOwnerHandle, const char** objectNames,
+    SaImmScopeT scope);
+
 /**
- * Wrapper for saImmOmAdminOwnerRelease/_o2
+ * Wrapper for saImmOmAdminOwnerRelease/_o2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerRelease(
     SaImmAdminOwnerHandleT ownerHandle, const SaNameT** name,
@@ -616,6 +680,10 @@ EXTERN_C SaAisErrorT immutil_saImmOmAdmi
 EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerRelease_o2(
     SaImmAdminOwnerHandleT ownerHandle, const char ** name, SaImmScopeT scope);
 
+EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerRelease_o3(
+    SaImmAdminOwnerHandleT adminOwnerHandle, const char** objectNames,
+    SaImmScopeT scope);
+
 /**
  * Wrapper for saImmOmAdminOperationInvoke_o2
  */
@@ -637,7 +705,7 @@ EXTERN_C SaAisErrorT immutil_saImmOmAdmi
     SaImmAdminOperationParamsT_2 ***returnParams);
 
 /**
- * Wrapper for saImmOmAdminOperationInvoke_2
+ * Wrapper for saImmOmAdminOperationInvoke_2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmAdminOperationInvoke_2(
     SaImmAdminOwnerHandleT ownerHandle, const SaNameT *objectName,
@@ -645,46 +713,67 @@ EXTERN_C SaAisErrorT immutil_saImmOmAdmi
     const SaImmAdminOperationParamsT_2 **params,
     SaAisErrorT *operationReturnValue, SaTimeT timeout);
 
+EXTERN_C SaAisErrorT immutil_saImmOmAdminOperationInvoke_o3(
+    SaImmAdminOwnerHandleT ownerHandle, const char* objectName,
+    SaImmContinuationIdT continuationId, SaImmAdminOperationIdT operationId,
+    const SaImmAdminOperationParamsT_2 **params, SaAisErrorT 
*operationReturnValue,
+    SaTimeT timeout, SaImmAdminOperationParamsT_2 ***returnParams);
+
 /**
- * Wrapper for saImmOmCcbObjectCreate_2
+ * Wrapper for saImmOmAdminOperationInvokeAsync_2/_o3
+ */
+EXTERN_C SaAisErrorT immutil_saImmOmAdminOperationInvokeAsync_2(
+    SaImmAdminOwnerHandleT ownerHandle, SaInvocationT userInvocation,
+    const SaNameT *objectName, SaImmContinuationIdT continuationId,
+    SaImmAdminOperationIdT operationId, const SaImmAdminOperationParamsT_2 
**params);
+
+EXTERN_C SaAisErrorT immutil_saImmOmAdminOperationInvokeAsync_o3(
+    SaImmAdminOwnerHandleT ownerHandle, SaInvocationT userInvocation,
+    const char* objectName, SaImmContinuationIdT continuationId,
+    SaImmAdminOperationIdT operationId, const SaImmAdminOperationParamsT_2 
**params);
+
+/**
+ * Wrapper for saImmOmCcbObjectCreate_2/_o2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectCreate_2(
     SaImmCcbHandleT immCcbHandle, const SaImmClassNameT className,
     const SaNameT *parent, const SaImmAttrValuesT_2** attrValues);
 
-/**
- * Wrapper for saImmOmCcbObjectCreate_o2
- */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectCreate_o2(
     SaImmCcbHandleT immCcbHandle, const SaImmClassNameT className,
     const char *parent, const SaImmAttrValuesT_2** attrValues);
 
+EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectCreate_o3(
+    SaImmCcbHandleT ccbHandle, const char* className,
+    const char* const objectName, const SaImmAttrValuesT_2 **attrValues);
+
 /**
- * Wrapper for saImmOmCcbObjectModify_2
+ * Wrapper for saImmOmCcbObjectModify_2/_o2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectModify_2(
     SaImmCcbHandleT immCcbHandle, const SaNameT *objectName,
     const SaImmAttrModificationT_2** attrMods);
 
-/**
- * Wrapper for saImmOmCcbObjectModify_o2
- */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectModify_o2(
     SaImmCcbHandleT immCcbHandle, const char *objectName,
     const SaImmAttrModificationT_2** attrMods);
 
+EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectModify_o3(
+    SaImmCcbHandleT ccbHandle, const char* objectName,
+    const SaImmAttrModificationT_2 **attrMods);
+
 /**
- * Wrapper for saImmOmCcbObjectDelete
+ * Wrapper for saImmOmCcbObjectDelete/_o2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectDelete(
     SaImmCcbHandleT immCcbHandle, const SaNameT *objectName);
 
-/**
- * Wrapper for saImmOmCcbObjectDelete_o2
- */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectDelete_o2(
     SaImmCcbHandleT immCcbHandle, const char *objectName);
 
+EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectDelete_o3(
+    SaImmCcbHandleT ccbHandle, const char* objectName);
+
 /**
  * Wrapper for saImmOmCcbObjectRead
  */
diff --git a/osaf/tools/safimm/src/immutil.c b/osaf/tools/safimm/src/immutil.c
--- a/osaf/tools/safimm/src/immutil.c
+++ b/osaf/tools/safimm/src/immutil.c
@@ -1134,6 +1134,26 @@ SaAisErrorT immutil_saImmOiInitialize_2(
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiInitialize_o3(SaImmOiHandleT * immOiHandle, const 
SaImmOiCallbacksT_o3 *immOiCallbacks,
+                                                                               
 const 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. */
+       SaVersionT localVer = *version;
+
+       SaAisErrorT rc = saImmOiInitialize_o3(immOiHandle, immOiCallbacks, 
&localVer);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               localVer = *version;
+               rc = saImmOiInitialize_o3(immOiHandle, immOiCallbacks, 
&localVer);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError("saImmOiInitialize_o3 FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOiSelectionObjectGet(SaImmOiHandleT immOiHandle,
                                              SaSelectionObjectT *
                                              selectionObject)
@@ -1195,6 +1215,66 @@ SaAisErrorT immutil_saImmOiClassImplemen
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiObjectImplementerSet(SaImmOiHandleT immOiHandle, 
const SaNameT *objectName,
+                                                                               
                SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOiObjectImplementerSet(immOiHandle, objectName, 
scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiObjectImplementerSet(immOiHandle, objectName, 
scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOiObjectImplementerSet_o3(SaImmOiHandleT immOiHandle, 
const char* objectName,
+                                                                               
                   SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOiObjectImplementerSet_o3(immOiHandle, 
(SaConstStringT) objectName, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiObjectImplementerSet_o3(immOiHandle, 
(SaConstStringT) objectName, scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOiObjectImplementerRelease(SaImmOiHandleT 
immOiHandle, const SaNameT *objectName,
+                                                                               
                        SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOiObjectImplementerRelease(immOiHandle, 
objectName, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiObjectImplementerRelease(immOiHandle, objectName, 
scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOiObjectImplementerRelease_o3(SaImmOiHandleT 
immOiHandle, const char* objectName,
+                                                                               
                           SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOiObjectImplementerRelease_o3(immOiHandle, 
(SaConstStringT) objectName, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiObjectImplementerRelease_o3(immOiHandle, 
(SaConstStringT) objectName, scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOiImplementerSet(SaImmOiHandleT immOiHandle,
                                          const SaImmOiImplementerNameT
                                          implementerName)
@@ -1269,6 +1349,21 @@ SaAisErrorT immutil_saImmOiRtObjectCreat
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiRtObjectCreate_o3(SaImmOiHandleT immOiHandle, const 
SaImmClassNameT className,
+                                                                               
         const char* objectName, const SaImmAttrValuesT_2 **attrValues)
+{
+       SaAisErrorT rc = saImmOiRtObjectCreate_o3(immOiHandle, className, 
(SaConstStringT) objectName, attrValues);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiRtObjectCreate_o3(immOiHandle, className, 
(SaConstStringT) objectName, attrValues);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOiRtObjectDelete(SaImmOiHandleT immOiHandle,
                                          const SaNameT * objectName)
 {
@@ -1298,6 +1393,20 @@ SaAisErrorT immutil_saImmOiRtObjectDelet
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiRtObjectDelete_o3(SaImmOiHandleT immOiHandle, const 
char* objectName)
+{
+       SaAisErrorT rc = saImmOiRtObjectDelete_o3(immOiHandle, (SaConstStringT) 
objectName);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiRtObjectDelete_o3(immOiHandle, (SaConstStringT) 
objectName);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOiRtObjectUpdate_2(SaImmOiHandleT immOiHandle,
                                            const SaNameT * objectName,
                                            const SaImmAttrModificationT_2 **
@@ -1334,6 +1443,20 @@ SaAisErrorT immutil_saImmOiRtObjectUpdat
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiRtObjectUpdate_o3(SaImmOiHandleT immOiHandle, const 
char* objectName, const SaImmAttrModificationT_2 **attrMods)
+{
+       SaAisErrorT rc = saImmOiRtObjectUpdate_o3(immOiHandle, (SaConstStringT) 
objectName, attrMods);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiRtObjectUpdate_o3(immOiHandle, (SaConstStringT) 
objectName, attrMods);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOiAdminOperationResult(SaImmOiHandleT immOiHandle,
                                                SaInvocationT invocation,
                                                SaAisErrorT result)
@@ -1378,6 +1501,21 @@ SaAisErrorT immutil_saImmOiAdminOperatio
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiAugmentCcbInitialize(SaImmOiHandleT immOiHandle, 
SaImmOiCcbIdT ccbId64,
+                                                                               
                SaImmCcbHandleT *ccbHandle, SaImmAdminOwnerHandleT *ownerHandle)
+{
+       SaAisErrorT rc = saImmOiAugmentCcbInitialize(immOiHandle, ccbId64, 
ccbHandle, ownerHandle);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiAugmentCcbInitialize(immOiHandle, ccbId64, 
ccbHandle, ownerHandle);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError("saImmOiAugmentCcbInitialize FAILED, rc = %d", 
(int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmInitialize(SaImmHandleT * immHandle,
                                      const SaImmCallbacksT * immCallbacks,
                                      const SaVersionT * version)
@@ -1400,6 +1538,40 @@ SaAisErrorT immutil_saImmOmInitialize(Sa
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmInitialize_o2(SaImmHandleT *immHandle, const 
SaImmCallbacksT_o2 *immCallbacks,
+                                                                               
 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. */
+       SaVersionT localVer = *version;
+
+       SaAisErrorT rc = saImmOmInitialize_o2(immHandle, immCallbacks, 
&localVer);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               localVer = *version;
+               rc = saImmOmInitialize_o2(immHandle, immCallbacks, &localVer);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOmSelectionObjectGet(SaImmHandleT immHandle, 
SaSelectionObjectT *selectionObject)
+{
+       SaAisErrorT rc = saImmOmSelectionObjectGet(immHandle, selectionObject);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmSelectionObjectGet(immHandle, selectionObject);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmFinalize(SaImmHandleT immHandle)
 {
        SaAisErrorT rc = saImmOmFinalize(immHandle);
@@ -1472,6 +1644,21 @@ SaAisErrorT immutil_saImmOmAccessorGet_o
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmAccessorGet_o3(SaImmAccessorHandleT accessorHandle, 
const char* objectName,
+                                                                               
  const SaImmAttrNameT *attributeNames, SaImmAttrValuesT_2 ***attributes)
+{
+       SaAisErrorT rc = saImmOmAccessorGet_o3(accessorHandle, (SaConstStringT) 
objectName, attributeNames, attributes);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAccessorGet_o3(accessorHandle, (SaConstStringT) 
objectName, attributeNames, attributes);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && rc != SA_AIS_ERR_NOT_EXIST && 
immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmAccessorGetConfigAttrs(SaImmAccessorHandleT
                                                  accessorHandle,
                                                  const SaNameT * objectName,
@@ -1588,6 +1775,27 @@ SaAisErrorT immutil_saImmOmSearchInitial
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmSearchInitialize_o3(SaImmHandleT immHandle, const 
char* rootName,
+                                                                               
           SaImmScopeT scope, SaImmSearchOptionsT searchOptions,
+                                                                               
           const SaImmSearchParametersT_2 *searchParam, const SaImmAttrNameT 
*attributeNames,
+                                                                               
           SaImmSearchHandleT *searchHandle)
+{
+       SaAisErrorT rc = saImmOmSearchInitialize_o3(immHandle, (SaConstStringT) 
rootName, scope,searchOptions,
+                                                                               
                searchParam, attributeNames, searchHandle);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmSearchInitialize_o3(immHandle, (SaConstStringT) 
rootName, scope, searchOptions,
+                                                                               
searchParam, attributeNames, searchHandle);
+               nTries++;
+       }
+       if (rc == SA_AIS_ERR_NOT_EXIST)
+               return rc;
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmSearchFinalize(SaImmSearchHandleT searchHandle)
 {
        SaAisErrorT rc = saImmOmSearchFinalize(searchHandle);
@@ -1642,6 +1850,23 @@ SaAisErrorT immutil_saImmOmSearchNext_o2
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmSearchNext_o3(SaImmSearchHandleT searchHandle, 
char** objectName,
+                                                                               
 SaImmAttrValuesT_2 ***attributes)
+{
+       SaAisErrorT rc = saImmOmSearchNext_o3(searchHandle, (SaStringT*) 
objectName, attributes);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmSearchNext_o3(searchHandle, (SaStringT*) 
objectName, attributes);
+               nTries++;
+       }
+       if (rc == SA_AIS_ERR_NOT_EXIST)
+               return rc;
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmAdminOwnerClear(SaImmHandleT immHandle,
                                           const SaNameT ** objectNames,
                                           SaImmScopeT scope)
@@ -1692,6 +1917,21 @@ SaAisErrorT immutil_saImmOmAdminOwnerCle
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmAdminOwnerClear_o3(SaImmHandleT immHandle, const 
char** objectNames,
+                                                                               
          SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOmAdminOwnerClear_o3(immHandle, (SaConstStringT*) 
objectNames, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOwnerClear_o3(immHandle, (SaConstStringT*) 
objectNames, scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmClassCreate_2(SaImmCcbHandleT immCcbHandle,
                                         const SaImmClassNameT className,
                                         const SaImmClassCategoryT
@@ -1915,6 +2155,21 @@ SaAisErrorT immutil_saImmOmAdminOwnerSet
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmAdminOwnerSet_o3(SaImmAdminOwnerHandleT 
adminOwnerHandle, const char** objectNames,
+                                                                               
        SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOmAdminOwnerSet_o3(adminOwnerHandle, 
(SaConstStringT*) objectNames, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOwnerSet_o3(adminOwnerHandle, 
(SaConstStringT*) objectNames, scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmAdminOwnerRelease(SaImmAdminOwnerHandleT 
ownerHandle,
                                             const SaNameT ** name,
                                             SaImmScopeT scope)
@@ -1966,6 +2221,21 @@ SaAisErrorT immutil_saImmOmAdminOwnerRel
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmAdminOwnerRelease_o3(SaImmAdminOwnerHandleT 
adminOwnerHandle, const char** objectNames,
+                                                                               
                SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOmAdminOwnerRelease_o3(adminOwnerHandle, 
(SaConstStringT*) objectNames, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOwnerRelease_o3(adminOwnerHandle, 
(SaConstStringT*) objectNames, scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmAdminOperationInvoke_o214(SaImmAdminOwnerHandleT
                                                     ownerHandle,
                                                     const char *objectName,
@@ -2071,6 +2341,56 @@ SaAisErrorT immutil_saImmOmAdminOperatio
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmAdminOperationInvoke_o3(SaImmAdminOwnerHandleT 
ownerHandle, const char* objectName,
+                                                                               
                   SaImmContinuationIdT continuationId, SaImmAdminOperationIdT 
operationId,
+                                                                               
                   const SaImmAdminOperationParamsT_2 **params, SaAisErrorT 
*operationReturnValue,
+                                                                               
                   SaTimeT timeout, SaImmAdminOperationParamsT_2 
***returnParams) {
+       SaAisErrorT rc = saImmOmAdminOperationInvoke_o3(ownerHandle, 
(SaConstStringT) objectName, continuationId,
+                                                                               
                        operationId, params, operationReturnValue, timeout, 
returnParams);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOperationInvoke_o3(ownerHandle, 
(SaConstStringT) objectName, continuationId,
+                                                                               
        operationId, params, operationReturnValue, timeout, returnParams);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOmAdminOperationInvokeAsync_2(SaImmAdminOwnerHandleT 
ownerHandle, SaInvocationT userInvocation,
+                                                                               
                           const SaNameT *objectName, SaImmContinuationIdT 
continuationId,
+                                                                               
                           SaImmAdminOperationIdT operationId, const 
SaImmAdminOperationParamsT_2 **params)
+{
+       SaAisErrorT rc = saImmOmAdminOperationInvokeAsync_2(ownerHandle, 
userInvocation, objectName, continuationId, operationId, params);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOperationInvokeAsync_2(ownerHandle, 
userInvocation, objectName, continuationId, operationId, params);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOmAdminOperationInvokeAsync_o3(SaImmAdminOwnerHandleT 
ownerHandle, SaInvocationT userInvocation,
+                                                                               
                                const char* objectName, SaImmContinuationIdT 
continuationId,
+                                                                               
                                SaImmAdminOperationIdT operationId, const 
SaImmAdminOperationParamsT_2 **params)
+{
+       SaAisErrorT rc = saImmOmAdminOperationInvokeAsync_o3(ownerHandle, 
userInvocation, (SaConstStringT) objectName, continuationId, operationId, 
params);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOperationInvokeAsync_o3(ownerHandle, 
userInvocation, (SaConstStringT) objectName, continuationId, operationId, 
params);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmCcbObjectCreate_2(SaImmCcbHandleT immCcbHandle,
                                             const SaImmClassNameT className,
                                             const SaNameT * parent,
@@ -2112,6 +2432,21 @@ SaAisErrorT immutil_saImmOmCcbObjectCrea
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmCcbObjectCreate_o3(SaImmCcbHandleT ccbHandle, const 
char* className,
+                                                                               
          const char* const objectName, const SaImmAttrValuesT_2 **attrValues)
+{
+       SaAisErrorT rc = saImmOmCcbObjectCreate_o3(ccbHandle, (const 
SaImmClassNameT) className, (const SaConstStringT) objectName, attrValues);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmCcbObjectCreate_o3(ccbHandle, (const 
SaImmClassNameT) className, (const SaConstStringT) objectName, attrValues);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmCcbObjectModify_2(SaImmCcbHandleT immCcbHandle,
                                             const SaNameT * objectName,
                                             const SaImmAttrModificationT_2 **
@@ -2149,6 +2484,21 @@ SaAisErrorT immutil_saImmOmCcbObjectModi
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmCcbObjectModify_o3(SaImmCcbHandleT ccbHandle, const 
char* objectName,
+                                                                               
          const SaImmAttrModificationT_2 **attrMods)
+{
+       SaAisErrorT rc = saImmOmCcbObjectModify_o3(ccbHandle, (SaConstStringT) 
objectName, attrMods);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmCcbObjectModify_o3(ccbHandle, (SaConstStringT) 
objectName, attrMods);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmCcbObjectDelete(SaImmCcbHandleT immCcbHandle,
                                           const SaNameT * objectName)
 {
@@ -2179,6 +2529,20 @@ SaAisErrorT immutil_saImmOmCcbObjectDele
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmCcbObjectDelete_o3(SaImmCcbHandleT ccbHandle, const 
char* objectName)
+{
+       SaAisErrorT rc = saImmOmCcbObjectDelete_o3(ccbHandle, (SaConstStringT) 
objectName);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmCcbObjectDelete_o3(ccbHandle, (SaConstStringT) 
objectName);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmCcbObjectRead(SaImmCcbHandleT ccbHandle,
                                         SaConstStringT objectName,
                                         const SaImmAttrNameT * attributeNames,
diff --git a/samples/immsv/immutils/immutil.c b/samples/immsv/immutils/immutil.c
--- a/samples/immsv/immutils/immutil.c
+++ b/samples/immsv/immutils/immutil.c
@@ -1134,6 +1134,26 @@ SaAisErrorT immutil_saImmOiInitialize_2(
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiInitialize_o3(SaImmOiHandleT * immOiHandle, const 
SaImmOiCallbacksT_o3 *immOiCallbacks,
+                                                                               
 const 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. */
+       SaVersionT localVer = *version;
+
+       SaAisErrorT rc = saImmOiInitialize_o3(immOiHandle, immOiCallbacks, 
&localVer);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               localVer = *version;
+               rc = saImmOiInitialize_o3(immOiHandle, immOiCallbacks, 
&localVer);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError("saImmOiInitialize_o3 FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOiSelectionObjectGet(SaImmOiHandleT immOiHandle,
                                              SaSelectionObjectT *
                                              selectionObject)
@@ -1195,6 +1215,66 @@ SaAisErrorT immutil_saImmOiClassImplemen
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiObjectImplementerSet(SaImmOiHandleT immOiHandle, 
const SaNameT *objectName,
+                                                                               
                SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOiObjectImplementerSet(immOiHandle, objectName, 
scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiObjectImplementerSet(immOiHandle, objectName, 
scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOiObjectImplementerSet_o3(SaImmOiHandleT immOiHandle, 
const char* objectName,
+                                                                               
                   SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOiObjectImplementerSet_o3(immOiHandle, 
(SaConstStringT) objectName, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiObjectImplementerSet_o3(immOiHandle, 
(SaConstStringT) objectName, scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOiObjectImplementerRelease(SaImmOiHandleT 
immOiHandle, const SaNameT *objectName,
+                                                                               
                        SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOiObjectImplementerRelease(immOiHandle, 
objectName, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiObjectImplementerRelease(immOiHandle, objectName, 
scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOiObjectImplementerRelease_o3(SaImmOiHandleT 
immOiHandle, const char* objectName,
+                                                                               
                           SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOiObjectImplementerRelease_o3(immOiHandle, 
(SaConstStringT) objectName, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiObjectImplementerRelease_o3(immOiHandle, 
(SaConstStringT) objectName, scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOiImplementerSet(SaImmOiHandleT immOiHandle,
                                          const SaImmOiImplementerNameT
                                          implementerName)
@@ -1269,6 +1349,21 @@ SaAisErrorT immutil_saImmOiRtObjectCreat
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiRtObjectCreate_o3(SaImmOiHandleT immOiHandle, const 
SaImmClassNameT className,
+                                                                               
         const char* objectName, const SaImmAttrValuesT_2 **attrValues)
+{
+       SaAisErrorT rc = saImmOiRtObjectCreate_o3(immOiHandle, className, 
(SaConstStringT) objectName, attrValues);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiRtObjectCreate_o3(immOiHandle, className, 
(SaConstStringT) objectName, attrValues);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOiRtObjectDelete(SaImmOiHandleT immOiHandle,
                                          const SaNameT * objectName)
 {
@@ -1298,6 +1393,20 @@ SaAisErrorT immutil_saImmOiRtObjectDelet
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiRtObjectDelete_o3(SaImmOiHandleT immOiHandle, const 
char* objectName)
+{
+       SaAisErrorT rc = saImmOiRtObjectDelete_o3(immOiHandle, (SaConstStringT) 
objectName);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiRtObjectDelete_o3(immOiHandle, (SaConstStringT) 
objectName);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOiRtObjectUpdate_2(SaImmOiHandleT immOiHandle,
                                            const SaNameT * objectName,
                                            const SaImmAttrModificationT_2 **
@@ -1334,6 +1443,20 @@ SaAisErrorT immutil_saImmOiRtObjectUpdat
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiRtObjectUpdate_o3(SaImmOiHandleT immOiHandle, const 
char* objectName, const SaImmAttrModificationT_2 **attrMods)
+{
+       SaAisErrorT rc = saImmOiRtObjectUpdate_o3(immOiHandle, (SaConstStringT) 
objectName, attrMods);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiRtObjectUpdate_o3(immOiHandle, (SaConstStringT) 
objectName, attrMods);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOiAdminOperationResult(SaImmOiHandleT immOiHandle,
                                                SaInvocationT invocation,
                                                SaAisErrorT result)
@@ -1378,6 +1501,21 @@ SaAisErrorT immutil_saImmOiAdminOperatio
        return rc;
 }
 
+SaAisErrorT immutil_saImmOiAugmentCcbInitialize(SaImmOiHandleT immOiHandle, 
SaImmOiCcbIdT ccbId64,
+                                                                               
                SaImmCcbHandleT *ccbHandle, SaImmAdminOwnerHandleT *ownerHandle)
+{
+       SaAisErrorT rc = saImmOiAugmentCcbInitialize(immOiHandle, ccbId64, 
ccbHandle, ownerHandle);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOiAugmentCcbInitialize(immOiHandle, ccbId64, 
ccbHandle, ownerHandle);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError("saImmOiAugmentCcbInitialize FAILED, rc = %d", 
(int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmInitialize(SaImmHandleT * immHandle,
                                      const SaImmCallbacksT * immCallbacks,
                                      const SaVersionT * version)
@@ -1400,6 +1538,40 @@ SaAisErrorT immutil_saImmOmInitialize(Sa
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmInitialize_o2(SaImmHandleT *immHandle, const 
SaImmCallbacksT_o2 *immCallbacks,
+                                                                               
 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. */
+       SaVersionT localVer = *version;
+
+       SaAisErrorT rc = saImmOmInitialize_o2(immHandle, immCallbacks, 
&localVer);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               localVer = *version;
+               rc = saImmOmInitialize_o2(immHandle, immCallbacks, &localVer);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOmSelectionObjectGet(SaImmHandleT immHandle, 
SaSelectionObjectT *selectionObject)
+{
+       SaAisErrorT rc = saImmOmSelectionObjectGet(immHandle, selectionObject);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmSelectionObjectGet(immHandle, selectionObject);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmFinalize(SaImmHandleT immHandle)
 {
        SaAisErrorT rc = saImmOmFinalize(immHandle);
@@ -1472,6 +1644,21 @@ SaAisErrorT immutil_saImmOmAccessorGet_o
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmAccessorGet_o3(SaImmAccessorHandleT accessorHandle, 
const char* objectName,
+                                                                               
  const SaImmAttrNameT *attributeNames, SaImmAttrValuesT_2 ***attributes)
+{
+       SaAisErrorT rc = saImmOmAccessorGet_o3(accessorHandle, (SaConstStringT) 
objectName, attributeNames, attributes);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAccessorGet_o3(accessorHandle, (SaConstStringT) 
objectName, attributeNames, attributes);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && rc != SA_AIS_ERR_NOT_EXIST && 
immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmAccessorGetConfigAttrs(SaImmAccessorHandleT
                                                  accessorHandle,
                                                  const SaNameT * objectName,
@@ -1588,6 +1775,27 @@ SaAisErrorT immutil_saImmOmSearchInitial
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmSearchInitialize_o3(SaImmHandleT immHandle, const 
char* rootName,
+                                                                               
           SaImmScopeT scope, SaImmSearchOptionsT searchOptions,
+                                                                               
           const SaImmSearchParametersT_2 *searchParam, const SaImmAttrNameT 
*attributeNames,
+                                                                               
           SaImmSearchHandleT *searchHandle)
+{
+       SaAisErrorT rc = saImmOmSearchInitialize_o3(immHandle, (SaConstStringT) 
rootName, scope,searchOptions,
+                                                                               
                searchParam, attributeNames, searchHandle);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmSearchInitialize_o3(immHandle, (SaConstStringT) 
rootName, scope, searchOptions,
+                                                                               
searchParam, attributeNames, searchHandle);
+               nTries++;
+       }
+       if (rc == SA_AIS_ERR_NOT_EXIST)
+               return rc;
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmSearchFinalize(SaImmSearchHandleT searchHandle)
 {
        SaAisErrorT rc = saImmOmSearchFinalize(searchHandle);
@@ -1642,6 +1850,23 @@ SaAisErrorT immutil_saImmOmSearchNext_o2
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmSearchNext_o3(SaImmSearchHandleT searchHandle, 
char** objectName,
+                                                                               
 SaImmAttrValuesT_2 ***attributes)
+{
+       SaAisErrorT rc = saImmOmSearchNext_o3(searchHandle, (SaStringT*) 
objectName, attributes);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmSearchNext_o3(searchHandle, (SaStringT*) 
objectName, attributes);
+               nTries++;
+       }
+       if (rc == SA_AIS_ERR_NOT_EXIST)
+               return rc;
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmAdminOwnerClear(SaImmHandleT immHandle,
                                           const SaNameT ** objectNames,
                                           SaImmScopeT scope)
@@ -1692,6 +1917,21 @@ SaAisErrorT immutil_saImmOmAdminOwnerCle
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmAdminOwnerClear_o3(SaImmHandleT immHandle, const 
char** objectNames,
+                                                                               
          SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOmAdminOwnerClear_o3(immHandle, (SaConstStringT*) 
objectNames, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOwnerClear_o3(immHandle, (SaConstStringT*) 
objectNames, scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmClassCreate_2(SaImmCcbHandleT immCcbHandle,
                                         const SaImmClassNameT className,
                                         const SaImmClassCategoryT
@@ -1915,6 +2155,21 @@ SaAisErrorT immutil_saImmOmAdminOwnerSet
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmAdminOwnerSet_o3(SaImmAdminOwnerHandleT 
adminOwnerHandle, const char** objectNames,
+                                                                               
        SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOmAdminOwnerSet_o3(adminOwnerHandle, 
(SaConstStringT*) objectNames, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOwnerSet_o3(adminOwnerHandle, 
(SaConstStringT*) objectNames, scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmAdminOwnerRelease(SaImmAdminOwnerHandleT 
ownerHandle,
                                             const SaNameT ** name,
                                             SaImmScopeT scope)
@@ -1966,6 +2221,21 @@ SaAisErrorT immutil_saImmOmAdminOwnerRel
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmAdminOwnerRelease_o3(SaImmAdminOwnerHandleT 
adminOwnerHandle, const char** objectNames,
+                                                                               
                SaImmScopeT scope)
+{
+       SaAisErrorT rc = saImmOmAdminOwnerRelease_o3(adminOwnerHandle, 
(SaConstStringT*) objectNames, scope);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOwnerRelease_o3(adminOwnerHandle, 
(SaConstStringT*) objectNames, scope);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmAdminOperationInvoke_o214(SaImmAdminOwnerHandleT
                                                     ownerHandle,
                                                     const char *objectName,
@@ -2071,6 +2341,56 @@ SaAisErrorT immutil_saImmOmAdminOperatio
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmAdminOperationInvoke_o3(SaImmAdminOwnerHandleT 
ownerHandle, const char* objectName,
+                                                                               
                   SaImmContinuationIdT continuationId, SaImmAdminOperationIdT 
operationId,
+                                                                               
                   const SaImmAdminOperationParamsT_2 **params, SaAisErrorT 
*operationReturnValue,
+                                                                               
                   SaTimeT timeout, SaImmAdminOperationParamsT_2 
***returnParams) {
+       SaAisErrorT rc = saImmOmAdminOperationInvoke_o3(ownerHandle, 
(SaConstStringT) objectName, continuationId,
+                                                                               
                        operationId, params, operationReturnValue, timeout, 
returnParams);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOperationInvoke_o3(ownerHandle, 
(SaConstStringT) objectName, continuationId,
+                                                                               
        operationId, params, operationReturnValue, timeout, returnParams);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOmAdminOperationInvokeAsync_2(SaImmAdminOwnerHandleT 
ownerHandle, SaInvocationT userInvocation,
+                                                                               
                           const SaNameT *objectName, SaImmContinuationIdT 
continuationId,
+                                                                               
                           SaImmAdminOperationIdT operationId, const 
SaImmAdminOperationParamsT_2 **params)
+{
+       SaAisErrorT rc = saImmOmAdminOperationInvokeAsync_2(ownerHandle, 
userInvocation, objectName, continuationId, operationId, params);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOperationInvokeAsync_2(ownerHandle, 
userInvocation, objectName, continuationId, operationId, params);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
+SaAisErrorT immutil_saImmOmAdminOperationInvokeAsync_o3(SaImmAdminOwnerHandleT 
ownerHandle, SaInvocationT userInvocation,
+                                                                               
                                const char* objectName, SaImmContinuationIdT 
continuationId,
+                                                                               
                                SaImmAdminOperationIdT operationId, const 
SaImmAdminOperationParamsT_2 **params)
+{
+       SaAisErrorT rc = saImmOmAdminOperationInvokeAsync_o3(ownerHandle, 
userInvocation, (SaConstStringT) objectName, continuationId, operationId, 
params);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmAdminOperationInvokeAsync_o3(ownerHandle, 
userInvocation, (SaConstStringT) objectName, continuationId, operationId, 
params);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmCcbObjectCreate_2(SaImmCcbHandleT immCcbHandle,
                                             const SaImmClassNameT className,
                                             const SaNameT * parent,
@@ -2112,6 +2432,21 @@ SaAisErrorT immutil_saImmOmCcbObjectCrea
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmCcbObjectCreate_o3(SaImmCcbHandleT ccbHandle, const 
char* className,
+                                                                               
          const char* const objectName, const SaImmAttrValuesT_2 **attrValues)
+{
+       SaAisErrorT rc = saImmOmCcbObjectCreate_o3(ccbHandle, (const 
SaImmClassNameT) className, (const SaConstStringT) objectName, attrValues);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmCcbObjectCreate_o3(ccbHandle, (const 
SaImmClassNameT) className, (const SaConstStringT) objectName, attrValues);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmCcbObjectModify_2(SaImmCcbHandleT immCcbHandle,
                                             const SaNameT * objectName,
                                             const SaImmAttrModificationT_2 **
@@ -2149,6 +2484,21 @@ SaAisErrorT immutil_saImmOmCcbObjectModi
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmCcbObjectModify_o3(SaImmCcbHandleT ccbHandle, const 
char* objectName,
+                                                                               
          const SaImmAttrModificationT_2 **attrMods)
+{
+       SaAisErrorT rc = saImmOmCcbObjectModify_o3(ccbHandle, (SaConstStringT) 
objectName, attrMods);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmCcbObjectModify_o3(ccbHandle, (SaConstStringT) 
objectName, attrMods);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmCcbObjectDelete(SaImmCcbHandleT immCcbHandle,
                                           const SaNameT * objectName)
 {
@@ -2179,6 +2529,20 @@ SaAisErrorT immutil_saImmOmCcbObjectDele
        return rc;
 }
 
+SaAisErrorT immutil_saImmOmCcbObjectDelete_o3(SaImmCcbHandleT ccbHandle, const 
char* objectName)
+{
+       SaAisErrorT rc = saImmOmCcbObjectDelete_o3(ccbHandle, (SaConstStringT) 
objectName);
+       unsigned int nTries = 1;
+       while (rc == SA_AIS_ERR_TRY_AGAIN && nTries < 
immutilWrapperProfile.nTries) {
+               usleep(immutilWrapperProfile.retryInterval * 1000);
+               rc = saImmOmCcbObjectDelete_o3(ccbHandle, (SaConstStringT) 
objectName);
+               nTries++;
+       }
+       if (rc != SA_AIS_OK && immutilWrapperProfile.errorsAreFatal)
+               immutilError(" FAILED, rc = %d", (int) rc);
+       return rc;
+}
+
 SaAisErrorT immutil_saImmOmCcbObjectRead(SaImmCcbHandleT ccbHandle,
                                         SaConstStringT objectName,
                                         const SaImmAttrNameT * attributeNames,
diff --git a/samples/immsv/immutils/immutil.h b/samples/immsv/immutils/immutil.h
--- a/samples/immsv/immutils/immutil.h
+++ b/samples/immsv/immutils/immutil.h
@@ -424,6 +424,10 @@ EXTERN_C SaAisErrorT immutil_saImmOiInit
     SaImmOiHandleT *immOiHandle, const SaImmOiCallbacksT_2 *immOiCallbacks,
     const SaVersionT *version);
 
+EXTERN_C SaAisErrorT immutil_saImmOiInitialize_o3(
+    SaImmOiHandleT * immOiHandle, const SaImmOiCallbacksT_o3 *immOiCallbacks,
+    const SaVersionT * version);
+
 EXTERN_C SaAisErrorT immutil_saImmOiSelectionObjectGet(
     SaImmOiHandleT immOiHandle, SaSelectionObjectT *selectionObject);
 
@@ -433,6 +437,22 @@ EXTERN_C SaAisErrorT immutil_saImmOiClas
 EXTERN_C SaAisErrorT immutil_saImmOiClassImplementerRelease(
     SaImmOiHandleT immOiHandle, const char *className);
 
+EXTERN_C SaAisErrorT immutil_saImmOiObjectImplementerSet(
+    SaImmOiHandleT immOiHandle, const SaNameT *objectName,
+    SaImmScopeT scope);
+
+EXTERN_C SaAisErrorT immutil_saImmOiObjectImplementerSet_o3(
+    SaImmOiHandleT immOiHandle, const char* objectName,
+    SaImmScopeT scope);
+
+EXTERN_C SaAisErrorT immutil_saImmOiObjectImplementerRelease(
+    SaImmOiHandleT immOiHandle, const SaNameT *objectName,
+    SaImmScopeT scope);
+
+EXTERN_C SaAisErrorT immutil_saImmOiObjectImplementerRelease_o3(
+    SaImmOiHandleT immOiHandle, const char* objectName,
+    SaImmScopeT scope);
+
 EXTERN_C SaAisErrorT immutil_saImmOiImplementerSet(
     SaImmOiHandleT immOiHandle, const SaImmOiImplementerNameT implementerName);
 
@@ -447,12 +467,19 @@ EXTERN_C SaAisErrorT immutil_saImmOiRtOb
     SaImmOiHandleT immOiHandle, const SaImmClassNameT className,
     const char *parentName, const SaImmAttrValuesT_2 **attrValues);
 
+EXTERN_C SaAisErrorT immutil_saImmOiRtObjectCreate_o3(
+    SaImmOiHandleT immOiHandle, const SaImmClassNameT className,
+    const char* objectName, const SaImmAttrValuesT_2 **attrValues);
+
 EXTERN_C SaAisErrorT immutil_saImmOiRtObjectDelete(SaImmOiHandleT immOiHandle,
                                                    const SaNameT *objectName);
 
 EXTERN_C SaAisErrorT immutil_saImmOiRtObjectDelete_o2(
     SaImmOiHandleT immOiHandle, const char *objectName);
 
+EXTERN_C SaAisErrorT immutil_saImmOiRtObjectDelete_o3(
+    SaImmOiHandleT immOiHandle, const char* objectName);
+
 EXTERN_C SaAisErrorT immutil_saImmOiRtObjectUpdate_2(
     SaImmOiHandleT immOiHandle, const SaNameT *objectName,
     const SaImmAttrModificationT_2 **attrMods);
@@ -461,6 +488,10 @@ EXTERN_C SaAisErrorT immutil_saImmOiRtOb
     SaImmOiHandleT immOiHandle, const char *objectName,
     const SaImmAttrModificationT_2 **attrMods);
 
+EXTERN_C SaAisErrorT immutil_saImmOiRtObjectUpdate_o3(
+    SaImmOiHandleT immOiHandle, const char* objectName,
+    const SaImmAttrModificationT_2 **attrMods);
+
 EXTERN_C SaAisErrorT immutil_saImmOiAdminOperationResult(
     SaImmOiHandleT immOiHandle, SaInvocationT invocation, SaAisErrorT result);
 
@@ -468,12 +499,23 @@ EXTERN_C SaAisErrorT immutil_saImmOiAdmi
     SaImmOiHandleT immOiHandle, SaInvocationT invocation, SaAisErrorT result,
     const SaImmAdminOperationParamsT_2 **returnParams);
 
+EXTERN_C SaAisErrorT immutil_saImmOiAugmentCcbInitialize(
+    SaImmOiHandleT immOiHandle, SaImmOiCcbIdT ccbId64,
+    SaImmCcbHandleT *ccbHandle, SaImmAdminOwnerHandleT *ownerHandle);
+
 EXTERN_C SaAisErrorT immutil_saImmOmInitialize(
     SaImmHandleT *immHandle, const SaImmCallbacksT *immCallbacks,
     const SaVersionT *version);
 
+EXTERN_C SaAisErrorT immutil_saImmOmInitialize_o2(
+    SaImmHandleT *immHandle, const SaImmCallbacksT_o2 *immCallbacks,
+    SaVersionT *version);
+
 EXTERN_C SaAisErrorT immutil_saImmOmFinalize(SaImmHandleT immHandle);
 
+EXTERN_C SaAisErrorT immutil_saImmOmSelectionObjectGet(
+    SaImmHandleT immHandle, SaSelectionObjectT *selectionObject);
+
 EXTERN_C SaAisErrorT immutil_saImmOmAccessorInitialize(
     SaImmHandleT immHandle, SaImmAccessorHandleT *accessorHandle);
 
@@ -485,6 +527,10 @@ EXTERN_C SaAisErrorT immutil_saImmOmAcce
     SaImmAccessorHandleT accessorHandle, const char *objectName,
     const SaImmAttrNameT *attributeNames, SaImmAttrValuesT_2 ***attributes);
 
+EXTERN_C SaAisErrorT immutil_saImmOmAccessorGet_o3(
+    SaImmAccessorHandleT accessorHandle, const char* objectName,
+    const SaImmAttrNameT *attributeNames, SaImmAttrValuesT_2 ***attributes);
+
 EXTERN_C SaAisErrorT immutil_saImmOmAccessorGetConfigAttrs(
     SaImmAccessorHandleT accessorHandle, const SaNameT *objectName,
     SaImmAttrValuesT_2 ***attributes);
@@ -501,7 +547,7 @@ EXTERN_C SaAisErrorT immutil_saImmOmClas
     SaImmCcbHandleT immCcbHandle, const SaImmClassNameT className);
 
 /**
- * Wrapper for saImmOmSearchInitialize_2/o2 The SA_AIS_ERR_NOT_EXIST error code
+ * Wrapper for saImmOmSearchInitialize_2/_o2/_o3 The SA_AIS_ERR_NOT_EXIST 
error code
  * is not considered an error and is always returned even if "errorsAreFatal" 
is
  * set.
  */
@@ -521,6 +567,12 @@ immutil_saImmOmSearchInitialize_o2(SaImm
                                    const SaImmAttrNameT *attributeNames,
                                    SaImmSearchHandleT *searchHandle);
 
+EXTERN_C SaAisErrorT
+immutil_saImmOmSearchInitialize_o3(SaImmHandleT immHandle, const char* 
rootName,
+                                   SaImmScopeT scope, SaImmSearchOptionsT 
searchOptions,
+                                   const SaImmSearchParametersT_2 
*searchParam, const SaImmAttrNameT *attributeNames,
+                                   SaImmSearchHandleT *searchHandle);
+
 /**
  * Wrapper for saImmOmSearchFinalize
  */
@@ -528,7 +580,7 @@ EXTERN_C SaAisErrorT
 immutil_saImmOmSearchFinalize(SaImmSearchHandleT searchHandle);
 
 /**
- * Wrapper for saImmOmSearchNext_2/o2 The SA_AIS_ERR_NOT_EXIST error code is 
not
+ * Wrapper for saImmOmSearchNext_2/o2/_o3 The SA_AIS_ERR_NOT_EXIST error code 
is not
  * considered an error and is always returned even if "errorsAreFatal" is set.
  */
 EXTERN_C SaAisErrorT
@@ -540,8 +592,12 @@ EXTERN_C SaAisErrorT
 immutil_saImmOmSearchNext_o2(SaImmSearchHandleT searchHandle, char 
**objectName,
                              SaImmAttrValuesT_2 ***attributes);
 
+EXTERN_C SaAisErrorT
+immutil_saImmOmSearchNext_o3(SaImmSearchHandleT searchHandle, char** 
objectName,
+                             SaImmAttrValuesT_2 ***attributes);
+
 /**
- * Wrapper for saImmOmAdminOwnerClear/_o2
+ * Wrapper for saImmOmAdminOwnerClear/_o2/_o3
  */
 EXTERN_C SaAisErrorT
 immutil_saImmOmAdminOwnerClear(SaImmHandleT immHandle,
@@ -551,6 +607,10 @@ EXTERN_C SaAisErrorT
 immutil_saImmOmAdminOwnerClear_o2(SaImmHandleT immHandle,
                                   const char **objectNames, SaImmScopeT scope);
 
+EXTERN_C SaAisErrorT
+immutil_saImmOmAdminOwnerClear_o3(SaImmHandleT immHandle,
+                                  const char** objectNames, SaImmScopeT scope);
+
 /**
  * Wrapper for saImmOiFinalize
  */
@@ -597,7 +657,7 @@ EXTERN_C SaAisErrorT immutil_saImmOmCcbA
 EXTERN_C SaAisErrorT immutil_saImmOmCcbValidate(SaImmCcbHandleT immCcbHandle);
 
 /**
- * Wrapper for saImmOmAdminOwnerSet/_o2
+ * Wrapper for saImmOmAdminOwnerSet/_o2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerSet(
     SaImmAdminOwnerHandleT ownerHandle, const SaNameT** name,
@@ -606,8 +666,12 @@ EXTERN_C SaAisErrorT immutil_saImmOmAdmi
 EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerSet_o2(
     SaImmAdminOwnerHandleT ownerHandle, const char ** name, SaImmScopeT scope);
 
+EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerSet_o3(
+    SaImmAdminOwnerHandleT adminOwnerHandle, const char** objectNames,
+    SaImmScopeT scope);
+
 /**
- * Wrapper for saImmOmAdminOwnerRelease/_o2
+ * Wrapper for saImmOmAdminOwnerRelease/_o2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerRelease(
     SaImmAdminOwnerHandleT ownerHandle, const SaNameT** name,
@@ -616,6 +680,10 @@ EXTERN_C SaAisErrorT immutil_saImmOmAdmi
 EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerRelease_o2(
     SaImmAdminOwnerHandleT ownerHandle, const char ** name, SaImmScopeT scope);
 
+EXTERN_C SaAisErrorT immutil_saImmOmAdminOwnerRelease_o3(
+    SaImmAdminOwnerHandleT adminOwnerHandle, const char** objectNames,
+    SaImmScopeT scope);
+
 /**
  * Wrapper for saImmOmAdminOperationInvoke_o2
  */
@@ -637,7 +705,7 @@ EXTERN_C SaAisErrorT immutil_saImmOmAdmi
     SaImmAdminOperationParamsT_2 ***returnParams);
 
 /**
- * Wrapper for saImmOmAdminOperationInvoke_2
+ * Wrapper for saImmOmAdminOperationInvoke_2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmAdminOperationInvoke_2(
     SaImmAdminOwnerHandleT ownerHandle, const SaNameT *objectName,
@@ -645,46 +713,67 @@ EXTERN_C SaAisErrorT immutil_saImmOmAdmi
     const SaImmAdminOperationParamsT_2 **params,
     SaAisErrorT *operationReturnValue, SaTimeT timeout);
 
+EXTERN_C SaAisErrorT immutil_saImmOmAdminOperationInvoke_o3(
+    SaImmAdminOwnerHandleT ownerHandle, const char* objectName,
+    SaImmContinuationIdT continuationId, SaImmAdminOperationIdT operationId,
+    const SaImmAdminOperationParamsT_2 **params, SaAisErrorT 
*operationReturnValue,
+    SaTimeT timeout, SaImmAdminOperationParamsT_2 ***returnParams);
+
 /**
- * Wrapper for saImmOmCcbObjectCreate_2
+ * Wrapper for saImmOmAdminOperationInvokeAsync_2/_o3
+ */
+EXTERN_C SaAisErrorT immutil_saImmOmAdminOperationInvokeAsync_2(
+    SaImmAdminOwnerHandleT ownerHandle, SaInvocationT userInvocation,
+    const SaNameT *objectName, SaImmContinuationIdT continuationId,
+    SaImmAdminOperationIdT operationId, const SaImmAdminOperationParamsT_2 
**params);
+
+EXTERN_C SaAisErrorT immutil_saImmOmAdminOperationInvokeAsync_o3(
+    SaImmAdminOwnerHandleT ownerHandle, SaInvocationT userInvocation,
+    const char* objectName, SaImmContinuationIdT continuationId,
+    SaImmAdminOperationIdT operationId, const SaImmAdminOperationParamsT_2 
**params);
+
+/**
+ * Wrapper for saImmOmCcbObjectCreate_2/_o2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectCreate_2(
     SaImmCcbHandleT immCcbHandle, const SaImmClassNameT className,
     const SaNameT *parent, const SaImmAttrValuesT_2** attrValues);
 
-/**
- * Wrapper for saImmOmCcbObjectCreate_o2
- */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectCreate_o2(
     SaImmCcbHandleT immCcbHandle, const SaImmClassNameT className,
     const char *parent, const SaImmAttrValuesT_2** attrValues);
 
+EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectCreate_o3(
+    SaImmCcbHandleT ccbHandle, const char* className,
+    const char* const objectName, const SaImmAttrValuesT_2 **attrValues);
+
 /**
- * Wrapper for saImmOmCcbObjectModify_2
+ * Wrapper for saImmOmCcbObjectModify_2/_o2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectModify_2(
     SaImmCcbHandleT immCcbHandle, const SaNameT *objectName,
     const SaImmAttrModificationT_2** attrMods);
 
-/**
- * Wrapper for saImmOmCcbObjectModify_o2
- */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectModify_o2(
     SaImmCcbHandleT immCcbHandle, const char *objectName,
     const SaImmAttrModificationT_2** attrMods);
 
+EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectModify_o3(
+    SaImmCcbHandleT ccbHandle, const char* objectName,
+    const SaImmAttrModificationT_2 **attrMods);
+
 /**
- * Wrapper for saImmOmCcbObjectDelete
+ * Wrapper for saImmOmCcbObjectDelete/_o2/_o3
  */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectDelete(
     SaImmCcbHandleT immCcbHandle, const SaNameT *objectName);
 
-/**
- * Wrapper for saImmOmCcbObjectDelete_o2
- */
 EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectDelete_o2(
     SaImmCcbHandleT immCcbHandle, const char *objectName);
 
+EXTERN_C SaAisErrorT immutil_saImmOmCcbObjectDelete_o3(
+    SaImmCcbHandleT ccbHandle, const char* objectName);
+
 /**
  * Wrapper for saImmOmCcbObjectRead
  */

------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
http://sdm.link/attshape
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to