osaf/libs/common/amf/d2nedu.c | 19 ++++++++++++++++++- osaf/libs/common/amf/d2nmsg.c | 13 +++++++++++++ osaf/libs/common/amf/include/amf_amfparam.h | 10 ++++++++++ osaf/libs/common/amf/include/amf_d2nmsg.h | 28 ++++++++++++++++++++++++++++ osaf/libs/common/amf/include/amf_n2avamsg.h | 3 +++ osaf/libs/common/amf/n2avamsg.c | 29 +++++++++++++++++++++++++++-- 6 files changed, 99 insertions(+), 3 deletions(-)
-New message structure to be used by AMFD to send COMPCSI related information to AMFND. -New internal callback message AVSV_AMF_CSI_ATTR_CHANGE_PARAM from AMFND to agent to support newly introduced callback. 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 @@ -400,6 +400,20 @@ uint32_t avsv_edp_dnd_msg(EDU_HDL *hdl, {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}, + /*AVSV_D2N_COMPCSI_ASSIGN_MSG_INFO*/ + {EDU_EXEC, ncs_edp_uns32, 0, 0, 0, + (long)&((AVSV_DND_MSG *)0)->msg_info.d2n_compcsi_assign_msg_info.msg_id, 0, NULL}, + {EDU_EXEC, m_NCS_EDP_SACLMNODEIDT, 0, 0, 0, + (long)&((AVSV_DND_MSG *)0)->msg_info.d2n_compcsi_assign_msg_info.node_id, 0, NULL}, + {EDU_EXEC, ncs_edp_int, 0, 0, 0, + (long)&((AVSV_DND_MSG *)0)->msg_info.d2n_compcsi_assign_msg_info.msg_act, 0, NULL}, + {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0, + (long)&((AVSV_DND_MSG*)0)->msg_info.d2n_compcsi_assign_msg_info.comp_name, 0, NULL}, + {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0, + (long)&((AVSV_DND_MSG*)0)->msg_info.d2n_compcsi_assign_msg_info.csi_name, 0, NULL}, + {EDU_EXEC, avsv_edp_csi_attr_info, 0, 0, 0, + (long)&((AVSV_DND_MSG*)0)->msg_info.d2n_compcsi_assign_msg_info.info.attrs, 0, NULL}, + {EDU_END, 0, 0, 0, 0, 0, 0, NULL}, }; @@ -467,7 +481,8 @@ int avsv_dnd_msg_test_type_fnc(NCSCONTEX 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 + LCL_JMP_OFFSET_AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG = 131, + LCL_JMP_OFFSET_AVSV_D2N_COMPCSI_ASSIGN_MSG = 137 }; AVSV_DND_MSG_TYPE type; @@ -537,6 +552,8 @@ int avsv_dnd_msg_test_type_fnc(NCSCONTEX 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 ; + case AVSV_D2N_COMPCSI_ASSIGN_MSG: + return LCL_JMP_OFFSET_AVSV_D2N_COMPCSI_ASSIGN_MSG; default: break; 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 @@ -372,6 +372,16 @@ static uint32_t cpy_n2d_nd_csicomp_state return NCSCC_RC_SUCCESS; } +static void free_d2n_compcsi_info(AVSV_DND_MSG *compcsi_msg) +{ + AVSV_D2N_COMPCSI_ASSIGN_MSG_INFO *compcsi = &compcsi_msg->msg_info.d2n_compcsi_assign_msg_info; + + if (compcsi->info.attrs.list != NULL) { + free(compcsi->info.attrs.list); + compcsi->info.attrs.list = NULL; + } +} + /**************************************************************************** Name : avsv_dnd_msg_free @@ -411,6 +421,9 @@ void avsv_dnd_msg_free(AVSV_DND_MSG *msg case AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG: avsv_free_n2d_nd_csicomp_state_info(msg); break; + case AVSV_D2N_COMPCSI_ASSIGN_MSG: + free_d2n_compcsi_info(msg); + break; default: break; } diff --git a/osaf/libs/common/amf/include/amf_amfparam.h b/osaf/libs/common/amf/include/amf_amfparam.h --- a/osaf/libs/common/amf/include/amf_amfparam.h +++ b/osaf/libs/common/amf/include/amf_amfparam.h @@ -64,6 +64,7 @@ typedef enum avsv_amf_cbk_type { AVSV_AMF_PG_TRACK, AVSV_AMF_PXIED_COMP_INST, AVSV_AMF_PXIED_COMP_CLEAN, + AVSV_AMF_CSI_ATTR_CHANGE, AVSV_AMF_CBK_MAX } AVSV_AMF_CBK_TYPE; @@ -103,6 +104,7 @@ typedef struct avsv_amf_comp_reg_param_t SaAmfHandleT hdl; /* AMF handle */ SaNameT comp_name; /* comp name */ SaNameT proxy_comp_name; /* proxy comp name */ + SaVersionT version; //SAF VERSION of component. } AVSV_AMF_COMP_REG_PARAM; /* component unregister */ @@ -245,6 +247,13 @@ typedef struct avsv_amf_csi_set_param_ta AVSV_CSI_ATTRS attrs; /* contains the csi-attr list */ } AVSV_AMF_CSI_SET_PARAM; +//CSI Attribute callback msg structure from AMFND to AMF agent. +typedef struct avsv_amf_csi_attr_change_param_tag { + SaNameT csi_name; /* comp name */ + AVSV_CSI_ATTRS attrs; /* contains the csi-attr list internal*/ + SaAmfCSIAttributeListT csiAttr; /* contains the csi-attr list SAF compliant*/ +} AVSV_AMF_CSI_ATTR_CHANGE_PARAM; + /* csi remove */ typedef struct avsv_amf_csi_rem_param_tag { SaNameT comp_name; /* comp name */ @@ -283,6 +292,7 @@ typedef struct avsv_amf_cbk_info_tag { AVSV_AMF_PG_TRACK_PARAM pg_track; AVSV_AMF_PXIED_COMP_INST_PARAM pxied_comp_inst; AVSV_AMF_PXIED_COMP_CLEAN_PARAM pxied_comp_clean; + AVSV_AMF_CSI_ATTR_CHANGE_PARAM csi_attr_change; } param; } AVSV_AMF_CBK_INFO; 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 @@ -61,6 +61,18 @@ typedef enum { AVSV_VALID_MAX } AVSV_COMP_VALIDATION_RESULT_TYPE; +//Msg type for compcsi msg. +typedef enum { + AVSV_COMPCSI_ATTR_CHANGE_AND_NO_ACK = 1, + AVSV_COMPCSI_ASSIGN_AND_ACK = 2, + AVSV_COMPCSI_ASSIGN_AND_NO_ACK = 3 , + AVSV_COMPCSI_MODIFY_AND_ACK = 4, + AVSV_COMPCSI_MODIFY_AND_NO_ACK = 5, + AVSV_COMPCSI_REMOVE_AND_ACK = 6, + AVSV_COMPCSI_REMOVE_AND_NO_ACK = 7, + AVSV_COMPCSI_MAX, +} AVSV_COMPCSI_ACT; + typedef enum { AVSV_N2D_NODE_UP_MSG = 1, AVSV_N2D_REG_SU_MSG, @@ -94,6 +106,7 @@ typedef enum { AVSV_D2D_CHANGE_ROLE_RSP, // to maintain backwards compatibility AVSV_N2D_ND_SISU_STATE_INFO_MSG, AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG, + AVSV_D2N_COMPCSI_ASSIGN_MSG, AVSV_DND_MSG_MAX } AVSV_DND_MSG_TYPE; @@ -616,6 +629,20 @@ typedef struct avsv_d2n_role_change_info uint32_t role; } AVSV_D2N_ROLE_CHANGE_INFO; +/* + Message structure to send comp csi related information to AMFND. +*/ +typedef struct avsv_d2n_compcsi_assign_msg { + uint32_t msg_id; + SaClmNodeIdT node_id; + AVSV_COMPCSI_ACT msg_act; + SaNameT comp_name; + SaNameT csi_name; + union { + AVSV_CSI_ATTRS attrs; + } info; +} AVSV_D2N_COMPCSI_ASSIGN_MSG_INFO; + typedef struct avsv_dnd_msg { AVSV_DND_MSG_TYPE msg_type; union { @@ -649,6 +676,7 @@ typedef struct avsv_dnd_msg { AVSV_D2N_ADMIN_OP_REQ_MSG_INFO d2n_admin_op_req_info; AVSV_D2N_HB_MSG_INFO d2n_hb_info; AVSV_D2N_REBOOT_MSG_INFO d2n_reboot_info; + AVSV_D2N_COMPCSI_ASSIGN_MSG_INFO d2n_compcsi_assign_msg_info; } msg_info; } AVSV_DND_MSG; diff --git a/osaf/libs/common/amf/include/amf_n2avamsg.h b/osaf/libs/common/amf/include/amf_n2avamsg.h --- a/osaf/libs/common/amf/include/amf_n2avamsg.h +++ b/osaf/libs/common/amf/include/amf_n2avamsg.h @@ -40,6 +40,7 @@ extern "C" { /* Message format versions */ #define AVSV_AVND_AVA_MSG_FMT_VER_1 1 +#define AVSV_AVND_AVA_MSG_FMT_VER_2 2 /* AMF API enums */ typedef enum avsv_nda_ava_msg_type { @@ -108,6 +109,8 @@ void avsv_amf_cbk_free(AVSV_AMF_CBK_INFO void avsv_amf_csi_attr_list_free(SaAmfCSIAttributeListT *); uint32_t avsv_amf_csi_attr_convert(AVSV_AMF_CBK_INFO *); +uint32_t avsv_attrs_to_amf_attrs (SaAmfCSIAttributeListT *amf_attrs, AVSV_CSI_ATTRS *avsv_attrs); + #ifdef __cplusplus } diff --git a/osaf/libs/common/amf/n2avamsg.c b/osaf/libs/common/amf/n2avamsg.c --- a/osaf/libs/common/amf/n2avamsg.c +++ b/osaf/libs/common/amf/n2avamsg.c @@ -329,7 +329,13 @@ void avsv_amf_cbk_free(AVSV_AMF_CBK_INFO /* free the amf csi attr list */ avsv_amf_csi_attr_list_free(&cbk_info->param.csi_set.csi_desc.csiAttr); break; - + case AVSV_AMF_CSI_ATTR_CHANGE: + /* free the avsv csi attr list */ + if (cbk_info->param.csi_attr_change.attrs.number) + free(cbk_info->param.csi_attr_change.attrs.list); + /* free the amf csi attr list */ + avsv_amf_csi_attr_list_free(&cbk_info->param.csi_attr_change.csiAttr); + break; default: break; } @@ -441,7 +447,7 @@ uint32_t avsv_amf_csi_attr_convert(AVSV_ { SaAmfCSIAttributeListT *amf_attrs = 0; AVSV_CSI_ATTRS *avsv_attrs = 0; - uint32_t cnt, rc = NCSCC_RC_SUCCESS; + uint32_t rc = NCSCC_RC_SUCCESS; if ((!cbk_info) || (AVSV_AMF_CSI_SET != cbk_info->type) || (SA_AMF_CSI_ADD_ONE != cbk_info->param.csi_set.csi_desc.csiFlags)) @@ -454,6 +460,25 @@ uint32_t avsv_amf_csi_attr_convert(AVSV_ if (!avsv_attrs->number) goto done; + rc = avsv_attrs_to_amf_attrs(amf_attrs, avsv_attrs); +done: + return rc; +} + +/** + * @brief Copies csi attributes from internal structure AVSV_CSI_ATTRS + * to SaAmfCSIAttributeListT. Application understands SaAmfCSIAttributeListT. + * All memory allocation will be done here. + * + * @param amf_attrs (ptr to SaAmfCSIAttributeListT). + * @param avsv_attrs (ptr to AVSV_CSI_ATTRS). + * + * @return NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE. + */ +uint32_t avsv_attrs_to_amf_attrs (SaAmfCSIAttributeListT *amf_attrs, AVSV_CSI_ATTRS *avsv_attrs) +{ + uint32_t cnt, rc = NCSCC_RC_SUCCESS; + amf_attrs->attr = malloc(sizeof(SaAmfCSIAttributeT) * avsv_attrs->number); if (!amf_attrs->attr) { rc = NCSCC_RC_FAILURE; ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel