Hi Nagu, Is the patch only valid for 5.1? /Regards Hans
-----Original Message----- From: Hans Nordebäck [mailto:hans.nordeb...@ericsson.com] Sent: den 18 april 2017 14:49 To: nagendr...@oracle.com; praveen.malv...@oracle.com; Minh Hon Chau <minh.c...@dektech.com.au>; Gary Lee <gary....@dektech.com.au> Cc: opensaf-devel@lists.sourceforge.net Subject: Re: [devel] [PATCH 1 of 1] amfd: disallow delete of CtCs object if Ct maps to comp [#2428] Hi Nagu, can you please use the new git submit for review. /Thanks HansN On 04/14/2017 03:22 PM, nagendr...@oracle.com wrote: > osaf/services/saf/amf/amfd/ctcstype.cc | 60 > ++++++++++++++++++++++++++++++++- > 1 files changed, 58 insertions(+), 2 deletions(-) > > > diff --git a/osaf/services/saf/amf/amfd/ctcstype.cc > b/osaf/services/saf/amf/amfd/ctcstype.cc > --- a/osaf/services/saf/amf/amfd/ctcstype.cc > +++ b/osaf/services/saf/amf/amfd/ctcstype.cc > @@ -26,7 +26,7 @@ > #include <include/csi.h> > > AmfDb<std::string, AVD_CTCS_TYPE> *ctcstype_db = nullptr; > - > +static void find_ct_name_from_association(const SaNameT *haystack, > +SaNameT *dn, const char *needle); > static void ctcstype_db_add(AVD_CTCS_TYPE *ctcstype) > { > unsigned int rc = ctcstype_db->insert(ctcstype->name,ctcstype); > @@ -185,17 +185,73 @@ static SaAisErrorT ctcstype_ccb_complete > report_ccb_validation_error(opdata, "Modification of > SaAmfCtCsType not supported"); > break; > case CCBUTIL_DELETE: > + AVD_CTCS_TYPE *ctcstype; > + SaNameT ct_name; > + AVD_COMP_TYPE *comp_type; > + AVD_COMP *comp; > + CcbUtilOperationData_t *t_opData; > + > + ctcstype = > ctcstype_db->find(Amf::to_string(&opdata->objectName)); > + if (ctcstype != nullptr) { > + find_ct_name_from_association(&opdata->objectName, > &ct_name, ",safVersion"); > + TRACE("'%s'", ct_name.value); > + comp_type = comptype_db->find(Amf::to_string(&ct_name)); > + if ((comp_type) && (nullptr != > comp_type->list_of_comp)) { > + /* check whether there exists a delete > operation for > + * each of the Comp in the comp_type list in > the current CCB > + */ > + bool comp_exist = false; > + TRACE("SaAmfCompType '%s' has components", > comp_type->name.value); > + comp = comp_type->list_of_comp; > + while (comp != nullptr) { > + TRACE("%s", comp->comp_info.name.value); > + t_opData = > ccbutil_getCcbOpDataByDN(opdata->ccbId, &comp->comp_info.name); > + TRACE("%p", t_opData); > + if ((t_opData == nullptr) || > (t_opData->operationType != CCBUTIL_DELETE)) { > + TRACE("Here %p", t_opData); > + comp_exist = true; > + break; > + } > + comp = comp->comp_type_list_comp_next; > + } > + if (comp_exist == true) { > + rc = SA_AIS_ERR_BAD_OPERATION; > + report_ccb_validation_error(opdata, > "SaAmfCompType '%s' is in use", comp_type->name.value); > + goto done; > + } > + } else > + TRACE("SaAmfCompType '%p'. SaAmfCompType '%s' > has no components", comp_type, ct_name.value); > + } > rc = SA_AIS_OK; > break; > default: > osafassert(0); > break; > } > - > +done: > TRACE_LEAVE2("%u", rc); > return rc; > } > > +/** > + * Initialize a DN by searching for needle in haystack where two times > safVersion comes. > + * @param haystack > + * @param dn > + * @param needle > + * @note: > "safSupportedCsType=safVersion=1\,safCSType=AmfDemo1,safVersion=1,safCompType=AmfDemo1" > + */ > +static void find_ct_name_from_association(const SaNameT *haystack, > +SaNameT *dn, const char *needle) { > + char *p; > + > + memset(dn, 0, sizeof(SaNameT)); > + p = strstr((char*)haystack->value, needle); > + osafassert(p); > + p++; /* Increament after comma (,) */ > + dn->length = strlen(p); > + memcpy(dn->value, p, dn->length); } > + > static void ctcstype_ccb_apply_cb(CcbUtilOperationData_t *opdata) > { > AVD_CTCS_TYPE *ctcstype; ------------------------------------------------------------------------------ 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 ------------------------------------------------------------------------------ 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