Add support for container/contained amf common.
---
src/amf/common/amf_amfparam.h | 22 ++++++++++++++++++++++
src/amf/common/amf_d2nmsg.h | 11 +++++++++++
src/amf/common/amf_defs.h | 2 ++
src/amf/common/amf_util.h | 3 ++-
src/amf/common/d2nedu.c | 22 +++++++++++++++++++++-
src/amf/common/n2avaedu.c | 6 +++++-
src/amf/common/n2avamsg.c | 13 +++++++++++++
src/amf/common/util.c | 32 +++++++++++++++++++++++++++++---
8 files changed, 105 insertions(+), 6 deletions(-)
diff --git a/src/amf/common/amf_amfparam.h b/src/amf/common/amf_amfparam.h
index ca3d7c869..2baa35fa8 100644
--- a/src/amf/common/amf_amfparam.h
+++ b/src/amf/common/amf_amfparam.h
@@ -67,6 +67,8 @@ typedef enum avsv_amf_cbk_type {
AVSV_AMF_PXIED_COMP_CLEAN,
AVSV_AMF_CSI_ATTR_CHANGE,
AVSV_AMF_SC_STATUS_CHANGE,
+ AVSV_AMF_CONTAINED_COMP_INST,
+ AVSV_AMF_CONTAINED_COMP_CLEAN,
AVSV_AMF_CBK_MAX
} AVSV_AMF_CBK_TYPE;
@@ -105,6 +107,14 @@ typedef struct avsv_amf_comp_reg_param_tag {
SaNameT comp_name; /* comp name */
SaNameT proxy_comp_name; /* proxy comp name */
SaVersionT version; // SAF VERSION of component.
+#define AVSV_AMF_CALLBACK_TERMINATE 0x01
+#define AVSV_AMF_CALLBACK_CSI_SET 0x02
+#define AVSV_AMF_CALLBACK_CSI_REMOVE 0x04
+#define AVSV_AMF_CALLBACK_CONTAINED_INST 0x08
+#define AVSV_AMF_CALLBACK_CONTAINED_CLEAN 0x10
+#define AVSV_AMF_CALLBACK_PROXIED_INST 0x20
+#define AVSV_AMF_CALLBACK_PROXIED_CLEAN 0x40
+ SaUint64T callbacks;
} AVSV_AMF_COMP_REG_PARAM;
/* component unregister */
@@ -284,6 +294,16 @@ typedef struct avsv_amf_pxied_comp_clean_param_tag {
SaNameT comp_name; /* comp name */
} AVSV_AMF_PXIED_COMP_CLEAN_PARAM;
+/* contained component instantiate */
+typedef struct avsv_amf_contained_comp_inst_param_tag {
+ SaNameT comp_name; /* comp name */
+} AVSV_AMF_CONTAINED_COMP_INST_PARAM;
+
+/* contained component cleanup */
+typedef struct avsv_amf_contained_comp_clean_param_tag {
+ SaNameT comp_name; /* comp name */
+} AVSV_AMF_CONTAINED_COMP_CLEAN_PARAM;
+
/* wrapper structure for all the callbacks */
typedef struct avsv_amf_cbk_info_tag {
SaAmfHandleT hdl; /* AMF handle */
@@ -299,6 +319,8 @@ typedef struct avsv_amf_cbk_info_tag {
AVSV_AMF_PXIED_COMP_CLEAN_PARAM pxied_comp_clean;
AVSV_AMF_CSI_ATTR_CHANGE_PARAM csi_attr_change;
AVSV_AMF_SC_STATUS_CHANGE_PARAM sc_status_change;
+ AVSV_AMF_CONTAINED_COMP_INST_PARAM contained_inst;
+ AVSV_AMF_CONTAINED_COMP_CLEAN_PARAM contained_clean;
} param;
} AVSV_AMF_CBK_INFO;
diff --git a/src/amf/common/amf_d2nmsg.h b/src/amf/common/amf_d2nmsg.h
index e99c0399c..187279d2a 100644
--- a/src/amf/common/amf_d2nmsg.h
+++ b/src/amf/common/amf_d2nmsg.h
@@ -52,6 +52,7 @@ extern "C" {
#define AVSV_AVD_AVND_MSG_FMT_VER_5 5
#define AVSV_AVD_AVND_MSG_FMT_VER_6 6
#define AVSV_AVD_AVND_MSG_FMT_VER_7 7
+#define AVSV_AVD_AVND_MSG_FMT_VER_8 8
/* Internode/External Components Validation result */
typedef enum {
@@ -110,6 +111,7 @@ typedef enum {
AVSV_N2D_ND_SISU_STATE_INFO_MSG,
AVSV_N2D_ND_CSICOMP_STATE_INFO_MSG,
AVSV_D2N_COMPCSI_ASSIGN_MSG,
+ AVSV_D2N_CONTAINED_SU_MSG,
AVSV_DND_MSG_MAX
} AVSV_DND_MSG_TYPE;
@@ -603,6 +605,14 @@ typedef struct avsv_d2n_presence_su_msg_info_tag {
bool term_state;
} AVSV_D2N_PRESENCE_SU_MSG_INFO;
+typedef struct avsv_d2n_contained_su_msg_info_tag {
+ uint32_t msg_id;
+ SaClmNodeIdT node_id;
+ SaNameT container_su_name;
+ SaNameT contained_su_name;
+ bool term_state;
+} AVSV_D2N_CONTAINED_SU_MSG_INFO;
+
typedef struct avsv_d2n_data_verify_msg_info {
uint32_t snd_id_cnt;
uint32_t rcv_id_cnt;
@@ -701,6 +711,7 @@ typedef struct avsv_dnd_msg {
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;
+ AVSV_D2N_CONTAINED_SU_MSG_INFO d2n_contained_su_msg_info;
} msg_info;
} AVSV_DND_MSG;
diff --git a/src/amf/common/amf_defs.h b/src/amf/common/amf_defs.h
index 24549b3af..3ee5a5aca 100644
--- a/src/amf/common/amf_defs.h
+++ b/src/amf/common/amf_defs.h
@@ -72,6 +72,8 @@ typedef enum {
AVSV_COMP_TYPE_EXTERNAL_PRE_INSTANTIABLE,
AVSV_COMP_TYPE_EXTERNAL_NON_PRE_INSTANTIABLE,
AVSV_COMP_TYPE_NON_SAF,
+ AVSV_COMP_TYPE_CONTAINER,
+ AVSV_COMP_TYPE_CONTAINED
} AVSV_COMP_TYPE_VAL;
/*
diff --git a/src/amf/common/amf_util.h b/src/amf/common/amf_util.h
index ffb8b21c6..15ecbcaad 100644
--- a/src/amf/common/amf_util.h
+++ b/src/amf/common/amf_util.h
@@ -50,7 +50,8 @@ extern "C" {
#define IS_COMP_PROXIED_NPI(category) (((category)&SA_AMF_COMP_PROXIED_NPI))
#define IS_COMP_LOCAL(category) \
- (((category)&SA_AMF_COMP_SA_AWARE) || ((category)&SA_AMF_COMP_LOCAL))
+ (((category)&SA_AMF_COMP_SA_AWARE) || ((category)&SA_AMF_COMP_LOCAL) || \
+ ((category)&SA_AMF_COMP_CONTAINER) || ((category)&SA_AMF_COMP_CONTAINED))
#define IS_COMP_CONTAINER(category) (((category)&SA_AMF_COMP_CONTAINER))
diff --git a/src/amf/common/d2nedu.c b/src/amf/common/d2nedu.c
index c3e2485b0..e7c1006cf 100644
--- a/src/amf/common/d2nedu.c
+++ b/src/amf/common/d2nedu.c
@@ -558,6 +558,23 @@ uint32_t avsv_edp_dnd_msg(EDU_HDL *hdl, EDU_TKN *edu_tkn,
NCSCONTEXT ptr,
->msg_info.d2n_compcsi_assign_msg_info.info.attrs,
0, NULL},
+ /* AVSV_D2N_CONTAINED_SU_MSG_INFO*/
+ {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
+ (long)&((AVSV_DND_MSG *)0)->
+ msg_info.d2n_contained_su_msg_info.msg_id, 0, NULL},
+ {EDU_EXEC, m_NCS_EDP_SACLMNODEIDT, 0, 0, 0,
+ (long)&((AVSV_DND_MSG *)0)->
+ msg_info.d2n_contained_su_msg_info.node_id, 0, NULL},
+ {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
+ (long)&((AVSV_DND_MSG *)0)->
+ msg_info.d2n_contained_su_msg_info.container_su_name, 0, NULL},
+ {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
+ (long)&((AVSV_DND_MSG *)0)->
+ msg_info.d2n_contained_su_msg_info.contained_su_name, 0, NULL},
+ {EDU_EXEC, ncs_edp_ncs_bool, 0, 0, EDU_EXIT,
+ (long)&((AVSV_DND_MSG *)0)->
+ msg_info.d2n_contained_su_msg_info.term_state, 0, NULL},
+
{EDU_END, 0, 0, 0, 0, 0, 0, NULL},
};
@@ -626,7 +643,8 @@ int avsv_dnd_msg_test_type_fnc(NCSCONTEXT arg)
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_D2N_COMPCSI_ASSIGN_MSG = 137 };
+ LCL_JMP_OFFSET_AVSV_D2N_COMPCSI_ASSIGN_MSG = 137,
+ LCL_JMP_OFFSET_AVSV_D2N_CONTAINED_SU_MSG = 143 };
AVSV_DND_MSG_TYPE type;
if (arg == NULL)
@@ -697,6 +715,8 @@ int avsv_dnd_msg_test_type_fnc(NCSCONTEXT arg)
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;
+ case AVSV_D2N_CONTAINED_SU_MSG:
+ return LCL_JMP_OFFSET_AVSV_D2N_CONTAINED_SU_MSG;
default:
break;
diff --git a/src/amf/common/n2avaedu.c b/src/amf/common/n2avaedu.c
index 98be90d8c..5171d5fe1 100644
--- a/src/amf/common/n2avaedu.c
+++ b/src/amf/common/n2avaedu.c
@@ -299,9 +299,13 @@ uint32_t avsv_edp_api_info(EDU_HDL *hdl, EDU_TKN *edu_tkn,
NCSCONTEXT ptr,
(long)&((AVSV_AMF_API_INFO *)0)->param.reg.hdl, 0, NULL},
{EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
(long)&((AVSV_AMF_API_INFO *)0)->param.reg.comp_name, 0, NULL},
- {EDU_EXEC, ncs_edp_sanamet, 0, 0, EDU_EXIT,
+ {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
(long)&((AVSV_AMF_API_INFO *)0)->param.reg.proxy_comp_name, 0,
NULL},
+ /* XXX really need to use version here */
+ {EDU_EXEC, m_NCS_EDP_SAUINT64T, 0, 0, EDU_EXIT,
+ (long)&((AVSV_AMF_API_INFO *)0)->param.reg.callbacks, 0,
+ NULL},
{EDU_EXEC, m_NCS_EDP_SAAMFHANDLET, 0, 0, 0,
(long)&((AVSV_AMF_API_INFO *)0)->param.unreg.hdl, 0, NULL},
diff --git a/src/amf/common/n2avamsg.c b/src/amf/common/n2avamsg.c
index e4f659e0b..6415139b7 100644
--- a/src/amf/common/n2avamsg.c
+++ b/src/amf/common/n2avamsg.c
@@ -484,6 +484,19 @@ uint32_t avsv_amf_cbk_copy(AVSV_AMF_CBK_INFO **o_dcbk,
AVSV_AMF_CBK_INFO *scbk)
&scbk->param.csi_attr_change.csiAttr);
}
break;
+
+ case AVSV_AMF_CONTAINED_COMP_INST:
+ osaf_extended_name_alloc(osaf_extended_name_borrow(
+ &scbk->param.contained_inst.comp_name),
+ &(*o_dcbk)->param.contained_inst.comp_name);
+ break;
+
+ case AVSV_AMF_CONTAINED_COMP_CLEAN:
+ osaf_extended_name_alloc(osaf_extended_name_borrow(
+ &scbk->param.contained_clean.comp_name),
+ &(*o_dcbk)->param.contained_clean.comp_name);
+ break;
+
default:
osafassert(0);
}
diff --git a/src/amf/common/util.c b/src/amf/common/util.c
index fc2c0f4af..ec76c3245 100644
--- a/src/amf/common/util.c
+++ b/src/amf/common/util.c
@@ -194,6 +194,7 @@ void avsv_create_association_class_dn(const SaNameT
*child_dn,
SaConstStringT parent_dn_ptr = 0;
int num_of_commas_in_child_dn = 0;
+ TRACE_ENTER();
if (child_dn) {
child_dn_len = osaf_extended_name_length(child_dn);
child_dn_ptr = osaf_extended_name_borrow(child_dn);
@@ -241,6 +242,10 @@ void avsv_create_association_class_dn(const SaNameT
*child_dn,
if (dn) {
osaf_extended_name_steal(buf, dn);
}
+ TRACE_LEAVE2("child_dn: %s parent_dn: %s dn: %s",
+ child_dn_ptr ? child_dn_ptr : "no child dn",
+ parent_dn_ptr ? parent_dn_ptr : "no parent dn",
+ buf);
}
void avsv_sanamet_init_from_association_dn(const SaNameT *haystack, SaNameT
*dn,
@@ -295,6 +300,30 @@ avsv_amfcompcategory_to_avsvcomptype(SaAmfCompCategoryT
saf_comp_category)
{
AVSV_COMP_TYPE_VAL avsv_comp_type = AVSV_COMP_TYPE_INVALID;
+ /* proxy is currently not supported */
+
+ if (saf_comp_category & SA_AMF_COMP_CONTAINER) {
+ /* proxy and container not currently supported */
+ if (saf_comp_category & SA_AMF_COMP_PROXY ||
+ saf_comp_category & SA_AMF_COMP_PROXIED ||
+ saf_comp_category & SA_AMF_COMP_CONTAINED ||
+ saf_comp_category & SA_AMF_COMP_PROXIED_NPI) {
+ return AVSV_COMP_TYPE_INVALID;
+ } else
+ return AVSV_COMP_TYPE_CONTAINER;
+ }
+
+ if (saf_comp_category & SA_AMF_COMP_CONTAINED) {
+ /* proxy and container not currently supported */
+ if (saf_comp_category & SA_AMF_COMP_PROXY ||
+ saf_comp_category & SA_AMF_COMP_PROXIED ||
+ saf_comp_category & SA_AMF_COMP_CONTAINER ||
+ saf_comp_category & SA_AMF_COMP_PROXIED_NPI) {
+ return AVSV_COMP_TYPE_INVALID;
+ } else
+ return AVSV_COMP_TYPE_CONTAINED;
+ }
+
if (saf_comp_category & SA_AMF_COMP_SA_AWARE) {
if ((saf_comp_category &
~(SA_AMF_COMP_SA_AWARE | SA_AMF_COMP_LOCAL)) == 0)
@@ -348,9 +377,6 @@ avsv_amfcompcategory_to_avsvcomptype(SaAmfCompCategoryT
saf_comp_category)
return AVSV_COMP_TYPE_EXTERNAL_NON_PRE_INSTANTIABLE;
}
- /* Container type not yet supported, will return AVSV_COMP_TYPE_INVALID
- */
-
return avsv_comp_type;
}
--
2.14.4
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel