osaf/services/saf/smfsv/smfd/SmfCampaignXmlParser.cc |  36 +++++++++++++------
 osaf/services/saf/smfsv/smfd/SmfUtils.cc             |  29 +++++++++++-----
 osaf/services/saf/smfsv/smfd/smfd.h                  |   1 -
 osaf/services/saf/smfsv/smfd/smfd_cb.h               |   1 +
 osaf/services/saf/smfsv/smfd/smfd_main.c             |   2 +
 osaf/services/saf/smfsv/smfnd/smfnd_main.c           |   3 +
 6 files changed, 51 insertions(+), 21 deletions(-)


Allow all IMM objects to have long DN

diff --git a/osaf/services/saf/smfsv/smfd/SmfCampaignXmlParser.cc 
b/osaf/services/saf/smfsv/smfd/SmfCampaignXmlParser.cc
--- a/osaf/services/saf/smfsv/smfd/SmfCampaignXmlParser.cc
+++ b/osaf/services/saf/smfsv/smfd/SmfCampaignXmlParser.cc
@@ -33,6 +33,7 @@
 
 #include "logtrace.h"
 #include "saImm.h"
+#include "osaf_extended_name.h"
 
 #include "SmfUtils.hh"
 
@@ -369,25 +370,38 @@ bool
 SmfCampaignXmlParser::parseUpgradeProcedure(SmfUpgradeProcedure * io_up, 
xmlNode * i_node)
 {
        TRACE_ENTER();
-       char *s;
+       char *procedure_name;
        xmlNsPtr ns = 0;
        xmlNode *cur = i_node->xmlChildrenNode;
 
-       if ((s = (char *)xmlGetProp(i_node, (const xmlChar 
*)"safSmfProcedure"))) {
-                int procLen = strlen (s);
-                if (procLen > OSAF_MAX_RDN_LENGTH) {
-                        LOG_NO("SmfCampaignXmlParser::parseUpgradeProcedure: 
Procedure name too long %d (max %d), %s", procLen, OSAF_MAX_RDN_LENGTH, s);
-                       xmlFree(s);
+       /* LLDCOM
+        * Run osaf_extended_name_init() in appropriate place.
+        * Use functions in osaf_extended_name.h for checks etc...
+        */
+
+       TRACE("LLDTEST: osaf_is_extended_names_enabled() = %d", 
osaf_is_extended_names_enabled());
+       procedure_name = (char *)xmlGetProp(i_node, (const xmlChar 
*)"safSmfProcedure");
+       if (procedure_name != 0)
+       {
+                int procLen = strlen (procedure_name);
+                if (!osaf_is_extended_names_enabled() &&
+                   procLen > OSAF_MAX_RDN_LENGTH) {
+                        LOG_NO("SmfCampaignXmlParser::parseUpgradeProcedure: "
+                           "Procedure name too long %d (max %d), %s",
+                              procLen, OSAF_MAX_RDN_LENGTH, procedure_name);
+                       xmlFree(procedure_name);
                        TRACE_LEAVE();
                         return false;
                 }
 
-               io_up->setProcName(s);
-               xmlFree(s);
+               io_up->setProcName(procedure_name);
+               xmlFree(procedure_name);
        }
-       if ((s = (char *)xmlGetProp(i_node, (const xmlChar 
*)"saSmfExecLevel"))) {
-               io_up->setExecLevel(s);
-               xmlFree(s);
+
+       procedure_name = (char *)xmlGetProp(i_node, (const xmlChar 
*)"saSmfExecLevel");
+       if (procedure_name != 0) {
+               io_up->setExecLevel(procedure_name);
+               xmlFree(procedure_name);
        }
 
        m_actionId = 1; // reset action id for init actions
diff --git a/osaf/services/saf/smfsv/smfd/SmfUtils.cc 
b/osaf/services/saf/smfsv/smfd/SmfUtils.cc
--- a/osaf/services/saf/smfsv/smfd/SmfUtils.cc
+++ b/osaf/services/saf/smfsv/smfd/SmfUtils.cc
@@ -751,7 +751,8 @@ SmfImmUtils::read_IMM_long_DN_config_and
         * since once it is enabled, is never turned off again.
         */
        if(cb->maxDnLength == maxDnLength) {
-               TRACE("read_IMM_long_DN_config_and_set_control_block(): Long 
DNs already enabled");
+               TRACE("read_IMM_long_DN_config_and_set_control_block(): "
+                   "Long DNs already enabled");
                TRACE_LEAVE();
                return true;
        }
@@ -760,25 +761,35 @@ SmfImmUtils::read_IMM_long_DN_config_and
         * to make sure that a value is set,
         * even if this function fails to get the config from IMM.
         */
-       cb->maxDnLength = DEFAULT_MAX_DN_LENGTH;
+       //cb->maxDnLength = DEFAULT_MAX_DN_LENGTH;
+       cb->maxDnLength = SA_MAX_UNEXTENDED_NAME_LENGTH - 1;
 
        SaImmAttrValuesT_2 **attributes;
 
        if(getObject(IMM_CONFIG_OBJECT_DN, &attributes) == false) {
-                LOG_ER("Could not get IMM config object from IMM %s", 
IMM_CONFIG_OBJECT_DN);
+                LOG_ER("Could not get IMM config object from IMM %s",
+                      IMM_CONFIG_OBJECT_DN);
                 TRACE_LEAVE();
                 return false;
        }
 
-       const SaUint32T *longDnsAllowed = immutil_getUint32Attr((const 
SaImmAttrValuesT_2 **)attributes, IMM_LONG_DN_CONFIG_ATTRIBUTE_NAME, 0);
+       const SaUint32T *longDnsAllowed = immutil_getUint32Attr(
+               (const SaImmAttrValuesT_2 **)attributes,
+               IMM_LONG_DN_CONFIG_ATTRIBUTE_NAME, 0);
        if(longDnsAllowed) {
                TRACE("%s=%u", IMM_LONG_DN_CONFIG_ATTRIBUTE_NAME, 
*longDnsAllowed);
-               if(*longDnsAllowed == 0)
-                       cb->maxDnLength = DEFAULT_MAX_DN_LENGTH;
-               else
+               if(*longDnsAllowed == 0) {
+                       cb->maxDnLength = SA_MAX_UNEXTENDED_NAME_LENGTH - 1;
+               }
+               else {
                        cb->maxDnLength = maxDnLength;
-       } else
-               LOG_NO("Could not get long DN config [%s %s], use default DN 
length", IMM_LONG_DN_CONFIG_ATTRIBUTE_NAME, IMM_CONFIG_OBJECT_DN);
+               }
+       } else {
+               LOG_NO("Could not get long DN config [%s %s], "
+                   "use default DN length",
+                       IMM_LONG_DN_CONFIG_ATTRIBUTE_NAME, 
IMM_CONFIG_OBJECT_DN);
+       }
+       
        TRACE_LEAVE();
        return true;
 }
diff --git a/osaf/services/saf/smfsv/smfd/smfd.h 
b/osaf/services/saf/smfsv/smfd/smfd.h
--- a/osaf/services/saf/smfsv/smfd/smfd.h
+++ b/osaf/services/saf/smfsv/smfd/smfd.h
@@ -48,7 +48,6 @@ extern "C" {
  *   DEFINITIONS
  * ========================================================================
  */
-#define DEFAULT_MAX_DN_LENGTH 255
 #define IMM_CONFIG_OBJECT_DN "opensafImm=opensafImm,safApp=safImmService"
 #define IMM_LONG_DN_CONFIG_ATTRIBUTE_NAME "longDnsAllowed"
 #define SMF_SAF_APP_DN "safApp=safSmfService"
diff --git a/osaf/services/saf/smfsv/smfd/smfd_cb.h 
b/osaf/services/saf/smfsv/smfd/smfd_cb.h
--- a/osaf/services/saf/smfsv/smfd/smfd_cb.h
+++ b/osaf/services/saf/smfsv/smfd/smfd_cb.h
@@ -75,6 +75,7 @@ typedef struct smfd_cb {
                                                      SMF_MERGE_TO_SINGLE_STEP 1
                                                      SMF_MERGE_TO_NODE_ROLLING 
2
                                                    */
+       bool long_dn_allowed;
 
 } smfd_cb_t;
 
diff --git a/osaf/services/saf/smfsv/smfd/smfd_main.c 
b/osaf/services/saf/smfsv/smfd/smfd_main.c
--- a/osaf/services/saf/smfsv/smfd/smfd_main.c
+++ b/osaf/services/saf/smfsv/smfd/smfd_main.c
@@ -251,6 +251,8 @@ static uint32_t initialize_smfd(void)
                goto done;
        }
 
+       osaf_extended_name_init();
+
        /* Initialize smfd control block */
        if (smfd_cb_init(smfd_cb) != NCSCC_RC_SUCCESS) {
                TRACE("smfd_cb_init FAILED");
diff --git a/osaf/services/saf/smfsv/smfnd/smfnd_main.c 
b/osaf/services/saf/smfsv/smfnd/smfnd_main.c
--- a/osaf/services/saf/smfsv/smfnd/smfnd_main.c
+++ b/osaf/services/saf/smfsv/smfnd/smfnd_main.c
@@ -215,6 +215,9 @@ static void main_process(void)
  */
 int main(int argc, char *argv[])
 {
+       if(setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0)
+               LOG_WA("smfd_main(): failed to setenv SA_ENABLE_EXTENDED_NAMES "
+                       "- %s",strerror(errno));
        daemonize_as_user("root", argc, argv);
 
        if (ncs_agents_startup() != NCSCC_RC_SUCCESS) {

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to