Hi Neel, I am not sure I understand what you mean? All of the #2442 changes are needed not only the "> + attribute = attrMod->modAttr;" fix. I suggest that you push your #2431 patch as is after the #2442 fix is pushed
Thanks Lennart > -----Original Message----- > From: Neelakanta Reddy [mailto:reddy.neelaka...@oracle.com] > Sent: den 27 april 2017 15:59 > To: Lennart Lund <lennart.l...@ericsson.com>; Rafael Odzakow > <rafael.odza...@ericsson.com> > Cc: opensaf-devel@lists.sourceforge.net > Subject: Re: [PATCH 1/1] smf: Attribute value handling in longDn applier is > incorrect [#2442] > > Hi Lennart, > > From IMM Version A.2.17, the IMM modify callback will have canonical > attributes. > All the attributes in the class along with the modified attributes. > > The code in CcbApplyCallback in the file > "src/smf/smfd/SmfImmApplierHdl.cc", if the attrmods are more than one > then the following correction has to be made: > > diff --git a/src/smf/smfd/SmfImmApplierHdl.cc > b/src/smf/smfd/SmfImmApplierHdl.cc > --- a/src/smf/smfd/SmfImmApplierHdl.cc > +++ b/src/smf/smfd/SmfImmApplierHdl.cc > @@ -455,6 +455,7 @@ static void CcbApplyCallback(SaImmOiHand > if (attribute_name_.compare(attribute.attrName) != 0) { > // Not found > attrMod = opdata->param.modify.attrMods[i]; > + attribute = attrMod->modAttr; > continue; > } > > > I tested with A.2.17 IMM version, the longdns are working fine.. If you > agree with the above patch, re-publish the patch. > The #2442 has to go before #2431. > > Thanks, > Neel. > > > On 2017/04/27 06:40 PM, Lennart Lund wrote: > > SMF has an IMM applier to track changes of attribute longDnsAllowed in > OpensafImm class. > > Fix that the applier does not find the value if the list of attributes to be > handled in the > > apply callback contains more than one attribute. Also if the found attribute > is not the serached > > one the cached attribute value is set to invalid > > --- > > src/smf/smfd/SmfImmApplierHdl.cc | 28 +++++++++++++++------------- > > 1 file changed, 15 insertions(+), 13 deletions(-) > > > > diff --git a/src/smf/smfd/SmfImmApplierHdl.cc > b/src/smf/smfd/SmfImmApplierHdl.cc > > index d325ec4..693446b 100644 > > --- a/src/smf/smfd/SmfImmApplierHdl.cc > > +++ b/src/smf/smfd/SmfImmApplierHdl.cc > > @@ -436,15 +436,12 @@ static void CcbApplyCallback(SaImmOiHandleT > immOiHandle, SaImmOiCcbIdT ccbId) { > > > > objName = osaf_extended_name_borrow(&opdata->objectName); > > if (object_name_.compare(objName) != 0) { > > - TRACE("%s: Object \"%s\" not an OpensafConfig object", > __FUNCTION__, > > - objName); > > + LOG_NO("%s: Object \"%s\" wrong object", __FUNCTION__, > objName); > > goto done; > > } > > > > - /* Read value in opensafNetworkName > > - * Note: This is implemented as a loop in case more attributes are > > - * added in the class in the future. For now the only > > - * attribute of interest here is opensafNetworkName > > + /* Read value > > + * Note: For now the only attribute of interest here is > opensafNetworkName > > */ > > TRACE("%s: Read value in attributes", __FUNCTION__); > > attrMod = opdata->param.modify.attrMods[0]; > > @@ -455,21 +452,26 @@ static void CcbApplyCallback(SaImmOiHandleT > immOiHandle, SaImmOiCcbIdT ccbId) { > > if (attribute_name_.compare(attribute.attrName) != 0) { > > // Not found > > attrMod = opdata->param.modify.attrMods[i]; > > + attribute = attrMod->modAttr; > > continue; > > } > > > > // Attribute found > > value = static_cast<SaUint32T *>(attribute.attrValues[0]); > > + TRACE("Attribute found: attrName '%s', value = %d", > > + attribute.attrName, *value); > > break; > > } > > > > - if (value == nullptr) { > > - TRACE("%s: Value is nullptr", __FUNCTION__); > > - SetAttributeValue(""); > > - attribute_value_is_valid_ = false; > > - } else { > > - SetAttributeValue(std::to_string(*value)); > > - attribute_value_is_valid_ = true; > > + if (attrMod != nullptr) { > > + if (value == nullptr) { > > + TRACE("%s: Value is nullptr", __FUNCTION__); > > + SetAttributeValue(""); > > + attribute_value_is_valid_ = false; > > + } else { > > + SetAttributeValue(std::to_string(*value)); > > + attribute_value_is_valid_ = true; > > + } > > } > > > > done: ------------------------------------------------------------------------------ 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