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