Hi Lennart, You have a typo in the comment you've changed. SMF is only interested in longDnsAllowed attribute, and not in opensafNetworkName
Thanks, Zoran -----Original Message----- From: Lennart Lund [mailto:lennart.l...@ericsson.com] Sent: den 27 april 2017 15:10 To: reddy.neelaka...@oracle.com; Rafael Odzakow <rafael.odza...@ericsson.com> Cc: opensaf-devel@lists.sourceforge.net Subject: [devel] [PATCH 1/1] smf: Attribute value handling in longDn applier is incorrect [#2442] 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: -- 1.9.1 ------------------------------------------------------------------------------ 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