Aren't the checks in imma redundant? The same ones seems to be done in the server. /Hans
> -----Original Message----- > From: Zoran Milinkovic [mailto:zoran.milinko...@ericsson.com] > Sent: den 5 december 2013 16:05 > To: reddy.neelaka...@oracle.com > Cc: opensaf-devel@lists.sourceforge.net > Subject: [devel] [PATCH 1 of 3] IMM: API support for NO_DANGLING flag [#49] > > osaf/libs/agents/saf/imma/imma_om_api.c | 36 +++++++++++++-- > osaf/libs/common/immsv/include/immpbe_dump.hh | 2 +- > osaf/libs/common/immsv/include/immsv_api.h | 9 ++++ > osaf/libs/saf/include/Makefile.am | 3 +- > osaf/libs/saf/include/saImmOm_A_2_12.h | 2 + > osaf/libs/saf/include/saImmOm_A_2_13.h | 60 > +++++++++++++++++++++++++++ > osaf/libs/saf/libSaImm/Makefile.am | 2 +- > 7 files changed, 106 insertions(+), 8 deletions(-) > > > IMM API support for reference integrity (NO_DANGLING flag) > > diff --git a/osaf/libs/agents/saf/imma/imma_om_api.c > b/osaf/libs/agents/saf/imma/imma_om_api.c > --- a/osaf/libs/agents/saf/imma/imma_om_api.c > +++ b/osaf/libs/agents/saf/imma/imma_om_api.c > @@ -4173,7 +4173,7 @@ SaAisErrorT saImmOmClassCreate_2(SaImmHa > for (i = 0; attr != 0; attr = attrDefinitions[++i]) { > if (attr->attrName == NULL) { > TRACE("NULL attrName , not allowed."); > - TRACE_LEAVE(); > + TRACE_LEAVE(); > return SA_AIS_ERR_INVALID_PARAM; > } > > @@ -4181,21 +4181,47 @@ SaAisErrorT saImmOmClassCreate_2(SaImmHa > if(((attr->attrValueType != SA_IMM_ATTR_SANAMET ) && > (attr->attrValueType != > SA_IMM_ATTR_SASTRINGT))) { > TRACE("ERR_INVALID_PARAM: RDN '%s' must be of > type SaNameT or SaStringT", attr->attrName); > - TRACE_LEAVE(); > + TRACE_LEAVE(); > return SA_AIS_ERR_INVALID_PARAM; > } > > if(attr->attrFlags & SA_IMM_ATTR_MULTI_VALUE) { > TRACE("ERR_INVALID_PARAM: RDN '%s' can not be > multivalued", attr->attrName); > TRACE_LEAVE(); > - return SA_AIS_ERR_INVALID_PARAM; > - } > + return SA_AIS_ERR_INVALID_PARAM; > + } > + > + if(attr->attrFlags & SA_IMM_ATTR_NO_DANGLING) { > + TRACE("ERR_INVALID_PARAM: RDN '%s' can not have > NO_DANGLING flag", attr->attrName); > + TRACE_LEAVE(); > + return SA_AIS_ERR_INVALID_PARAM; > + } > + } > + > + if(attr->attrFlags & SA_IMM_ATTR_NO_DANGLING) { > + if(classCategory == SA_IMM_CLASS_RUNTIME) { > + TRACE("ERR_INVALID_PARAM: NO_DANGLING attribute > '%s' cannot be defined for runtime class", > attr->attrName); > + TRACE_LEAVE(); > + return SA_AIS_ERR_INVALID_PARAM; > + } > + > + if(attr->attrValueType != SA_IMM_ATTR_SANAMET) { > + TRACE("ERR_INVALID_PARAM: Attribute '%s' is > flagged NO_DANGLING, must be of type SaNameT", > attr->attrName); > + TRACE_LEAVE(); > + return SA_AIS_ERR_INVALID_PARAM; > + } > + > + if(attr->attrFlags & SA_IMM_ATTR_RUNTIME) { > + TRACE("ERR_INVALID_PARAM: Runtime attribute > '%s' cannot have NO_DANGLING flag", attr- > >attrName); > + TRACE_LEAVE(); > + return SA_AIS_ERR_INVALID_PARAM; > + } > } > } > > if (cb->is_immnd_up == false) { > TRACE_2("ERR_TRY_AGAIN: IMMND is DOWN"); > - TRACE_LEAVE(); > + TRACE_LEAVE(); > return SA_AIS_ERR_TRY_AGAIN; > } > > diff --git a/osaf/libs/common/immsv/include/immpbe_dump.hh > b/osaf/libs/common/immsv/include/immpbe_dump.hh > --- a/osaf/libs/common/immsv/include/immpbe_dump.hh > +++ b/osaf/libs/common/immsv/include/immpbe_dump.hh > @@ -31,7 +31,7 @@ > > #define RELEASE_CODE 'A' > #define MAJOR_VERSION 2 > -#define MINOR_VERSION 12 > +#define MINOR_VERSION 13 > > /* Prototypes */ > typedef std::map<std::string, SaImmAttrFlagsT> AttrMap; > diff --git a/osaf/libs/common/immsv/include/immsv_api.h > b/osaf/libs/common/immsv/include/immsv_api.h > --- a/osaf/libs/common/immsv/include/immsv_api.h > +++ b/osaf/libs/common/immsv/include/immsv_api.h > @@ -76,6 +76,15 @@ extern "C" { > #define OPENSAF_IMM_REPL_B_NAME "@OpenSafImmReplicatorB" > > /* Used internally in the SaImmCcbFlagsT space to indicate that > + a ccb currently contains at lest one operation that either > + a) creates an object with no dangling attribute(s) (that is/are not > empty). > + b) deletes an object that has no dangling attribute(s) (that are not > empty). > + c) modifies a NO_DANGLING attribute, > + d) deletes an object that is referred to by some NO_DANGLING attribute. > +*/ > +#define OPENSAF_IMM_CCB_NO_DANGLING_MUTATE 0x40000000 > + > +/* Used internally in the SaImmCcbFlagsT space to indicate that > a ccb currently contains at least one create or at least one > modify on an object that has SA_IMM_ATTR_NOTIFY set on one of > its attributes and special applier is involved. This means that > diff --git a/osaf/libs/saf/include/Makefile.am > b/osaf/libs/saf/include/Makefile.am > --- a/osaf/libs/saf/include/Makefile.am > +++ b/osaf/libs/saf/include/Makefile.am > @@ -35,6 +35,7 @@ include_HEADERS = \ > saSmf.h \ > saImmOi_A_2_11.h \ > saImmOm_A_2_11.h \ > - saImmOm_A_2_12.h > + saImmOm_A_2_12.h \ > + saImmOm_A_2_13.h > > > diff --git a/osaf/libs/saf/include/saImmOm_A_2_12.h > b/osaf/libs/saf/include/saImmOm_A_2_12.h > --- a/osaf/libs/saf/include/saImmOm_A_2_12.h > +++ b/osaf/libs/saf/include/saImmOm_A_2_12.h > @@ -73,4 +73,6 @@ extern "C" { > } > #endif > > +#include <saImmOm_A_2_13.h> > + > #endif /* _SA_IMM_OM_A_2_12_H */ > diff --git a/osaf/libs/saf/include/saImmOm_A_2_13.h > b/osaf/libs/saf/include/saImmOm_A_2_13.h > new file mode 100644 > --- /dev/null > +++ b/osaf/libs/saf/include/saImmOm_A_2_13.h > @@ -0,0 +1,60 @@ > +/* -*- OpenSAF -*- > + * > + * (C) Copyright 2013 The OpenSAF Foundation > + * > + * This program is distributed in the hope that it will be useful, but > + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY > + * or FITNESS FOR A PARTICULAR PURPOSE. This file and program are licensed > + * under the GNU Lesser General Public License Version 2.1, February 1999. > + * The complete license can be accessed from the following location: > + * http://opensource.org/licenses/lgpl-license.php > + * See the Copying file included with the OpenSAF distribution for full > + * licensing terms. > + * > + * Author(s): Ericsson AB > + */ > + > +/* > + * DESCRIPTION: > + * This file provides the suggested additions to the C language binding for > + * the Service Availability(TM) Forum Information Model Management Service > (IMM). > + * It contains only the prototypes and type definitions that are part of > this > + * proposed addition. > + * These additions are currently NON STANDARD. But the intention is to get > these > + * additions approved formally by SAF in the future. > + * > + * For detailed explanation of the new API, see > osaf/services/saf/immsv/README. > + */ > + > + > +#ifndef _SA_IMM_OM_A_2_13_H > +#define _SA_IMM_OM_A_2_13_H > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > + > + /* 4.2.5 SaImmAttrFlagsT */ > + /* > +#define SA_IMM_ATTR_MULTI_VALUE 0x00000001 > +#define SA_IMM_ATTR_RDN 0x00000002 > +#define SA_IMM_ATTR_CONFIG 0x00000100 > +#define SA_IMM_ATTR_WRITABLE 0x00000200 > +#define SA_IMM_ATTR_INITIALIZED 0x00000400 > +#define SA_IMM_ATTR_RUNTIME 0x00010000 > +#define SA_IMM_ATTR_PERSISTENT 0x00020000 > +#define SA_IMM_ATTR_CACHED 0x00040000 > +#define SA_IMM_ATTR_NO_DUPLICATES 0x0000000001000000 / * See: > http://devel.opensaf.org/ticket/1545 > + Not yet supported. * / > +#define SA_IMM_ATTR_NOTIFY 0x0000000002000000 / * See: > http://devel.opensaf.org/ticket/2883 > + Not yet supported. * / > + */ > +#define SA_IMM_ATTR_NO_DANGLING 0x0000000004000000 /* See: > https://sourceforge.net/p/opensaf/tickets/49/ */ > + > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /* _SA_IMM_OM_A_2_13_H */ > diff --git a/osaf/libs/saf/libSaImm/Makefile.am > b/osaf/libs/saf/libSaImm/Makefile.am > --- a/osaf/libs/saf/libSaImm/Makefile.am > +++ b/osaf/libs/saf/libSaImm/Makefile.am > @@ -21,7 +21,7 @@ MAINTAINERCLEANFILES = Makefile.in > EXTRA_DIST = libSaImmOi.map libSaImmOm.map > > OILIB_VERSION = 0:3:0 > -OMLIB_VERSION = 0:3:0 > +OMLIB_VERSION = 0:4:0 > > SUBDIRS = pkgconfig > > > ------------------------------------------------------------------------------ > Sponsored by Intel(R) XDK > Develop, test and display web and hybrid apps with a single code base. > Download it for free now! > http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensaf-devel ------------------------------------------------------------------------------ Sponsored by Intel(R) XDK Develop, test and display web and hybrid apps with a single code base. Download it for free now! http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel