osaf/services/saf/amf/amfd/ndfsm.cc | 12 +-
osaf/services/saf/amf/amfd/ndproc.cc | 32 +--
osaf/services/saf/amf/amfd/node.cc | 227 +++++++++++++---------------
osaf/services/saf/amf/amfd/nodegroup.cc | 215 ++++++++++++++------------
osaf/services/saf/amf/amfd/nodeswbundle.cc | 46 +++--
osaf/services/saf/amf/amfd/ntf.cc | 114 +++++++------
osaf/services/saf/amf/amfd/pg.cc | 2 +-
7 files changed, 330 insertions(+), 318 deletions(-)
diff --git a/osaf/services/saf/amf/amfd/ndfsm.cc
b/osaf/services/saf/amf/amfd/ndfsm.cc
--- a/osaf/services/saf/amf/amfd/ndfsm.cc
+++ b/osaf/services/saf/amf/amfd/ndfsm.cc
@@ -153,7 +153,7 @@
goto done;
}
- LOG_NO("Node '%s' joined the cluster", avnd->node_name);
+ LOG_NO("Node '%s' joined the cluster", avnd->node_name.c_str());
avd_node_state_set(avnd, AVD_AVND_STATE_NO_CONFIG);
@@ -545,8 +545,8 @@
continue;
if (avd_snd_susi_msg(cb, su_ptr, rel_ptr,
static_cast<AVSV_SUSI_ACT>(rel_ptr->fsm), false, nullptr) != NCSCC_RC_SUCCESS) {
- LOG_ER("%s:%u: %s (%u)", __FILE__,
__LINE__, su_ptr->name.value,
-
su_ptr->name.length);
+ LOG_ER("%s:%u: %s (%zu)", __FILE__,
__LINE__, su_ptr->name.c_str(),
+
su_ptr->name.length());
}
}
}
@@ -581,8 +581,8 @@
continue;
if (avd_snd_susi_msg(cb, su_ptr, rel_ptr,
static_cast<AVSV_SUSI_ACT>(rel_ptr->fsm), false, nullptr) != NCSCC_RC_SUCCESS) {
- LOG_ER("%s:%u: %s (%u)", __FILE__,
__LINE__, su_ptr->name.value,
-
su_ptr->name.length);
+ LOG_ER("%s:%u: %s (%zu)", __FILE__,
__LINE__, su_ptr->name.c_str(),
+
su_ptr->name.length());
}
}
}
@@ -643,7 +643,7 @@
avd_node_oper_state_set(node, SA_AMF_OPERATIONAL_DISABLED);
avd_node_state_set(node, AVD_AVND_STATE_ABSENT);
- LOG_NO("Node '%s' left the cluster", node->node_name);
+ LOG_NO("Node '%s' left the cluster", node->node_name.c_str());
node->adest = 0;
node->rcv_msg_id = 0;
diff --git a/osaf/services/saf/amf/amfd/ndproc.cc
b/osaf/services/saf/amf/amfd/ndproc.cc
--- a/osaf/services/saf/amf/amfd/ndproc.cc
+++ b/osaf/services/saf/amf/amfd/ndproc.cc
@@ -414,7 +414,7 @@
} else {
report_admin_op_error(avd_cb->immOiHandle,
su->pend_cbk.invocation,
rc, &su->pend_cbk, "Couldn't restart su '%s'",
- su->name.value);
+ su->name.c_str());
}
su->pend_cbk.admin_oper = static_cast<SaAmfAdminOperationIdT>(0);
su->pend_cbk.invocation = 0;
@@ -442,7 +442,7 @@
su->pend_cbk.admin_oper =
static_cast<SaAmfAdminOperationIdT>(0);
} else if (pres == SA_AMF_PRESENCE_TERMINATION_FAILED) {
report_admin_op_error(cb->immOiHandle,
su->pend_cbk.invocation, SA_AIS_ERR_REPAIR_PENDING,
- &su->pend_cbk, "SU '%s' moved to
'termination failed' state", su->name.value);
+ &su->pend_cbk, "SU '%s' moved to
'termination failed' state", su->name.c_str());
}
break;
case SA_AMF_ADMIN_UNLOCK_INSTANTIATION:
@@ -454,7 +454,7 @@
(pres == SA_AMF_PRESENCE_TERMINATION_FAILED)) {
report_admin_op_error(cb->immOiHandle,
su->pend_cbk.invocation, SA_AIS_ERR_REPAIR_PENDING,
&su->pend_cbk, "SU '%s' moved to
'instantiation/termination failed' state",
- su->name.value);
+ su->name.c_str());
}
break;
case SA_AMF_ADMIN_UNLOCK:
@@ -464,7 +464,7 @@
SA_AIS_ERR_REPAIR_PENDING,
&su->pend_cbk,
"SU '%s' moved to 'termination failed'
state",
- su->name.value);
+ su->name.c_str());
}
break;
case SA_AMF_ADMIN_REPAIRED:
@@ -479,7 +479,7 @@
} else {
report_admin_op_error(cb->immOiHandle,
su->pend_cbk.invocation, SA_AIS_ERR_BAD_OPERATION,
&su->pend_cbk, "Bad presence state %u
after '%s' adm repaired", pres,
- su->name.value);
+ su->name.c_str());
}
break;
case SA_AMF_ADMIN_RESTART:
@@ -520,7 +520,7 @@
} else if (pres == SA_AMF_PRESENCE_TERMINATION_FAILED) {
report_admin_op_error(cb->immOiHandle,
su->su_on_node->admin_node_pend_cbk.invocation,
SA_AIS_ERR_REPAIR_PENDING,
&su->su_on_node->admin_node_pend_cbk,
- "SU '%s' moved to 'termination failed'
state", su->name.value);
+ "SU '%s' moved to 'termination failed'
state", su->name.c_str());
su->su_on_node->su_cnt_admin_oper =
static_cast<SaAmfAdminOperationIdT>(0);
} /* else do nothing
::SA_AMF_PRESENCE_TERMINATING update is valid */
break;
@@ -540,7 +540,7 @@
(pres == SA_AMF_PRESENCE_INSTANTIATION_FAILED))
{
report_admin_op_error(cb->immOiHandle,
su->su_on_node->admin_node_pend_cbk.invocation,
SA_AIS_ERR_REPAIR_PENDING,
&su->su_on_node->admin_node_pend_cbk,
- "SU '%s' moved to
'instantiation/termination failed' state", su->name.value);
+ "SU '%s' moved to
'instantiation/termination failed' state", su->name.c_str());
su->su_on_node->su_cnt_admin_oper =
static_cast<SaAmfAdminOperationIdT>(0);
} /* else do nothing ::
SA_AMF_PRESENCE_INSTANTIATING update is valid */
break;
@@ -616,7 +616,7 @@
if(su == nullptr)
goto node_walk;
- TRACE("SU '%s', SUPresenceState '%u'", su->name.value,
su->saAmfSUPresenceState);
+ TRACE("SU '%s', SUPresenceState '%u'", su->name.c_str(),
su->saAmfSUPresenceState);
if (((su->saAmfSUOperState == SA_AMF_OPERATIONAL_ENABLED) &&
(su->saAmfSUPresenceState ==
SA_AMF_PRESENCE_INSTANTIATED)) ||
(su->saAmfSUOperState == SA_AMF_OPERATIONAL_DISABLED)) {
@@ -630,7 +630,7 @@
for (std::map<std::string, AVD_AVND *>::const_iterator it =
node_name_db->begin();
it != node_name_db->end(); it++) {
node = it->second;
- TRACE("node name '%s', Oper'%u'", node->name.value,
node->saAmfNodeOperState);
+ TRACE("node name '%s', Oper'%u'", node->name.c_str(),
node->saAmfNodeOperState);
if (node->saAmfNodeOperState == SA_AMF_OPERATIONAL_ENABLED)
{
for (const auto& su_ptr : node->list_of_su) {
@@ -822,11 +822,9 @@
if
(n2d_msg->msg_info.n2d_data_req.param_info.value_len ==
strlen((char
*)n2d_msg->msg_info.n2d_data_req.param_info.value)) {
l_val =
n2d_msg->msg_info.n2d_data_req.param_info.value_len;
- comp->saAmfCompCurrProxyName.length =
l_val;
-
- strncpy((char
*)comp->saAmfCompCurrProxyName.value,
- (char
*)n2d_msg->msg_info.n2d_data_req.param_info.value,
- SA_MAX_NAME_LENGTH - 1);
+ comp->saAmfCompCurrProxyName =
std::string(
+
static_cast<char*>(n2d_msg->msg_info.n2d_data_req.param_info.value),
+ l_val);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(cb,
comp, AVSV_CKPT_COMP_CURR_PROXY_NAME);
} else {
/* log error that a the value len is
invalid */
@@ -856,7 +854,7 @@
alarm notification by AMFD.
*/
l_val =
ntohl(*((uint32_t*)&n2d_msg->msg_info.n2d_data_req.param_info.value[0]));
- avd_send_error_report_ntf(&comp->comp_info.name,
+
avd_send_error_report_ntf(Amf::to_string(&comp->comp_info.name),
static_cast<SaAmfRecommendedRecoveryT>(l_val));
break;
default:
@@ -908,7 +906,7 @@
SA_AIS_ERR_REPAIR_PENDING,
nullptr,
"SU '%s' moved to 'termination failed' state",
-
su->name.value);
+
su->name.c_str());
si->invocation
= 0;
}
}
@@ -1034,7 +1032,7 @@
*/
void avd_node_failover(AVD_AVND *node)
{
- TRACE_ENTER2("'%s'", node->name.value);
+ TRACE_ENTER2("'%s'", node->name.c_str());
avd_node_mark_absent(node);
avd_pg_node_csi_del_all(avd_cb, node);
avd_node_down_mw_susi_failover(avd_cb, node);
diff --git a/osaf/services/saf/amf/amfd/node.cc
b/osaf/services/saf/amf/amfd/node.cc
--- a/osaf/services/saf/amf/amfd/node.cc
+++ b/osaf/services/saf/amf/amfd/node.cc
@@ -30,27 +30,17 @@
AmfDb<uint32_t, AVD_AVND> *node_id_db = 0; /* SaClmNodeIdT index */
bool operator<(const AVD_AVND &lhs, const AVD_AVND &rhs) {
- if (strncmp((const char*) lhs.name.value, (const char*) rhs.name.value,
lhs.name.length) < 0)
- return true;
- else
- return false;
+ if (lhs.name.compare(rhs.name) < 0) {
+ return true;
+ } else {
+ return false;
+ }
}
bool NodeNameCompare::operator() (const AVD_AVND* lhs, const AVD_AVND* rhs) {
return *lhs < *rhs;
}
-//
-// TODO(HANO) Temporary use this function instead of strdup which uses malloc.
-// Later on remove this function and use std::string instead
-#include <cstring>
-static char *StrDup(const char *s)
-{
- char *c = new char[strlen(s) + 1];
- std::strcpy(c,s);
- return c;
-}
-
uint32_t avd_node_add_nodeid(AVD_AVND *node)
{
unsigned int rc;
@@ -72,11 +62,14 @@
void avd_node_db_add(AVD_AVND *node)
{
unsigned int rc;
+ TRACE_ENTER();
- if (node_name_db->find(Amf::to_string(&node->name)) == nullptr) {
- rc = node_name_db->insert(Amf::to_string(&node->name), node);
+ if (node_name_db->find(node->name) == nullptr) {
+ TRACE("add %s", node->name.c_str());
+ rc = node_name_db->insert(node->name, node);
osafassert(rc == NCSCC_RC_SUCCESS);
}
+ TRACE_LEAVE();
}
//
@@ -98,7 +91,6 @@
//
void AVD_AVND::initialize() {
- name = {};
node_name = {};
node_info = {};
node_info.member = SA_FALSE;
@@ -137,29 +129,25 @@
}
//
-AVD_AVND::AVD_AVND(const SaNameT *dn) {
+AVD_AVND::AVD_AVND(const std::string& dn) :
+ name(dn)
+{
+ std::string::size_type eq_pos;
+ std::string::size_type comma_pos;
- char *tmp_node_name;
- SaNameT rdn = *dn;
-
- initialize();
-
- memcpy(&name.value, dn->value, dn->length);
- name.length = dn->length;
- tmp_node_name = strchr((char*)rdn.value, ',');
- *tmp_node_name = 0;
- tmp_node_name = strchr((char*)rdn.value, '=');
- tmp_node_name++;
- node_name = StrDup(tmp_node_name);
+ initialize();
+ // DN looks like safAmfNode=SC-1,safAmfCluster=myAmfCluster
+ eq_pos = dn.find('=');
+ comma_pos = dn.find(',');
+ node_name = dn.substr(eq_pos + 1, comma_pos - eq_pos - 1);
}
//
AVD_AVND::~AVD_AVND() {
- delete [] node_name;
}
//
-AVD_AVND *avd_node_new(const SaNameT *dn)
+AVD_AVND *avd_node_new(const std::string& dn)
{
AVD_AVND *node;
@@ -174,7 +162,7 @@
if (node->node_info.nodeId)
avd_node_delete_nodeid(node);
m_AVSV_SEND_CKPT_UPDT_ASYNC_RMV(avd_cb, node,
AVSV_CKPT_AVD_NODE_CONFIG);
- node_name_db->erase(Amf::to_string(&node->name));
+ node_name_db->erase(node->name);
delete node;
}
@@ -198,14 +186,11 @@
TRACE_LEAVE();
}
-AVD_AVND *avd_node_get(const SaNameT *dn)
-{
- return node_name_db->find(Amf::to_string(dn));
-}
-
AVD_AVND *avd_node_get(const std::string& dn)
{
+ TRACE_ENTER2("%s", dn.c_str());
return node_name_db->find(dn);
+ TRACE_LEAVE();
}
AVD_AVND *avd_node_find_nodeid(SaClmNodeIdT node_id)
@@ -220,50 +205,50 @@
*
* @return int
*/
-static int is_config_valid(const SaNameT *dn, const SaImmAttrValuesT_2
**attributes, CcbUtilOperationData_t * opdata)
+static int is_config_valid(const std::string& dn, const SaImmAttrValuesT_2
**attributes, CcbUtilOperationData_t * opdata)
{
SaBoolT abool;
SaAmfAdminStateT admstate;
- char *parent;
+ std::string::size_type pos;
SaNameT saAmfNodeClmNode;
- if ((parent = strchr((char *)dn->value, ',')) == nullptr) {
- report_ccb_validation_error(opdata, "No parent to '%s' ",
dn->value);
+ if ((pos = dn.find(',')) == std::string::npos) {
+ report_ccb_validation_error(opdata, "No parent to '%s' ",
dn.c_str());
return 0;
}
- if (strncmp(++parent, "safAmfCluster=", 14) != 0) {
- report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", parent, dn->value);
+ if (dn.compare(pos + 1, 14, "safAmfCluster=") != 0) {
+ report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", dn.substr(pos + 1).c_str(), dn.c_str());
return 0;
}
if ((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNodeAutoRepair"),
attributes, 0, &abool) == SA_AIS_OK) && (abool > SA_TRUE)) {
- report_ccb_validation_error(opdata, "Invalid
saAmfNodeAutoRepair %u for '%s'", abool, dn->value);
+ report_ccb_validation_error(opdata, "Invalid
saAmfNodeAutoRepair %u for '%s'", abool, dn.c_str());
return 0;
}
if
((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNodeFailfastOnTerminationFailure"),
attributes, 0, &abool) == SA_AIS_OK) &&
(abool > SA_TRUE)) {
report_ccb_validation_error(opdata, "Invalid
saAmfNodeFailfastOnTerminationFailure %u for '%s'",
- abool, dn->value);
+ abool, dn.c_str());
return 0;
}
if
((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNodeFailfastOnInstantiationFailure"),
attributes, 0, &abool) == SA_AIS_OK) &&
(abool > SA_TRUE)) {
report_ccb_validation_error(opdata, "Invalid
saAmfNodeFailfastOnInstantiationFailure %u for '%s'",
- abool, dn->value);
+ abool, dn.c_str());
return 0;
}
if ((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNodeAdminState"),
attributes, 0, &admstate) == SA_AIS_OK) &&
!avd_admin_state_is_valid(admstate, opdata)) {
- report_ccb_validation_error(opdata, "Invalid
saAmfNodeAdminState %u for '%s'", admstate, dn->value);
+ report_ccb_validation_error(opdata, "Invalid
saAmfNodeAdminState %u for '%s'", admstate, dn.c_str());
return 0;
}
if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNodeClmNode"),
attributes, 0, &saAmfNodeClmNode) != SA_AIS_OK) {
- report_ccb_validation_error(opdata, "saAmfNodeClmNode not
configured for '%s'", dn->value);
+ report_ccb_validation_error(opdata, "saAmfNodeClmNode not
configured for '%s'", dn.c_str());
return 0;
}
@@ -277,12 +262,12 @@
*
* @return AVD_AVND*
*/
-static AVD_AVND *node_create(SaNameT *dn, const SaImmAttrValuesT_2
**attributes)
+static AVD_AVND *node_create(const std::string& dn, const SaImmAttrValuesT_2
**attributes)
{
int rc = -1;
AVD_AVND *node;
- TRACE_ENTER2("'%s'", dn->value);
+ TRACE_ENTER2("'%s'", dn.c_str());
/*
** If called at new active at failover, the object is found in the DB
@@ -294,19 +279,21 @@
} else
TRACE("already created, refreshing config...");
-
- if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNodeClmNode"),
attributes, 0, &node->saAmfNodeClmNode) != SA_AIS_OK) {
- LOG_ER("saAmfNodeClmNode not configured for '%s'",
node->saAmfNodeClmNode.value);
+ SaNameT safAmfNodeClmNode;
+ if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNodeClmNode"),
attributes, 0, &safAmfNodeClmNode) != SA_AIS_OK) {
+ LOG_ER("saAmfNodeClmNode not configured for '%s'",
safAmfNodeClmNode.value);
goto done;
}
+ node->saAmfNodeClmNode = Amf::to_string(&safAmfNodeClmNode);
+
if
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNodeSuFailOverProb"),
attributes, 0, &node->saAmfNodeSuFailOverProb) != SA_AIS_OK) {
- LOG_ER("Get saAmfNodeSuFailOverProb FAILED for '%s'",
dn->value);
+ LOG_ER("Get saAmfNodeSuFailOverProb FAILED for '%s'",
dn.c_str());
goto done;
}
if
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNodeSuFailoverMax"),
attributes, 0, &node->saAmfNodeSuFailoverMax) != SA_AIS_OK) {
- LOG_ER("Get saAmfNodeSuFailoverMax FAILED for '%s'", dn->value);
+ LOG_ER("Get saAmfNodeSuFailoverMax FAILED for '%s'",
dn.c_str());
goto done;
}
@@ -330,6 +317,7 @@
}
rc = 0;
+ osafassert(node->name.empty() == false);
done:
if (rc != 0) {
@@ -373,12 +361,12 @@
}
while (immutil_saImmOmSearchNext_2(searchHandle, &dn,
(SaImmAttrValuesT_2 ***)&attributes) == SA_AIS_OK) {
- if (!is_config_valid(&dn, attributes, nullptr)) {
+ if (!is_config_valid(Amf::to_string(&dn), attributes, nullptr))
{
error = SA_AIS_ERR_FAILED_OPERATION;
goto done2;
}
- if ((node = node_create(&dn, attributes)) == nullptr) {
+ if ((node = node_create(Amf::to_string(&dn), attributes)) ==
nullptr) {
error = SA_AIS_ERR_FAILED_OPERATION;
goto done2;
}
@@ -407,7 +395,7 @@
void avd_node_state_set(AVD_AVND *node, AVD_AVND_STATE node_state)
{
osafassert(node_state <= AVD_AVND_STATE_NCS_INIT);
- TRACE_ENTER2("'%s' %s => %s", node->name.value,
node_state_name[node->node_state],
+ TRACE_ENTER2("'%s' %s => %s", node->name.c_str(),
node_state_name[node->node_state],
node_state_name[node_state]);
node->node_state = node_state;
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, node,
AVSV_CKPT_AVND_NODE_STATE);
@@ -426,7 +414,7 @@
* event. Since we dont update oper_state in avnd_down because
the role is
* not set to Active(there is no implementer), so updating now.
*/
- avd_saImmOiRtObjectUpdate(&node->name, "saAmfNodeOperState",
+ avd_saImmOiRtObjectUpdate(node->name, "saAmfNodeOperState",
SA_IMM_ATTR_SAUINT32T, &node->saAmfNodeOperState);
/* Send notification for node oper state down. It is set to
@@ -436,7 +424,7 @@
avd_node_mark_absent, we need to send notification. */
if ((node->saAmfNodeOperState == SA_AMF_OPERATIONAL_DISABLED) &&
(node->node_state == AVD_AVND_STATE_ABSENT))
- avd_send_oper_chg_ntf(&node->name,
+ avd_send_oper_chg_ntf(node->name,
SA_AMF_NTFID_NODE_OP_STATE,
SA_AMF_OPERATIONAL_ENABLED,
node->saAmfNodeOperState);
@@ -447,15 +435,15 @@
SaAmfOperationalStateT old_state = node->saAmfNodeOperState;
osafassert(oper_state <= SA_AMF_OPERATIONAL_DISABLED);
- saflog(LOG_NOTICE, amfSvcUsrName, "%s OperState %s => %s",
node->name.value,
+ saflog(LOG_NOTICE, amfSvcUsrName, "%s OperState %s => %s",
node->name.c_str(),
avd_oper_state_name[node->saAmfNodeOperState],
avd_oper_state_name[oper_state]);
node->saAmfNodeOperState = oper_state;
- avd_saImmOiRtObjectUpdate(&node->name, "saAmfNodeOperState",
+ avd_saImmOiRtObjectUpdate(node->name, "saAmfNodeOperState",
SA_IMM_ATTR_SAUINT32T, &node->saAmfNodeOperState);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, node,
AVSV_CKPT_AVND_OPER_STATE);
/* notification */
- avd_send_oper_chg_ntf(&node->name,
+ avd_send_oper_chg_ntf(node->name,
SA_AMF_NTFID_NODE_OP_STATE,
old_state,
node->saAmfNodeOperState);
@@ -474,10 +462,9 @@
static SaAisErrorT node_ccb_completed_delete_hdlr(CcbUtilOperationData_t
*opdata)
{
SaAisErrorT rc = SA_AIS_OK;
- AVD_AVND *node = avd_node_get(&opdata->objectName);
+ AVD_AVND *node = avd_node_get(Amf::to_string(&opdata->objectName));
bool su_exist = false;
CcbUtilOperationData_t *t_opData;
- std::string node_name(Amf::to_string(&node->name));
TRACE_ENTER2("'%s'", opdata->objectName.value);
@@ -503,7 +490,8 @@
* each of the SU in the node list in the current CCB
*/
for (const auto& su : node->list_of_su) {
- t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId,
&su->name);
+ const SaNameTWrapper su_name(su->name);
+ t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId,
su_name);
if ((t_opData == nullptr) || (t_opData->operationType
!= CCBUTIL_DELETE)) {
su_exist = true;
break;
@@ -524,14 +512,15 @@
if (node_in_nodegroup(Amf::to_string(&(opdata->objectName)),
ng) == true) {
// if the node is being removed from nodegroup too,
then it's OK
- TRACE("check if node is being deleted from nodegroup
'%s'", ng->name.value);
- t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId,
&ng->name);
+ TRACE("check if node is being deleted from nodegroup
'%s'", ng->name.c_str());
+ const SaNameTWrapper ng_name(ng->name);
+ t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId,
ng_name);
if (t_opData == nullptr) {
TRACE("t_opData is nullptr");
report_ccb_validation_error(opdata, "'%s'
exists in"
" the nodegroup '%s'",
- opdata->objectName.value,
ng->name.value);
+ opdata->objectName.value,
ng->name.c_str());
rc = SA_AIS_ERR_BAD_OPERATION;
goto done;
}
@@ -550,9 +539,9 @@
node_being_removed == false) {
if (mod->modType ==
SA_IMM_ATTR_VALUES_DELETE) {
for (unsigned j = 0; j <
mod->modAttr.attrValuesNumber; j++) {
- if
(node_name.compare(Amf::to_string((SaNameT *)mod->modAttr.attrValues[j])) == 0)
{
+ if
(node->name.compare(Amf::to_string((SaNameT *)mod->modAttr.attrValues[j])) ==
0) {
// node is
being removed from nodegroup
- TRACE("node %s
is being removed from %s", node_name.c_str(), ng->name.value);
+ TRACE("node %s
is being removed from %s", node->name.c_str(), ng->name.c_str());
node_being_removed = true;
break;
}
@@ -567,7 +556,7 @@
if (node_being_removed == false) {
report_ccb_validation_error(opdata, "'%s'
exists in"
" the nodegroup '%s'",
- opdata->objectName.value,
ng->name.value);
+ opdata->objectName.value,
ng->name.c_str());
rc = SA_AIS_ERR_BAD_OPERATION;
goto done;
}
@@ -670,7 +659,7 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- if (is_config_valid(&opdata->objectName,
opdata->param.create.attrValues, opdata))
+ if (is_config_valid(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues, opdata))
rc = SA_AIS_OK;
break;
case CCBUTIL_MODIFY:
@@ -690,7 +679,7 @@
static void node_ccb_apply_delete_hdlr(AVD_AVND *node)
{
- TRACE_ENTER2("'%s'", node->name.value);
+ TRACE_ENTER2("'%s'", node->name.c_str());
avd_node_delete_nodeid(node);
avd_node_delete(node);
TRACE_LEAVE();
@@ -704,9 +693,11 @@
TRACE_ENTER2("'%s'", opdata->objectName.value);
- node = avd_node_get(&opdata->objectName);
+ node = avd_node_get(Amf::to_string(&opdata->objectName));
osafassert(node != nullptr);
+ const SaNameTWrapper node_name(node->name);
+
i = 0;
/* Modifications can be done for the following parameters. */
while (((attr_mod = opdata->param.modify.attrMods[i++])) != nullptr) {
@@ -728,7 +719,7 @@
param.class_id = AVSV_SA_AMF_NODE;
param.attr_id = saAmfNodeSuFailoverProb_ID;
param.act = AVSV_OBJ_OPR_MOD;
- param.name = node->name;
+ param.name = node_name;
TRACE("Old saAmfNodeSuFailOverProb is '%llu'",
node->saAmfNodeSuFailOverProb);
if (node->node_state != AVD_AVND_STATE_ABSENT) {
param.value_len = sizeof(SaTimeT);
@@ -752,7 +743,7 @@
param.class_id = AVSV_SA_AMF_NODE;
param.attr_id = saAmfNodeSuFailoverMax_ID;
param.act = AVSV_OBJ_OPR_MOD;
- param.name = node->name;
+ param.name = node_name;
TRACE("Old saAmfNodeSuFailoverMax is '%u'",
node->saAmfNodeSuFailoverMax);
if (node->node_state != AVD_AVND_STATE_ABSENT) {
@@ -769,19 +760,19 @@
} else if (!strcmp(attribute->attrName, "saAmfNodeAutoRepair"))
{
node->saAmfNodeAutoRepair = *((SaBoolT
*)attribute->attrValues[0]);
amflog(LOG_NOTICE, "%s saAmfNodeAutoRepair changed to
%u",
- node->name.value, node->saAmfNodeAutoRepair);
+ node->name.c_str(), node->saAmfNodeAutoRepair);
} else if (!strcmp(attribute->attrName,
"saAmfNodeFailfastOnTerminationFailure")) {
node->saAmfNodeFailfastOnTerminationFailure =
*((SaBoolT *)attribute->attrValues[0]);
amflog(LOG_NOTICE, "%s
saAmfNodeFailfastOnTerminationFailure changed to %u",
- node->name.value,
node->saAmfNodeFailfastOnTerminationFailure);
+ node->name.c_str(),
node->saAmfNodeFailfastOnTerminationFailure);
} else if (!strcmp(attribute->attrName,
"saAmfNodeFailfastOnInstantiationFailure")) {
node->saAmfNodeFailfastOnInstantiationFailure =
*((SaBoolT *)attribute->attrValues[0]);
amflog(LOG_NOTICE, "%s
saAmfNodeFailfastOnInstantiationFailure changed to %u",
- node->name.value,
node->saAmfNodeFailfastOnInstantiationFailure);
+ node->name.c_str(),
node->saAmfNodeFailfastOnInstantiationFailure);
LOG_NO( "%s saAmfNodeFailfastOnInstantiationFailure
changed to %u",
- node->name.value,
node->saAmfNodeFailfastOnInstantiationFailure);
+ node->name.c_str(),
node->saAmfNodeFailfastOnInstantiationFailure);
} else {
osafassert(0);
}
@@ -798,7 +789,7 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- node = node_create(&opdata->objectName,
opdata->param.create.attrValues);
+ node = node_create(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues);
osafassert(node);
node_add_to_model(node);
break;
@@ -835,16 +826,16 @@
node->saAmfNodeAdminState = admin_state;
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, node,
AVSV_CKPT_AVND_ADMIN_STATE);
} else {
- TRACE_ENTER2("%s AdmState %s => %s", node->name.value,
+ TRACE_ENTER2("%s AdmState %s => %s", node->name.c_str(),
avd_adm_state_name[node->saAmfNodeAdminState],
avd_adm_state_name[admin_state]);
- saflog(LOG_NOTICE, amfSvcUsrName, "%s AdmState %s => %s",
node->name.value,
+ saflog(LOG_NOTICE, amfSvcUsrName, "%s AdmState %s => %s",
node->name.c_str(),
avd_adm_state_name[node->saAmfNodeAdminState],
avd_adm_state_name[admin_state]);
node->saAmfNodeAdminState = admin_state;
- avd_saImmOiRtObjectUpdate(&node->name, "saAmfNodeAdminState",
+ avd_saImmOiRtObjectUpdate(node->name, "saAmfNodeAdminState",
SA_IMM_ATTR_SAUINT32T, &node->saAmfNodeAdminState);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, node,
AVSV_CKPT_AVND_ADMIN_STATE);
- avd_send_admin_state_chg_ntf(&node->name,
SA_AMF_NTFID_NODE_ADMIN_STATE, old_state, node->saAmfNodeAdminState);
+ avd_send_admin_state_chg_ntf(node->name,
SA_AMF_NTFID_NODE_ADMIN_STATE, old_state, node->saAmfNodeAdminState);
}
TRACE_LEAVE();
}
@@ -858,7 +849,7 @@
{
uint32_t rc = NCSCC_RC_SUCCESS;
- TRACE_ENTER2("%s", node->name.value);
+ TRACE_ENTER2("%s", node->name.c_str());
/* terminate all the SUs on this Node */
for (const auto& su : node->list_of_su) {
@@ -871,7 +862,7 @@
node->su_cnt_admin_oper++;
} else {
rc = NCSCC_RC_FAILURE;
- LOG_WA("Failed Termination '%s'",
su->name.value);
+ LOG_WA("Failed Termination '%s'",
su->name.c_str());
}
}
}
@@ -889,7 +880,7 @@
{
uint32_t rc = NCSCC_RC_SUCCESS;
- TRACE_ENTER2("%s", node->name.value);
+ TRACE_ENTER2("%s", node->name.c_str());
/* instantiate the SUs on this Node */
for (const auto& su : node->list_of_su) {
@@ -907,7 +898,7 @@
su->sg_of_su->try_inst_counter++;
} else {
rc = NCSCC_RC_FAILURE;
- LOG_WA("Failed Instantiation
'%s'", su->name.value);
+ LOG_WA("Failed Instantiation
'%s'", su->name.c_str());
}
}
} else
@@ -939,7 +930,7 @@
SaAmfAdminStateT new_admin_state;
bool is_assignments_done = false;
- TRACE_ENTER2("%s", node->name.value);
+ TRACE_ENTER2("%s", node->name.c_str());
/* determine the new_admin_state from operation ID */
if (operationId == SA_AMF_ADMIN_SHUTDOWN)
@@ -1177,7 +1168,7 @@
TRACE_ENTER2("%llu, '%s', %llu", invocation, objectName->value,
operationId);
- node = avd_node_get(objectName);
+ node = avd_node_get(Amf::to_string(objectName));
osafassert(node != AVD_AVND_NULL);
if (node->admin_node_pend_cbk.admin_oper != 0) {
@@ -1193,7 +1184,7 @@
for (const auto& su : node->list_of_su) {
if (su->pend_cbk.admin_oper != 0) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_TRY_AGAIN, nullptr,
- "SU on this node is undergoing admin op
(%s)", su->name.value);
+ "SU on this node is undergoing admin op
(%s)", su->name.c_str());
goto done;
}
@@ -1201,14 +1192,14 @@
(su->saAmfSUPresenceState ==
SA_AMF_PRESENCE_TERMINATING) ||
(su->saAmfSUPresenceState ==
SA_AMF_PRESENCE_RESTARTING)) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_TRY_AGAIN, nullptr,
- "'%s' presence state is '%u'",
su->name.value, su->saAmfSUPresenceState);
+ "'%s' presence state is '%u'",
su->name.c_str(), su->saAmfSUPresenceState);
goto done;
}
if (su->sg_of_su->sg_fsm_state != AVD_SG_FSM_STABLE) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_TRY_AGAIN, nullptr,
"SG'%s' of SU'%s' on this node not in
STABLE state",
- su->sg_of_su->name.value,
su->name.value);
+ su->sg_of_su->name.c_str(),
su->name.c_str());
goto done;
}
}
@@ -1223,20 +1214,20 @@
case SA_AMF_ADMIN_SHUTDOWN:
if (node->saAmfNodeAdminState == SA_AMF_ADMIN_SHUTTING_DOWN) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_NO_OP, nullptr,
- "'%s' Already in SHUTTING DOWN state",
node->name.value);
+ "'%s' Already in SHUTTING DOWN state",
node->name.c_str());
goto done;
}
if (node->saAmfNodeAdminState != SA_AMF_ADMIN_UNLOCKED) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"'%s' Invalid Admin Operation SHUTDOWN
in state %s",
- node->name.value,
avd_adm_state_name[node->saAmfNodeAdminState]);
+ node->name.c_str(),
avd_adm_state_name[node->saAmfNodeAdminState]);
goto done;
}
if (node->node_info.member == false) {
node_admin_state_set(node, SA_AMF_ADMIN_LOCKED);
- LOG_NO("'%s' SHUTDOWN: CLM node is not member",
node->name.value);
+ LOG_NO("'%s' SHUTDOWN: CLM node is not member",
node->name.c_str());
avd_saImmOiAdminOperationResult(immOiHandle,
invocation, SA_AIS_OK);
goto done;
}
@@ -1247,19 +1238,19 @@
case SA_AMF_ADMIN_UNLOCK:
if (node->saAmfNodeAdminState == SA_AMF_ADMIN_UNLOCKED) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_NO_OP, nullptr,
- "'%s' Already in UNLOCKED state",
node->name.value);
+ "'%s' Already in UNLOCKED state",
node->name.c_str());
goto done;
}
if (node->saAmfNodeAdminState != SA_AMF_ADMIN_LOCKED) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"'%s' Invalid Admin Operation UNLOCK in
state %s",
- node->name.value,
avd_adm_state_name[node->saAmfNodeAdminState]);
+ node->name.c_str(),
avd_adm_state_name[node->saAmfNodeAdminState]);
goto done;
}
if (node->node_info.member == false) {
- LOG_NO("'%s' UNLOCK: CLM node is not member",
node->name.value);
+ LOG_NO("'%s' UNLOCK: CLM node is not member",
node->name.c_str());
node_admin_state_set(node, SA_AMF_ADMIN_UNLOCKED);
avd_saImmOiAdminOperationResult(immOiHandle,
invocation, SA_AIS_OK);
goto done;
@@ -1282,20 +1273,20 @@
case SA_AMF_ADMIN_LOCK:
if (node->saAmfNodeAdminState == SA_AMF_ADMIN_LOCKED) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_NO_OP, nullptr,
- "'%s' Already in LOCKED state",
node->name.value);
+ "'%s' Already in LOCKED state",
node->name.c_str());
goto done;
}
if (node->saAmfNodeAdminState ==
SA_AMF_ADMIN_LOCKED_INSTANTIATION) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"'%s' Invalid Admin Operation LOCK in
state %s",
- node->name.value,
avd_adm_state_name[node->saAmfNodeAdminState]);
+ node->name.c_str(),
avd_adm_state_name[node->saAmfNodeAdminState]);
goto done;
}
if (node->node_info.member == false) {
node_admin_state_set(node, SA_AMF_ADMIN_LOCKED);
- LOG_NO("%s' LOCK: CLM node is not member",
node->name.value);
+ LOG_NO("%s' LOCK: CLM node is not member",
node->name.c_str());
avd_saImmOiAdminOperationResult(immOiHandle,
invocation, SA_AIS_OK);
goto done;
}
@@ -1315,14 +1306,14 @@
case SA_AMF_ADMIN_LOCK_INSTANTIATION:
if (node->saAmfNodeAdminState ==
SA_AMF_ADMIN_LOCKED_INSTANTIATION) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_NO_OP, nullptr,
- "'%s' Already in LOCKED INSTANTIATION
state", node->name.value);
+ "'%s' Already in LOCKED INSTANTIATION
state", node->name.c_str());
goto done;
}
if (node->saAmfNodeAdminState != SA_AMF_ADMIN_LOCKED) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"'%s' Invalid Admin Operation
LOCK_INSTANTIATION in state %s",
- node->name.value,
avd_adm_state_name[node->saAmfNodeAdminState]);
+ node->name.c_str(),
avd_adm_state_name[node->saAmfNodeAdminState]);
goto done;
}
@@ -1330,13 +1321,13 @@
node_admin_state_set(node, SA_AMF_ADMIN_LOCKED_INSTANTIATION);
if (node->node_info.member == false) {
- LOG_NO("'%s' LOCK_INSTANTIATION: CLM node is not
member", node->name.value);
+ LOG_NO("'%s' LOCK_INSTANTIATION: CLM node is not
member", node->name.c_str());
avd_saImmOiAdminOperationResult(immOiHandle,
invocation, SA_AIS_OK);
goto done;
}
if (node->saAmfNodeOperState == SA_AMF_OPERATIONAL_DISABLED) {
- LOG_NO("'%s' LOCK_INSTANTIATION: AMF node oper state
disabled", node->name.value);
+ LOG_NO("'%s' LOCK_INSTANTIATION: AMF node oper state
disabled", node->name.c_str());
avd_saImmOiAdminOperationResult(immOiHandle,
invocation, SA_AIS_OK);
goto done;
}
@@ -1363,14 +1354,14 @@
case SA_AMF_ADMIN_UNLOCK_INSTANTIATION:
if (node->saAmfNodeAdminState == SA_AMF_ADMIN_LOCKED) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_NO_OP, nullptr,
- "'%s' Already in LOCKED state",
node->name.value);
+ "'%s' Already in LOCKED state",
node->name.c_str());
goto done;
}
if (node->saAmfNodeAdminState !=
SA_AMF_ADMIN_LOCKED_INSTANTIATION) {
report_admin_op_error(immOiHandle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"'%s' Invalid Admin Operation
UNLOCK_INSTANTIATION in state %s",
- node->name.value,
avd_adm_state_name[node->saAmfNodeAdminState]);
+ node->name.c_str(),
avd_adm_state_name[node->saAmfNodeAdminState]);
goto done;
}
@@ -1378,13 +1369,13 @@
node_admin_state_set(node, SA_AMF_ADMIN_LOCKED);
if (node->node_info.member == false) {
- LOG_NO("'%s' UNLOCK_INSTANTIATION: CLM node is not
member", node->name.value);
+ LOG_NO("'%s' UNLOCK_INSTANTIATION: CLM node is not
member", node->name.c_str());
avd_saImmOiAdminOperationResult(immOiHandle,
invocation, SA_AIS_OK);
goto done;
}
if (node->saAmfNodeOperState == SA_AMF_OPERATIONAL_DISABLED) {
- LOG_NO("'%s' UNLOCK_INSTANTIATION: AMF node oper state
disabled", node->name.value);
+ LOG_NO("'%s' UNLOCK_INSTANTIATION: AMF node oper state
disabled", node->name.c_str());
avd_saImmOiAdminOperationResult(immOiHandle,
invocation, SA_AIS_OK);
goto done;
}
@@ -1428,7 +1419,7 @@
void avd_node_add_su(AVD_SU *su)
{
- if (strstr((char *)su->name.value, "safApp=OpenSAF") != nullptr) {
+ if (su->name.find("safApp=OpenSAF") != std::string::npos) {
su->su_on_node->list_of_ncs_su.push_back(su);
std::sort(su->su_on_node->list_of_ncs_su.begin(),
su->su_on_node->list_of_ncs_su.end(),
[](const AVD_SU *a, const AVD_SU *b) -> bool {return
a->saAmfSURank < b->saAmfSURank;});
@@ -1481,7 +1472,7 @@
for (std::map<std::string, AVD_AMF_NG*>::const_iterator it =
nodegroup_db->begin();
it != nodegroup_db->end(); it++) {
AVD_AMF_NG *ng = it->second;
- if ((node_in_nodegroup(Amf::to_string(&node->name), ng) ==
true) &&
+ if ((node_in_nodegroup(node->name, ng) == true) &&
(ng->saAmfNGAdminState !=
SA_AMF_ADMIN_UNLOCKED))
return false;
}
@@ -1497,9 +1488,9 @@
for (std::map<std::string, AVD_AMF_NG*>::const_iterator it =
nodegroup_db->begin();
it != nodegroup_db->end(); it++) {
AVD_AMF_NG *ng = it->second;
- if ((node_in_nodegroup(Amf::to_string(&node->name), ng) ==
true) &&
+ if ((node_in_nodegroup(node->name, ng) == true) &&
(ng->saAmfNGAdminState ==
SA_AMF_ADMIN_LOCKED_INSTANTIATION)) {
- TRACE("Nodegroup '%s' is in locked-in", ng->name.value);
+ TRACE("Nodegroup '%s' is in locked-in",
ng->name.c_str());
return true;
}
}
diff --git a/osaf/services/saf/amf/amfd/nodegroup.cc
b/osaf/services/saf/amf/amfd/nodegroup.cc
--- a/osaf/services/saf/amf/amfd/nodegroup.cc
+++ b/osaf/services/saf/amf/amfd/nodegroup.cc
@@ -25,7 +25,7 @@
#include <set>
AmfDb<std::string, AVD_AMF_NG> *nodegroup_db = 0;
-static AVD_AMF_NG *ng_create(SaNameT *dn, const SaImmAttrValuesT_2
**attributes);
+static AVD_AMF_NG *ng_create(const std::string& dn, const SaImmAttrValuesT_2
**attributes);
//TODO: Make below function members.
static void ng_admin_unlock_inst(AVD_AMF_NG *ng);
static void ng_unlock(AVD_AMF_NG *ng);
@@ -36,9 +36,9 @@
*
* @return AVD_AMF_NG*
*/
-AVD_AMF_NG *avd_ng_get(const SaNameT *dn)
+AVD_AMF_NG *avd_ng_get(const std::string& dn)
{
- return nodegroup_db->find(Amf::to_string(dn));
+ return nodegroup_db->find(dn);
}
/**
@@ -48,21 +48,24 @@
*
* @return int
*/
-static int is_config_valid(const SaNameT *dn, const SaImmAttrValuesT_2
**attributes, CcbUtilOperationData_t *opdata)
+static int is_config_valid(const std::string& dn, const SaImmAttrValuesT_2
**attributes, CcbUtilOperationData_t *opdata)
{
int i = 0;
unsigned j = 0;
- char *p;
+ std::string::size_type pos;
const SaImmAttrValuesT_2 *attr;
- p = strchr((char *)dn->value, ',');
- if (p == nullptr) {
- report_ccb_validation_error(opdata, "No parent to '%s' ",
dn->value);
+ TRACE_ENTER2("%s", dn.c_str());
+
+ if ((pos = dn.find(',')) == std::string::npos) {
+ report_ccb_validation_error(opdata, "No parent to '%s' ",
dn.c_str());
+ TRACE_LEAVE();
return 0;
}
- if (strncmp(++p, "safAmfCluster=", 14) != 0) {
- report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", p, dn->value);
+ if (dn.compare(pos + 1, 14, "safAmfCluster=") != 0) {
+ report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", dn.substr(pos + 1).c_str(), dn.c_str());
+ TRACE_LEAVE();
return 0;
}
@@ -75,10 +78,11 @@
for (j = 0; j < attr->attrValuesNumber; j++) {
SaNameT *name = (SaNameT *)attr->attrValues[j];
- AVD_AVND *node = avd_node_get(name);
+ AVD_AVND *node = avd_node_get(Amf::to_string(name));
if (node == nullptr) {
if (opdata == nullptr) {
report_ccb_validation_error(opdata, "'%s' does
not exist in model", name->value);
+ TRACE_LEAVE();
return 0;
}
@@ -86,6 +90,7 @@
if (ccbutil_getCcbOpDataByDN(opdata->ccbId, name) ==
nullptr) {
report_ccb_validation_error(opdata, "'%s' does
not exist either in model or CCB",
name->value);
+ TRACE_LEAVE();
return 0;
}
}
@@ -96,23 +101,29 @@
-when AMFD is reading the configuration from IMM at OpenSAF start or
-nodegroup creation using CCB operation.
*/
-
- AVD_AMF_NG *tmp_ng = ng_create((SaNameT *)dn, attributes);
- if (tmp_ng == nullptr)
+
+ AVD_AMF_NG *tmp_ng = ng_create(dn, attributes);
+ if (tmp_ng == nullptr) {
+ TRACE_LEAVE();
return 0;
+ }
+
if (attr->attrValuesNumber != tmp_ng->number_nodes()) {
- LOG_ER("Duplicate nodes in saAmfNGNodeList of
'%s'",tmp_ng->name.value);
+ LOG_ER("Duplicate nodes in saAmfNGNodeList of
'%s'",tmp_ng->name.c_str());
delete tmp_ng;
+ TRACE_LEAVE();
return 0;
}
//Check if admin state is valid or not.
if (!avd_admin_state_is_valid(tmp_ng->saAmfNGAdminState, opdata)) {
LOG_ER("Incorrect saAmfNGAdminState:'%u' for
'%s'",tmp_ng->saAmfNGAdminState,
- tmp_ng->name.value);
+ tmp_ng->name.c_str());
delete tmp_ng;
+ TRACE_LEAVE();
return 0;
}
delete tmp_ng;
+ TRACE_LEAVE();
return 1;
}
@@ -124,7 +135,6 @@
ng_on_cluster(0),
saAmfNGAdminState(SA_AMF_ADMIN_UNLOCKED)
{
- memset(&name, 0, sizeof(SaNameT));
admin_ng_pend_cbk.admin_oper = static_cast<SaAmfAdminOperationIdT>(0);
admin_ng_pend_cbk.invocation = 0;
}
@@ -136,19 +146,18 @@
*
* @return AVD_AVND*
*/
-static AVD_AMF_NG *ng_create(SaNameT *dn, const SaImmAttrValuesT_2
**attributes)
+static AVD_AMF_NG *ng_create(const std::string& dn, const SaImmAttrValuesT_2
**attributes)
{
int rc = -1;
unsigned int i, values_number;
AVD_AMF_NG *ng;
const SaNameT *node_name;
- TRACE_ENTER2("'%s'", dn->value);
+ TRACE_ENTER2("'%s'", dn.c_str());
ng = new AVD_AMF_NG();
- memcpy(ng->name.value, dn->value, dn->length);
- ng->name.length = dn->length;
+ ng->name = dn;
if
((immutil_getAttrValuesNumber(const_cast<SaImmAttrNameT>("saAmfNGNodeList"),
attributes,
&values_number) == SA_AIS_OK) && (values_number > 0)) {
@@ -160,7 +169,7 @@
}
}
else {
- LOG_ER("Node groups must contian at least one node");
+ LOG_ER("Node groups must contain at least one node");
goto done;
}
if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNGAdminState"),
@@ -175,7 +184,8 @@
ng = nullptr;
}
- TRACE_LEAVE();
+ osafassert(ng != nullptr);
+ TRACE_LEAVE2("%u", rc);
return ng;
}
@@ -186,7 +196,7 @@
*/
static void ng_delete(AVD_AMF_NG *ng)
{
- nodegroup_db->erase(Amf::to_string(&ng->name));
+ nodegroup_db->erase(ng->name);
delete ng;
}
@@ -231,15 +241,18 @@
}
while (immutil_saImmOmSearchNext_2(searchHandle, &dn,
(SaImmAttrValuesT_2 ***)&attributes) == SA_AIS_OK) {
- if (!is_config_valid(&dn, attributes, nullptr)) {
+
+ if (is_config_valid(Amf::to_string(&dn), attributes, nullptr)
== false) {
+ TRACE("%s config is invalid", dn.value);
error = SA_AIS_ERR_FAILED_OPERATION;
goto done2;
}
- if ((ng = ng_create(&dn, (const SaImmAttrValuesT_2
**)attributes)) == nullptr)
+ if ((ng = ng_create(Amf::to_string(&dn), (const
SaImmAttrValuesT_2 **)attributes)) == nullptr) {
goto done2;
+ }
- nodegroup_db->insert(Amf::to_string(&ng->name), ng);
+ nodegroup_db->insert(ng->name, ng);
}
rc = SA_AIS_OK;
@@ -260,10 +273,9 @@
*/
static bool su_is_mapped_to_node_via_nodegroup(const AVD_SU *su, const
AVD_AMF_NG *ng)
{
- if ((memcmp(&ng->name, &su->saAmfSUHostNodeOrNodeGroup,
sizeof(SaNameT)) == 0) ||
- (memcmp(&ng->name, &su->sg_of_su->saAmfSGSuHostNodeGroup,
sizeof(SaNameT)) == 0)) {
-
- TRACE("SU '%s' mapped using '%s'", su->name.value,
ng->name.value);
+ if (ng->name.compare(su->saAmfSUHostNodeOrNodeGroup) == 0 ||
+ ng->name.compare(su->sg_of_su->saAmfSGSuHostNodeGroup) == 0) {
+ TRACE("SU '%s' mapped using '%s'", su->name.c_str(),
ng->name.c_str());
return true;
}
@@ -309,7 +321,7 @@
TRACE_ENTER();
- ng = avd_ng_get(&opdata->objectName);
+ ng = avd_ng_get(Amf::to_string(&opdata->objectName));
if (ng == nullptr) {
report_ccb_validation_error(opdata, "ng modify: nodegroup
cannot be found");
goto done;
@@ -330,19 +342,19 @@
delete_found = 1;
for (j = 0; j < mod->modAttr.attrValuesNumber; j++) {
- node = avd_node_get((SaNameT
*)mod->modAttr.attrValues[j]);
+ const std::string
node_name(Amf::to_string((SaNameT *)mod->modAttr.attrValues[j]));
+ node = avd_node_get(node_name);
if (node == nullptr) {
report_ccb_validation_error(opdata,
"Node '%s' does not exist",
- ((SaNameT
*)mod->modAttr.attrValues[j])->value);
+ node_name.c_str());
goto done;
}
- TRACE("DEL %s", ((SaNameT
*)mod->modAttr.attrValues[j])->value);
+ TRACE("DEL %s", node_name.c_str());
- if (node_in_nodegroup(Amf::to_string((SaNameT
*)mod->modAttr.attrValues[j]),
- ng) == false) {
+ if (node_in_nodegroup(node_name, ng) == false) {
report_ccb_validation_error(opdata, "ng
modify: node '%s' does not exist in node group",
- ((SaNameT
*)mod->modAttr.attrValues[j])->value);
+ node_name.c_str());
goto done;
}
@@ -350,12 +362,13 @@
/* for all OpenSAF SUs hosted by this node */
for (const auto& su : node->list_of_ncs_su) {
+ const SaNameTWrapper su_name(su->name);
if
(su_is_mapped_to_node_via_nodegroup(su, ng)) {
- t_opData =
ccbutil_getCcbOpDataByDN(opdata->ccbId, &su->name);
+ t_opData =
ccbutil_getCcbOpDataByDN(opdata->ccbId, su_name);
if (t_opData == nullptr ||
t_opData->operationType != CCBUTIL_DELETE) {
report_ccb_validation_error(opdata, "Cannot delete '%s' from '%s'."
" An SU is
mapped using node group",
-
node->name.value, ng->name.value);
+
node->name.c_str(), ng->name.c_str());
goto done;
}
}
@@ -363,12 +376,13 @@
/* for all application SUs hosted by this node
*/
for (const auto& su : node->list_of_su) {
+ const SaNameTWrapper su_name(su->name);
if
(su_is_mapped_to_node_via_nodegroup(su, ng)) {
- t_opData =
ccbutil_getCcbOpDataByDN(opdata->ccbId, &su->name);
+ t_opData =
ccbutil_getCcbOpDataByDN(opdata->ccbId, su_name);
if (t_opData == nullptr ||
t_opData->operationType != CCBUTIL_DELETE) {
report_ccb_validation_error(opdata, "Cannot delete '%s' from '%s'."
" An SU is mapped using
node group",
- node->name.value,
ng->name.value);
+ node->name.c_str(),
ng->name.c_str());
goto done;
}
}
@@ -393,7 +407,7 @@
add_found = 1;
for (j = 0; j < mod->modAttr.attrValuesNumber; j++) {
- node = avd_node_get((SaNameT
*)mod->modAttr.attrValues[j]);
+ node = avd_node_get(Amf::to_string((SaNameT
*)mod->modAttr.attrValues[j]));
if ((node == nullptr) &&
(ccbutil_getCcbOpDataByDN(opdata->ccbId, (SaNameT *)mod->modAttr.attrValues[j])
== nullptr)) {
@@ -431,9 +445,10 @@
*
* @return bool
*/
-static bool is_deleted_in_ccb(SaImmOiCcbIdT ccbId, const SaNameT *dn)
+static bool is_deleted_in_ccb(SaImmOiCcbIdT ccbId, const std::string& dn)
{
- CcbUtilOperationData_t *opdata = ccbutil_getCcbOpDataByDN(ccbId, dn);
+ const SaNameTWrapper dn_name(dn);
+ CcbUtilOperationData_t *opdata = ccbutil_getCcbOpDataByDN(ccbId,
dn_name);
if ((opdata != nullptr) && (opdata->operationType == CCBUTIL_DELETE))
return true;
@@ -451,14 +466,14 @@
{
SaAisErrorT rc = SA_AIS_ERR_BAD_OPERATION;
AVD_AVND *node;
- AVD_AMF_NG *ng = avd_ng_get(&opdata->objectName);
+ AVD_AMF_NG *ng = avd_ng_get(Amf::to_string(&opdata->objectName));
TRACE_ENTER2("%u", ng->number_nodes());
std::set<std::string>::const_iterator iter;
if ((ng->saAmfNGAdminState != SA_AMF_ADMIN_LOCKED) &&
(ng->saAmfNGAdminState != SA_AMF_ADMIN_UNLOCKED)) {
report_ccb_validation_error(opdata, "'%s' can be deleted in
locked or unlocked admin state",
- ng->name.value);
+ ng->name.c_str());
goto done;
}
for (iter = ng->saAmfNGNodeList.begin();
@@ -467,7 +482,7 @@
node = avd_node_get(*iter);
- TRACE("%s", node->name.value);
+ TRACE("%s", node->name.c_str());
/*
** for all SUs hosted by this node, if any SU is mapped using
@@ -478,18 +493,18 @@
*/
for (const auto& su : node->list_of_ncs_su) {
if (su_is_mapped_to_node_via_nodegroup(su, ng) &&
- is_deleted_in_ccb(opdata->ccbId, &su->name) ==
false) {
+ is_deleted_in_ccb(opdata->ccbId, su->name) ==
false) {
report_ccb_validation_error(opdata, "Cannot
delete '%s' because '%s' is mapped using it",
- ng->name.value, su->name.value);
+ ng->name.c_str(), su->name.c_str());
goto done;
}
}
for (const auto& su : node->list_of_su) {
if (su_is_mapped_to_node_via_nodegroup(su, ng) &&
- is_deleted_in_ccb(opdata->ccbId, &su->name) ==
false) {
+ is_deleted_in_ccb(opdata->ccbId, su->name) ==
false) {
report_ccb_validation_error(opdata, "Cannot
delete '%s' because '%s' is mapped using it",
- ng->name.value, su->name.value);
+ ng->name.c_str(), su->name.c_str());
goto done;
}
}
@@ -514,7 +529,7 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- if (is_config_valid(&opdata->objectName,
opdata->param.create.attrValues, opdata))
+ if (is_config_valid(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues, opdata))
rc = SA_AIS_OK;
break;
case CCBUTIL_MODIFY:
@@ -545,7 +560,7 @@
TRACE_ENTER();
- ng = avd_ng_get(&opdata->objectName);
+ ng = avd_ng_get(Amf::to_string(&opdata->objectName));
while ((mod = opdata->param.modify.attrMods[i++]) != nullptr) {
switch (mod->modType) {
@@ -577,7 +592,7 @@
static void ng_ccb_apply_delete_hdlr(CcbUtilOperationData_t *opdata)
{
TRACE_ENTER();
- AVD_AMF_NG *ng = avd_ng_get(&opdata->objectName);
+ AVD_AMF_NG *ng = avd_ng_get(Amf::to_string(&opdata->objectName));
if (avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE) {
//Since AMF will delete NG, clear its pointers in node.
for (std::set<std::string>::const_iterator iter =
ng->saAmfNGNodeList.begin();
@@ -640,9 +655,9 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- ng = ng_create(&opdata->objectName,
opdata->param.create.attrValues);
+ ng = ng_create(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues);
osafassert(ng);
- nodegroup_db->insert(Amf::to_string(&ng->name), ng);
+ nodegroup_db->insert(ng->name, ng);
break;
case CCBUTIL_MODIFY:
ng_ccb_apply_modify_hdlr(opdata);
@@ -667,16 +682,16 @@
SaAmfAdminStateT old_state = ng->saAmfNGAdminState;
osafassert(state <= SA_AMF_ADMIN_SHUTTING_DOWN);
- TRACE_ENTER2("%s AdmState %s => %s", ng->name.value,
+ TRACE_ENTER2("%s AdmState %s => %s", ng->name.c_str(),
avd_adm_state_name[old_state],
avd_adm_state_name[state]);
- saflog(LOG_NOTICE, amfSvcUsrName, "%s AdmState %s => %s",
ng->name.value,
+ saflog(LOG_NOTICE, amfSvcUsrName, "%s AdmState %s => %s",
ng->name.c_str(),
avd_adm_state_name[old_state], avd_adm_state_name[state]);
ng->saAmfNGAdminState = state;
- avd_saImmOiRtObjectUpdate(&ng->name,
+ avd_saImmOiRtObjectUpdate(ng->name,
const_cast<SaImmAttrNameT>("saAmfNGAdminState"),
SA_IMM_ATTR_SAUINT32T, &ng->saAmfNGAdminState);
m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, ng, AVSV_CKPT_NG_ADMIN_STATE);
- avd_send_admin_state_chg_ntf(&ng->name,
+ avd_send_admin_state_chg_ntf(ng->name,
(SaAmfNotificationMinorIdT)SA_AMF_NTFID_NG_ADMIN_STATE,
old_state, ng->saAmfNGAdminState);
}
@@ -691,12 +706,12 @@
SaAisErrorT rc = SA_AIS_OK;
if (node->admin_node_pend_cbk.admin_oper != 0) {
- LOG_NO("'%s' undergoing admin operation", node->name.value);
+ LOG_NO("'%s' undergoing admin operation", node->name.c_str());
rc = SA_AIS_ERR_TRY_AGAIN;
goto done;
}
if (node->clm_pend_inv != 0) {
- LOG_NO("'%s' Clm operation going on", node->name.value);
+ LOG_NO("'%s' Clm operation going on", node->name.c_str());
rc = SA_AIS_ERR_TRY_AGAIN;
goto done;
}
@@ -726,7 +741,7 @@
AVD_AVND *node = avd_node_get(*iter);
for (const auto& su : node->list_of_su) {
//Make a temorary list_of_SG for later verification of
service outage.
- tmp_sg_list.insert(Amf::to_string(&su->sg_of_su->name));
+ tmp_sg_list.insert(su->sg_of_su->name);
}
}
for (std::set<std::string>::const_iterator iter = tmp_sg_list.begin();
@@ -739,12 +754,12 @@
//As of now, AMF will throw only warning, but operation will
continue.
if (sg->is_sg_serviceable_outside_ng(ng) == true)
LOG_NO("service outage for '%s' because of
shutdown/lock "
- "on
'%s'",sg->name.value,ng->name.value);
+ "on
'%s'",sg->name.c_str(),ng->name.c_str());
if ((sg->sg_redundancy_model == SA_AMF_N_WAY_REDUNDANCY_MODEL)
||
(sg->sg_redundancy_model ==
SA_AMF_NPM_REDUNDANCY_MODEL)) {
LOG_NO("Admin op on '%s' hosting SUs of '%s' with
redundancy '%u' "
- "is not supported",ng->name.value,
sg->name.value,
+ "is not supported",ng->name.c_str(),
sg->name.c_str(),
sg->sg_redundancy_model);
rc = SA_AIS_ERR_NOT_SUPPORTED;
tmp_sg_list.clear();
@@ -767,7 +782,7 @@
SaAisErrorT rc = SA_AIS_OK;
if (ng->admin_ng_pend_cbk.admin_oper != 0) {
- LOG_NO("'%s' is already undergoing admin operation",
ng->name.value);
+ LOG_NO("'%s' is already undergoing admin operation",
ng->name.c_str());
rc = SA_AIS_ERR_TRY_AGAIN;
goto done;
}
@@ -791,7 +806,7 @@
void ng_complete_admin_op(AVD_AMF_NG *ng, SaAisErrorT result)
{
if (ng->admin_ng_pend_cbk.invocation != 0) {
- TRACE("Replying to IMM for admin op on '%s'", ng->name.value);
+ TRACE("Replying to IMM for admin op on '%s'", ng->name.c_str());
avd_saImmOiAdminOperationResult(avd_cb->immOiHandle,
ng->admin_ng_pend_cbk.invocation, result);
ng->admin_ng_pend_cbk.invocation = 0;
@@ -814,10 +829,10 @@
*/
void ng_node_lock_and_shutdown(AVD_AVND *node)
{
- TRACE_ENTER2("'%s'",node->name.value);
+ TRACE_ENTER2("'%s'",node->name.c_str());
if (node->node_info.member == false) {
node_admin_state_set(node, SA_AMF_ADMIN_LOCKED);
- LOG_NO("%s' LOCK: CLM node is not member", node->name.value);
+ LOG_NO("%s' LOCK: CLM node is not member", node->name.c_str());
return;
}
if (avd_cb->init_state == AVD_INIT_DONE) {
@@ -834,7 +849,7 @@
su->sg_of_su->ng_admin(su, node->admin_ng);
}
if (node->su_cnt_admin_oper > 0)
-
node->admin_ng->node_oper_list.insert(Amf::to_string(&node->name));
+ node->admin_ng->node_oper_list.insert(node->name);
TRACE_LEAVE2("node_oper_list size:%u",node->admin_ng->oper_list_size());
}
/*
@@ -848,7 +863,7 @@
*/
static void ng_unlock(AVD_AMF_NG *ng)
{
- TRACE_ENTER2("'%s'",ng->name.value);
+ TRACE_ENTER2("'%s'",ng->name.c_str());
for (std::set<std::string>::const_iterator iter =
ng->saAmfNGNodeList.begin();
iter != ng->saAmfNGNodeList.end(); ++iter) {
AVD_AVND *node = avd_node_get(*iter);
@@ -857,7 +872,7 @@
continue;
node_admin_state_set(node, SA_AMF_ADMIN_UNLOCKED);
if (node->node_info.member == false) {
- LOG_NO("'%s' UNLOCK: CLM node is not member",
node->name.value);
+ LOG_NO("'%s' UNLOCK: CLM node is not member",
node->name.c_str());
continue;
}
node->admin_ng = ng;
@@ -892,7 +907,7 @@
avd_sg_app_su_inst_func(avd_cb, su->sg_of_su);
}
if (node->su_cnt_admin_oper > 0)
-
node->admin_ng->node_oper_list.insert(Amf::to_string(&node->name));
+ node->admin_ng->node_oper_list.insert(node->name);
}
TRACE_LEAVE2("node_oper_list size:%u",ng->oper_list_size());
}
@@ -920,22 +935,22 @@
{
uint32_t su_try_inst;
std::set<std::string> tmp_sg_list;
- TRACE_ENTER2("%s", ng->name.value);
+ TRACE_ENTER2("%s", ng->name.c_str());
for (std::set<std::string>::const_iterator iter =
ng->saAmfNGNodeList.begin();
iter != ng->saAmfNGNodeList.end(); ++iter) {
AVD_AVND *node = avd_node_get(*iter);
node->su_cnt_admin_oper = 0;
if (node->node_info.member == false) {
- LOG_NO("'%s' UNLOCK_INSTANTIATION: CLM node is not
member", node->name.value);
+ LOG_NO("'%s' UNLOCK_INSTANTIATION: CLM node is not
member", node->name.c_str());
continue;
}
if (node->saAmfNodeOperState == SA_AMF_OPERATIONAL_DISABLED) {
- LOG_NO("'%s' UNLOCK_INSTANTIATION: AMF node oper state
disabled", node->name.value);
+ LOG_NO("'%s' UNLOCK_INSTANTIATION: AMF node oper state
disabled", node->name.c_str());
continue;
}
if (any_ng_in_locked_in_state(node) == true) {
- LOG_NO("One of the node group of '%s' is in locked-in",
node->name.value);
+ LOG_NO("One of the node group of '%s' is in locked-in",
node->name.c_str());
continue;
}
for (const auto& node_su : node->list_of_su) {
@@ -945,7 +960,7 @@
AVD_SG *sg = node_su->sg_of_su;
std::set<std::string>::const_iterator iter1 ;
- iter1 = tmp_sg_list.find(Amf::to_string(&sg->name));
+ iter1 = tmp_sg_list.find(sg->name);
if (iter1 != tmp_sg_list.end())
continue;
@@ -953,7 +968,7 @@
avd_sg_adjust_config(sg);
for (const auto& su : sg->list_of_su) {
//Continue if this SU is not hosted on the Node
of NG.
- if
(node_in_nodegroup(Amf::to_string(&su->su_on_node->name), ng) == false)
+ if (node_in_nodegroup(su->su_on_node->name, ng)
== false)
continue;
if ((su->saAmfSUAdminState !=
SA_AMF_ADMIN_LOCKED_INSTANTIATION) &&
@@ -967,7 +982,7 @@
if (sg->saAmfSGNumPrefInserviceSUs >
su_try_inst) {
if
(avd_snd_presence_msg(avd_cb, su, false) != NCSCC_RC_SUCCESS) {
- LOG_NO("Failed to send
Instantiation of '%s'", su->name.value);
+ LOG_NO("Failed to send
Instantiation of '%s'", su->name.c_str());
} else {
su->su_on_node->su_cnt_admin_oper++;
su_try_inst++;
@@ -975,12 +990,12 @@
}
}
}
- tmp_sg_list.insert(Amf::to_string(&sg->name));
+ tmp_sg_list.insert(sg->name);
}
TRACE("node:'%s', su_cnt_admin_oper:%u",
- node->name.value, node->su_cnt_admin_oper);
+ node->name.c_str(), node->su_cnt_admin_oper);
if (node->su_cnt_admin_oper > 0)
- ng->node_oper_list.insert(Amf::to_string(&node->name));
+ ng->node_oper_list.insert(node->name);
}
TRACE("node_oper_list size:%u",ng->oper_list_size());
TRACE_LEAVE();
@@ -1000,7 +1015,7 @@
const SaImmAdminOperationParamsT_2 **params)
{
SaAisErrorT rc = SA_AIS_OK;
- AVD_AMF_NG *ng = avd_ng_get(ng_name);
+ AVD_AMF_NG *ng = avd_ng_get(Amf::to_string(ng_name));
TRACE_ENTER2("'%s', inv:'%llu',
op:'%llu'",ng_name->value,invocation,op_id);
switch(op_id) {
@@ -1017,13 +1032,13 @@
if (ng->saAmfNGAdminState == SA_AMF_ADMIN_LOCKED_INSTANTIATION)
{
report_admin_op_error(avd_cb->immOiHandle, invocation,
SA_AIS_ERR_NO_OP, nullptr,
"'%s' Invalid Admin Operation
LOCK INSTANTIATION in state %s",
- ng->name.value,
avd_adm_state_name[ng->saAmfNGAdminState]);
+ ng->name.c_str(),
avd_adm_state_name[ng->saAmfNGAdminState]);
goto done;
}
if (ng->saAmfNGAdminState != SA_AMF_ADMIN_LOCKED) {
report_admin_op_error(avd_cb->immOiHandle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"'%s' Invalid Admin Operation
LOCK_INSTANTIATION in state %s",
- ng->name.value,
avd_adm_state_name[ng->saAmfNGAdminState]);
+ ng->name.c_str(),
avd_adm_state_name[ng->saAmfNGAdminState]);
goto done;
}
rc = check_red_model_service_outage(ng);
@@ -1053,22 +1068,22 @@
iter != ng->saAmfNGNodeList.end(); ++iter) {
AVD_AVND *node = avd_node_get(*iter);
if (node->node_info.member == false) {
- LOG_NO("'%s' LOCK_INSTANTIATION: CLM node is
not member", node->name.value);
+ LOG_NO("'%s' LOCK_INSTANTIATION: CLM node is
not member", node->name.c_str());
continue;
}
if (node->saAmfNodeOperState ==
SA_AMF_OPERATIONAL_DISABLED) {
- LOG_NO("'%s' LOCK_INSTANTIATION: AMF node oper
state disabled", node->name.value);
+ LOG_NO("'%s' LOCK_INSTANTIATION: AMF node oper
state disabled", node->name.c_str());
continue;
}
if (node->saAmfNodeAdminState !=
SA_AMF_ADMIN_LOCKED_INSTANTIATION) {
- LOG_NO("'%s' LOCK_INSTANTIATION: AMF node admin
state is not LOCKED", node->name.value);
+ LOG_NO("'%s' LOCK_INSTANTIATION: AMF node admin
state is not LOCKED", node->name.c_str());
continue;
}
avd_node_admin_lock_instantiation(node);
TRACE("node:'%s', su_cnt_admin_oper:%u",
- node->name.value,
node->su_cnt_admin_oper);
+ node->name.c_str(),
node->su_cnt_admin_oper);
if (node->su_cnt_admin_oper > 0)
-
ng->node_oper_list.insert(Amf::to_string(&node->name));
+ ng->node_oper_list.insert(node->name);
}
TRACE("node_oper_list size:%u",ng->oper_list_size());
if (ng->node_oper_list.empty())
@@ -1086,14 +1101,14 @@
}
if (ng->saAmfNGAdminState == SA_AMF_ADMIN_LOCKED) {
report_admin_op_error(avd_cb->immOiHandle, invocation,
SA_AIS_ERR_NO_OP, nullptr,
- "'%s' Already in LOCKED state",
ng->name.value);
+ "'%s' Already in LOCKED state",
ng->name.c_str());
goto done;
}
if (ng->saAmfNGAdminState != SA_AMF_ADMIN_LOCKED_INSTANTIATION)
{
report_admin_op_error(avd_cb->immOiHandle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"'%s' Invalid Admin Operation
UNLOCK_INSTANTIATION in state %s",
- ng->name.value,
avd_adm_state_name[ng->saAmfNGAdminState]);
+ ng->name.c_str(),
avd_adm_state_name[ng->saAmfNGAdminState]);
goto done;
}
rc = check_red_model_service_outage(ng);
@@ -1136,13 +1151,13 @@
}
if (ng->saAmfNGAdminState == SA_AMF_ADMIN_LOCKED) {
report_admin_op_error(avd_cb->immOiHandle, invocation,
SA_AIS_ERR_NO_OP, nullptr,
- "'%s' Already in LOCKED state",
ng->name.value);
+ "'%s' Already in LOCKED state",
ng->name.c_str());
goto done;
}
if (ng->saAmfNGAdminState == SA_AMF_ADMIN_LOCKED_INSTANTIATION)
{
report_admin_op_error(avd_cb->immOiHandle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"'%s' Invalid Admin Operation LOCK in
state %s",
- ng->name.value,
avd_adm_state_name[ng->saAmfNGAdminState]);
+ ng->name.c_str(),
avd_adm_state_name[ng->saAmfNGAdminState]);
goto done;
}
rc = check_red_model_service_outage(ng);
@@ -1189,13 +1204,13 @@
}
if (ng->saAmfNGAdminState == SA_AMF_ADMIN_SHUTTING_DOWN) {
report_admin_op_error(avd_cb->immOiHandle, invocation,
SA_AIS_ERR_NO_OP, nullptr,
- "'%s' Already in SHUTTING DOWN state",
ng->name.value);
+ "'%s' Already in SHUTTING DOWN state",
ng->name.c_str());
goto done;
}
if (ng->saAmfNGAdminState != SA_AMF_ADMIN_UNLOCKED) {
report_admin_op_error(avd_cb->immOiHandle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"'%s' Invalid Admin Operation SHUTDOWN
in state %s",
- ng->name.value,
avd_adm_state_name[ng->saAmfNGAdminState]);
+ ng->name.c_str(),
avd_adm_state_name[ng->saAmfNGAdminState]);
goto done;
}
rc = check_red_model_service_outage(ng);
@@ -1253,13 +1268,13 @@
}
if (ng->saAmfNGAdminState == SA_AMF_ADMIN_UNLOCKED) {
report_admin_op_error(avd_cb->immOiHandle, invocation,
SA_AIS_ERR_NO_OP, nullptr,
- "'%s' Already in UNLOCKED state",
ng->name.value);
+ "'%s' Already in UNLOCKED state",
ng->name.c_str());
goto done;
}
if (ng->saAmfNGAdminState != SA_AMF_ADMIN_LOCKED) {
report_admin_op_error(avd_cb->immOiHandle, invocation,
SA_AIS_ERR_BAD_OPERATION, nullptr,
"'%s' Invalid Admin Operation UNLOCK in
state %s",
- ng->name.value,
avd_adm_state_name[ng->saAmfNGAdminState]);
+ ng->name.c_str(),
avd_adm_state_name[ng->saAmfNGAdminState]);
goto done;
}
ng->admin_ng_pend_cbk.invocation = invocation;
diff --git a/osaf/services/saf/amf/amfd/nodeswbundle.cc
b/osaf/services/saf/amf/amfd/nodeswbundle.cc
--- a/osaf/services/saf/amf/amfd/nodeswbundle.cc
+++ b/osaf/services/saf/amf/amfd/nodeswbundle.cc
@@ -31,21 +31,21 @@
*
* @return int
*/
-static int is_config_valid(const SaNameT *dn, const SaImmAttrValuesT_2
**attributes,
+static int is_config_valid(const std::string& dn, const SaImmAttrValuesT_2
**attributes,
const CcbUtilOperationData_t *opdata)
{
- const char *parent;
+ std::string parent;
const char *path_prefix;
- parent = avd_getparent((char*)dn->value);
- if (parent == nullptr) {
- report_ccb_validation_error(opdata, "No parent to '%s' ",
dn->value);
+ parent = avd_getparent(dn);
+ if (parent.empty() == true) {
+ report_ccb_validation_error(opdata, "No parent to '%s' ",
dn.c_str());
return 0;
}
/* Should be children to nodes */
- if (strncmp(parent, "safAmfNode=", 11) != 0) {
- report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", parent, dn->value);
+ if (parent.compare(0, 11, "safAmfNode=") != 0) {
+ report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
", parent.c_str(), dn.c_str());
return 0;
}
@@ -53,7 +53,7 @@
osafassert(path_prefix);
if (path_prefix[0] != '/') {
- report_ccb_validation_error(opdata, "Invalid absolute path '%s'
for '%s' ", path_prefix, dn->value);
+ report_ccb_validation_error(opdata, "Invalid absolute path '%s'
for '%s' ", path_prefix, dn.c_str());
return 0;
}
@@ -68,24 +68,26 @@
*
* @return int
*/
-static int is_swbdl_delete_ok_for_node(const SaNameT *bundle_dn_to_delete,
- const SaNameT *node_dn, const std::vector<AVD_SU*> &su_list,
CcbUtilOperationData_t *opdata)
+static int is_swbdl_delete_ok_for_node(const std::string& bundle_dn_to_delete,
+ const std::string& node_dn, const std::vector<AVD_SU*> &su_list,
CcbUtilOperationData_t *opdata)
{
SaNameT bundle_dn;
+ const SaNameTWrapper node(node_dn);
for (const auto& su : su_list) {
for (const auto& comp : su->list_of_comp) {
-
avsv_create_association_class_dn(&comp->comp_type->saAmfCtSwBundle,
- node_dn, "safInstalledSwBundle", &bundle_dn);
+ const SaNameTWrapper
sw_bundle(comp->comp_type->saAmfCtSwBundle);
+ avsv_create_association_class_dn(sw_bundle,
+ node, "safInstalledSwBundle", &bundle_dn);
- if (memcmp(bundle_dn_to_delete, &bundle_dn,
sizeof(SaNameT)) == 0) {
+ if
(bundle_dn_to_delete.compare(Amf::to_string(&bundle_dn)) == 0) {
if (su->su_on_node->node_state ==
AVD_AVND_STATE_ABSENT ||
(!su->sg_of_su->sg_ncs_spec &&
(comp->su->saAmfSUAdminState ==
SA_AMF_ADMIN_LOCKED_INSTANTIATION))) {
continue;
} else {
report_ccb_validation_error(opdata,
"'%s' admin state is not locked instantiaion",
- su->name.value);
+ su->name.c_str());
return 0;
}
}
@@ -101,19 +103,19 @@
*
* @return int
*/
-static int is_swbdl_delete_ok(const SaNameT *bundle_dn, CcbUtilOperationData_t
*opdata)
+static int is_swbdl_delete_ok(const std::string& bundle_dn,
CcbUtilOperationData_t *opdata)
{
const AVD_AVND *node;
- SaNameT node_dn;
+ std::string node_dn;
/* Check if any comps are referencing this bundle */
- avsv_sanamet_init(bundle_dn, &node_dn, "safAmfNode=");
- node = avd_node_get(&node_dn);
+ avsv_sanamet_init(bundle_dn, node_dn, "safAmfNode=");
+ node = avd_node_get(node_dn);
- if (!is_swbdl_delete_ok_for_node(bundle_dn, &node_dn,
node->list_of_ncs_su, opdata))
+ if (!is_swbdl_delete_ok_for_node(bundle_dn, node_dn,
node->list_of_ncs_su, opdata))
return 0;
- if (!is_swbdl_delete_ok_for_node(bundle_dn, &node_dn, node->list_of_su,
opdata))
+ if (!is_swbdl_delete_ok_for_node(bundle_dn, node_dn, node->list_of_su,
opdata))
return 0;
return 1;
@@ -127,14 +129,14 @@
switch (opdata->operationType) {
case CCBUTIL_CREATE:
- if (is_config_valid(&opdata->objectName,
opdata->param.create.attrValues, opdata))
+ if (is_config_valid(Amf::to_string(&opdata->objectName),
opdata->param.create.attrValues, opdata))
rc = SA_AIS_OK;
break;
case CCBUTIL_MODIFY:
report_ccb_validation_error(opdata, "Modification of
SaAmfNodeSwBundle not supported");
break;
case CCBUTIL_DELETE:
- if (is_swbdl_delete_ok(&opdata->objectName, opdata))
+ if (is_swbdl_delete_ok(Amf::to_string(&opdata->objectName),
opdata))
rc = SA_AIS_OK;
break;
default:
diff --git a/osaf/services/saf/amf/amfd/ntf.cc
b/osaf/services/saf/amf/amfd/ntf.cc
--- a/osaf/services/saf/amf/amfd/ntf.cc
+++ b/osaf/services/saf/amf/amfd/ntf.cc
@@ -39,22 +39,23 @@
Notes :
*****************************************************************************/
-void avd_send_comp_inst_failed_alarm(const SaNameT *comp_name, const SaNameT
*node_name)
+void avd_send_comp_inst_failed_alarm(const std::string& comp_name, const
std::string& node_name)
{
char add_text[ADDITION_TEXT_LENGTH];
+ const SaNameTWrapper node(node_name);
TRACE_ENTER();
snprintf(add_text, ADDITION_TEXT_LENGTH, "Instantiation of Component %s
failed",
- comp_name->value);
+ comp_name.c_str());
sendAlarmNotificationAvd(avd_cb,
- *comp_name,
+ comp_name,
(SaUint8T*)add_text,
SA_SVC_AMF,
SA_AMF_NTFID_COMP_INSTANTIATION_FAILED,
SA_NTF_SOFTWARE_ERROR,
SA_NTF_SEVERITY_MAJOR,
- (NCSCONTEXT)node_name,
+ (NCSCONTEXT)(static_cast<const
SaNameT*>(node)),
true /* add_info is node_name */);
}
@@ -71,22 +72,23 @@
Notes :
*****************************************************************************/
-void avd_send_comp_clean_failed_alarm(const SaNameT *comp_name, const SaNameT
*node_name)
+void avd_send_comp_clean_failed_alarm(const std::string& comp_name, const
std::string& node_name)
{
char add_text[ADDITION_TEXT_LENGTH];
TRACE_ENTER();
snprintf(add_text, ADDITION_TEXT_LENGTH, "Cleanup of Component %s
failed",
- comp_name->value);
+ comp_name.c_str());
+ const SaNameTWrapper node(node_name);
sendAlarmNotificationAvd(avd_cb,
- *comp_name,
+ comp_name,
(SaUint8T*)add_text,
SA_SVC_AMF,
SA_AMF_NTFID_COMP_CLEANUP_FAILED,
SA_NTF_SOFTWARE_ERROR,
SA_NTF_SEVERITY_MAJOR,
- (NCSCONTEXT)node_name,
+ (NCSCONTEXT)static_cast<const SaNameT*>(node),
true /* add_info is node_name */);
}
@@ -105,16 +107,16 @@
Notes :
*****************************************************************************/
-void avd_send_cluster_reset_alarm(const SaNameT *comp_name)
+void avd_send_cluster_reset_alarm(const std::string& comp_name)
{
char add_text[ADDITION_TEXT_LENGTH];
TRACE_ENTER();
snprintf(add_text, ADDITION_TEXT_LENGTH, "Failure of Component %s
triggered"
- " cluster reset", comp_name->value);
+ " cluster reset", comp_name.c_str());
sendAlarmNotificationAvd(avd_cb,
- *comp_name,
+ comp_name,
(SaUint8T*)add_text,
SA_SVC_AMF,
SA_AMF_NTFID_CLUSTER_RESET,
@@ -136,16 +138,16 @@
Notes :
*****************************************************************************/
-void avd_send_si_unassigned_alarm(const SaNameT *si_name)
+void avd_send_si_unassigned_alarm(const std::string& si_name)
{
char add_text[ADDITION_TEXT_LENGTH];
TRACE_ENTER();
snprintf(add_text, ADDITION_TEXT_LENGTH, "SI designated by %s has no
current "
- "active assignments to any SU", si_name->value);
+ "active assignments to any SU", si_name.c_str());
sendAlarmNotificationAvd(avd_cb,
- *si_name,
+ si_name,
(SaUint8T*)add_text,
SA_SVC_AMF,
SA_AMF_NTFID_SI_UNASSIGNED,
@@ -168,16 +170,16 @@
Notes :
*****************************************************************************/
-void avd_send_comp_proxy_status_unproxied_alarm(const SaNameT *comp_name)
+void avd_send_comp_proxy_status_unproxied_alarm(const std::string& comp_name)
{
char add_text[ADDITION_TEXT_LENGTH];
TRACE_ENTER();
snprintf(add_text, ADDITION_TEXT_LENGTH, "Component %s become orphan",
- comp_name->value);
+ comp_name.c_str());
sendAlarmNotificationAvd(avd_cb,
- *comp_name,
+ comp_name,
(SaUint8T*)add_text,
SA_SVC_AMF,
SA_AMF_NTFID_COMP_UNPROXIED,
@@ -202,16 +204,16 @@
Notes :
*****************************************************************************/
-void avd_send_admin_state_chg_ntf(const SaNameT *name,
SaAmfNotificationMinorIdT minor_id,
+void avd_send_admin_state_chg_ntf(const std::string& name,
SaAmfNotificationMinorIdT minor_id,
SaAmfAdminStateT old_state, SaAmfAdminStateT new_state)
{
char add_text[ADDITION_TEXT_LENGTH];
TRACE_ENTER();
- snprintf(add_text, ADDITION_TEXT_LENGTH, "Admin state of %s changed",
name->value);
+ snprintf(add_text, ADDITION_TEXT_LENGTH, "Admin state of %s changed",
name.c_str());
sendStateChangeNotificationAvd(avd_cb,
- *name,
+ name,
(SaUint8T*)add_text,
SA_SVC_AMF,
minor_id,
@@ -239,16 +241,16 @@
Notes :
*****************************************************************************/
-void avd_send_oper_chg_ntf(const SaNameT *name, SaAmfNotificationMinorIdT
minor_id,
+void avd_send_oper_chg_ntf(const std::string& name, SaAmfNotificationMinorIdT
minor_id,
SaAmfOperationalStateT old_state, SaAmfOperationalStateT
new_state)
{
char add_text[ADDITION_TEXT_LENGTH];
TRACE_ENTER();
- snprintf(add_text, ADDITION_TEXT_LENGTH, "Oper state %s changed",
name->value);
+ snprintf(add_text, ADDITION_TEXT_LENGTH, "Oper state %s changed",
name.c_str());
sendStateChangeNotificationAvd(avd_cb,
- *name,
+ name,
(SaUint8T*)add_text,
SA_SVC_AMF,
minor_id,
@@ -274,7 +276,7 @@
Notes :
*****************************************************************************/
-void avd_send_su_pres_state_chg_ntf(const SaNameT *su_name,
+void avd_send_su_pres_state_chg_ntf(const std::string& su_name,
SaAmfPresenceStateT old_state, SaAmfPresenceStateT new_state)
{
char add_text[ADDITION_TEXT_LENGTH];
@@ -282,9 +284,9 @@
TRACE_ENTER();
snprintf(add_text, ADDITION_TEXT_LENGTH, "Presence state of SU %s
changed",
- su_name->value);
+ su_name.c_str());
sendStateChangeNotificationAvd(avd_cb,
- *su_name,
+ su_name,
(SaUint8T*)add_text,
SA_SVC_AMF,
SA_AMF_NTFID_SU_PRESENCE_STATE,
@@ -312,19 +314,20 @@
Notes :
*****************************************************************************/
-void avd_send_su_ha_state_chg_ntf(const SaNameT *su_name,
- const SaNameT *si_name,
+void avd_send_su_ha_state_chg_ntf(const std::string& su_name,
+ const std::string& si_name,
SaAmfHAStateT old_state,
SaAmfHAStateT new_state)
{
char add_text[ADDITION_TEXT_LENGTH];
+ const SaNameTWrapper si(si_name);
TRACE_ENTER();
snprintf(add_text, ADDITION_TEXT_LENGTH, "The HA state of SI %s
assigned to SU %s changed",
- si_name->value, su_name->value);
+ si_name.c_str(), su_name.c_str());
sendStateChangeNotificationAvd(avd_cb,
- *su_name,
+ su_name,
(SaUint8T*)add_text,
SA_SVC_AMF,
SA_AMF_NTFID_SU_SI_HA_STATE,
@@ -332,7 +335,7 @@
SA_AMF_HA_STATE,
old_state,
new_state,
- (NCSCONTEXT)si_name,
+ (NCSCONTEXT)static_cast<const
SaNameT*>(si),
true /* Si_name */);
TRACE_LEAVE();
@@ -353,7 +356,7 @@
Notes :
*****************************************************************************/
-void avd_send_su_ha_readiness_state_chg_ntf(const SaNameT *su_name, const
SaNameT *si_name,
+void avd_send_su_ha_readiness_state_chg_ntf(const std::string& su_name, const
std::string& si_name,
SaAmfHAReadinessStateT old_state, SaAmfHAReadinessStateT
new_state)
{
char add_text[ADDITION_TEXT_LENGTH];
@@ -361,9 +364,10 @@
TRACE_ENTER();
snprintf(add_text, ADDITION_TEXT_LENGTH, "The HA readiness state of SI
%s assigned"
- " to SU %s changed", si_name->value, su_name->value);
+ " to SU %s changed", si_name.c_str(), su_name.c_str());
+ const SaNameTWrapper si(si_name);
sendStateChangeNotificationAvd(avd_cb,
- *su_name,
+ su_name,
(SaUint8T*)add_text,
SA_SVC_AMF,
SA_AMF_NTFID_SU_SI_HA_READINESS_STATE,
@@ -371,7 +375,7 @@
SA_AMF_HA_READINESS_STATE,
old_state,
new_state,
- (NCSCONTEXT)si_name,
+ (NCSCONTEXT)static_cast<const
SaNameT*>(si),
true /* Si_name */);
}
@@ -389,16 +393,16 @@
Notes :
*****************************************************************************/
-void avd_send_si_assigned_ntf(const SaNameT *si_name, SaAmfAssignmentStateT
old_state,
+void avd_send_si_assigned_ntf(const std::string& si_name,
SaAmfAssignmentStateT old_state,
SaAmfAssignmentStateT new_state)
{
char add_text[ADDITION_TEXT_LENGTH];
TRACE_ENTER();
- snprintf(add_text, ADDITION_TEXT_LENGTH, "The Assignment state of SI %s
changed", si_name->value);
+ snprintf(add_text, ADDITION_TEXT_LENGTH, "The Assignment state of SI %s
changed", si_name.c_str());
sendStateChangeNotificationAvd(avd_cb,
- *si_name,
+ si_name,
(SaUint8T*)add_text,
SA_SVC_AMF,
SA_AMF_NTFID_SI_ASSIGNMENT_STATE,
@@ -426,17 +430,17 @@
Notes :
*****************************************************************************/
-void avd_send_comp_proxy_status_proxied_ntf(const SaNameT *comp_name,
+void avd_send_comp_proxy_status_proxied_ntf(const std::string& comp_name,
SaAmfProxyStatusT old_status, SaAmfProxyStatusT new_status)
{
char add_text[ADDITION_TEXT_LENGTH];
TRACE_ENTER();
- snprintf(add_text, ADDITION_TEXT_LENGTH, "Component %s is now proxied",
comp_name->value);
+ snprintf(add_text, ADDITION_TEXT_LENGTH, "Component %s is now proxied",
comp_name.c_str());
sendStateChangeNotificationAvd(avd_cb,
- *comp_name,
+ comp_name,
(SaUint8T*)add_text,
SA_SVC_AMF,
SA_AMF_NTFID_COMP_PROXY_STATUS,
@@ -463,15 +467,15 @@
Notes :
*****************************************************************************/
-void avd_alarm_clear(const SaNameT *name, SaUint16T minorId, uint32_t
probableCause)
+void avd_alarm_clear(const std::string& name, SaUint16T minorId, uint32_t
probableCause)
{
char add_text[ADDITION_TEXT_LENGTH];
TRACE_ENTER();
- snprintf(add_text, ADDITION_TEXT_LENGTH, "Previous raised alarm of %s
is now cleared", name->value);
+ snprintf(add_text, ADDITION_TEXT_LENGTH, "Previous raised alarm of %s
is now cleared", name.c_str());
sendAlarmNotificationAvd(avd_cb,
- *name,
+ name,
(SaUint8T*)add_text,
SA_SVC_AMF,
minorId,
@@ -552,7 +556,7 @@
}
uint32_t sendAlarmNotificationAvd(AVD_CL_CB *avd_cb,
- const SaNameT &ntf_object,
+ const std::string& ntf_object,
SaUint8T *add_text,
SaUint16T majorId,
SaUint16T minorId,
@@ -565,10 +569,11 @@
SaNtfAlarmNotificationT myAlarmNotification;
SaUint16T add_info_items = 0;
SaUint64T allocation_size = 0;
+ const SaNameTWrapper object_name(ntf_object);
if (!avd_cb->active_services_exist) {
// TODO #3051
- LOG_ER("Alarm lost for %s", ntf_object.value);
+ LOG_ER("Alarm lost for %s", ntf_object.c_str());
return status;
}
@@ -600,7 +605,7 @@
status =
fill_ntf_header_part_avd(&myAlarmNotification.notificationHeader,
SA_NTF_ALARM_PROCESSING,
- ntf_object,
+ object_name,
add_text,
majorId,
minorId,
@@ -638,7 +643,7 @@
}
uint32_t sendStateChangeNotificationAvd(AVD_CL_CB *avd_cb,
- const SaNameT &ntf_object,
+ const std::string& ntf_object,
SaUint8T *add_text,
SaUint16T majorId,
SaUint16T minorId,
@@ -654,10 +659,11 @@
SaUint16T add_info_items = 0;
SaUint64T allocation_size = 0;
SaUint16T num_of_changedStates = 1;
+ const SaNameTWrapper object_name(ntf_object);
if (!avd_cb->active_services_exist) {
// TODO #3051
- LOG_WA("State change notification lost for '%s'",
ntf_object.value);
+ LOG_WA("State change notification lost for '%s'",
ntf_object.c_str());
return status;
}
if (additional_info_is_present == true) {
@@ -692,7 +698,7 @@
status =
fill_ntf_header_part_avd(&myStateNotification.notificationHeader,
SA_NTF_OBJECT_STATE_CHANGE,
- ntf_object,
+ object_name,
add_text,
majorId,
minorId,
@@ -736,7 +742,7 @@
}
-void avd_send_error_report_ntf(const SaNameT *name, SaAmfRecommendedRecoveryT
recovery)
+void avd_send_error_report_ntf(const std::string& name,
SaAmfRecommendedRecoveryT recovery)
{
TRACE_ENTER();
@@ -745,18 +751,18 @@
bool additional_info_is_present;
if ((recovery >= SA_AMF_NO_RECOMMENDATION) && (recovery <
SA_AMF_CONTAINER_RESTART)) {
- snprintf(add_text, ADDITION_TEXT_LENGTH, "Error reported on %s
with recovery %s", name->value,
+ snprintf(add_text, ADDITION_TEXT_LENGTH, "Error reported on %s
with recovery %s", name.c_str(),
amf_recovery[recovery]);
minorid = SA_AMF_NTFID_ERROR_REPORT;
additional_info_is_present = true;
} else {
- snprintf(add_text, ADDITION_TEXT_LENGTH, "Error reported on %s
is now cleared", name->value);
+ snprintf(add_text, ADDITION_TEXT_LENGTH, "Error reported on %s
is now cleared", name.c_str());
minorid = SA_AMF_NTFID_ERROR_CLEAR;
additional_info_is_present = false;
}
sendStateChangeNotificationAvd(avd_cb,
- *name,
+ name,
(SaUint8T*)add_text,
SA_SVC_AMF,
minorid,
diff --git a/osaf/services/saf/amf/amfd/pg.cc b/osaf/services/saf/amf/amfd/pg.cc
--- a/osaf/services/saf/amf/amfd/pg.cc
+++ b/osaf/services/saf/amf/amfd/pg.cc
@@ -170,7 +170,7 @@
csi_node; csi_node = (AVD_PG_CSI_NODE
*)m_NCS_DBLIST_FIND_NEXT(&csi_node->csi_dll_node)) {
rc = avd_snd_pg_upd_msg(cb, csi_node->node, comp_csi,
(true == is_rmv) ?
SA_AMF_PROTECTION_GROUP_REMOVED :
- SA_AMF_PROTECTION_GROUP_ADDED, 0);
+ SA_AMF_PROTECTION_GROUP_ADDED,
std::string(""));
} /* for */
TRACE_LEAVE2("%u", rc);
return rc;
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel