ack, code review only/Thanks HansN
On 01/25/2016 05:35 AM, Gary Lee wrote:
> osaf/services/saf/amf/amfd/su.cc | 444
> ++++++++++++++------------
> osaf/services/saf/amf/amfd/sutcomptype.cc | 25 +-
> osaf/services/saf/amf/amfd/sutype.cc | 65 ++-
> osaf/services/saf/amf/amfd/svctype.cc | 44 +-
> osaf/services/saf/amf/amfd/svctypecstypes.cc | 39 +-
> 5 files changed, 329 insertions(+), 288 deletions(-)
>
>
> diff --git a/osaf/services/saf/amf/amfd/su.cc
> b/osaf/services/saf/amf/amfd/su.cc
> --- a/osaf/services/saf/amf/amfd/su.cc
> +++ b/osaf/services/saf/amf/amfd/su.cc
> @@ -36,7 +36,7 @@
> void AVD_SU::initialize() {
>
> saAmfSURank = 0;
> - saAmfSUHostNodeOrNodeGroup.length = 0;
> + saAmfSUHostNodeOrNodeGroup = "";
> saAmfSUFailover = false;
> saAmfSUFailover_configured = false;
> saAmfSUPreInstantiable = SA_FALSE;
> @@ -57,10 +57,9 @@
> list_of_comp = {};
> su_type = nullptr;
> su_list_su_type_next = nullptr;
> - name.length = 0;
> - saAmfSUType.length = 0;
> - saAmfSUMaintenanceCampaign.length = 0;
> - saAmfSUHostedByNode.length = 0;
> + saAmfSUType = "";
> + saAmfSUMaintenanceCampaign = "";
> + saAmfSUHostedByNode = "";
> pend_cbk.invocation = 0;
> pend_cbk.admin_oper = (SaAmfAdminOperationIdT)0;
> surestart = false;
> @@ -70,10 +69,10 @@
> initialize();
> }
>
> -AVD_SU::AVD_SU(const SaNameT *dn) {
> +AVD_SU::AVD_SU(const std::string& dn) :
> + name(dn)
> +{
> initialize();
> - memcpy(name.value, dn->value, sizeof(name.value));
> - name.length = dn->length;
> }
>
> /**
> @@ -81,7 +80,7 @@
> * to node director.
> */
> void AVD_SU::remove_from_model() {
> - TRACE_ENTER2("'%s'", name.value);
> + TRACE_ENTER2("'%s'", name.c_str());
>
> /* All the components under this SU should have been deleted
> * by now, just do the sanity check to confirm it is done
> @@ -92,7 +91,7 @@
> m_AVSV_SEND_CKPT_UPDT_ASYNC_RMV(avd_cb, this, AVSV_CKPT_AVD_SU_CONFIG);
> avd_node_remove_su(this);
> avd_sutype_remove_su(this);
> - su_db->erase(Amf::to_string(&name));
> + su_db->erase(name);
> avd_sg_remove_su(this);
>
> TRACE_LEAVE();
> @@ -179,27 +178,30 @@
> *
> * @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)
> {
> SaAisErrorT rc;
> - SaNameT saAmfSUType, sg_name;
> - SaNameT saAmfSUHostNodeOrNodeGroup = {0}, saAmfSGSuHostNodeGroup = {0};
> + std::string sg_name;
> + std::string su_host_node_or_nodegroup;
> + std::string sg_su_host_nodegroup;
> + SaNameT saAmfSUHostNodeOrNodeGroup = {0};
> + SaNameT saAmfSUType;
> SaBoolT abool;
> SaAmfAdminStateT admstate;
> - char *parent;
> + std::string::size_type pos;
> SaUint32T saAmfSutIsExternal;
> AVD_SUTYPE *sut = nullptr;
> CcbUtilOperationData_t *tmp;
> AVD_SG *sg;
>
> - 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, "safSg=", 6) != 0) {
> - report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
> ", parent, dn->value);
> + if (dn.compare(pos + 1, 6, "safSg=") != 0) {
> + report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
> ", dn.substr(pos + 1).c_str(), dn.c_str());
> return 0;
> }
>
> @@ -228,34 +230,35 @@
> /* Validate that a configured node or node group exist */
> if
> (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUHostNodeOrNodeGroup"),
> attributes, 0,
> &saAmfSUHostNodeOrNodeGroup) == SA_AIS_OK) {
> - if (strncmp((char*)saAmfSUHostNodeOrNodeGroup.value,
> "safAmfNode=", 11) == 0) {
> - if (avd_node_get(&saAmfSUHostNodeOrNodeGroup) ==
> nullptr) {
> + su_host_node_or_nodegroup =
> Amf::to_string(&saAmfSUHostNodeOrNodeGroup);
> + if (su_host_node_or_nodegroup.compare(0, 11, "safAmfNode=") ==
> 0) {
> + if (avd_node_get(su_host_node_or_nodegroup) == nullptr)
> {
> if (opdata == nullptr) {
> report_ccb_validation_error(opdata,
> "'%s' does not exist in model",
> -
> saAmfSUHostNodeOrNodeGroup.value);
> +
> su_host_node_or_nodegroup.c_str());
> return 0;
> }
>
> if (ccbutil_getCcbOpDataByDN(opdata->ccbId,
> &saAmfSUHostNodeOrNodeGroup) == nullptr) {
> report_ccb_validation_error(opdata,
> "'%s' does not exist in
> existing model or in CCB",
> -
> saAmfSUHostNodeOrNodeGroup.value);
> +
> su_host_node_or_nodegroup.c_str());
> return 0;
> }
> }
> }
> else {
> - if (avd_ng_get(&saAmfSUHostNodeOrNodeGroup) == nullptr)
> {
> + if (avd_ng_get(su_host_node_or_nodegroup) == nullptr) {
> if (opdata == nullptr) {
> report_ccb_validation_error(opdata,
> "'%s' does not exist in model",
> -
> saAmfSUHostNodeOrNodeGroup.value);
> +
> su_host_node_or_nodegroup.c_str());
> return 0;
> }
>
> if (ccbutil_getCcbOpDataByDN(opdata->ccbId,
> &saAmfSUHostNodeOrNodeGroup) == nullptr) {
> report_ccb_validation_error(opdata,
> "'%s' does not exist in
> existing model or in CCB",
> -
> saAmfSUHostNodeOrNodeGroup.value);
> +
> su_host_node_or_nodegroup.c_str());
> return 0;
> }
> }
> @@ -263,32 +266,36 @@
> }
>
> /* Get value of saAmfSGSuHostNodeGroup */
> - avsv_sanamet_init(dn, &sg_name, "safSg");
> - sg = sg_db->find(Amf::to_string(&sg_name));
> + avsv_sanamet_init(dn, sg_name, "safSg");
> + sg = sg_db->find(sg_name);
> if (sg) {
> - saAmfSGSuHostNodeGroup = sg->saAmfSGSuHostNodeGroup;
> + sg_su_host_nodegroup = sg->saAmfSGSuHostNodeGroup;
> } else {
> if (opdata == nullptr) {
> - report_ccb_validation_error(opdata, "SG '%s' does not
> exist in model", sg_name.value);
> + report_ccb_validation_error(opdata, "SG '%s' does not
> exist in model", sg_name.c_str());
> return 0;
> }
>
> - if ((tmp = ccbutil_getCcbOpDataByDN(opdata->ccbId, &sg_name))
> == nullptr) {
> + const SaNameTWrapper sg_namet(sg_name);
> + if ((tmp = ccbutil_getCcbOpDataByDN(opdata->ccbId, sg_namet))
> == nullptr) {
> report_ccb_validation_error(opdata, "SG '%s' does not
> exist in existing model or in CCB",
> - sg_name.value);
> + sg_name.c_str());
> return 0;
> }
>
> + SaNameT saAmfSGSuHostNodeGroup = {0};
> (void)
> immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSGSuHostNodeGroup"),
> tmp->param.create.attrValues, 0,
> &saAmfSGSuHostNodeGroup);
> + sg_su_host_nodegroup = Amf::to_string(&saAmfSGSuHostNodeGroup);
> }
>
> /* If its a local SU, node or nodegroup must be configured */
> - if (!saAmfSutIsExternal &&
> - (strstr((char *)saAmfSUHostNodeOrNodeGroup.value, "safAmfNode=") ==
> nullptr) &&
> - (strstr((char *)saAmfSUHostNodeOrNodeGroup.value,
> "safAmfNodeGroup=") == nullptr) &&
> - (strstr((char *)saAmfSGSuHostNodeGroup.value, "safAmfNodeGroup=")
> == nullptr)) {
> - report_ccb_validation_error(opdata, "node or node group
> configuration is missing for '%s'", dn->value);
> + if (!saAmfSutIsExternal &&
> + su_host_node_or_nodegroup.find("safAmfNode=") ==
> std::string::npos &&
> + su_host_node_or_nodegroup.find("safAmfNodeGroup=") ==
> std::string::npos &&
> + sg_su_host_nodegroup.find("safAmfNodeGroup=") ==
> std::string::npos ) {
> +
> + report_ccb_validation_error(opdata, "node or node group
> configuration is missing for '%s'", dn.c_str());
> return 0;
> }
>
> @@ -297,10 +304,11 @@
> * service unit".
> */
> if (saAmfSutIsExternal &&
> - ((strstr((char *)saAmfSUHostNodeOrNodeGroup.value, "safAmfNode=")
> != nullptr) ||
> - (strstr((char *)saAmfSUHostNodeOrNodeGroup.value,
> "safAmfNodeGroup=") != nullptr) ||
> - (strstr((char *)saAmfSGSuHostNodeGroup.value, "safAmfNodeGroup=")
> != nullptr))) {
> - report_ccb_validation_error(opdata, "node or node group
> configured for external SU '%s'", dn->value);
> + (su_host_node_or_nodegroup.find("safAmfNode=") !=
> std::string::npos ||
> + su_host_node_or_nodegroup.find("safAmfNodeGroup=") !=
> std::string::npos ||
> + sg_su_host_nodegroup.find("safAmfNodeGroup=") !=
> std::string::npos)) {
> +
> + report_ccb_validation_error(opdata, "node or node group
> configured for external SU '%s'", dn.c_str());
> return 0;
> }
>
> @@ -311,28 +319,28 @@
> * configured for a service unit, it must be a member of the node group
> for the service
> * group, if configured."
> */
> - if ((strstr((char *)saAmfSUHostNodeOrNodeGroup.value,
> "safAmfNodeGroup=") != nullptr) &&
> - (strstr((char *)saAmfSGSuHostNodeGroup.value, "safAmfNodeGroup=")
> != nullptr)) {
> + if (su_host_node_or_nodegroup.find("safAmfNodeGroup=") !=
> std::string::npos &&
> + sg_su_host_nodegroup.find("safAmfNodeGroup=") !=
> std::string::npos) {
> AVD_AMF_NG *ng_of_su, *ng_of_sg;
>
> - ng_of_su = avd_ng_get(&saAmfSUHostNodeOrNodeGroup);
> + ng_of_su = avd_ng_get(su_host_node_or_nodegroup);
> if (ng_of_su == nullptr) {
> report_ccb_validation_error(opdata, "Invalid
> saAmfSUHostNodeOrNodeGroup '%s' for '%s'",
> - saAmfSUHostNodeOrNodeGroup.value, dn->value);
> + su_host_node_or_nodegroup.c_str(), dn.c_str());
> return 0;
> }
>
> - ng_of_sg = avd_ng_get(&saAmfSGSuHostNodeGroup);
> + ng_of_sg = avd_ng_get(sg_su_host_nodegroup);
> if (ng_of_su == nullptr) {
> report_ccb_validation_error(opdata, "Invalid
> saAmfSGSuHostNodeGroup '%s' for '%s'",
> - saAmfSGSuHostNodeGroup.value, dn->value);
> + sg_su_host_nodegroup.c_str(), dn.c_str());
> return 0;
> }
>
> if (ng_of_su->number_nodes() > ng_of_sg->number_nodes()) {
> report_ccb_validation_error(opdata,
> "SU node group '%s' contains more nodes
> than the SG node group '%s'",
> - saAmfSUHostNodeOrNodeGroup.value,
> saAmfSGSuHostNodeGroup.value);
> + su_host_node_or_nodegroup.c_str(),
> sg_su_host_nodegroup.c_str());
> return 0;
> }
>
> @@ -340,7 +348,7 @@
> ng_of_su->saAmfNGNodeList.begin(),
> ng_of_su->saAmfNGNodeList.end()) == false) {
> report_ccb_validation_error(opdata,
> "SU node group '%s' is not a
> subset of the SG node group '%s'",
> -
> saAmfSUHostNodeOrNodeGroup.value, saAmfSGSuHostNodeGroup.value);
> +
> su_host_node_or_nodegroup.c_str(), sg_su_host_nodegroup.c_str());
>
> return 0;
> }
> @@ -350,13 +358,13 @@
>
> if ((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUFailover"),
> attributes, 0, &abool) == SA_AIS_OK) &&
> (abool > SA_TRUE)) {
> - report_ccb_validation_error(opdata, "Invalid saAmfSUFailover %u
> for '%s'", abool, dn->value);
> + report_ccb_validation_error(opdata, "Invalid saAmfSUFailover %u
> for '%s'", abool, dn.c_str());
> return 0;
> }
>
> if ((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUAdminState"),
> attributes, 0, &admstate) == SA_AIS_OK) &&
> !avd_admin_state_is_valid(admstate, opdata)) {
> - report_ccb_validation_error(opdata, "Invalid saAmfSUAdminState
> %u for '%s'", admstate, dn->value);
> + report_ccb_validation_error(opdata, "Invalid saAmfSUAdminState
> %u for '%s'", admstate, dn.c_str());
> return 0;
> }
>
> @@ -371,26 +379,28 @@
> *
> * @return AVD_SU*
> */
> -static AVD_SU *su_create(const SaNameT *dn, const SaImmAttrValuesT_2
> **attributes)
> +static AVD_SU *su_create(const std::string& dn, const SaImmAttrValuesT_2
> **attributes)
> {
> int rc = -1;
> AVD_SU *su;
> AVD_SUTYPE *sut;
> SaAisErrorT error;
> + SaNameT temp_name;
>
> - 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
> ** but needs to get configuration attributes initialized.
> */
> - if ((su = su_db->find(Amf::to_string(dn))) == nullptr) {
> + if ((su = su_db->find(dn)) == nullptr) {
> su = new AVD_SU(dn);
> } else
> TRACE("already created, refreshing config...");
>
> - error = immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUType"),
> attributes, 0, &su->saAmfSUType);
> + error = immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUType"),
> attributes, 0, &temp_name);
> osafassert(error == SA_AIS_OK);
> + su->saAmfSUType = Amf::to_string(&temp_name);
>
> if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSURank"),
> attributes, 0, &su->saAmfSURank) != SA_AIS_OK) {
> /* Empty, assign default value (highest number => lowest rank)
> */
> @@ -400,15 +410,31 @@
> /* If 0 (zero), treat as lowest possible rank. Should be a positive
> integer */
> if (su->saAmfSURank == 0) {
> su->saAmfSURank = ~0U;
> - TRACE("'%s' saAmfSURank auto-changed to lowest",
> su->name.value);
> + TRACE("'%s' saAmfSURank auto-changed to lowest",
> su->name.c_str());
> }
>
> - (void)
> immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUHostedByNode"),
> attributes, 0, &su->saAmfSUHostedByNode);
> + error =
> immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUHostedByNode"),
> attributes, 0, &temp_name);
> + if (error == SA_AIS_OK) {
> + su->saAmfSUHostedByNode = Amf::to_string(&temp_name);
> + TRACE("saAmfSUHostedByNode set to %s",
> su->saAmfSUHostedByNode.c_str());
> + } else {
> + su->saAmfSUHostedByNode = "";
> + TRACE("saAmfSUHostedByNode set to blank");
> + }
>
> - (void)
> immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUHostNodeOrNodeGroup"),
> attributes, 0, &su->saAmfSUHostNodeOrNodeGroup);
> +
> + error =
> immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUHostNodeOrNodeGroup"),
> attributes, 0, &temp_name);
> + if (error == SA_AIS_OK) {
> + su->saAmfSUHostNodeOrNodeGroup = Amf::to_string(&temp_name);
> + TRACE("saAmfSUHostNodeOrNodeGroup set to %s",
> su->saAmfSUHostNodeOrNodeGroup.c_str());
> + } else {
> + su->saAmfSUHostNodeOrNodeGroup = "";
> + TRACE("saAmfSUHostNodeOrNodeGroup set to blank");
> + }
>
> - if ((sut = sutype_db->find(Amf::to_string(&su->saAmfSUType))) ==
> nullptr) {
> - LOG_ER("saAmfSUType '%s' does not exist",
> su->saAmfSUType.value);
> +
> + if ((sut = sutype_db->find(su->saAmfSUType)) == nullptr) {
> + LOG_ER("saAmfSUType '%s' does not exist",
> su->saAmfSUType.c_str());
> goto done;
> }
>
> @@ -419,7 +445,8 @@
> else
> su->saAmfSUFailover_configured = true;
>
> -
> (void)immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUMaintenanceCampaign"),
> attributes, 0, &su->saAmfSUMaintenanceCampaign);
> +
> (void)immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUMaintenanceCampaign"),
> attributes, 0, &temp_name);
> + su->saAmfSUMaintenanceCampaign = Amf::to_string(&temp_name);
>
> if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUAdminState"),
> attributes, 0, &su->saAmfSUAdminState) != SA_AIS_OK)
> su->saAmfSUAdminState = SA_AMF_ADMIN_UNLOCKED;
> @@ -452,20 +479,19 @@
> std::vector<AVD_SU*>::const_iterator su_iter;
> std::vector<AVD_SU*> *su_list = nullptr;
>
> - TRACE_ENTER2("'%s'", su->name.value);
> + TRACE_ENTER2("'%s'", su->name.c_str());
>
> /* If node is configured in SU we are done */
> - if (strstr((char *)su->saAmfSUHostNodeOrNodeGroup.value, "safAmfNode=")
> != nullptr) {
> - node = avd_node_get(&su->saAmfSUHostNodeOrNodeGroup);
> + if (su->saAmfSUHostNodeOrNodeGroup.find("safAmfNode=") !=
> std::string::npos) {
> + node = avd_node_get(su->saAmfSUHostNodeOrNodeGroup);
> goto done;
> }
>
> /* A node group configured in the SU is prioritized before the same in
> SG */
> - if (strstr((char *)su->saAmfSUHostNodeOrNodeGroup.value,
> "safAmfNodeGroup=") != nullptr)
> - ng = avd_ng_get(&su->saAmfSUHostNodeOrNodeGroup);
> - else {
> - if (strstr((char *)su->sg_of_su->saAmfSGSuHostNodeGroup.value,
> "safAmfNodeGroup=") != nullptr)
> - ng = avd_ng_get(&su->sg_of_su->saAmfSGSuHostNodeGroup);
> + if (su->saAmfSUHostNodeOrNodeGroup.find("safAmfNodeGroup=") !=
> std::string::npos) {
> + ng = avd_ng_get(su->saAmfSUHostNodeOrNodeGroup);
> + } else if
> (su->sg_of_su->saAmfSGSuHostNodeGroup.find("safAmfNodeGroup=") !=
> std::string::npos) {
> + ng = avd_ng_get(su->sg_of_su->saAmfSGSuHostNodeGroup);
> }
>
> osafassert(ng);
> @@ -497,8 +523,8 @@
> /* All nodes already have an SU mapped for the SG. Return a node in the
> node group. */
> node = avd_node_get(*ng->saAmfNGNodeList.begin());
> done:
> - memcpy(&su->saAmfSUHostedByNode, &node->name, sizeof(SaNameT));
> - TRACE_LEAVE2("hosted by %s", node->name.value);
> + su->saAmfSUHostedByNode = node->name;
> + TRACE_LEAVE2("hosted by %s", node->name.c_str());
> return node;
> }
>
> @@ -508,12 +534,12 @@
> */
> static void su_add_to_model(AVD_SU *su)
> {
> - SaNameT dn;
> + std::string dn;
> AVD_AVND *node;
> bool new_su = false;
> unsigned int rc;
>
> - TRACE_ENTER2("%s", su->name.value);
> + TRACE_ENTER2("%s", su->name.c_str());
>
> /* Check parent link to see if it has been added already */
> if (su->sg_of_su != nullptr) {
> @@ -522,37 +548,39 @@
> }
>
> /* Determine of the SU is added now, if so msg to amfnd needs to be
> sent */
> - if (su_db->find(Amf::to_string(&su->name)) == nullptr)
> + if (su_db->find(su->name) == nullptr)
> new_su = true;
>
> - avsv_sanamet_init(&su->name, &dn, "safSg");
> + avsv_sanamet_init(su->name, dn, "safSg");
>
> /*
> ** Refresh the SG reference, by now it must exist.
> ** An SU can be created (on the standby) from the checkpointing logic.
> ** In that case the SG reference could now be nullptr.
> */
> - su->sg_of_su = sg_db->find(Amf::to_string(&dn));
> + su->sg_of_su = sg_db->find(dn);
> osafassert(su->sg_of_su);
>
> - if (su_db->find(Amf::to_string(&su->name)) == nullptr) {
> - rc = su_db->insert(Amf::to_string(&su->name), su);
> + if (su_db->find(su->name) == nullptr) {
> + TRACE("su_db inserted %s", su->name.c_str());
> + rc = su_db->insert(su->name, su);
> osafassert(rc == NCSCC_RC_SUCCESS);
> }
> - su->su_type = sutype_db->find(Amf::to_string(&su->saAmfSUType));
> + su->su_type = sutype_db->find(su->saAmfSUType);
> osafassert(su->su_type);
> avd_sutype_add_su(su);
> avd_sg_add_su(su);
>
> if (!su->su_is_external) {
> - if (su->saAmfSUHostedByNode.length == 0) {
> + if (su->saAmfSUHostedByNode.empty() == true) {
> /* This node has not been mapped yet, do it */
> su->su_on_node = map_su_to_node(su);
> } else {
> /* Already mapped, setup the node link */
> - su->su_on_node = avd_node_get(&su->saAmfSUHostedByNode);
> + su->su_on_node = avd_node_get(su->saAmfSUHostedByNode);
> }
>
> + osafassert(su->su_on_node != nullptr);
> avd_node_add_su(su);
> node = su->su_on_node;
> } else {
> @@ -587,7 +615,7 @@
> avd_node_remove_su(su);
> avd_sg_remove_su(su);
>
> - LOG_ER("%s: avd_snd_su_msg failed %s",
> __FUNCTION__, su->name.value);
> + LOG_ER("%s: avd_snd_su_msg failed %s",
> __FUNCTION__, su->name.c_str());
> goto done;
> }
>
> @@ -597,30 +625,32 @@
> }
>
> done:
> - avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUOperState",
> + avd_saImmOiRtObjectUpdate(su->name, "saAmfSUOperState",
> SA_IMM_ATTR_SAUINT32T, &su->saAmfSUOperState);
>
> - avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUPreInstantiable",
> + avd_saImmOiRtObjectUpdate(su->name, "saAmfSUPreInstantiable",
> SA_IMM_ATTR_SAUINT32T, &su->saAmfSUPreInstantiable);
>
> - avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUHostedByNode",
> - SA_IMM_ATTR_SANAMET, &su->saAmfSUHostedByNode);
> + const SaNameTWrapper hosted_by_node(su->saAmfSUHostedByNode);
> + avd_saImmOiRtObjectUpdate(su->name, "saAmfSUHostedByNode",
> + SA_IMM_ATTR_SANAMET, (void*)static_cast<const
> SaNameT*>(hosted_by_node));
>
> - avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUPresenceState",
> + avd_saImmOiRtObjectUpdate(su->name, "saAmfSUPresenceState",
> SA_IMM_ATTR_SAUINT32T, &su->saAmfSUPresenceState);
>
> - avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUReadinessState",
> + avd_saImmOiRtObjectUpdate(su->name, "saAmfSUReadinessState",
> SA_IMM_ATTR_SAUINT32T, &su->saAmfSuReadinessState);
>
> TRACE_LEAVE();
> }
>
> -SaAisErrorT avd_su_config_get(const SaNameT *sg_name, AVD_SG *sg)
> +SaAisErrorT avd_su_config_get(const std::string& sg_name, AVD_SG *sg)
> {
> SaAisErrorT error, rc;
> SaImmSearchHandleT searchHandle;
> SaImmSearchParametersT_2 searchParam;
> - SaNameT su_name;
> + char* tmp_su_name;
> + std::string su_name;
> const SaImmAttrValuesT_2 **attributes;
> const char *className = "SaAmfSU";
> AVD_SU *su;
> @@ -641,7 +671,7 @@
> searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT;
> searchParam.searchOneAttr.attrValue = &className;
>
> - error = immutil_saImmOmSearchInitialize_2(avd_cb->immOmHandle, sg_name,
> SA_IMM_SUBTREE,
> + error = immutil_saImmOmSearchInitialize_o2(avd_cb->immOmHandle,
> sg_name.c_str(), SA_IMM_SUBTREE,
> SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_SOME_ATTR,
> &searchParam,
> configAttributes, &searchHandle);
>
> @@ -650,21 +680,22 @@
> goto done1;
> }
>
> - while ((rc = immutil_saImmOmSearchNext_2(searchHandle, &su_name,
> + while ((rc = immutil_saImmOmSearchNext_o2(searchHandle, &tmp_su_name,
> (SaImmAttrValuesT_2 ***)&attributes))
> == SA_AIS_OK) {
> - if (!is_config_valid(&su_name, attributes, nullptr)) {
> + su_name = tmp_su_name;
> + if (!is_config_valid(su_name, attributes, nullptr)) {
> error = SA_AIS_ERR_FAILED_OPERATION;
> goto done2;
> }
>
> - if ((su = su_create(&su_name, attributes)) == nullptr) {
> + if ((su = su_create(su_name, attributes)) == nullptr) {
> error = SA_AIS_ERR_FAILED_OPERATION;
> goto done2;
> }
>
> su_add_to_model(su);
>
> - if (avd_comp_config_get(&su_name, su) != SA_AIS_OK) {
> + if (avd_comp_config_get(su_name, su) != SA_AIS_OK) {
> error = SA_AIS_ERR_FAILED_OPERATION;
> goto done2;
> }
> @@ -705,7 +736,7 @@
> return;
>
> osafassert(pres_state <= SA_AMF_PRESENCE_TERMINATION_FAILED);
> - TRACE_ENTER2("'%s' %s => %s", name.value,
> + TRACE_ENTER2("'%s' %s => %s", name.c_str(),
> avd_pres_state_name[saAmfSUPresenceState],
> avd_pres_state_name[pres_state]);
>
> @@ -717,13 +748,13 @@
> pres_state == SA_AMF_PRESENCE_RESTARTING) {
>
> saflog(LOG_NOTICE, amfSvcUsrName, "%s PresenceState %s => %s",
> - name.value, avd_pres_state_name[old_state],
> + name.c_str(), avd_pres_state_name[old_state],
> avd_pres_state_name[saAmfSUPresenceState]);
>
> - avd_send_su_pres_state_chg_ntf(&name, old_state,
> + avd_send_su_pres_state_chg_ntf(name, old_state,
> saAmfSUPresenceState);
> }
> - avd_saImmOiRtObjectUpdate(&name, "saAmfSUPresenceState",
> + avd_saImmOiRtObjectUpdate(name, "saAmfSUPresenceState",
> SA_IMM_ATTR_SAUINT32T, &saAmfSUPresenceState);
> m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, AVSV_CKPT_SU_PRES_STATE);
> if ((saAmfSUPresenceState == SA_AMF_PRESENCE_INSTANTIATED) &&
> @@ -749,20 +780,20 @@
> return;
>
> osafassert(oper_state <= SA_AMF_OPERATIONAL_DISABLED);
> - TRACE_ENTER2("'%s' %s => %s", name.value,
> + TRACE_ENTER2("'%s' %s => %s", name.c_str(),
> avd_oper_state_name[saAmfSUOperState],
> avd_oper_state_name[oper_state]);
>
> - saflog(LOG_NOTICE, amfSvcUsrName, "%s OperState %s => %s", name.value,
> + saflog(LOG_NOTICE, amfSvcUsrName, "%s OperState %s => %s", name.c_str(),
> avd_oper_state_name[saAmfSUOperState],
> avd_oper_state_name[oper_state]);
>
> saAmfSUOperState = oper_state;
>
> - avd_send_oper_chg_ntf(&name, SA_AMF_NTFID_SU_OP_STATE, old_state,
> + avd_send_oper_chg_ntf(name, SA_AMF_NTFID_SU_OP_STATE, old_state,
> saAmfSUOperState);
>
> - avd_saImmOiRtObjectUpdate(&name, "saAmfSUOperState",
> + avd_saImmOiRtObjectUpdate(name, "saAmfSUOperState",
> SA_IMM_ATTR_SAUINT32T, &saAmfSUOperState);
> m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, AVSV_CKPT_SU_OPER_STATE);
>
> @@ -779,15 +810,15 @@
> return;
>
> osafassert(readiness_state <= SA_AMF_READINESS_STOPPING);
> - TRACE_ENTER2("'%s' %s", name.value,
> + TRACE_ENTER2("'%s' %s", name.c_str(),
> avd_readiness_state_name[readiness_state]);
> saflog(LOG_NOTICE, amfSvcUsrName, "%s ReadinessState %s => %s",
> - name.value,
> + name.c_str(),
> avd_readiness_state_name[saAmfSuReadinessState],
> avd_readiness_state_name[readiness_state]);
> saAmfSuReadinessState = readiness_state;
> if (get_surestart() == false)
> - avd_saImmOiRtObjectUpdate(&name, "saAmfSUReadinessState",
> + avd_saImmOiRtObjectUpdate(name, "saAmfSUReadinessState",
> SA_IMM_ATTR_SAUINT32T, &saAmfSuReadinessState);
> m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
> AVSV_CKPT_SU_READINESS_STATE);
>
> @@ -815,16 +846,16 @@
> SaAmfAdminStateT old_state = saAmfSUAdminState;
>
> osafassert(admin_state <= SA_AMF_ADMIN_SHUTTING_DOWN);
> - TRACE_ENTER2("'%s' %s => %s", name.value,
> + TRACE_ENTER2("'%s' %s => %s", name.c_str(),
> avd_adm_state_name[old_state], avd_adm_state_name[admin_state]);
> - saflog(LOG_NOTICE, amfSvcUsrName, "%s AdmState %s => %s", name.value,
> + saflog(LOG_NOTICE, amfSvcUsrName, "%s AdmState %s => %s", name.c_str(),
> avd_adm_state_name[saAmfSUAdminState],
> avd_adm_state_name[admin_state]);
> saAmfSUAdminState = admin_state;
> - avd_saImmOiRtObjectUpdate(&name, "saAmfSUAdminState",
> + avd_saImmOiRtObjectUpdate(name, "saAmfSUAdminState",
> SA_IMM_ATTR_SAUINT32T, &saAmfSUAdminState);
> m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
> AVSV_CKPT_SU_ADMIN_STATE);
> - avd_send_admin_state_chg_ntf(&name, SA_AMF_NTFID_SU_ADMIN_STATE,
> + avd_send_admin_state_chg_ntf(name, SA_AMF_NTFID_SU_ADMIN_STATE,
> old_state, saAmfSUAdminState);
> TRACE_LEAVE();
> }
> @@ -832,7 +863,7 @@
> void AVD_SU::unlock(SaImmOiHandleT immoi_handle, SaInvocationT invocation) {
> bool is_oper_successful = true;
>
> - TRACE_ENTER2("'%s'", name.value);
> + TRACE_ENTER2("'%s'", name.c_str());
> set_admin_state(SA_AMF_ADMIN_UNLOCKED);
>
> /* Return as cluster timer haven't expired.*/
> @@ -854,7 +885,7 @@
>
> avd_sg_app_su_inst_func(avd_cb, sg_of_su);
> } else
> - LOG_IN("SU '%s' is not in service", name.value);
> + LOG_IN("SU '%s' is not in service", name.c_str());
> avd_sg_app_su_inst_func(avd_cb, sg_of_su);
>
> if (is_oper_successful == true) {
> @@ -881,7 +912,7 @@
> SaAmfAdminStateT back_admin_state;
> bool is_oper_successful = true;
>
> - TRACE_ENTER2("'%s'", name.value);
> + TRACE_ENTER2("'%s'", name.c_str());
> /* Change the admin state to lock and return as cluster timer haven't
> expired.*/
> if (avd_cb->init_state == AVD_INIT_DONE) {
> set_readiness_state(SA_AMF_READINESS_OUT_OF_SERVICE);
> @@ -929,7 +960,7 @@
> }
>
> void AVD_SU::shutdown(SaImmOiHandleT immoi_handle, SaInvocationT
> invocation) {
> - TRACE_ENTER2("'%s'", name.value);
> + TRACE_ENTER2("'%s'", name.c_str());
> lock(immoi_handle, invocation, SA_AMF_ADMIN_SHUTTING_DOWN);
> TRACE_LEAVE();
> }
> @@ -938,7 +969,7 @@
> SaInvocationT invocation) {
> AVD_AVND *node = get_node_ptr();
>
> - TRACE_ENTER2("'%s'", name.value);
> + TRACE_ENTER2("'%s'", name.c_str());
>
> /* For non-preinstantiable SU lock-inst is same as lock */
> if (saAmfSUPreInstantiable == false) {
> @@ -949,7 +980,7 @@
>
> if (list_of_susi != nullptr) {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_TRY_AGAIN, nullptr,
> - "SIs still assigned to this SU '%s'", name.value);
> + "SIs still assigned to this SU '%s'", name.c_str());
> goto done;
> }
>
> @@ -957,7 +988,7 @@
> (saAmfSUPresenceState == SA_AMF_PRESENCE_TERMINATING) ||
> (saAmfSUPresenceState == SA_AMF_PRESENCE_RESTARTING)) {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_TRY_AGAIN, nullptr,
> - "'%s' presence state is '%u'", name.value,
> saAmfSUPresenceState);
> + "'%s' presence state is '%u'", name.c_str(),
> saAmfSUPresenceState);
> goto done;
> }
>
> @@ -999,11 +1030,11 @@
> SaInvocationT invocation) {
> AVD_AVND *node = get_node_ptr();
>
> - TRACE_ENTER2("'%s'", name.value);
> + TRACE_ENTER2("'%s'", name.c_str());
>
> if (list_of_comp.empty() == true) {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_BAD_OPERATION, nullptr,
> - "There is no component configured for SU
> '%s'.", name.value);
> + "There is no component configured for SU
> '%s'.", name.c_str());
> goto done;
> }
>
> @@ -1019,7 +1050,7 @@
>
> if (saAmfSUPresenceState != SA_AMF_PRESENCE_UNINSTANTIATED) {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_BAD_OPERATION, nullptr,
> - "Can't instantiate '%s', whose presence state is '%u'",
> name.value,
> + "Can't instantiate '%s', whose presence state is '%u'",
> name.c_str(),
> saAmfSUPresenceState);
> goto done;
> }
> @@ -1058,11 +1089,11 @@
>
> void AVD_SU::repaired(SaImmOiHandleT immoi_handle,
> SaInvocationT invocation) {
> - TRACE_ENTER2("'%s'", name.value);
> + TRACE_ENTER2("'%s'", name.c_str());
>
> if (saAmfSUOperState == SA_AMF_OPERATIONAL_ENABLED) {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_NO_OP, nullptr,
> - "Admin repair request for '%s', op state already
> enabled", name.value);
> + "Admin repair request for '%s', op state already
> enabled", name.c_str());
> goto done;
> }
>
> @@ -1071,19 +1102,19 @@
> /* This means that node on which this su is hosted, is absent.
> */
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_BAD_OPERATION, nullptr,
> "Admin repair request for '%s', hosting node'%s' is
> absent",
> - name.value, su_on_node->name.value);
> + name.c_str(), su_on_node->name.c_str());
> goto done;
> }
>
> /* forward the admin op req to the node director */
> - if (avd_admin_op_msg_snd(&name, AVSV_SA_AMF_SU, SA_AMF_ADMIN_REPAIRED,
> + if (avd_admin_op_msg_snd(name, AVSV_SA_AMF_SU, SA_AMF_ADMIN_REPAIRED,
> su_on_node) == NCSCC_RC_SUCCESS) {
> pend_cbk.admin_oper = SA_AMF_ADMIN_REPAIRED;
> pend_cbk.invocation = invocation;
> }
> else {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_TIMEOUT, nullptr,
> - "Admin op request send failed '%s'", name.value);
> + "Admin op request send failed '%s'", name.c_str());
> }
>
> done:
> @@ -1099,16 +1130,16 @@
> */
> void AVD_SU::restart(SaImmOiHandleT immoi_handle,
> SaInvocationT invocation) {
> - TRACE_ENTER2("'%s'", name.value);
> + TRACE_ENTER2("'%s'", name.c_str());
>
> pend_cbk.admin_oper = SA_AMF_ADMIN_RESTART;
> pend_cbk.invocation = invocation;
> if ((su_all_comps_restartable() == true) ||
> (is_any_non_restartable_comp_assigned() == false)) {
> - if (avd_admin_op_msg_snd(&name, AVSV_SA_AMF_SU,
> SA_AMF_ADMIN_RESTART,
> + if (avd_admin_op_msg_snd(name, AVSV_SA_AMF_SU,
> SA_AMF_ADMIN_RESTART,
> su_on_node) != NCSCC_RC_SUCCESS) {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_TIMEOUT, nullptr,
> - "Admin op request send failed '%s'",
> name.value);
> + "Admin op request send failed '%s'",
> name.c_str());
> pend_cbk.invocation = 0;
> pend_cbk.admin_oper =
> static_cast<SaAmfAdminOperationIdT>(0);
> }
> @@ -1169,7 +1200,7 @@
> /* su's sg_fsm_state is checked below, just check other su. */
> if ((su != su_ptr) && (su_ptr->pend_cbk.invocation != 0)) {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_TRY_AGAIN, nullptr,
> - "Admin operation is already going on
> (su'%s')", su_ptr->name.value);
> + "Admin operation is already going on
> (su'%s')", su_ptr->name.c_str());
> goto done;
> }
> }
> @@ -1177,7 +1208,7 @@
> /* Avoid if any single Csi assignment is undergoing on SG. */
> if (csi_assignment_validate(su->sg_of_su) == true) {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_TRY_AGAIN, nullptr,
> - "Single Csi assignment undergoing on (sg'%s')",
> su->sg_of_su->name.value);
> + "Single Csi assignment undergoing on (sg'%s')",
> su->sg_of_su->name.c_str());
> goto done;
> }
>
> @@ -1194,14 +1225,14 @@
> and then allow lock operation to proceed. */
> report_admin_op_error(immoi_handle,
> su->pend_cbk.invocation,
> SA_AIS_ERR_INTERRUPT, &su->pend_cbk,
> - "SU lock has been issued '%s'",
> su->name.value);
> + "SU lock has been issued '%s'",
> su->name.c_str());
> }
> }
> /* if Tolerance timer is running for any SI's withing this SG, then
> return SA_AIS_ERR_TRY_AGAIN */
> if (sg_is_tolerance_timer_running_for_any_si(su->sg_of_su)) {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_TRY_AGAIN, nullptr,
> "Tolerance timer is running for some of the
> SI's in the SG '%s', "
> - "so differing admin
> opr",su->sg_of_su->name.value);
> + "so differing admin
> opr",su->sg_of_su->name.c_str());
> goto done;
> }
>
> @@ -1241,7 +1272,7 @@
> if (su->sg_of_su->sg_ncs_spec == true) {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_BAD_OPERATION, nullptr,
> "Not allowed on middleware SU: %s,
> op_id: %llu",
> - su->name.value, op_id);
> + su->name.c_str(), op_id);
> goto done;
> }
> if (su->saAmfSUPresenceState == SA_AMF_PRESENCE_UNINSTANTIATED)
> {
> @@ -1263,15 +1294,15 @@
> SA_AIS_ERR_TRY_AGAIN, nullptr,
> "Some entity is unstable,
> Operation cannot "
> "be performed on '%s'"
> - "Check syslog for entity
> details", su->name.value);
> + "Check syslog for entity
> details", su->name.c_str());
> goto done;
> }
> }
> node = su->get_node_ptr();
> if (node->admin_node_pend_cbk.admin_oper != 0) {
> report_admin_op_error(immoi_handle, invocation,
> SA_AIS_ERR_TRY_AGAIN, nullptr,
> - "Node'%s' hosting SU'%s', undergoing admin
> operation'%u'", node->name.value,
> - su->name.value,
> node->admin_node_pend_cbk.admin_oper);
> + "Node'%s' hosting SU'%s', undergoing admin
> operation'%u'", node->name.c_str(),
> + su->name.c_str(),
> node->admin_node_pend_cbk.admin_oper);
> goto done;
> }
>
> @@ -1312,7 +1343,8 @@
> static SaAisErrorT su_rt_attr_cb(SaImmOiHandleT immOiHandle,
> const SaNameT *objectName, const SaImmAttrNameT *attributeNames)
> {
> - AVD_SU *su = su_db->find(Amf::to_string(objectName));
> + const std::string obj_name(Amf::to_string(objectName));
> + AVD_SU *su = su_db->find(obj_name);
> SaImmAttrNameT attributeName;
> int i = 0;
> SaAisErrorT rc = SA_AIS_OK;
> @@ -1328,13 +1360,13 @@
> attributeName, SA_IMM_ATTR_SAUINT32T,
> &saAmfSUAssignedSIs);
> #endif
> } else if (!strcmp("saAmfSUNumCurrActiveSIs", attributeName)) {
> - rc = avd_saImmOiRtObjectUpdate_sync(objectName,
> attributeName,
> + rc = avd_saImmOiRtObjectUpdate_sync(obj_name,
> attributeName,
> SA_IMM_ATTR_SAUINT32T,
> &su->saAmfSUNumCurrActiveSIs);
> } else if (!strcmp("saAmfSUNumCurrStandbySIs", attributeName)) {
> - rc = avd_saImmOiRtObjectUpdate_sync(objectName,
> attributeName,
> + rc = avd_saImmOiRtObjectUpdate_sync(obj_name,
> attributeName,
> SA_IMM_ATTR_SAUINT32T,
> &su->saAmfSUNumCurrStandbySIs);
> } else if (!strcmp("saAmfSURestartCount", attributeName)) {
> - rc = avd_saImmOiRtObjectUpdate_sync(objectName,
> attributeName,
> + rc = avd_saImmOiRtObjectUpdate_sync(obj_name,
> attributeName,
> SA_IMM_ATTR_SAUINT32T,
> &su->saAmfSURestartCount);
> } else {
> LOG_ER("Ignoring unknown attribute '%s'",
> attributeName);
> @@ -1393,12 +1425,12 @@
> */
> if (su->sg_of_su->sg_fsm_state != AVD_SG_FSM_STABLE) {
> rc = SA_AIS_ERR_TRY_AGAIN;
> - report_ccb_validation_error(opdata, "'%s' is
> not stable",su->sg_of_su->name.value);
> + report_ccb_validation_error(opdata, "'%s' is
> not stable",su->sg_of_su->name.c_str());
> goto done;
> }
>
> if (su_failover > SA_TRUE) {
> - report_ccb_validation_error(opdata, "Invalid
> saAmfSUFailover SU:'%s'", su->name.value);
> + report_ccb_validation_error(opdata, "Invalid
> saAmfSUFailover SU:'%s'", su->name.c_str());
> rc = SA_AIS_ERR_BAD_OPERATION;
> goto done;
> }
> @@ -1407,9 +1439,9 @@
> continue;
> AVD_SU *su =
> su_db->find(Amf::to_string(&opdata->objectName));
>
> - if (su->saAmfSUMaintenanceCampaign.length > 0) {
> + if (su->saAmfSUMaintenanceCampaign.length() > 0) {
> report_ccb_validation_error(opdata,
> "saAmfSUMaintenanceCampaign already set for %s",
> - su->name.value);
> + su->name.c_str());
> rc = SA_AIS_ERR_BAD_OPERATION;
> goto done;
> }
> @@ -1511,48 +1543,50 @@
> * @param opdata
> * @return true if so
> */
> -static bool node_admin_state_is_valid_for_su_create(const SaNameT *su_dn,
> +static bool node_admin_state_is_valid_for_su_create(const std::string& su_dn,
> const SaImmAttrValuesT_2 **attributes,
> const CcbUtilOperationData_t *opdata)
> {
> - TRACE_ENTER2("%s", su_dn->value);
> - SaNameT node_name = {0};
> - (void) immutil_getAttr("saAmfSUHostNodeOrNodeGroup", attributes, 0,
> &node_name);
> - if (node_name.length == 0) {
> + TRACE_ENTER2("%s", su_dn.c_str());
> + SaNameT tmp_node_name = {0};
> + (void) immutil_getAttr("saAmfSUHostNodeOrNodeGroup", attributes, 0,
> &tmp_node_name);
> + const std::string node_name(Amf::to_string(&tmp_node_name));
> +
> + if (node_name.empty() == true) {
> // attribute empty but this is probably not an error, just trace
> TRACE("Create '%s', saAmfSUHostNodeOrNodeGroup not configured",
> - su_dn->value);
> + su_dn.c_str());
> TRACE_LEAVE();
> return false;
> }
>
> - if (strncmp((char*)node_name.value, "safAmfNode=", 11) != 0) {
> + if (node_name.compare(0, 11, "safAmfNode=") != 0) {
> // attribute non empty but does not contain a node DN, not OK
> amflog(SA_LOG_SEV_NOTICE,
> "Create '%s', saAmfSUHostNodeOrNodeGroup not configured
> with a node (%s)",
> - su_dn->value, node_name.value);
> + su_dn.c_str(), node_name.c_str());
> TRACE_LEAVE();
> return false;
> }
>
> - const AVD_AVND *node = avd_node_get(&node_name);
> + const AVD_AVND *node = avd_node_get(node_name);
> if (node == nullptr) {
> - if (opdata == nullptr ||
> ccbutil_getCcbOpDataByDN(opdata->ccbId, &node_name) == nullptr) {
> + if (opdata == nullptr ||
> ccbutil_getCcbOpDataByDN(opdata->ccbId, &tmp_node_name) == nullptr) {
> // node must exist in the current model, or created in
> the same CCB
> amflog(SA_LOG_SEV_WARNING,
> "Create '%s', configured with a non existing
> node (%s)",
> - su_dn->value, node_name.value);
> + su_dn.c_str(), node_name.c_str());
> TRACE_LEAVE();
> return false;
> } else {
> // check admin state of the new node
> SaAmfAdminStateT admin_state;
> - const CcbUtilOperationData_t *t_opdata =
> ccbutil_getCcbOpDataByDN(opdata->ccbId, &node_name);
> + const CcbUtilOperationData_t *t_opdata =
> ccbutil_getCcbOpDataByDN(opdata->ccbId, &tmp_node_name);
>
> immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfNodeAdminState"),
> t_opdata->param.create.attrValues, 0,
> &admin_state);
> if (admin_state != SA_AMF_ADMIN_LOCKED_INSTANTIATION) {
> TRACE("Create '%s', configured node '%s' is not
> locked instantiation",
> - su_dn->value, node_name.value);
> + su_dn.c_str(), node_name.c_str());
> TRACE_LEAVE();
> return false;
> }
> @@ -1562,7 +1596,7 @@
> // configured with a node DN, accept only locked-in state
> if (node->saAmfNodeAdminState !=
> SA_AMF_ADMIN_LOCKED_INSTANTIATION) {
> TRACE("Create '%s', configured node '%s' is not locked
> instantiation",
> - su_dn->value, node_name.value);
> + su_dn.c_str(), node_name.c_str());
> TRACE_LEAVE();
> return false;
> }
> @@ -1581,21 +1615,22 @@
> * @param opdata
> * @return true if so
> */
> -static bool sg_admin_state_is_valid_for_su_create(const SaNameT *su_dn,
> +static bool sg_admin_state_is_valid_for_su_create(const std::string& su_dn,
> const SaImmAttrValuesT_2 **attributes,
> const CcbUtilOperationData_t *opdata)
> {
> - SaNameT sg_name = {0};
> + std::string sg_name;
> SaAmfAdminStateT admin_state;
>
> - avsv_sanamet_init(su_dn, &sg_name, "safSg");
> - const AVD_SG *sg = sg_db->find(Amf::to_string(&sg_name));
> + avsv_sanamet_init(su_dn, sg_name, "safSg");
> + const AVD_SG *sg = sg_db->find(sg_name);
> if (sg != nullptr) {
> admin_state = sg->saAmfSGAdminState;
> } else {
> + const SaNameTWrapper tmp_sg_name(sg_name);
> // SG does not exist in current model, check CCB
> const CcbUtilOperationData_t *tmp =
> - ccbutil_getCcbOpDataByDN(opdata->ccbId, &sg_name);
> + ccbutil_getCcbOpDataByDN(opdata->ccbId, tmp_sg_name);
> osafassert(tmp != nullptr); // already validated
>
> (void) immutil_getAttr("saAmfSGAdminState",
> @@ -1604,7 +1639,7 @@
>
> if (admin_state != SA_AMF_ADMIN_LOCKED_INSTANTIATION) {
> TRACE("'%s' created UNLOCKED but '%s' is not locked
> instantiation",
> - su_dn->value, sg_name.value);
> + su_dn.c_str(), sg_name.c_str());
> return false;
> }
>
> @@ -1619,7 +1654,7 @@
> *
> * @return bool
> */
> -static bool is_ccb_create_config_valid(const SaNameT *dn,
> +static bool is_ccb_create_config_valid(const std::string& dn,
> const SaImmAttrValuesT_2
> **attributes,
> const CcbUtilOperationData_t *opdata)
> {
> @@ -1629,7 +1664,7 @@
> assert(opdata != nullptr); // must be called in CCB context
>
> bool is_mw_su = false;
> - if (strstr((char *)dn->value, "safApp=OpenSAF") != nullptr)
> + if (strstr((char *)dn.c_str(), "safApp=OpenSAF") != nullptr)
> is_mw_su = true;
>
> rc = immutil_getAttr("saAmfSUAdminState", attributes, 0, &admstate);
> @@ -1661,7 +1696,7 @@
> if (admstate != SA_AMF_ADMIN_UNLOCKED) {
> report_ccb_validation_error(opdata,
> "'%s' created with invalid saAmfSUAdminState (%u)",
> - dn->value, admstate);
> + dn.c_str(), admstate);
> return false;
> }
>
> @@ -1672,7 +1707,7 @@
> return true;
>
> amflog(SA_LOG_SEV_NOTICE, "CCB %d creation of '%s' failed",
> - opdata->ccbId, dn->value);
> + opdata->ccbId, dn.c_str());
> report_ccb_validation_error(opdata,
> "SG or node not configured properly to allow creation of
> UNLOCKED SU");
>
> @@ -1682,13 +1717,13 @@
> static SaAisErrorT su_ccb_completed_cb(CcbUtilOperationData_t *opdata)
> {
> SaAisErrorT rc = SA_AIS_ERR_BAD_OPERATION;
> -
> - TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId,
> opdata->objectName.value);
> + const std::string obj_name(Amf::to_string(&opdata->objectName));
> + TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId, obj_name.c_str());
>
> switch (opdata->operationType) {
> case CCBUTIL_CREATE:
> - if (is_config_valid(&opdata->objectName,
> opdata->param.create.attrValues, opdata) &&
> - is_ccb_create_config_valid(&opdata->objectName,
> opdata->param.create.attrValues, opdata))
> + if (is_config_valid(obj_name, opdata->param.create.attrValues,
> opdata) &&
> + is_ccb_create_config_valid(obj_name,
> opdata->param.create.attrValues, opdata))
> rc = SA_AIS_OK;
> break;
> case CCBUTIL_MODIFY:
> @@ -1755,21 +1790,22 @@
> }
> } else if (!strcmp(attr_mod->modAttr.attrName,
> "saAmfSUMaintenanceCampaign")) {
> if (value_is_deleted) {
> - su->saAmfSUMaintenanceCampaign.length = 0;
> - TRACE("saAmfSUMaintenanceCampaign cleared for
> '%s'", su->name.value);
> + su->saAmfSUMaintenanceCampaign = "";
> + TRACE("saAmfSUMaintenanceCampaign cleared for
> '%s'", su->name.c_str());
> } else {
> -
> osafassert(su->saAmfSUMaintenanceCampaign.length == 0);
> - su->saAmfSUMaintenanceCampaign = *((SaNameT
> *)attr_mod->modAttr.attrValues[0]);
> +
> osafassert(su->saAmfSUMaintenanceCampaign.empty() == true);
> + su->saAmfSUMaintenanceCampaign = Amf::to_string(
> +
> reinterpret_cast<SaNameT*>(attr_mod->modAttr.attrValues[0]));
> TRACE("saAmfSUMaintenanceCampaign set to '%s'
> for '%s'",
> - su->saAmfSUMaintenanceCampaign.value,
> su->name.value);
> +
> su->saAmfSUMaintenanceCampaign.c_str(), su->name.c_str());
> }
> } else if (!strcmp(attr_mod->modAttr.attrName, "saAmfSUType")) {
> AVD_SUTYPE *sut;
> SaNameT sutype_name = *(SaNameT*)
> attr_mod->modAttr.attrValues[0];
> - TRACE("Modified saAmfSUType from '%s' to '%s'",
> su->saAmfSUType.value, sutype_name.value);
> + TRACE("Modified saAmfSUType from '%s' to '%s'",
> su->saAmfSUType.c_str(), sutype_name.value);
> sut = sutype_db->find(Amf::to_string(&sutype_name));
> avd_sutype_remove_su(su);
> - su->saAmfSUType = sutype_name;
> + su->saAmfSUType = Amf::to_string(&sutype_name);
> su->su_type = sut;
> avd_sutype_add_su(su);
> if (su->saAmfSUPreInstantiable) {
> @@ -1800,7 +1836,7 @@
> AVSV_PARAM_INFO param;
> AVD_SG *sg = su->sg_of_su;
>
> - TRACE_ENTER2("'%s'", su->name.value);
> + TRACE_ENTER2("'%s'", su->name.c_str());
>
> if (avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE) {
> su->remove_from_model();
> @@ -1816,7 +1852,8 @@
> memset(((uint8_t *)¶m), '\0', sizeof(AVSV_PARAM_INFO));
> param.class_id = AVSV_SA_AMF_SU;
> param.act = AVSV_OBJ_OPR_DEL;
> - param.name = su->name;
> + const SaNameTWrapper tmp_su_name(su->name);
> + param.name = tmp_su_name;
> avd_snd_op_req_msg(avd_cb, su_node_ptr, ¶m);
> }
>
> @@ -1857,7 +1894,7 @@
>
> switch (opdata->operationType) {
> case CCBUTIL_CREATE:
> - su = su_create(&opdata->objectName,
> opdata->param.create.attrValues);
> + su = su_create(Amf::to_string(&opdata->objectName),
> opdata->param.create.attrValues);
> osafassert(su);
> su_add_to_model(su);
> break;
> @@ -1878,7 +1915,7 @@
> void AVD_SU::inc_curr_act_si() {
> saAmfSUNumCurrActiveSIs++;
> osafassert(saAmfSUNumCurrActiveSIs <=
> sg_of_su->saAmfSGMaxActiveSIsperSU);
> - TRACE("%s saAmfSUNumCurrActiveSIs=%u", name.value,
> + TRACE("%s saAmfSUNumCurrActiveSIs=%u", name.c_str(),
> saAmfSUNumCurrActiveSIs);
> m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
> AVSV_CKPT_SU_SI_CURR_ACTIVE);
> }
> @@ -1886,7 +1923,7 @@
> void AVD_SU::dec_curr_act_si() {
> osafassert(saAmfSUNumCurrActiveSIs > 0);
> saAmfSUNumCurrActiveSIs--;
> - TRACE("%s saAmfSUNumCurrActiveSIs=%u", name.value,
> + TRACE("%s saAmfSUNumCurrActiveSIs=%u", name.c_str(),
> saAmfSUNumCurrActiveSIs);
> m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
> AVSV_CKPT_SU_SI_CURR_ACTIVE);
> }
> @@ -1894,7 +1931,7 @@
> void AVD_SU::inc_curr_stdby_si() {
> saAmfSUNumCurrStandbySIs++;
> osafassert(saAmfSUNumCurrStandbySIs <=
> sg_of_su->saAmfSGMaxStandbySIsperSU);
> - TRACE("%s saAmfSUNumCurrStandbySIs=%u", name.value,
> + TRACE("%s saAmfSUNumCurrStandbySIs=%u", name.c_str(),
> saAmfSUNumCurrStandbySIs);
> m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
> AVSV_CKPT_SU_SI_CURR_STBY);
> }
> @@ -1902,7 +1939,7 @@
> void AVD_SU::dec_curr_stdby_si() {
> osafassert(saAmfSUNumCurrStandbySIs > 0);
> saAmfSUNumCurrStandbySIs--;
> - TRACE("%s saAmfSUNumCurrStandbySIs=%u", name.value,
> + TRACE("%s saAmfSUNumCurrStandbySIs=%u", name.c_str(),
> saAmfSUNumCurrStandbySIs);
> m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this,
> AVSV_CKPT_SU_SI_CURR_STBY);
> }
> @@ -1933,7 +1970,8 @@
>
> param.class_id = AVSV_SA_AMF_SU;
> param.act = AVSV_OBJ_OPR_MOD;
> - param.name = name;
> + const SaNameTWrapper temp_name(name);
> + param.name = temp_name;
>
> switch (attrib_id) {
> case saAmfSUFailOver_ID:
> @@ -1955,7 +1993,7 @@
> (su_node_ptr->node_state == AVD_AVND_STATE_NO_CONFIG) ||
> (su_node_ptr->node_state == AVD_AVND_STATE_NCS_INIT))) {
> if (avd_snd_op_req_msg(avd_cb, su_node_ptr, ¶m) !=
> NCSCC_RC_SUCCESS) {
> - LOG_ER("%s:failed for %s",__FUNCTION__,
> su_node_ptr->name.value);
> + LOG_ER("%s:failed for %s",__FUNCTION__,
> su_node_ptr->name.c_str());
> }
> }
>
> @@ -1965,7 +2003,7 @@
> void AVD_SU::set_su_failover(bool value) {
> saAmfSUFailover = value;
> TRACE("Modified saAmfSUFailover to '%u' for '%s'",
> - saAmfSUFailover, name.value);
> + saAmfSUFailover, name.c_str());
> send_attribute_update(saAmfSUFailOver_ID);
> }
>
> @@ -1974,7 +2012,7 @@
> *
> */
> void AVD_SU::delete_all_susis(void) {
> - TRACE_ENTER2("'%s'", name.value);
> + TRACE_ENTER2("'%s'", name.c_str());
>
> while (list_of_susi != nullptr) {
> avd_compcsi_delete(avd_cb, list_of_susi, false);
> @@ -1991,7 +2029,7 @@
> void AVD_SU::set_all_susis_assigned_quiesced(void) {
> AVD_SU_SI_REL *susi = list_of_susi;
>
> - TRACE_ENTER2("'%s'", name.value);
> + TRACE_ENTER2("'%s'", name.c_str());
>
> for (; susi != nullptr; susi = susi->su_next) {
> if (susi->fsm != AVD_SU_SI_STATE_UNASGN) {
> @@ -2011,7 +2049,7 @@
> void AVD_SU::set_all_susis_assigned(void) {
> AVD_SU_SI_REL *susi = list_of_susi;
>
> - TRACE_ENTER2("'%s'", name.value);
> + TRACE_ENTER2("'%s'", name.c_str());
>
> for (; susi != nullptr; susi = susi->su_next) {
> if (susi->fsm != AVD_SU_SI_STATE_UNASGN) {
> @@ -2026,13 +2064,13 @@
>
> void AVD_SU::set_term_state(bool state) {
> term_state = state;
> - TRACE("%s term_state %u", name.value, term_state);
> + TRACE("%s term_state %u", name.c_str(), term_state);
> m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, AVSV_CKPT_SU_TERM_STATE);
> }
>
> void AVD_SU::set_su_switch(SaToggleState state) {
> su_switch = state;
> - TRACE("%s su_switch %u", name.value, su_switch);
> + TRACE("%s su_switch %u", name.c_str(), su_switch);
> m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, AVSV_CKPT_SU_SWITCH);
> }
>
> @@ -2102,9 +2140,9 @@
>
> void AVD_SU::set_saAmfSUPreInstantiable(bool value) {
> saAmfSUPreInstantiable = static_cast<SaBoolT>(value);
> - avd_saImmOiRtObjectUpdate(&name, "saAmfSUPreInstantiable",
> + avd_saImmOiRtObjectUpdate(name, "saAmfSUPreInstantiable",
> SA_IMM_ATTR_SAUINT32T, &saAmfSUPreInstantiable);
> - TRACE("%s saAmfSUPreInstantiable %u", name.value, value);
> + TRACE("%s saAmfSUPreInstantiable %u", name.c_str(), value);
> }
>
> /**
> @@ -2119,13 +2157,13 @@
> * @param cstype
> * @return
> */
> -AVD_COMP *AVD_SU::find_unassigned_comp_that_provides_cstype(const SaNameT
> *cstype) {
> +AVD_COMP *AVD_SU::find_unassigned_comp_that_provides_cstype(const
> std::string& cstype) {
> AVD_COMP *l_comp = nullptr;
> auto iter = list_of_comp.begin();
> for (; iter != list_of_comp.end(); ++iter) {
> l_comp = *iter;
> bool npi_is_assigned = false;
> - AVD_COMP_TYPE *comptype =
> comptype_db->find(Amf::to_string(&l_comp->saAmfCompType));
> + AVD_COMP_TYPE *comptype =
> comptype_db->find(l_comp->saAmfCompType);
> osafassert(comptype);
> if ((comptype->saAmfCtCompCategory == SA_AMF_COMP_LOCAL) &&
> is_comp_assigned_any_csi(l_comp))
> npi_is_assigned = true;
> @@ -2260,20 +2298,20 @@
> SaAisErrorT rc = SA_AIS_OK;
>
> if (pend_cbk.admin_oper != 0) {
> - LOG_NO("'%s' undergoing admin operation", name.value);
> + LOG_NO("'%s' undergoing admin operation", name.c_str());
> rc = SA_AIS_ERR_TRY_AGAIN;
> goto done;
> }
> if ((saAmfSUPresenceState == SA_AMF_PRESENCE_INSTANTIATING) ||
> (saAmfSUPresenceState == SA_AMF_PRESENCE_TERMINATING) ||
> (saAmfSUPresenceState == SA_AMF_PRESENCE_RESTARTING)) {
> - LOG_NO("'%s' has presence state '%u'",
> name.value,saAmfSUPresenceState);
> + LOG_NO("'%s' has presence state '%u'",
> name.c_str(),saAmfSUPresenceState);
> rc = SA_AIS_ERR_TRY_AGAIN;
> goto done;
> }
> if ((saAmfSUPresenceState == SA_AMF_PRESENCE_INSTANTIATION_FAILED) ||
> (saAmfSUPresenceState ==
> SA_AMF_PRESENCE_TERMINATION_FAILED)) {
> - LOG_NO("'%s' is in repair pending state", name.value);
> + LOG_NO("'%s' is in repair pending state", name.c_str());
> rc = SA_AIS_ERR_BAD_OPERATION;
> goto done;
> }
> @@ -2348,7 +2386,7 @@
> bool AVD_SU::all_pi_comps_restartable()
> {
> for (const auto& comp : list_of_comp) {
> - AVD_COMP_TYPE *comptype =
> comptype_db->find(Amf::to_string(&comp->saAmfCompType));
> + AVD_COMP_TYPE *comptype =
> comptype_db->find(comp->saAmfCompType);
> if ((comp->comp_info.comp_restart == true) &&
> ((comptype->saAmfCtCompCategory ==
> SA_AMF_COMP_SA_AWARE) ||
>
> (IS_COMP_PROXIED_PI(comptype->saAmfCtCompCategory))))
> @@ -2365,7 +2403,7 @@
> bool AVD_SU::all_pi_comps_nonrestartable()
> {
> for (const auto& comp : list_of_comp) {
> - AVD_COMP_TYPE *comptype =
> comptype_db->find(Amf::to_string(&comp->saAmfCompType));
> + AVD_COMP_TYPE *comptype =
> comptype_db->find(comp->saAmfCompType);
> if ((comp->comp_info.comp_restart == false) &&
> ((comptype->saAmfCtCompCategory ==
> SA_AMF_COMP_SA_AWARE) ||
>
> (IS_COMP_PROXIED_PI(comptype->saAmfCtCompCategory))))
> @@ -2396,7 +2434,7 @@
> void AVD_SU::set_surestart(bool value)
> {
> surestart = value;
> - TRACE("surestart flag set to '%u' for '%s'",surestart, name.value);
> + TRACE("surestart flag set to '%u' for '%s'",surestart, name.c_str());
> }
>
> bool AVD_SU::get_surestart() const
> diff --git a/osaf/services/saf/amf/amfd/sutcomptype.cc
> b/osaf/services/saf/amf/amfd/sutcomptype.cc
> --- a/osaf/services/saf/amf/amfd/sutcomptype.cc
> +++ b/osaf/services/saf/amf/amfd/sutcomptype.cc
> @@ -28,20 +28,19 @@
>
> static void sutcomptype_db_add(AVD_SUTCOMP_TYPE *sutcomptype)
> {
> - unsigned int rc =
> sutcomptype_db->insert(Amf::to_string(&sutcomptype->name),sutcomptype);
> + unsigned int rc = sutcomptype_db->insert(sutcomptype->name,sutcomptype);
> osafassert(rc == NCSCC_RC_SUCCESS);
> }
>
> -static AVD_SUTCOMP_TYPE *sutcomptype_create(SaNameT *dn, const
> SaImmAttrValuesT_2 **attributes)
> +static AVD_SUTCOMP_TYPE *sutcomptype_create(const std::string& dn, const
> SaImmAttrValuesT_2 **attributes)
> {
> AVD_SUTCOMP_TYPE *sutcomptype;
>
> - TRACE_ENTER2("'%s'", dn->value);
> + TRACE_ENTER2("'%s'", dn.c_str());
>
> sutcomptype = new AVD_SUTCOMP_TYPE();
>
> - memcpy(sutcomptype->name.value, dn->value, dn->length);
> - sutcomptype->name.length = dn->length;
> + sutcomptype->name = dn;
>
> if
> (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSutMaxNumComponents"),
> attributes, 0, &sutcomptype->saAmfSutMaxNumComponents) != SA_AIS_OK)
> sutcomptype->saAmfSutMaxNumComponents = -1; /* no limit */
> @@ -55,17 +54,17 @@
>
> static void sutcomptype_delete(AVD_SUTCOMP_TYPE *sutcomptype)
> {
> - sutcomptype_db->erase(Amf::to_string(&sutcomptype->name));
> + sutcomptype_db->erase(sutcomptype->name);
> delete sutcomptype;
> }
>
> -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)
> {
> // TODO
> return 1;
> }
>
> -SaAisErrorT avd_sutcomptype_config_get(SaNameT *sutype_name, AVD_SUTYPE *sut)
> +SaAisErrorT avd_sutcomptype_config_get(const std::string& sutype_name,
> AVD_SUTYPE *sut)
> {
> AVD_SUTCOMP_TYPE *sutcomptype;
> SaAisErrorT error;
> @@ -81,7 +80,7 @@
> searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT;
> searchParam.searchOneAttr.attrValue = &className;
>
> - error = immutil_saImmOmSearchInitialize_2(avd_cb->immOmHandle,
> sutype_name, SA_IMM_SUBTREE,
> + error = immutil_saImmOmSearchInitialize_o2(avd_cb->immOmHandle,
> sutype_name.c_str(), SA_IMM_SUBTREE,
> SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_ALL_ATTR,
> &searchParam,
> nullptr, &searchHandle);
>
> @@ -91,10 +90,10 @@
> }
>
> 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))
> goto done2;
> if ((sutcomptype = sutcomptype_db->find(Amf::to_string(&dn)))
> == nullptr) {
> - if ((sutcomptype = sutcomptype_create(&dn, attributes))
> == nullptr) {
> + if ((sutcomptype =
> sutcomptype_create(Amf::to_string(&dn), attributes)) == nullptr) {
> error = SA_AIS_ERR_FAILED_OPERATION;
> goto done2;
> }
> @@ -121,7 +120,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:
> @@ -150,7 +149,7 @@
>
> switch (opdata->operationType) {
> case CCBUTIL_CREATE:
> - sutcomptype = sutcomptype_create(&opdata->objectName,
> opdata->param.create.attrValues);
> + sutcomptype =
> sutcomptype_create(Amf::to_string(&opdata->objectName),
> opdata->param.create.attrValues);
> osafassert(sutcomptype);
> sutcomptype_db_add(sutcomptype);
> break;
> diff --git a/osaf/services/saf/amf/amfd/sutype.cc
> b/osaf/services/saf/amf/amfd/sutype.cc
> --- a/osaf/services/saf/amf/amfd/sutype.cc
> +++ b/osaf/services/saf/amf/amfd/sutype.cc
> @@ -32,12 +32,12 @@
> AmfDb<std::string, AVD_SUTYPE> *sutype_db = nullptr;
>
> //
> -AVD_SUTYPE::AVD_SUTYPE(const SaNameT *dn) {
> - memcpy(&name.value, dn->value, dn->length);
> - name.length = dn->length;
> +AVD_SUTYPE::AVD_SUTYPE(const std::string& dn) :
> + name(dn)
> +{
> }
>
> -static AVD_SUTYPE *sutype_new(const SaNameT *dn)
> +static AVD_SUTYPE *sutype_new(const std::string& dn)
> {
> AVD_SUTYPE *sutype = new AVD_SUTYPE(dn);
>
> @@ -47,18 +47,17 @@
> static void sutype_delete(AVD_SUTYPE **sutype)
> {
> osafassert(true == (*sutype)->list_of_su.empty());
> - delete [] (*sutype)->saAmfSutProvidesSvcTypes;
> delete *sutype;
> *sutype = nullptr;
> }
>
> static void sutype_db_add(AVD_SUTYPE *sutype)
> {
> - unsigned int rc =
> sutype_db->insert(Amf::to_string(&sutype->name),sutype);
> + unsigned int rc = sutype_db->insert(sutype->name,sutype);
> osafassert(rc == NCSCC_RC_SUCCESS);
> }
>
> -static AVD_SUTYPE *sutype_create(const SaNameT *dn, const SaImmAttrValuesT_2
> **attributes)
> +static AVD_SUTYPE *sutype_create(const std::string& dn, const
> SaImmAttrValuesT_2 **attributes)
> {
> const SaImmAttrValuesT_2 *attr;
> AVD_SUTYPE *sutype;
> @@ -66,7 +65,7 @@
> unsigned i = 0;
> SaAisErrorT error;
>
> - TRACE_ENTER2("'%s'", dn->value);
> + TRACE_ENTER2("'%s'", dn.c_str());
>
> if ((sutype = sutype_new(dn)) == nullptr) {
> LOG_ER("avd_sutype_new failed");
> @@ -87,14 +86,16 @@
> osafassert(attr->attrValuesNumber > 0);
>
> sutype->number_svc_types = attr->attrValuesNumber;
> - sutype->saAmfSutProvidesSvcTypes = new
> SaNameT[sutype->number_svc_types];
> + osafassert(sutype->saAmfSutProvidesSvcTypes.empty() == true);
>
> for (i = 0; i < sutype->number_svc_types; i++) {
> - if
> (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSutProvidesSvcTypes"),
> attributes, i, &sutype->saAmfSutProvidesSvcTypes[i]) != SA_AIS_OK) {
> - LOG_ER("Get saAmfSutProvidesSvcTypes FAILED for '%s'",
> dn->value);
> + SaNameT svc_type;
> + if
> (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSutProvidesSvcTypes"),
> attributes, i, &svc_type) != SA_AIS_OK) {
> + LOG_ER("Get saAmfSutProvidesSvcTypes FAILED for '%s'",
> dn.c_str());
> osafassert(0);
> }
> - TRACE("%s", sutype->saAmfSutProvidesSvcTypes[i].value);
> +
> sutype->saAmfSutProvidesSvcTypes.push_back(Amf::to_string(&svc_type));
> + TRACE("%s", sutype->saAmfSutProvidesSvcTypes.back().c_str());
> }
>
> rc = 0;
> @@ -107,23 +108,21 @@
> return sutype;
> }
>
> -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)
> {
> SaAisErrorT rc;
> SaBoolT abool;
> /* int i = 0; */
> - char *parent;
> + std::string::size_type pos;
>
> - 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;
> }
>
> - parent++;
> -
> /* Should be children to the SU Base type */
> - if (strncmp(parent, "safSuType=", 10) != 0) {
> - report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
> ", parent, dn->value);
> + if (dn.compare(pos + 1, 10, "safSuType=") != 0) {
> + report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
> ", dn.substr(pos +1).c_str(), dn.c_str());
> return 0;
> }
> #if 0
> @@ -152,7 +151,7 @@
>
> if
> ((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSutDefSUFailover"),
> attributes, 0, &abool) == SA_AIS_OK) &&
> (abool > SA_TRUE)) {
> - report_ccb_validation_error(opdata, "Invalid
> saAmfSutDefSUFailover %u for '%s'", abool, dn->value);
> + report_ccb_validation_error(opdata, "Invalid
> saAmfSutDefSUFailover %u for '%s'", abool, dn.c_str());
> return 0;
> }
>
> @@ -161,7 +160,7 @@
>
> if ((immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSutIsExternal"),
> attributes, 0, &abool) == SA_AIS_OK) &&
> (abool > SA_TRUE)) {
> - report_ccb_validation_error(opdata, "Invalid saAmfSutIsExternal
> %u for '%s'", abool, dn->value);
> + report_ccb_validation_error(opdata, "Invalid saAmfSutIsExternal
> %u for '%s'", abool, dn.c_str());
> return 0;
> }
>
> @@ -194,12 +193,13 @@
> }
>
> while (immutil_saImmOmSearchNext_2(searchHandle, &dn,
> (SaImmAttrValuesT_2 ***)&attributes) == SA_AIS_OK) {
> - if (!is_config_valid(&dn, attributes, nullptr))
> + const std::string temp_dn(Amf::to_string(&dn));
> + if (!is_config_valid(temp_dn, attributes, nullptr))
> goto done2;
>
> - if (( sut = sutype_db->find(Amf::to_string(&dn))) == nullptr) {
> + if (( sut = sutype_db->find(temp_dn)) == nullptr) {
>
> - if ((sut = sutype_create(&dn, attributes)) == nullptr) {
> + if ((sut = sutype_create(temp_dn, attributes)) ==
> nullptr) {
> error = SA_AIS_ERR_FAILED_OPERATION;
> goto done2;
> }
> @@ -207,7 +207,7 @@
> sutype_db_add(sut);
> }
>
> - if (avd_sutcomptype_config_get(&dn, sut) != SA_AIS_OK) {
> + if (avd_sutcomptype_config_get(temp_dn, sut) != SA_AIS_OK) {
> error = SA_AIS_ERR_FAILED_OPERATION;
> goto done2;
> }
> @@ -265,7 +265,7 @@
>
> switch (opdata->operationType) {
> case CCBUTIL_CREATE:
> - sut = sutype_create(&opdata->objectName,
> opdata->param.create.attrValues);
> + sut = sutype_create(Amf::to_string(&opdata->objectName),
> opdata->param.create.attrValues);
> osafassert(sut);
> sutype_db_add(sut);
> break;
> @@ -274,7 +274,7 @@
> break;
> case CCBUTIL_DELETE:
> sut = sutype_db->find(Amf::to_string(&opdata->objectName));
> - sutype_db->erase(Amf::to_string(&sut->name));
> + sutype_db->erase(sut->name);
> sutype_delete(&sut);
> break;
> default:
> @@ -310,7 +310,7 @@
> uint32_t sut_failover = *((SaUint32T
> *)attr_mod->modAttr.attrValues[0]);
>
> if (sut_failover > SA_TRUE) {
> - report_ccb_validation_error(opdata, "invalid
> saAmfSutDefSUFailover in:'%s'", sut->name.value);
> + report_ccb_validation_error(opdata, "invalid
> saAmfSutDefSUFailover in:'%s'", sut->name.c_str());
> rc = SA_AIS_ERR_BAD_OPERATION;
> goto done;
> }
> @@ -353,7 +353,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:
> @@ -367,7 +367,8 @@
> */
>
> for (const auto& su : sut->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;
> @@ -375,7 +376,7 @@
> }
>
> if (su_exist == true) {
> - report_ccb_validation_error(opdata, "SaAmfSUType '%s'is
> in use",sut->name.value);
> + report_ccb_validation_error(opdata, "SaAmfSUType '%s'is
> in use",sut->name.c_str());
> goto done;
> }
> rc = SA_AIS_OK;
> diff --git a/osaf/services/saf/amf/amfd/svctype.cc
> b/osaf/services/saf/amf/amfd/svctype.cc
> --- a/osaf/services/saf/amf/amfd/svctype.cc
> +++ b/osaf/services/saf/amf/amfd/svctype.cc
> @@ -44,14 +44,14 @@
>
> static void svctype_db_add(AVD_SVC_TYPE *svct)
> {
> - unsigned int rc = svctype_db->insert(Amf::to_string(&svct->name),svct);
> + unsigned int rc = svctype_db->insert(svct->name,svct);
> osafassert (rc == NCSCC_RC_SUCCESS);
> }
>
>
> static void svctype_delete(AVD_SVC_TYPE *svc_type)
> {
> - svctype_db->erase(Amf::to_string(&svc_type->name));
> + svctype_db->erase(svc_type->name);
>
> if (svc_type->saAmfSvcDefActiveWeight != nullptr) {
> unsigned int i = 0;
> @@ -74,18 +74,18 @@
> }
>
> //
> -AVD_SVC_TYPE::AVD_SVC_TYPE(const SaNameT *dn) {
> - memcpy(&name.value, dn->value, dn->length);
> - name.length = dn->length;
> +AVD_SVC_TYPE::AVD_SVC_TYPE(const std::string& dn) :
> + name(dn)
> +{
> }
>
> -static AVD_SVC_TYPE *svctype_create(const SaNameT *dn, const
> SaImmAttrValuesT_2 **attributes)
> +static AVD_SVC_TYPE *svctype_create(const std::string& dn, const
> SaImmAttrValuesT_2 **attributes)
> {
> unsigned int i;
> AVD_SVC_TYPE *svct;
> SaUint32T attrValuesNumber;
>
> - TRACE_ENTER2("'%s'", dn->value);
> + TRACE_ENTER2("'%s'", dn.c_str());
>
> svct = new AVD_SVC_TYPE(dn);
>
> @@ -116,18 +116,18 @@
> return svct;
> }
>
> -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)
> {
> - char *parent;
> + std::string::size_type pos;
>
> - 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;
> }
>
> /* Should be children to the SvcBasetype */
> - if (strncmp(++parent, "safSvcType=", 11) != 0) {
> - report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
> ", parent, dn->value);
> + if (dn.compare(pos + 1, 11, "safSvcType=") != 0) {
> + report_ccb_validation_error(opdata, "Wrong parent '%s' to '%s'
> ", dn.substr(pos +1).c_str(), dn.c_str());
> return 0;
> }
>
> @@ -146,7 +146,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:
> @@ -159,7 +159,8 @@
> * each of the SI in the svc_type list in the current CCB
> */
> for (const auto& si : svc_type->list_of_si) {
> - t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId,
> &si->name);
> + const SaNameTWrapper si_name(si->name);
> + t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId,
> si_name);
> if ((t_opData == nullptr) || (t_opData->operationType
> != CCBUTIL_DELETE)) {
> si_exist = true;
> break;
> @@ -167,7 +168,7 @@
> }
>
> if (si_exist == true) {
> - report_ccb_validation_error(opdata, "SaAmfSvcType '%s'
> is in use",svc_type->name.value);
> + report_ccb_validation_error(opdata, "SaAmfSvcType '%s'
> is in use",svc_type->name.c_str());
> goto done;
> }
> opdata->userData = svc_type;
> @@ -190,7 +191,7 @@
>
> switch (opdata->operationType) {
> case CCBUTIL_CREATE:
> - svc_type = svctype_create(&opdata->objectName,
> opdata->param.create.attrValues);
> + svc_type = svctype_create(Amf::to_string(&opdata->objectName),
> opdata->param.create.attrValues);
> osafassert(svc_type);
> svctype_db_add(svc_type);
> break;
> @@ -239,17 +240,18 @@
> }
>
> while (immutil_saImmOmSearchNext_2(searchHandle, &dn,
> (SaImmAttrValuesT_2 ***)&attributes) == SA_AIS_OK) {
> - if (!is_config_valid(&dn, attributes, nullptr))
> + const std::string temp_dn(Amf::to_string(&dn));
> + if (!is_config_valid(temp_dn, attributes, nullptr))
> goto done2;
>
> - if ((svc_type = svctype_db->find(Amf::to_string(&dn))) ==
> nullptr) {
> - if ((svc_type = svctype_create(&dn, attributes)) ==
> nullptr)
> + if ((svc_type = svctype_db->find(temp_dn)) == nullptr) {
> + if ((svc_type = svctype_create(temp_dn, attributes)) ==
> nullptr)
> goto done2;
>
> svctype_db_add(svc_type);
> }
>
> - if (avd_svctypecstypes_config_get(&dn) != SA_AIS_OK)
> + if (avd_svctypecstypes_config_get(temp_dn) != SA_AIS_OK)
> goto done2;
> }
>
> diff --git a/osaf/services/saf/amf/amfd/svctypecstypes.cc
> b/osaf/services/saf/amf/amfd/svctypecstypes.cc
> --- a/osaf/services/saf/amf/amfd/svctypecstypes.cc
> +++ b/osaf/services/saf/amf/amfd/svctypecstypes.cc
> @@ -26,21 +26,21 @@
> AmfDb<std::string, AVD_SVC_TYPE_CS_TYPE> *svctypecstypes_db = nullptr;
> static void svctypecstype_db_add(AVD_SVC_TYPE_CS_TYPE *svctypecstype)
> {
> - uint32_t rc =
> svctypecstypes_db->insert(Amf::to_string(&svctypecstype->name),svctypecstype);
> + uint32_t rc =
> svctypecstypes_db->insert(svctypecstype->name,svctypecstype);
> osafassert(rc == NCSCC_RC_SUCCESS);
> }
>
> //
> -AVD_SVC_TYPE_CS_TYPE::AVD_SVC_TYPE_CS_TYPE(const SaNameT *dn) {
> - memcpy(&name.value, dn->value, dn->length);
> - name.length = dn->length;
> +AVD_SVC_TYPE_CS_TYPE::AVD_SVC_TYPE_CS_TYPE(const std::string& dn) :
> + name(dn)
> +{
> }
>
> -static AVD_SVC_TYPE_CS_TYPE *svctypecstypes_create(SaNameT *dn, const
> SaImmAttrValuesT_2 **attributes)
> +static AVD_SVC_TYPE_CS_TYPE *svctypecstypes_create(const std::string& dn,
> const SaImmAttrValuesT_2 **attributes)
> {
> AVD_SVC_TYPE_CS_TYPE *svctypecstype;
>
> - TRACE_ENTER2("'%s'", dn->value);
> + TRACE_ENTER2("'%s'", dn.c_str());
>
> svctypecstype = new AVD_SVC_TYPE_CS_TYPE(dn);
>
> @@ -60,7 +60,7 @@
> *
> * @return SaAisErrorT
> */
> -SaAisErrorT avd_svctypecstypes_config_get(SaNameT *svctype_name)
> +SaAisErrorT avd_svctypecstypes_config_get(const std::string& svctype_name)
> {
> AVD_SVC_TYPE_CS_TYPE *svctypecstype;
> SaAisErrorT error;
> @@ -74,7 +74,7 @@
> searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT;
> searchParam.searchOneAttr.attrValue = &className;
>
> - error = immutil_saImmOmSearchInitialize_2(avd_cb->immOmHandle,
> svctype_name, SA_IMM_SUBTREE,
> + error = immutil_saImmOmSearchInitialize_o2(avd_cb->immOmHandle,
> svctype_name.c_str(), SA_IMM_SUBTREE,
> SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_ALL_ATTR,
> &searchParam,
> nullptr, &searchHandle);
>
> @@ -86,7 +86,7 @@
> while (immutil_saImmOmSearchNext_2(searchHandle, &dn,
> (SaImmAttrValuesT_2 ***)&attributes) == SA_AIS_OK) {
>
> if ((svctypecstype =
> svctypecstypes_db->find(Amf::to_string(&dn)))== nullptr) {
> - if ((svctypecstype = svctypecstypes_create(&dn,
> attributes)) == nullptr) {
> + if ((svctypecstype =
> svctypecstypes_create(Amf::to_string(&dn), attributes)) == nullptr) {
> error = SA_AIS_ERR_FAILED_OPERATION;
> goto done2;
> }
> @@ -117,26 +117,27 @@
>
> switch (opdata->operationType) {
> case CCBUTIL_CREATE: {
> - SaNameT cstype_dn;
> - const SaNameT *dn = &opdata->objectName;
> + std::string cstype_dn;
> + const std::string dn = Amf::to_string(&opdata->objectName);
>
> - if (get_child_dn_from_ass_dn(dn, &cstype_dn) != 0) {
> - report_ccb_validation_error(opdata, "malformed DN
> '%s'", dn->value);
> + if (get_child_dn_from_ass_dn(dn, cstype_dn) != 0) {
> + report_ccb_validation_error(opdata, "malformed DN
> '%s'", dn.c_str());
> goto done;
> }
>
> - if (cstype_db->find(Amf::to_string(&cstype_dn)) == nullptr) {
> - if (cstype_db->find(Amf::to_string(&cstype_dn)) ==
> nullptr) {
> + if (cstype_db->find(cstype_dn) == nullptr) {
> + if (cstype_db->find(cstype_dn) == nullptr) {
> if (opdata == nullptr) {
> report_ccb_validation_error(opdata,
> - "SaAmfCSType object '%s' does
> not exist", cstype_dn.value);
> + "SaAmfCSType object '%s' does
> not exist", cstype_dn.c_str());
> goto done;
> }
>
> - if (ccbutil_getCcbOpDataByDN(opdata->ccbId,
> &cstype_dn) == nullptr) {
> + const SaNameTWrapper type_cstype_dn(cstype_dn);
> + if (ccbutil_getCcbOpDataByDN(opdata->ccbId,
> type_cstype_dn) == nullptr) {
> report_ccb_validation_error(opdata,
> "SaAmfCSType object '%s' does
> not exist in model or in CCB",
> - cstype_dn.value);
> + cstype_dn.c_str());
> goto done;
> }
> }
> @@ -176,7 +177,7 @@
>
> switch (opdata->operationType) {
> case CCBUTIL_CREATE:
> - svctypecstype = svctypecstypes_create(&opdata->objectName,
> opdata->param.create.attrValues);
> + svctypecstype =
> svctypecstypes_create(Amf::to_string(&opdata->objectName),
> opdata->param.create.attrValues);
> osafassert(svctypecstype);
> svctypecstype_db_add(svctypecstype);
> break;
------------------------------------------------------------------------------
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