ack, code review. One minor question below. /Thanks HansN

On 01/05/2016 02:33 PM, Minh Hon Chau wrote:
>   osaf/libs/common/amf/d2nedu.c                |  311 
> ++++++++++++++++++++++++--
>   osaf/libs/common/amf/d2nmsg.c                |  266 +++++++++++++++++++++++
>   osaf/libs/common/amf/include/Makefile.am     |    1 +
>   osaf/libs/common/amf/include/amf_d2nedu.h    |   16 +
>   osaf/libs/common/amf/include/amf_d2nmsg.h    |   61 +++++
>   osaf/libs/common/amf/include/amf_defs.h      |    3 +
>   osaf/libs/common/amf/include/amf_si_assign.h |   49 ++++
>   7 files changed, 680 insertions(+), 27 deletions(-)
>
>
> Outlined changes:
> . Introduce messages sisu_state_info and csicomp_state_info
> to carry sync information which are sent to amfd to recover
> from headless
> . Some encode/decode functions for these 2 new messages
>
> diff --git a/osaf/libs/common/amf/d2nedu.c b/osaf/libs/common/amf/d2nedu.c
> --- a/osaf/libs/common/amf/d2nedu.c
> +++ b/osaf/libs/common/amf/d2nedu.c
> @@ -57,6 +57,7 @@ uint32_t avsv_edp_dnd_msg(EDU_HDL *hdl,
>       AVSV_DND_MSG *struct_ptr = NULL, **d_ptr = NULL;
>       uint16_t ver3 = AVSV_AVD_AVND_MSG_FMT_VER_3;
>       uint16_t ver5 = AVSV_AVD_AVND_MSG_FMT_VER_5;
> +     uint16_t ver6 = AVSV_AVD_AVND_MSG_FMT_VER_6;
>   
>       EDU_INST_SET avsv_dnd_msg_rules[] = {
>               {EDU_START, avsv_edp_dnd_msg, 0, 0, 0,
> @@ -71,8 +72,14 @@ uint32_t avsv_edp_dnd_msg(EDU_HDL *hdl,
>               /* AVSV_N2D_NODE_UP_MSG_INFO */
>               {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
>                (long)&((AVSV_DND_MSG *)0)->msg_info.n2d_node_up.msg_id, 0, 
> NULL},
> +             {EDU_VER_GE, NULL, 0, 0, 2, 0, 0, (EDU_EXEC_RTINE)((uint16_t 
> *)(&(ver6)))},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +              (long)&((AVSV_DND_MSG *)0)->msg_info.n2d_node_up.leds_set, 0, 
> NULL},
>               {EDU_EXEC, m_NCS_EDP_SACLMNODEIDT, 0, 0, 0,
>                (long)&((AVSV_DND_MSG *)0)->msg_info.n2d_node_up.node_id, 0, 
> NULL},
> +             {EDU_VER_GE, NULL, 0, 0, 2, 0, 0, (EDU_EXEC_RTINE)((uint16_t 
> *)(&(ver6)))},
> +             {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
> +              (long)&((AVSV_DND_MSG *)0)->msg_info.n2d_node_up.node_name, 0, 
> NULL},
>               {EDU_EXEC, ncs_edp_mds_dest, 0, 0, EDU_EXIT,
>                (long)&((AVSV_DND_MSG 
> *)0)->msg_info.n2d_node_up.adest_address, 0, NULL},
>   
> @@ -365,6 +372,34 @@ uint32_t avsv_edp_dnd_msg(EDU_HDL *hdl,
>               {EDU_EXEC, m_NCS_EDP_SACLMNODEIDT, 0, 0, EDU_EXIT,
>                       (long)&((AVSV_DND_MSG 
> *)0)->msg_info.d2n_reboot_info.node_id, 0, NULL},
>   
> +             /* AVSV_N2D_ND_SISU_STATE_INFO_MSG */
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +                     (long)&((AVSV_DND_MSG 
> *)0)->msg_info.n2d_nd_sisu_state_info.msg_id, 0, NULL},
> +             {EDU_EXEC, m_NCS_EDP_SACLMNODEIDT, 0, 0, 0,
> +                     (long)&((AVSV_DND_MSG 
> *)0)->msg_info.n2d_nd_sisu_state_info.node_id, 0, NULL},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +             
> (long)&((AVSV_DND_MSG*)0)->msg_info.n2d_nd_sisu_state_info.num_sisu, 0, NULL},
> +             {EDU_EXEC, avsv_edp_sisu_state_info_msg, EDQ_POINTER, 0, 0,
> +                      (long)&((AVSV_DND_MSG 
> *)0)->msg_info.n2d_nd_sisu_state_info.sisu_list, 0, NULL},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +                     
> (long)&((AVSV_DND_MSG*)0)->msg_info.n2d_nd_sisu_state_info.num_su, 0, NULL},
> +             {EDU_EXEC, avsv_edp_su_state_info_msg, EDQ_POINTER, 0, EDU_EXIT,
> +                      (long)&((AVSV_DND_MSG 
> *)0)->msg_info.n2d_nd_sisu_state_info.su_list, 0, NULL},
> +
> +             /* AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG */
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +                     (long)&((AVSV_DND_MSG 
> *)0)->msg_info.n2d_nd_csicomp_state_info.msg_id, 0, NULL},
> +             {EDU_EXEC, m_NCS_EDP_SACLMNODEIDT, 0, 0, 0,
> +                     (long)&((AVSV_DND_MSG 
> *)0)->msg_info.n2d_nd_csicomp_state_info.node_id, 0, NULL},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +                     
> (long)&((AVSV_DND_MSG*)0)->msg_info.n2d_nd_csicomp_state_info.num_csicomp, 0, 
> NULL},
> +             {EDU_EXEC, avsv_edp_csicomp_state_info_msg, EDQ_POINTER, 0, 0,
> +                      (long)&((AVSV_DND_MSG 
> *)0)->msg_info.n2d_nd_csicomp_state_info.csicomp_list, 0, NULL},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +                     
> (long)&((AVSV_DND_MSG*)0)->msg_info.n2d_nd_csicomp_state_info.num_comp, 0, 
> NULL},
> +             {EDU_EXEC, avsv_edp_comp_state_info_msg, EDQ_POINTER, 0, 
> EDU_EXIT,
> +                      (long)&((AVSV_DND_MSG 
> *)0)->msg_info.n2d_nd_csicomp_state_info.comp_list, 0, NULL},
> +
>               {EDU_END, 0, 0, 0, 0, 0, 0, NULL},
>       };
>   
> @@ -404,33 +439,35 @@ int avsv_dnd_msg_test_type_fnc(NCSCONTEX
>   {
>       enum {
>               LCL_JMP_OFFSET_AVSV_N2D_NODE_UP_MSG = 1,
> -             LCL_JMP_OFFSET_AVSV_N2D_REG_SU_MSG = 4,
> -             LCL_JMP_OFFSET_AVSV_N2D_REG_COMP_MSG = 8,
> -             LCL_JMP_OFFSET_AVSV_N2D_OPERATION_STATE_MSG = 12,
> -             LCL_JMP_OFFSET_AVSV_N2D_INFO_SU_SI_ASSIGN_MSG = 18,
> -             LCL_JMP_OFFSET_AVSV_N2D_PG_TRACK_ACT_MSG = 27,
> -             LCL_JMP_OFFSET_AVSV_N2D_OPERATION_REQUEST_MSG = 32,
> -             LCL_JMP_OFFSET_AVSV_N2D_DATA_REQUEST_MSG = 36,
> -             LCL_JMP_OFFSET_AVSV_N2D_SHUTDOWN_APP_SU_MSG = 39,
> -             LCL_JMP_OFFSET_AVSV_N2D_VERIFY_ACK_NACK_MSG = 41,
> -             LCL_JMP_OFFSET_AVSV_D2N_CLM_NODE_UP_MSG = 44,
> -             LCL_JMP_OFFSET_AVSV_D2N_REG_SU_MSG = 48,
> -             LCL_JMP_OFFSET_AVSV_D2N_REG_COMP_MSG = 53,
> -             LCL_JMP_OFFSET_AVSV_D2N_INFO_SU_SI_ASSIGN_MSG = 58,
> -             LCL_JMP_OFFSET_AVSV_D2N_PG_TRACK_ACT_RSP_MSG = 70,
> -             LCL_JMP_OFFSET_AVSV_D2N_PG_UPD_MSG = 77,
> -             LCL_JMP_OFFSET_AVSV_D2N_OPERATION_REQUEST_MSG = 81,
> -             LCL_JMP_OFFSET_AVSV_D2N_PRESENCE_SU_MSG = 84,
> -             LCL_JMP_OFFSET_AVSV_D2N_DATA_VERIFY_MSG = 88,
> -             LCL_JMP_OFFSET_AVSV_D2N_DATA_ACK_MSG = 93,
> -             LCL_JMP_OFFSET_AVSV_D2N_SHUTDOWN_APP_SU_MSG = 95,
> -             LCL_JMP_OFFSET_AVSV_D2N_SET_LEDS_MSG = 97,
> -             LCL_JMP_OFFSET_AVSV_N2D_COMP_VALID_MSG = 99,
> -             LCL_JMP_OFFSET_AVSV_D2N_COMP_VALID_RESP_MSG = 107,
> -             LCL_JMP_OFFSET_AVSV_D2N_ROLE_CHANGE_MSG = 111,
> -             LCL_JMP_OFFSET_AVSV_D2N_ADMIN_OP_REQ_MSG = 114,
> -             LCL_JMP_OFFSET_AVSV_D2N_HEARTBEAT_MSG = 118,
> -             LCL_JMP_OFFSET_AVSV_D2N_REBOOT_MSG = 119
> +             LCL_JMP_OFFSET_AVSV_N2D_REG_SU_MSG = 8,
> +             LCL_JMP_OFFSET_AVSV_N2D_REG_COMP_MSG = 12,
> +             LCL_JMP_OFFSET_AVSV_N2D_OPERATION_STATE_MSG = 16,
> +             LCL_JMP_OFFSET_AVSV_N2D_INFO_SU_SI_ASSIGN_MSG = 22,
> +             LCL_JMP_OFFSET_AVSV_N2D_PG_TRACK_ACT_MSG = 31,
> +             LCL_JMP_OFFSET_AVSV_N2D_OPERATION_REQUEST_MSG = 36,
> +             LCL_JMP_OFFSET_AVSV_N2D_DATA_REQUEST_MSG = 40,
> +             LCL_JMP_OFFSET_AVSV_N2D_SHUTDOWN_APP_SU_MSG = 43,
> +             LCL_JMP_OFFSET_AVSV_N2D_VERIFY_ACK_NACK_MSG = 45,
> +             LCL_JMP_OFFSET_AVSV_D2N_CLM_NODE_UP_MSG = 48,
> +             LCL_JMP_OFFSET_AVSV_D2N_REG_SU_MSG = 52,
> +             LCL_JMP_OFFSET_AVSV_D2N_REG_COMP_MSG = 57,
> +             LCL_JMP_OFFSET_AVSV_D2N_INFO_SU_SI_ASSIGN_MSG = 62,
> +             LCL_JMP_OFFSET_AVSV_D2N_PG_TRACK_ACT_RSP_MSG = 74,
> +             LCL_JMP_OFFSET_AVSV_D2N_PG_UPD_MSG = 81,
> +             LCL_JMP_OFFSET_AVSV_D2N_OPERATION_REQUEST_MSG = 85,
> +             LCL_JMP_OFFSET_AVSV_D2N_PRESENCE_SU_MSG = 88,
> +             LCL_JMP_OFFSET_AVSV_D2N_DATA_VERIFY_MSG = 92,
> +             LCL_JMP_OFFSET_AVSV_D2N_DATA_ACK_MSG = 97,
> +             LCL_JMP_OFFSET_AVSV_D2N_SHUTDOWN_APP_SU_MSG = 99,
> +             LCL_JMP_OFFSET_AVSV_D2N_SET_LEDS_MSG = 101,
> +             LCL_JMP_OFFSET_AVSV_N2D_COMP_VALID_MSG = 103,
> +             LCL_JMP_OFFSET_AVSV_D2N_COMP_VALID_RESP_MSG = 111,
> +             LCL_JMP_OFFSET_AVSV_D2N_ROLE_CHANGE_MSG = 115,
> +             LCL_JMP_OFFSET_AVSV_D2N_ADMIN_OP_REQ_MSG = 118,
> +             LCL_JMP_OFFSET_AVSV_D2N_HEARTBEAT_MSG = 122,
> +             LCL_JMP_OFFSET_AVSV_D2N_REBOOT_MSG = 123,
> +             LCL_JMP_OFFSET_AVSV_N2D_ND_SISU_STATE_INFO_MSG = 125,
> +             LCL_JMP_OFFSET_AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG = 131
>       };
>       AVSV_DND_MSG_TYPE type;
>   
> @@ -496,6 +533,11 @@ int avsv_dnd_msg_test_type_fnc(NCSCONTEX
>               return LCL_JMP_OFFSET_AVSV_D2N_HEARTBEAT_MSG;
>       case AVSV_D2N_REBOOT_MSG:
>               return LCL_JMP_OFFSET_AVSV_D2N_REBOOT_MSG;
> +     case AVSV_N2D_ND_SISU_STATE_INFO_MSG:
> +             return LCL_JMP_OFFSET_AVSV_N2D_ND_SISU_STATE_INFO_MSG ;
> +     case AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG:
> +             return LCL_JMP_OFFSET_AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG ;
> +
>       default:
>               break;
>       }
> @@ -807,3 +849,218 @@ uint32_t avsv_edp_susi_asgn(EDU_HDL *hdl
>       rc = m_NCS_EDU_RUN_RULES(hdl, edu_tkn, avsv_susi_asgn_rules, 
> struct_ptr, ptr_data_len, buf_env, op, o_err);
>       return rc;
>   }
> +/*****************************************************************************
> +
> +  PROCEDURE NAME:   avsv_edp_sisu_state_info_msg
> +
> +  DESCRIPTION:      EDU program handler for "AVSV_SISU_STATE_MSG" data. This 
> function
> +                    is invoked by EDU for performing encode/decode operation
> +                    on "AVSV_SISU_STATE_MSG" data.
> +
> +  RETURNS:          NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
> +
> +*****************************************************************************/
> +uint32_t avsv_edp_sisu_state_info_msg(EDU_HDL *hdl, EDU_TKN *edu_tkn,
> +                        NCSCONTEXT ptr, uint32_t *ptr_data_len, EDU_BUF_ENV 
> *buf_env, EDP_OP_TYPE op, EDU_ERR *o_err)
> +{
> +     uint32_t rc = NCSCC_RC_SUCCESS;
> +     AVSV_SISU_STATE_MSG *struct_ptr = NULL, **d_ptr = NULL;
> +
> +     EDU_INST_SET avsv_sisu_state_msg_rules[] = {
> +             {EDU_START, avsv_edp_sisu_state_info_msg, EDQ_LNKLIST, 0, 0,
> +              sizeof(AVSV_SISU_STATE_MSG), 0, NULL},
> +
> +             {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
> +              (long)&((AVSV_SISU_STATE_MSG *)0)->safSU, 0, NULL},
> +             {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
> +              (long)&((AVSV_SISU_STATE_MSG *)0)->safSI, 0, NULL},
> +             {EDU_EXEC, m_NCS_EDP_SAAMFHASTATET, 0, 0, 0,
> +              (long)&((AVSV_SISU_STATE_MSG *)0)->saAmfSISUHAState, 0, NULL},
> +
> +             {EDU_TEST_LL_PTR, avsv_edp_sisu_state_info_msg, 0, 0, 0,
> +              (long)&((AVSV_SISU_STATE_MSG *)0)->next, 0, NULL},
> +             {EDU_END, 0, 0, 0, 0, 0, 0, NULL},
> +     };
> +
> +     if (op == EDP_OP_TYPE_ENC) {
> +             struct_ptr = (AVSV_SISU_STATE_MSG *)ptr;
> +     } else if (op == EDP_OP_TYPE_DEC) {
> +             d_ptr = (AVSV_SISU_STATE_MSG **)ptr;
> +             if (*d_ptr == NULL) {
> +                     *d_ptr = malloc(sizeof(AVSV_SISU_STATE_MSG));
> +                     if (*d_ptr == NULL) {
> +                             *o_err = EDU_ERR_MEM_FAIL;
> +                             return NCSCC_RC_FAILURE;
> +                     }
> +             }
> +             memset(*d_ptr, '\0', sizeof(AVSV_SISU_STATE_MSG));
> +             struct_ptr = *d_ptr;
> +     } else {
> +             struct_ptr = ptr;
> +     }
> +     rc = m_NCS_EDU_RUN_RULES(hdl, edu_tkn, avsv_sisu_state_msg_rules, 
> struct_ptr, ptr_data_len, buf_env, op, o_err);
> +     return rc;
> +}
> +/*****************************************************************************
> +
> +  PROCEDURE NAME:   avsv_edp_su_state_info_msg
> +
> +  DESCRIPTION:      EDU program handler for "AVSV_SU_STATE_MSG" data. This 
> function
> +                    is invoked by EDU for performing encode/decode operation
> +                    on "AVSV_SU_STATE_MSG" data.
> +
> +  RETURNS:          NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
> +
> +*****************************************************************************/
> +uint32_t avsv_edp_su_state_info_msg(EDU_HDL *hdl, EDU_TKN *edu_tkn,
> +                        NCSCONTEXT ptr, uint32_t *ptr_data_len, EDU_BUF_ENV 
> *buf_env, EDP_OP_TYPE op, EDU_ERR *o_err)
> +{
> +     uint32_t rc = NCSCC_RC_SUCCESS;
> +     AVSV_SU_STATE_MSG *struct_ptr = NULL, **d_ptr = NULL;
> +
> +     EDU_INST_SET avsv_su_state_msg_rules[] = {
> +             {EDU_START, avsv_edp_su_state_info_msg, EDQ_LNKLIST, 0, 0,
> +              sizeof(AVSV_SU_STATE_MSG), 0, NULL},
> +
> +             {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
> +              (long)&((AVSV_SU_STATE_MSG *)0)->safSU, 0, NULL},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +              (long)&((AVSV_SU_STATE_MSG *)0)->su_restart_cnt, 0, NULL},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +              (long)&((AVSV_SU_STATE_MSG *)0)->su_pres_state, 0, NULL},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +              (long)&((AVSV_SU_STATE_MSG *)0)->su_oper_state, 0, NULL},
> +
> +             {EDU_TEST_LL_PTR, avsv_edp_su_state_info_msg, 0, 0, 0,
> +              (long)&((AVSV_SU_STATE_MSG *)0)->next, 0, NULL},
> +             {EDU_END, 0, 0, 0, 0, 0, 0, NULL},
> +     };
> +
> +     if (op == EDP_OP_TYPE_ENC) {
> +             struct_ptr = (AVSV_SU_STATE_MSG *)ptr;
> +     } else if (op == EDP_OP_TYPE_DEC) {
> +             d_ptr = (AVSV_SU_STATE_MSG **)ptr;
> +             if (*d_ptr == NULL) {
> +                     *d_ptr = malloc(sizeof(AVSV_SU_STATE_MSG));
> +                     if (*d_ptr == NULL) {
> +                             *o_err = EDU_ERR_MEM_FAIL;
> +                             return NCSCC_RC_FAILURE;
> +                     }
> +             }
> +             memset(*d_ptr, '\0', sizeof(AVSV_SU_STATE_MSG));
> +             struct_ptr = *d_ptr;
> +     } else {
> +             struct_ptr = ptr;
> +     }
> +     rc = m_NCS_EDU_RUN_RULES(hdl, edu_tkn, avsv_su_state_msg_rules, 
> struct_ptr, ptr_data_len, buf_env, op, o_err);
> +     return rc;
> +}
> +/*****************************************************************************
> +
> +  PROCEDURE NAME:   avsv_edp_csicomp_state_info_msg
> +
> +  DESCRIPTION:      EDU program handler for "AVSV_CSICOMP_STATE_MSG" data. 
> This function
> +                    is invoked by EDU for performing encode/decode operation
> +                    on "AVSV_CSICOMP_STATE_MSG" data.
> +
> +  RETURNS:          NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
> +
> +*****************************************************************************/
> +uint32_t avsv_edp_csicomp_state_info_msg(EDU_HDL *hdl, EDU_TKN *edu_tkn,
> +                        NCSCONTEXT ptr, uint32_t *ptr_data_len, EDU_BUF_ENV 
> *buf_env, EDP_OP_TYPE op, EDU_ERR *o_err)
> +{
> +     uint32_t rc = NCSCC_RC_SUCCESS;
> +     AVSV_CSICOMP_STATE_MSG *struct_ptr = NULL, **d_ptr = NULL;
> +
> +     EDU_INST_SET avsv_csicomp_state_msg_rules[] = {
> +             {EDU_START, avsv_edp_csicomp_state_info_msg, EDQ_LNKLIST, 0, 0,
> +              sizeof(AVSV_CSICOMP_STATE_MSG), 0, NULL},
> +
> +             {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
> +              (long)&((AVSV_CSICOMP_STATE_MSG *)0)->safComp, 0, NULL},
> +             {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
> +              (long)&((AVSV_CSICOMP_STATE_MSG *)0)->safCSI, 0, NULL},
> +             {EDU_EXEC, m_NCS_EDP_SAAMFHASTATET, 0, 0, 0,
> +              (long)&((AVSV_CSICOMP_STATE_MSG *)0)->saAmfCSICompHAState, 0, 
> NULL},
> +
> +             {EDU_TEST_LL_PTR, avsv_edp_csicomp_state_info_msg, 0, 0, 0,
> +              (long)&((AVSV_CSICOMP_STATE_MSG *)0)->next, 0, NULL},
> +             {EDU_END, 0, 0, 0, 0, 0, 0, NULL},
> +     };
> +
> +     if (op == EDP_OP_TYPE_ENC) {
> +             struct_ptr = (AVSV_CSICOMP_STATE_MSG *)ptr;
> +     } else if (op == EDP_OP_TYPE_DEC) {
> +             d_ptr = (AVSV_CSICOMP_STATE_MSG **)ptr;
> +             if (*d_ptr == NULL) {
> +                     *d_ptr = malloc(sizeof(AVSV_CSICOMP_STATE_MSG));
> +                     if (*d_ptr == NULL) {
> +                             *o_err = EDU_ERR_MEM_FAIL;
> +                             return NCSCC_RC_FAILURE;
> +                     }
> +             }
> +             memset(*d_ptr, '\0', sizeof(AVSV_CSICOMP_STATE_MSG));
> +             struct_ptr = *d_ptr;
> +     } else {
> +             struct_ptr = ptr;
> +     }
> +     rc = m_NCS_EDU_RUN_RULES(hdl, edu_tkn, avsv_csicomp_state_msg_rules, 
> struct_ptr, ptr_data_len, buf_env, op, o_err);
> +     return rc;
> +
> +}
> +/*****************************************************************************
> +
> +  PROCEDURE NAME:   avsv_edp_comp_state_info_msg
> +
> +  DESCRIPTION:      EDU program handler for "AVSV_COMP_STATE_MSG" data. This 
> function
> +                    is invoked by EDU for performing encode/decode operation
> +                    on "AVSV_COMP_STATE_MSG" data.
> +
> +  RETURNS:          NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
> +
> +*****************************************************************************/
> +uint32_t avsv_edp_comp_state_info_msg(EDU_HDL *hdl, EDU_TKN *edu_tkn,
> +                        NCSCONTEXT ptr, uint32_t *ptr_data_len, EDU_BUF_ENV 
> *buf_env, EDP_OP_TYPE op, EDU_ERR *o_err)
> +{
> +     uint32_t rc = NCSCC_RC_SUCCESS;
> +     AVSV_COMP_STATE_MSG *struct_ptr = NULL, **d_ptr = NULL;
> +
> +     EDU_INST_SET avsv_comp_state_msg_rules[] = {
> +             {EDU_START, avsv_edp_comp_state_info_msg, EDQ_LNKLIST, 0, 0,
> +              sizeof(AVSV_COMP_STATE_MSG), 0, NULL},
> +
> +             {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
> +              (long)&((AVSV_COMP_STATE_MSG *)0)->safComp, 0, NULL},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +              (long)&((AVSV_COMP_STATE_MSG *)0)->comp_restart_cnt, 0, NULL},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +              (long)&((AVSV_COMP_STATE_MSG *)0)->comp_pres_state, 0, NULL},
> +             {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> +              (long)&((AVSV_COMP_STATE_MSG *)0)->comp_oper_state, 0, NULL},
> +
> +             {EDU_TEST_LL_PTR, avsv_edp_comp_state_info_msg, 0, 0, 0,
> +              (long)&((AVSV_COMP_STATE_MSG *)0)->next, 0, NULL},
> +             {EDU_END, 0, 0, 0, 0, 0, 0, NULL},
> +     };
> +
> +     if (op == EDP_OP_TYPE_ENC) {
> +             struct_ptr = (AVSV_COMP_STATE_MSG *)ptr;
> +     } else if (op == EDP_OP_TYPE_DEC) {
> +             d_ptr = (AVSV_COMP_STATE_MSG **)ptr;
> +             if (*d_ptr == NULL) {
> +                     *d_ptr = malloc(sizeof(AVSV_COMP_STATE_MSG));
> +                     if (*d_ptr == NULL) {
> +                             *o_err = EDU_ERR_MEM_FAIL;
> +                             return NCSCC_RC_FAILURE;
> +                     }
> +             }
> +             memset(*d_ptr, '\0', sizeof(AVSV_COMP_STATE_MSG));
> +             struct_ptr = *d_ptr;
> +     } else {
> +             struct_ptr = ptr;
> +     }
> +     rc = m_NCS_EDU_RUN_RULES(hdl, edu_tkn, avsv_comp_state_msg_rules, 
> struct_ptr, ptr_data_len, buf_env, op, o_err);
> +     return rc;
> +
> +}
> +
> diff --git a/osaf/libs/common/amf/d2nmsg.c b/osaf/libs/common/amf/d2nmsg.c
> --- a/osaf/libs/common/amf/d2nmsg.c
> +++ b/osaf/libs/common/amf/d2nmsg.c
> @@ -250,6 +250,127 @@ static uint32_t cpy_d2n_pg_msg(AVSV_DND_
>       return NCSCC_RC_SUCCESS;
>   }
>   
> +/*****************************************************************************
> + * Function: cpy_n2d_nd_sisu_state_info
> + *
> + * Purpose:  This function makes a copy of the n2d SI SU message contents.
> + *
> + * Input: dst - Pointer to the SU SI message to be copied to.
> + *        src - Pointer to the SU SI message to be copied.
> + *
> + * Returns: NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
> + *
> + * NOTES: It also allocates and copies the array of attributes, which are 
> separately
> + * allocated and pointed to by AVSV_SISU_STATE_MSG structure.
> + *
> + **************************************************************************/
> +static uint32_t cpy_n2d_nd_sisu_state_info(AVSV_DND_MSG *dst, const 
> AVSV_DND_MSG *src)
> +{
> +     const AVSV_SISU_STATE_MSG *src_sisu;
> +     AVSV_SISU_STATE_MSG *dst_sisu;
> +
> +     const AVSV_SU_STATE_MSG *src_su;
> +     AVSV_SU_STATE_MSG *dst_su;
> +
> +     memset(dst, '\0', sizeof(AVSV_DND_MSG));
> +
> +     memcpy(dst, src, sizeof(AVSV_DND_MSG));
> +     dst->msg_info.n2d_nd_sisu_state_info.sisu_list = NULL;
> +     dst->msg_info.n2d_nd_sisu_state_info.su_list = NULL;
> +
> +     // copy SISU stuff
> +     src_sisu = src->msg_info.n2d_nd_sisu_state_info.sisu_list;
> +     while (src_sisu != NULL) {
> +             dst_sisu = malloc(sizeof(AVSV_SISU_STATE_MSG));
> +             osafassert(dst_sisu);
> +
> +             memcpy(dst_sisu, src_sisu, sizeof(AVSV_SISU_STATE_MSG));
> +             // insert at the start
> +             dst_sisu->next = dst->msg_info.n2d_nd_sisu_state_info.sisu_list;
> +             dst->msg_info.n2d_nd_sisu_state_info.sisu_list = dst_sisu;
> +
> +             // now go to the next sisu info in source
> +             src_sisu = src_sisu->next;
> +     }
> +
> +     // copy SU stuff
> +     src_su = src->msg_info.n2d_nd_sisu_state_info.su_list;
> +     while (src_su != NULL) {
> +             dst_su = malloc(sizeof(AVSV_SU_STATE_MSG));
> +             osafassert(dst_su);
> +
> +             memcpy(dst_su, src_su, sizeof(AVSV_SU_STATE_MSG));
> +             // insert at the start
> +             dst_su->next = dst->msg_info.n2d_nd_sisu_state_info.su_list;
> +             dst->msg_info.n2d_nd_sisu_state_info.su_list = dst_su;
> +
> +             // now go to the next su info in source
> +             src_su = src_su->next;
> +     }
> +
> +     return NCSCC_RC_SUCCESS;
> +}
> +/*****************************************************************************
> + * Function: cpy_n2d_nd_csicomp_state_info
> + *
> + * Purpose:  This function makes a copy of the n2d csi comp message contents.
> + *
> + * Input: dst - Pointer to the COMPCSI message to be copied to.
> + *        src - Pointer to the COMPCSI message to be copied.
> + *
> + * Returns: NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
> + *
> + * NOTES: It also allocates and copies the array of attributes, which are 
> separately
> + * allocated and pointed to by AVSV_CSICOMP_STATE_MSG structure.
> + *
> + **************************************************************************/
> +static uint32_t cpy_n2d_nd_csicomp_state_info(AVSV_DND_MSG *dst, const 
> AVSV_DND_MSG *src)
> +{
> +     const AVSV_CSICOMP_STATE_MSG *src_csicomp;
> +     AVSV_CSICOMP_STATE_MSG *dst_csicomp;
> +
> +     const AVSV_COMP_STATE_MSG *src_comp;
> +     AVSV_COMP_STATE_MSG *dst_comp;
> +
> +     memset(dst, '\0', sizeof(AVSV_DND_MSG));
> +
> +     memcpy(dst, src, sizeof(AVSV_DND_MSG));
> +     dst->msg_info.n2d_nd_csicomp_state_info.csicomp_list = NULL;
> +     dst->msg_info.n2d_nd_csicomp_state_info.comp_list = NULL;
> +
> +     // CSICOMP
> +     src_csicomp = src->msg_info.n2d_nd_csicomp_state_info.csicomp_list;
> +     while (src_csicomp != NULL) {
> +             dst_csicomp = malloc(sizeof(AVSV_CSICOMP_STATE_MSG));
> +             osafassert(dst_csicomp);
> +
> +             memcpy(dst_csicomp, src_csicomp, 
> sizeof(AVSV_CSICOMP_STATE_MSG));
> +             // insert at the start
> +             dst_csicomp->next = 
> dst->msg_info.n2d_nd_csicomp_state_info.csicomp_list;
> +             dst->msg_info.n2d_nd_csicomp_state_info.csicomp_list = 
> dst_csicomp;
> +
> +             // now go to the next csicomp info in source
> +             src_csicomp = src_csicomp->next;
> +     }
> +
> +     // COMP
> +     src_comp = src->msg_info.n2d_nd_csicomp_state_info.comp_list;
> +     while (src_comp != NULL) {
> +             dst_comp = malloc(sizeof(AVSV_COMP_STATE_MSG));
> +             osafassert(dst_comp);
> +
> +             memcpy(dst_comp, src_comp, sizeof(AVSV_COMP_STATE_MSG));
> +             // insert at the start
> +             dst_comp->next = 
> dst->msg_info.n2d_nd_csicomp_state_info.comp_list;
> +             dst->msg_info.n2d_nd_csicomp_state_info.comp_list = dst_comp;
> +
> +             // now go to the next comp info in source
> +             src_comp = src_comp->next;
> +     }
> +
> +     return NCSCC_RC_SUCCESS;
> +}
> +
>   
> /****************************************************************************
>     Name          : avsv_dnd_msg_free
>    
> @@ -283,6 +404,12 @@ void avsv_dnd_msg_free(AVSV_DND_MSG *msg
>       case AVSV_D2N_PG_TRACK_ACT_RSP_MSG:
>               free_d2n_pg_msg_info(msg);
>               break;
> +     case AVSV_N2D_ND_SISU_STATE_INFO_MSG:
> +             avsv_free_n2d_nd_sisu_state_info(msg);
> +             break;
> +     case AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG:
> +             avsv_free_n2d_nd_csicomp_state_info(msg);
> +             break;
>       default:
>               break;
>       }
> @@ -323,6 +450,10 @@ uint32_t avsv_dnd_msg_copy(AVSV_DND_MSG
>               return cpy_d2n_susi_msg(dmsg, smsg);
>       case AVSV_D2N_PG_TRACK_ACT_RSP_MSG:
>               return cpy_d2n_pg_msg(dmsg, smsg);
> +     case AVSV_N2D_ND_SISU_STATE_INFO_MSG:
> +             return cpy_n2d_nd_sisu_state_info(dmsg, smsg);
> +     case AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG:
> +             return cpy_n2d_nd_csicomp_state_info(dmsg, smsg);
>       default:
>               /* copy only the contents */
>               memcpy(dmsg, smsg, sizeof(AVSV_DND_MSG));
> @@ -331,3 +462,138 @@ uint32_t avsv_dnd_msg_copy(AVSV_DND_MSG
>   
>       return NCSCC_RC_SUCCESS;
>   }
> +/*****************************************************************************
> + * Function: avsv_free_n2d_nd_csicomp_state_info
> + *
> + * Purpose:  This function frees the n2d csi comp message contents.
> + *
> + * Input: msg - Pointer to the message contents to be freed.
> + *
> + * Returns: None
> + *
> + * NOTES: None
> + *
> + *
> + **************************************************************************/
> +void avsv_free_n2d_nd_csicomp_state_info(AVSV_DND_MSG *msg)
> +{
> +     TRACE_ENTER();
> +
> +     AVSV_N2D_ND_CSICOMP_STATE_MSG_INFO *info = NULL;
> +     AVSV_CSICOMP_STATE_MSG *csicomp_ptr = NULL;
> +     AVSV_CSICOMP_STATE_MSG *next_csicomp_ptr = NULL;
> +
> +     AVSV_COMP_STATE_MSG *comp_ptr = NULL;
> +     AVSV_COMP_STATE_MSG *next_comp_ptr = NULL;
> +
> +     if (msg == NULL)
> +             goto done;
> +
> +     osafassert(msg->msg_type == AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG);
> +
> +     info = &msg->msg_info.n2d_nd_csicomp_state_info;
> +     osafassert(info);
> +
> +     // free CSICOMP stuff
> +     csicomp_ptr = info->csicomp_list;
> +
> +     TRACE("%u CSICOMP records to free", info->num_csicomp);
> +
> +     while (csicomp_ptr != NULL) {
> +             TRACE("freeing %s:%s", (char*)csicomp_ptr->safCSI.value, 
> (char*)csicomp_ptr->safComp.value);
> +             next_csicomp_ptr = csicomp_ptr->next;
> +             free(csicomp_ptr);
> +             csicomp_ptr = next_csicomp_ptr;
> +     }
> +
> +     info->num_csicomp = 0;
> +     info->csicomp_list = NULL;
> +
> +     // free COMP stuff
> +     comp_ptr = info->comp_list;
> +
> +     TRACE("%u COMP records to free", info->num_comp);
> +
> +     while (comp_ptr != NULL) {
> +             TRACE("freeing %s", (char*)comp_ptr->safComp.value);
> +             next_comp_ptr = comp_ptr->next;
> +             free(comp_ptr);
> +             comp_ptr = next_comp_ptr;
> +     }
> +
> +     info->num_comp = 0;
> +     info->comp_list = NULL;
> +
> +done:
> +     TRACE_LEAVE();
> +
> +}
> +
> +/*****************************************************************************
> + * Function: avsv_free_n2d_nd_sisu_state_info
> + *
> + * Purpose:  This function frees the n2d si su message contents.
> + *
> + * Input: msg - Pointer to the message contents to be freed.
> + *
> + * Returns: None
> + *
> + * NOTES: None
> + *
> + *
> + **************************************************************************/
> +void avsv_free_n2d_nd_sisu_state_info(AVSV_DND_MSG *msg)
> +{
> +     TRACE_ENTER();
> +
> +     AVSV_N2D_ND_SISU_STATE_MSG_INFO *info = 
> &msg->msg_info.n2d_nd_sisu_state_info;
> +
> +     AVSV_SISU_STATE_MSG *sisu_ptr = info->sisu_list;
> +     AVSV_SISU_STATE_MSG *next_sisu_ptr = NULL;
> +
> +     AVSV_SU_STATE_MSG *su_ptr = info->su_list;
> +     AVSV_SU_STATE_MSG *next_su_ptr = NULL;
> +
> +     if (msg == NULL)
> +             goto done;
> +
> +     osafassert(msg->msg_type == AVSV_N2D_ND_SISU_STATE_INFO_MSG);
> +
> +     info = &msg->msg_info.n2d_nd_sisu_state_info;
> +     osafassert(info);
> +
> +     // free SISU stuff
> +     sisu_ptr = info->sisu_list;
> +
> +     TRACE("%u SISU records to free", info->num_sisu);
> +
> +     while (sisu_ptr != NULL) {
> +             TRACE("freeing %s:%s", (char*)sisu_ptr->safSI.value, 
> (char*)sisu_ptr->safSU.value);
> +             next_sisu_ptr = sisu_ptr->next;
> +             free(sisu_ptr);
> +             sisu_ptr = next_sisu_ptr;
> +     }
> +
> +     info->num_sisu = 0;
> +     info->sisu_list = NULL;
> +
> +     // free SU stuff
> +     su_ptr = info->su_list;
> +
> +     TRACE("%u SU records to free", info->num_su);
> +
> +     while (su_ptr != NULL) {
> +             TRACE("freeing %s", (char*)su_ptr->safSU.value);
> +             next_su_ptr = su_ptr->next;
> +             free(su_ptr);
> +             su_ptr = next_su_ptr;
> +     }
> +
> +     info->num_su = 0;
> +     info->su_list = NULL;
> +
> +done:
> +     TRACE_LEAVE();
> +}
> +
> +
> diff --git a/osaf/libs/common/amf/include/Makefile.am 
> b/osaf/libs/common/amf/include/Makefile.am
> --- a/osaf/libs/common/amf/include/Makefile.am
> +++ b/osaf/libs/common/amf/include/Makefile.am
> @@ -27,5 +27,6 @@ noinst_HEADERS = \
>      amf.h \
>      amf_n2avaedu.h \
>      amf_n2avamsg.h \
> +   amf_si_assign.h \
>      amf_util.h \
>      amf_nd2ndmsg.h
> diff --git a/osaf/libs/common/amf/include/amf_d2nedu.h 
> b/osaf/libs/common/amf/include/amf_d2nedu.h
> --- a/osaf/libs/common/amf/include/amf_d2nedu.h
> +++ b/osaf/libs/common/amf/include/amf_d2nedu.h
> @@ -60,6 +60,22 @@ uint32_t avsv_edp_susi_asgn(EDU_HDL *hdl
>                                 NCSCONTEXT ptr, uint32_t *ptr_data_len,
>                                 EDU_BUF_ENV *buf_env, EDP_OP_TYPE op, EDU_ERR 
> *o_err);
>   
> +uint32_t avsv_edp_sisu_state_info_msg(EDU_HDL *hdl, EDU_TKN *edu_tkn,
> +                                NCSCONTEXT ptr, uint32_t *ptr_data_len,
> +                                EDU_BUF_ENV *buf_env, EDP_OP_TYPE op, 
> EDU_ERR *o_err);
> +
> +uint32_t avsv_edp_su_state_info_msg(EDU_HDL *hdl, EDU_TKN *edu_tkn,
> +                                NCSCONTEXT ptr, uint32_t *ptr_data_len,
> +                                EDU_BUF_ENV *buf_env, EDP_OP_TYPE op, 
> EDU_ERR *o_err);
> +
> +uint32_t avsv_edp_csicomp_state_info_msg(EDU_HDL *hdl, EDU_TKN *edu_tkn,
> +                                NCSCONTEXT ptr, uint32_t *ptr_data_len,
> +                                EDU_BUF_ENV *buf_env, EDP_OP_TYPE op, 
> EDU_ERR *o_err);
> +
> +uint32_t avsv_edp_comp_state_info_msg(EDU_HDL *hdl, EDU_TKN *edu_tkn,
> +                                NCSCONTEXT ptr, uint32_t *ptr_data_len,
> +                                EDU_BUF_ENV *buf_env, EDP_OP_TYPE op, 
> EDU_ERR *o_err);
> +
>   int avsv_dnd_msg_test_type_fnc(NCSCONTEXT arg);
>   
>   #ifdef __cplusplus
> diff --git a/osaf/libs/common/amf/include/amf_d2nmsg.h 
> b/osaf/libs/common/amf/include/amf_d2nmsg.h
> --- a/osaf/libs/common/amf/include/amf_d2nmsg.h
> +++ b/osaf/libs/common/amf/include/amf_d2nmsg.h
> @@ -49,6 +49,7 @@ extern "C" {
>   #define AVSV_AVD_AVND_MSG_FMT_VER_3    3
>   #define AVSV_AVD_AVND_MSG_FMT_VER_4    4
>   #define AVSV_AVD_AVND_MSG_FMT_VER_5    5
> +#define AVSV_AVD_AVND_MSG_FMT_VER_6    6
>   
>   /* Internode/External Components Validation result */
>   typedef enum {
> @@ -89,6 +90,10 @@ typedef enum {
>       AVSV_D2N_ADMIN_OP_REQ_MSG,
>       AVSV_D2N_HEARTBEAT_MSG,
>       AVSV_D2N_REBOOT_MSG,
> +     AVSV_D2D_CHANGE_ROLE_REQ, // to maintain backwards compatibility
> +     AVSV_D2D_CHANGE_ROLE_RSP, // to maintain backwards compatibility
> +     AVSV_N2D_ND_SISU_STATE_INFO_MSG,
> +     AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG,
>       AVSV_DND_MSG_MAX
>   } AVSV_DND_MSG_TYPE;
>   
> @@ -337,8 +342,10 @@ typedef enum {
>   
>   typedef struct avsv_n2d_node_up_msg_info_tag {
>       uint32_t msg_id;
[HansN] isn't leds_set a bool?
> +     uint32_t leds_set;
>       SaClmNodeIdT node_id;
>       MDS_DEST adest_address;
> +     SaNameT node_name;
>   } AVSV_N2D_NODE_UP_MSG_INFO;
>   
>   typedef struct avsv_n2d_comp_validation_msg_info_tag {
> @@ -427,6 +434,54 @@ typedef struct avsv_n2d_verify_ack_nack_
>       bool ack;
>   } AVSV_N2D_VERIFY_ACK_NACK_MSG_INFO;
>   
> +typedef struct avsv_sisu_state_msg_tag {
> +     SaNameT safSU;
> +     SaNameT safSI;
> +     SaAmfHAStateT saAmfSISUHAState;
> +     struct avsv_sisu_state_msg_tag *next;
> +} AVSV_SISU_STATE_MSG;
> +
> +typedef struct avsv_su_state_msg_tag {
> +     SaNameT safSU;
> +     uint32_t su_restart_cnt;
> +     uint32_t su_pres_state;
> +     uint32_t su_oper_state;
> +     struct avsv_su_state_msg_tag *next;
> +} AVSV_SU_STATE_MSG;
> +
> +typedef struct avsv_n2d_nd_sisu_state_msg_info_tag {
> +     uint32_t msg_id;
> +     SaClmNodeIdT node_id;
> +     uint32_t num_sisu;
> +     AVSV_SISU_STATE_MSG *sisu_list;
> +     uint32_t num_su;
> +     AVSV_SU_STATE_MSG *su_list;
> +} AVSV_N2D_ND_SISU_STATE_MSG_INFO;
> +
> +typedef struct avsv_csicomp_state_msg_tag {
> +     SaNameT safComp;
> +     SaNameT safCSI;
> +     SaAmfHAStateT saAmfCSICompHAState;
> +     struct avsv_csicomp_state_msg_tag *next;
> +} AVSV_CSICOMP_STATE_MSG;
> +
> +typedef struct avsv_comp_state_msg_tag {
> +     SaNameT safComp;
> +     uint32_t comp_restart_cnt;
> +     uint32_t comp_pres_state;
> +     uint32_t comp_oper_state;
> +     struct avsv_comp_state_msg_tag *next;
> +} AVSV_COMP_STATE_MSG;
> +
> +typedef struct avsv_n2d_nd_csicomp_state_msg_info_tag {
> +     uint32_t msg_id;
> +     SaClmNodeIdT node_id;
> +     uint32_t num_csicomp;
> +     AVSV_CSICOMP_STATE_MSG *csicomp_list;
> +     uint32_t num_comp;
> +     AVSV_COMP_STATE_MSG *comp_list;
> +} AVSV_N2D_ND_CSICOMP_STATE_MSG_INFO;
> +
>   typedef struct avsv_d2n_node_up_msg_info_tag {
>       SaClmNodeIdT node_id;
>       AVSV_AVND_CARD node_type;
> @@ -575,6 +630,8 @@ typedef struct avsv_dnd_msg {
>               AVSV_N2D_VERIFY_ACK_NACK_MSG_INFO n2d_ack_nack_info;
>               AVSV_N2D_SHUTDOWN_APP_SU_MSG_INFO n2d_shutdown_app_su;
>               AVSV_N2D_COMP_VALIDATION_INFO n2d_comp_valid_info;
> +             AVSV_N2D_ND_SISU_STATE_MSG_INFO n2d_nd_sisu_state_info;
> +             AVSV_N2D_ND_CSICOMP_STATE_MSG_INFO n2d_nd_csicomp_state_info;
>               AVSV_D2N_NODE_UP_MSG_INFO d2n_node_up;
>               AVSV_D2N_REG_SU_MSG_INFO d2n_reg_su;
>               AVSV_D2N_REG_COMP_MSG_INFO d2n_reg_comp;
> @@ -622,6 +679,10 @@ typedef uint32_t (*AVSV_COPY_DND_MSG) (A
>   void avsv_dnd_msg_free(AVSV_DND_MSG *);
>   uint32_t avsv_dnd_msg_copy(AVSV_DND_MSG *, AVSV_DND_MSG *);
>   
> +void avsv_free_n2d_nd_csicomp_state_info(AVSV_DND_MSG *msg);
> +void avsv_free_n2d_nd_sisu_state_info(AVSV_DND_MSG *msg);
> +
> +
>   #ifdef __cplusplus
>   }
>   #endif
> diff --git a/osaf/libs/common/amf/include/amf_defs.h 
> b/osaf/libs/common/amf/include/amf_defs.h
> --- a/osaf/libs/common/amf/include/amf_defs.h
> +++ b/osaf/libs/common/amf/include/amf_defs.h
> @@ -60,6 +60,9 @@
>   /* Default Heart beat duration */
>   #define AVSV_DEF_HB_DURATION (60 * SA_TIME_ONE_SECOND)
>   
> +/* Default sync node duration */
> +#define AVSV_DEF_NODE_SYNC_PERIOD (10 * SA_TIME_ONE_SECOND)
> +
>   typedef enum {
>       AVSV_COMP_TYPE_INVALID,
>       AVSV_COMP_TYPE_SA_AWARE,
> diff --git a/osaf/libs/common/amf/include/amf_si_assign.h 
> b/osaf/libs/common/amf/include/amf_si_assign.h
> new file mode 100644
> --- /dev/null
> +++ b/osaf/libs/common/amf/include/amf_si_assign.h
> @@ -0,0 +1,49 @@
> +/*      -*- OpenSAF  -*-
> + *
> + * (C) Copyright 2016 The OpenSAF Foundation
> + *
> + * This program is distributed in the hope that it will be useful, but
> + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> + * or FITNESS FOR A PARTICULAR PURPOSE. This file and program are licensed
> + * under the GNU Lesser General Public License Version 2.1, February 1999.
> + * The complete license can be accessed from the following location:
> + * http://opensource.org/licenses/lgpl-license.php
> + * See the Copying file included with the OpenSAF distribution for full
> + * licensing terms.
> + *
> + * Author(s): Ericsson AB
> + *
> + */
> +
> +/*****************************************************************************
> +
> +  DESCRIPTION:
> +
> +
> +******************************************************************************
> +*/
> +
> +#ifndef AMF_SI_ASSIGN_H
> +#define AMF_SI_ASSIGN_H
> +
> +#include <string>
> +#include <saAmf.h>
> +
> +struct SaAmfSIAssignment {
> +     public:
> +             SaNameT su;
> +             SaNameT si;
> +             SaAmfHAStateT saAmfSISUHAState;
> +             uint32_t saAmfSISUHAReadinessState;
> +};
> +
> +struct SaAmfCSIAssignment {
> +     public:
> +             SaNameT csi;
> +             SaNameT comp;
> +             SaAmfHAStateT saAmfCSICompHAState;
> +             uint32_t saAmfCSICompHAReadinessState;
> +};
> +
> +#endif       /* AMF_SI_ASSIGN_H */
> +


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to