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

Reply via email to