Hi Zoran, I pushed both the patches and updated the ticket with the following comments:
- testing backward compatibility - evaluate changes to CLMNA Mathi. > -----Original Message----- > From: Mathivanan Naickan Palanivelu > Sent: Tuesday, August 09, 2016 11:55 AM > To: Zoran Milinkovic > Cc: opensaf-devel@lists.sourceforge.net > Subject: Re: [devel] [PATCH 2 of 2] clm: add support for long RDN for clm > service [#1906] > > Ack, > Mathi. > > > > -----Original Message----- > > From: Zoran Milinkovic [mailto:zoran.milinko...@ericsson.com] > > Sent: Saturday, July 16, 2016 3:27 AM > > To: Mathivanan Naickan Palanivelu > > Cc: opensaf-devel@lists.sourceforge.net > > Subject: [PATCH 2 of 2] clm: add support for long RDN for clm service > > [#1906] > > > > osaf/services/saf/clmsv/clms/clms_imm.c | 73 > > +++++++++++++++++++++++++++---- > > osaf/services/saf/clmsv/clms/clms_main.c | 5 ++ > > osaf/services/saf/clmsv/clms/clms_util.c | 7 +++ > > 3 files changed, 75 insertions(+), 10 deletions(-) > > > > > > Add support for long RDN to support RDN values longer than 64 bytes > > > > diff --git a/osaf/services/saf/clmsv/clms/clms_imm.c > > b/osaf/services/saf/clmsv/clms/clms_imm.c > > --- a/osaf/services/saf/clmsv/clms/clms_imm.c > > +++ b/osaf/services/saf/clmsv/clms/clms_imm.c > > @@ -18,6 +18,7 @@ > > #include <saImmOi.h> > > > > #include "clms.h" > > +#include "osaf_extended_name.h" > > > > extern struct ImmutilWrapperProfile immutilWrapperProfile; > > > > @@ -222,9 +223,17 @@ CLMS_CLUSTER_NODE > *clms_node_new(SaNameT > > > > } else if (!strcmp(attr->attrName, "saClmNodeEE")) { > > SaNameT *name = (SaNameT *)value; > > - TRACE("saClmNodeEE attribute name's length %d", > > name->length); > > - > > - if (name->length != 0) { > > + size_t nameLen = > > osaf_extended_name_length(name); > > + > > + TRACE("saClmNodeEE attribute name's length %lu", > > nameLen); > > + > > + if (nameLen != 0) { > > + if (nameLen >= SA_MAX_NAME_LENGTH) { > > + LOG_ER("saClmNodeEE attribute > > name length is longer than 255"); > > + free(node); > > + node = NULL; > > + goto done; > > + } > > if (strncmp((const char *)name- > > >value,"safEE=",6)){ > > LOG_ER("Please provide the saf > > compliant ee name"); > > free(node); > > @@ -1383,8 +1392,19 @@ static SaAisErrorT clms_imm_ccb_obj_crea > > uint32_t rt; > > CcbUtilCcbData_t *ccb_util_ccb_data; > > CcbUtilOperationData_t *operation = NULL; > > - > > - TRACE_ENTER2("CCB ID %llu, class %s, parent %s", ccbId, className, > > parentName->value); > > + size_t parentNameLen = 0; > > + > > + TRACE_ENTER2("CCB ID %llu, class %s, parent %s", ccbId, className, > > + parentName ? > > osaf_extended_name_borrow(parentName) : "(null)"); > > + > > + if(parentName) { > > + parentNameLen = > > osaf_extended_name_length(parentName); > > + if(parentNameLen >= SA_MAX_NAME_LENGTH) { > > + LOG_ER("Parent name is longer than 255"); > > + rc = SA_AIS_ERR_BAD_OPERATION; > > + goto done; > > + } > > + } > > > > if ((ccb_util_ccb_data = ccbutil_getCcbData(ccbId)) != NULL) { > > int i = 0; > > @@ -1406,17 +1426,30 @@ static SaAisErrorT clms_imm_ccb_obj_crea > > } else if (!strncmp(attrValue->attrName, "safNode", > > 7)) { > > if (attrValue->attrValueType == > > SA_IMM_ATTR_SASTRINGT) { > > SaStringT rdnVal = *((SaStringT > > *)attrValue->attrValues[0]); > > - if ((parentName != NULL) && > > (parentName->length > 0)) { > > + if ((parentName != NULL) && > > (parentNameLen > 0) > > + && (strlen(rdnVal) + > > parentNameLen + 1) < SA_MAX_NAME_LENGTH) { > > operation- > > >objectName.length = > > - (SaUint16T)sprintf((char > > *)operation->objectName.value, "%s,%s", > > - rdnVal, > > parentName->value); > > + > > (SaUint16T)sprintf((char *)operation->objectName.value, "%s,%s", > > + > > rdnVal, parentName->value); > > } else { > > + if(!parentName || > > parentNameLen == 0) { > > + LOG_ER("Node DN > > name is incorrect. Parent is NULL or empty"); > > + } else { > > + LOG_ER("Node DN > > name is incorrect. DN is longer than 255"); > > + } > > rc = > > SA_AIS_ERR_BAD_OPERATION; > > + goto done; > > } > > } > > > > TRACE("Operation's object Name %s", > > operation->objectName.value); > > - > > + } else if (!strncmp(attrValue->attrName, > > "saClmNodeEE", 11) && attrValue->attrValuesNumber == 1) { > > + SaNameT *name = (SaNameT *)attrValue- > > >attrValues[0]; > > + if(osaf_extended_name_length(name) >= > > SA_MAX_NAME_LENGTH) { > > + LOG_ER("saClmNodeEE is longer than > > 255"); > > + rc = SA_AIS_ERR_BAD_OPERATION; > > + goto done; > > + } > > } > > } > > } > > @@ -1471,17 +1504,37 @@ static SaAisErrorT clms_imm_ccb_obj_modi { > > SaAisErrorT rc = SA_AIS_OK; > > struct CcbUtilCcbData *ccbUtilCcbData; > > + int i = 0; > > + SaImmAttrModificationT_2 *attrMod; > > + SaNameT *name; > > > > TRACE_ENTER2("CCB ID %llu for object-name:%s ", ccbId, > > objectName->value); > > > > if ((ccbUtilCcbData = ccbutil_getCcbData(ccbId)) != NULL) { > > + /* saClmNodeEE cannot be longer than 255 */ > > + while ((attrMod = (SaImmAttrModificationT_2 > > *)attrMods[i++]) != NULL) { > > + if (strncmp(attrMod->modAttr.attrName, > > "saClmNodeEE", 11) != 0) > > + continue; > > + > > + if(attrMod->modAttr.attrValuesNumber == 0) { > > + break; > > + } > > + > > + name = (SaNameT *)attrMod- > > >modAttr.attrValues[0]; > > + if(osaf_extended_name_length(name) >= > > SA_MAX_NAME_LENGTH) { > > + LOG_ER("saClmNodeEE is longer than 255"); > > + rc = SA_AIS_ERR_BAD_OPERATION; > > + break; > > + } > > + } > > + > > /*memorize the modification request */ > > if (ccbutil_ccbAddModifyOperation(ccbUtilCcbData, > > objectName, attrMods) != 0) { > > LOG_ER("Failed ccb object modify %s", objectName- > > >value); > > rc = SA_AIS_ERR_BAD_OPERATION; > > } > > } else { > > - LOG_ER("Failed to get CCB objectfor %llu", ccbId); > > + LOG_ER("Failed to get CCB object for %llu", ccbId); > > rc = SA_AIS_ERR_NO_MEMORY; > > } > > > > diff --git a/osaf/services/saf/clmsv/clms/clms_main.c > > b/osaf/services/saf/clmsv/clms/clms_main.c > > --- a/osaf/services/saf/clmsv/clms/clms_main.c > > +++ b/osaf/services/saf/clmsv/clms/clms_main.c > > @@ -446,6 +446,11 @@ int main(int argc, char *argv[]) > > > > daemonize(argc, argv); > > > > + if(setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1)) { > > + LOG_ER("Failed to set SA_ENABLE_EXTENDED_NAMES"); > > + goto done; > > + } > > + > > if (clms_init() != NCSCC_RC_SUCCESS) { > > LOG_ER("clms_init failed"); > > goto done; > > diff --git a/osaf/services/saf/clmsv/clms/clms_util.c > > b/osaf/services/saf/clmsv/clms/clms_util.c > > --- a/osaf/services/saf/clmsv/clms/clms_util.c > > +++ b/osaf/services/saf/clmsv/clms/clms_util.c > > @@ -17,6 +17,7 @@ > > > > #include "clms.h" > > #include "osaf_time.h" > > +#include "osaf_extended_name.h" > > > > static const SaNameT _clmSvcUsrName = { > > .value = "safApp=safClmService", > > @@ -292,6 +293,12 @@ uint32_t clms_node_dn_chk(SaNameT *objNa > > char *tmpstr; > > TRACE_ENTER(); > > > > + if(osaf_extended_name_length(objName) >= > > SA_MAX_NAME_LENGTH) { > > + LOG_ER("Object name is longer than 255: %s", > > osaf_extended_name_borrow(objName)); > > + TRACE_LEAVE(); > > + return NCSCC_RC_FAILURE; > > + } > > + > > if (!strncmp((char *)objName->value, "safNode=", 8)) { > > tmpstr = strchr((char *)objName->value, ','); > > if (tmpstr != NULL) > > ------------------------------------------------------------------------------ > What NetFlow Analyzer can do for you? Monitors network bandwidth and > traffic patterns at an interface-level. Reveals which users, apps, and > protocols are consuming the most bandwidth. Provides multi-vendor support > for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using > capacity planning reports. http://sdm.link/zohodev2dev > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensaf-devel ------------------------------------------------------------------------------ What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. http://sdm.link/zohodev2dev _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel