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
@@ -371,6 +371,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
@@ -410,6 +420,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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel