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 Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel