Almost ACK on patch 3 of 5, minor comments below.

On 04/16/2015 09:20 AM, Hung Nguyen wrote:
>   osaf/libs/agents/saf/imma/imma_cb.h        |   1 +
>   osaf/libs/agents/saf/imma/imma_oi_api.c    |   6 ++++++
>   osaf/libs/agents/saf/imma/imma_om_api.c    |   6 ++++++
>   osaf/libs/common/immsv/immsv_evt.c         |  24 ++++++++++++++++++++++++
>   osaf/libs/common/immsv/include/immsv_evt.h |   1 +
>   osaf/services/saf/immsv/immnd/immnd_evt.c  |   9 +++++++++
>   6 files changed, 47 insertions(+), 0 deletions(-)
>
>
> Add new member 'version' to IMMSV_ND2A_INIT_RSP.
> When protocol47 is supported, it is set to 'A.2.16'. Otherwise, it is set to 
> '_.0.0'.
>
> Add new member 'isProto47' to IMMA_CLIENT_NODE.
> If protocol47 is supported at handle initialization, 'isProto47' is set to 
> true.
>
> The clients initialized before protocol47 will never use the new protocol47 
> messages.
>
> diff --git a/osaf/libs/agents/saf/imma/imma_cb.h 
> b/osaf/libs/agents/saf/imma/imma_cb.h
> --- a/osaf/libs/agents/saf/imma/imma_cb.h
> +++ b/osaf/libs/agents/saf/imma/imma_cb.h
> @@ -67,6 +67,7 @@ typedef struct imma_client_node {
>       bool isApplier; /* True => This is an Applier-OI */
>       bool isAug;     /* True => handle internal to OI augmented CCB */
>       bool isBusy;    /* True => handle is locked by a thread until a 
> function execution is done */
> +     bool isProto47;  /* True => If true then the server side supported 
> protocol47 at handle initialize */
>       struct imma_oi_ccb_record *activeOiCcbs; /* For ccb termination on 
> IMMND down.*/
>       SYSF_MBX callbk_mbx;    /*Mailbox Queue for clnt messages */
>   
> diff --git a/osaf/libs/agents/saf/imma/imma_oi_api.c 
> b/osaf/libs/agents/saf/imma/imma_oi_api.c
> --- a/osaf/libs/agents/saf/imma/imma_oi_api.c
> +++ b/osaf/libs/agents/saf/imma/imma_oi_api.c
> @@ -284,6 +284,12 @@ SaAisErrorT initialize_common(SaImmOiHan
>               }
>   
>               cl_node->handle = out_evt->info.imma.info.initRsp.immHandle;
> +             cl_node->isProto47 = false;
> +             if (out_evt->info.imma.info.initRsp.version.releaseCode == 'A' 
> &&
> +                     out_evt->info.imma.info.initRsp.version.majorVersion == 
> 0x02 &&
> +                     out_evt->info.imma.info.initRsp.version.minorVersion == 
> 0x10) { // A.2.16
I think line above should be:

    +                   out_evt->info.imma.info.initRsp.version.minorVersion >= 
0x10) { // A.2.16


> +                     cl_node->isProto47 = true;
> +             }
>   
>               TRACE_1("Trying to add OI client id:%u node:%x handle:%llx",
>                       m_IMMSV_UNPACK_HANDLE_HIGH(cl_node->handle),
> diff --git a/osaf/libs/agents/saf/imma/imma_om_api.c 
> b/osaf/libs/agents/saf/imma/imma_om_api.c
> --- a/osaf/libs/agents/saf/imma/imma_om_api.c
> +++ b/osaf/libs/agents/saf/imma/imma_om_api.c
> @@ -320,6 +320,12 @@ static SaAisErrorT initialize_common(SaI
>   
>               cl_node->handle = out_evt->info.imma.info.initRsp.immHandle;
>               cl_node->isOm = true;
> +             cl_node->isProto47 = false;
> +             if (out_evt->info.imma.info.initRsp.version.releaseCode == 'A' 
> &&
> +                     out_evt->info.imma.info.initRsp.version.majorVersion == 
> 0x02 &&
> +                     out_evt->info.imma.info.initRsp.version.minorVersion == 
> 0x10) { // A.2.16
I think line above should be:

    +                   out_evt->info.imma.info.initRsp.version.minorVersion >= 
0x10) { // A.2.16



> +                     cl_node->isProto47 = true;
> +             }
>   
>               cl_node->maxSearchHandles = 100;
>               if((value = getenv("IMMA_MAX_OPEN_SEARCHES_PER_HANDLE"))) {
> diff --git a/osaf/libs/common/immsv/immsv_evt.c 
> b/osaf/libs/common/immsv/immsv_evt.c
> --- a/osaf/libs/common/immsv/immsv_evt.c
> +++ b/osaf/libs/common/immsv/immsv_evt.c
> @@ -2599,6 +2599,18 @@ static uint32_t immsv_evt_enc_toplevel(I
>                       IMMSV_RSRV_SPACE_ASSERT(p8, o_ub, 4);
>                       ncs_encode_32bit(&p8, immaevt->info.initRsp.error);
>                       ncs_enc_claim_space(o_ub, 4);
> +
> +                     IMMSV_RSRV_SPACE_ASSERT(p8, o_ub, 1);
> +                     ncs_encode_8bit(&p8, 
> immaevt->info.initRsp.version.releaseCode);
> +                     ncs_enc_claim_space(o_ub, 1);
> +
> +                     IMMSV_RSRV_SPACE_ASSERT(p8, o_ub, 1);
> +                     ncs_encode_8bit(&p8, 
> immaevt->info.initRsp.version.majorVersion);
> +                     ncs_enc_claim_space(o_ub, 1);
> +
> +                     IMMSV_RSRV_SPACE_ASSERT(p8, o_ub, 1);
> +                     ncs_encode_8bit(&p8, 
> immaevt->info.initRsp.version.minorVersion);
> +                     ncs_enc_claim_space(o_ub, 1);
>                       break;
>   
>               case IMMA_EVT_ND2A_IMM_FINALIZE_RSP:
> @@ -3947,6 +3959,18 @@ static uint32_t immsv_evt_dec_toplevel(N
>                       IMMSV_FLTN_SPACE_ASSERT(p8, local_data, i_ub, 4);
>                       immaevt->info.initRsp.error = ncs_decode_32bit(&p8);
>                       ncs_dec_skip_space(i_ub, 4);
> +
> +                     IMMSV_FLTN_SPACE_ASSERT(p8, local_data, i_ub, 1);
> +                     immaevt->info.initRsp.version.releaseCode = 
> ncs_decode_8bit(&p8);
> +                     ncs_dec_skip_space(i_ub, 1);
> +
> +                     IMMSV_FLTN_SPACE_ASSERT(p8, local_data, i_ub, 1);
> +                     immaevt->info.initRsp.version.majorVersion = 
> ncs_decode_8bit(&p8);
> +                     ncs_dec_skip_space(i_ub, 1);
> +
> +                     IMMSV_FLTN_SPACE_ASSERT(p8, local_data, i_ub, 1);
> +                     immaevt->info.initRsp.version.minorVersion = 
> ncs_decode_8bit(&p8);
> +                     ncs_dec_skip_space(i_ub, 1);
>                       break;
>   
>               case IMMA_EVT_ND2A_IMM_FINALIZE_RSP:
> diff --git a/osaf/libs/common/immsv/include/immsv_evt.h 
> b/osaf/libs/common/immsv/include/immsv_evt.h
> --- a/osaf/libs/common/immsv/include/immsv_evt.h
> +++ b/osaf/libs/common/immsv/include/immsv_evt.h
> @@ -357,6 +357,7 @@ typedef struct immsv_oi_search_remote_rs
>   typedef struct immsv_nd2a_init_rsp {
>       SaImmHandleT immHandle;
>       SaAisErrorT error;
> +     SaVersionT version;
>   } IMMSV_ND2A_INIT_RSP;
>   
>   /* AdminOwnerInit Response */
> diff --git a/osaf/services/saf/immsv/immnd/immnd_evt.c 
> b/osaf/services/saf/immsv/immnd/immnd_evt.c
> --- a/osaf/services/saf/immsv/immnd/immnd_evt.c
> +++ b/osaf/services/saf/immsv/immnd/immnd_evt.c
> @@ -830,6 +830,15 @@ static uint32_t immnd_evt_proc_imm_init(
>       
>   
>       send_evt.info.imma.info.initRsp.immHandle = cl_node->imm_app_hdl;
> +     if (immModel_protocol47Allowed(cb)) { /* Set to A.2.16 */
> +             send_evt.info.imma.info.initRsp.version.releaseCode = 'A';
> +             send_evt.info.imma.info.initRsp.version.majorVersion = 0x02;
> +             send_evt.info.imma.info.initRsp.version.minorVersion = 0x10;
> +     } else { /* Set to _.0.0 */
> +             send_evt.info.imma.info.initRsp.version.releaseCode = '_';
> +             send_evt.info.imma.info.initRsp.version.majorVersion = 0x00;
> +             send_evt.info.imma.info.initRsp.version.minorVersion = 0x00;
> +     }
>       error = SA_AIS_OK;
>   
>    agent_rsp:


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to