osaf/services/saf/amf/amfd/app.cc        |  19 +++++++++++++------
 osaf/services/saf/amf/amfd/comp.cc       |   5 +++--
 osaf/services/saf/amf/amfd/compcstype.cc |   5 +++--
 osaf/services/saf/amf/amfd/csi.cc        |   3 ++-
 osaf/services/saf/amf/amfd/csiattr.cc    |   2 +-
 osaf/services/saf/amf/amfd/hlt.cc        |  11 ++++++++---
 osaf/services/saf/amf/amfd/sg.cc         |  11 ++++++++---
 osaf/services/saf/amf/amfd/si.cc         |   5 +++--
 osaf/services/saf/amf/amfd/su.cc         |   8 +++++---
 osaf/services/saf/amf/amfd/sutype.cc     |   3 ++-
 10 files changed, 48 insertions(+), 24 deletions(-)


When an unknown attribute in encountered in various ccb completed callbacks,
sometimes an assert is called.  In other cases, the operation is rejected, or
ignored.

This patches replaces the asserts, and instead returns SA_AIS_ERR_BAD_OPERATION
to the IMMA.

In addition, some asserts in runtime attribute callbacks have been replaced
with error messages.

diff --git a/osaf/services/saf/amf/amfd/app.cc 
b/osaf/services/saf/amf/amfd/app.cc
--- a/osaf/services/saf/amf/amfd/app.cc
+++ b/osaf/services/saf/amf/amfd/app.cc
@@ -243,12 +243,18 @@ static SaAisErrorT app_ccb_completed_cb(
                                SaNameT dn = 
*((SaNameT*)attribute->attrValues[0]);
                                if (NULL == avd_apptype_get(&dn)) {
                                        report_ccb_validation_error(opdata, 
"saAmfAppType '%s' not found", dn.value);
+                                       rc = SA_AIS_ERR_BAD_OPERATION;
                                        goto done;
                                }
                                rc = SA_AIS_OK;
                                break;
-                       } else
-                               osafassert(0);
+                       } else {
+                               report_ccb_validation_error(opdata,
+                                       "Unknown attribute '%s'",
+                                       attribute->attrName);
+                               rc = SA_AIS_ERR_BAD_OPERATION;
+                               goto done;
+                       }
                }
                break;
        case CCBUTIL_DELETE:
@@ -294,10 +300,10 @@ static void app_ccb_apply_cb(CcbUtilOper
                                app->saAmfAppType = 
*((SaNameT*)attribute->attrValues[0]);
                                app->app_type = 
avd_apptype_get(&app->saAmfAppType);
                                avd_apptype_add_app(app);
-                               break;
                        }
-                       else
+                       else {
                                osafassert(0);
+                       }
                }
                break;
        }
@@ -396,8 +402,9 @@ static SaAisErrorT app_rt_attr_cb(SaImmO
                if (!strcmp(attributeName, "saAmfApplicationCurrNumSGs")) {
                        avd_saImmOiRtObjectUpdate_sync(objectName, 
attributeName,
                                SA_IMM_ATTR_SAUINT32T, 
&app->saAmfApplicationCurrNumSGs);
-               } else
-                       osafassert(0);
+               } else {
+                       LOG_ER("Ignoring unknown attribute '%s'", 
attributeName);
+               }
        }
 
        return SA_AIS_OK;
diff --git a/osaf/services/saf/amf/amfd/comp.cc 
b/osaf/services/saf/amf/amfd/comp.cc
--- a/osaf/services/saf/amf/amfd/comp.cc
+++ b/osaf/services/saf/amf/amfd/comp.cc
@@ -820,8 +820,9 @@ static SaAisErrorT comp_rt_attr_cb(SaImm
                        /* TODO */
                } else if (!strcmp("saAmfCompCurrProxiedNames", attributeName)) 
{
                        /* TODO */
-               } else
-                       osafassert(0);
+               } else {
+                       LOG_ER("Ignoring unknown attribute '%s'", 
attributeName);
+               }
        }
 
        return SA_AIS_OK;
diff --git a/osaf/services/saf/amf/amfd/compcstype.cc 
b/osaf/services/saf/amf/amfd/compcstype.cc
--- a/osaf/services/saf/amf/amfd/compcstype.cc
+++ b/osaf/services/saf/amf/amfd/compcstype.cc
@@ -435,8 +435,9 @@ static SaAisErrorT compcstype_rt_attr_ca
                                SA_IMM_ATTR_SAUINT32T, 
&cst->saAmfCompNumCurrStandbyCSIs);
                } else if (!strcmp("saAmfCompAssignedCsi", attributeName)) {
                        /* TODO */
-               } else
-                       osafassert(0);
+               } else {
+                       LOG_ER("Ignoring unknown attribute '%s'", 
attributeName);
+               }
        }
 
        return SA_AIS_OK;
diff --git a/osaf/services/saf/amf/amfd/csi.cc 
b/osaf/services/saf/amf/amfd/csi.cc
--- a/osaf/services/saf/amf/amfd/csi.cc
+++ b/osaf/services/saf/amf/amfd/csi.cc
@@ -784,8 +784,9 @@ static void csi_ccb_apply_modify_hdlr(st
                        csi->cstype = csi_type;
                        avd_cstype_add_csi(csi);
                }
-               else
+               else {
                        osafassert(0);
+               }
        }
 
         TRACE_LEAVE();
diff --git a/osaf/services/saf/amf/amfd/csiattr.cc 
b/osaf/services/saf/amf/amfd/csiattr.cc
--- a/osaf/services/saf/amf/amfd/csiattr.cc
+++ b/osaf/services/saf/amf/amfd/csiattr.cc
@@ -411,7 +411,7 @@ static SaAisErrorT csiattr_ccb_completed
                                if (NULL == csi_name_value_pair_find(csi, 
&csi_attr_name, value)) {
                                        report_ccb_validation_error(opdata, 
"csi attr name '%s' and value '%s' doesn't exist", 
                                                        csi_attr_name.value, 
value);
-                                       rc = SA_AIS_ERR_EXIST;
+                                       rc = SA_AIS_ERR_NOT_EXIST;
                                        goto done;
                                }
                         } /* for  */
diff --git a/osaf/services/saf/amf/amfd/hlt.cc 
b/osaf/services/saf/amf/amfd/hlt.cc
--- a/osaf/services/saf/amf/amfd/hlt.cc
+++ b/osaf/services/saf/amf/amfd/hlt.cc
@@ -48,8 +48,12 @@ static SaAisErrorT ccb_completed_modify_
                                                *value, 
opdata->objectName.value);
                                return SA_AIS_ERR_BAD_OPERATION;
                        }
-               } else
-                       osafassert(0);
+               } else {
+                       report_ccb_validation_error(opdata,
+                               "Unknown attribute '%s'",
+                               attribute->attrName);
+                       return SA_AIS_ERR_BAD_OPERATION;
+               }
        }
 
        return SA_AIS_OK;
@@ -144,8 +148,9 @@ static void ccb_apply_modify_hdlr(CcbUti
                        TRACE("saAmfHealthcheckMaxDuration modified to '%llu' 
for Comp'%s'", *param_val, 
                                        comp->comp_info.name.value);
                        param.attr_id = saAmfHealthcheckMaxDuration_ID;
-               } else
+               } else {
                        osafassert(0);
+               }
 
                avd_snd_op_req_msg(avd_cb, comp->su->su_on_node, &param);
        }
diff --git a/osaf/services/saf/amf/amfd/sg.cc b/osaf/services/saf/amf/amfd/sg.cc
--- a/osaf/services/saf/amf/amfd/sg.cc
+++ b/osaf/services/saf/amf/amfd/sg.cc
@@ -627,7 +627,11 @@ static SaAisErrorT ccb_completed_modify_
                                        goto done;
                                }
                        } else {
-                               osafassert(0);
+                               report_ccb_validation_error(opdata,
+                                       "Unknown attribute '%s'",
+                                       attribute->attrName);
+                               rc = SA_AIS_ERR_BAD_OPERATION;
+                               goto done;
                        }
                }               /* while (attr_mod != NULL) */
 
@@ -1376,8 +1380,9 @@ static SaAisErrorT sg_rt_attr_cb(SaImmOi
                } else if (!strcmp("saAmfSGNumCurrInstantiatedSpareSUs", 
attributeName)) {
                        avd_saImmOiRtObjectUpdate_sync(objectName, 
attributeName,
                                SA_IMM_ATTR_SAUINT32T, 
&sg->saAmfSGNumCurrInstantiatedSpareSUs);
-               } else
-                       osafassert(0);
+               } else {
+                       LOG_ER("Ignoring unknown attribute '%s'", 
attributeName);
+               }
        }
 
        return SA_AIS_OK;
diff --git a/osaf/services/saf/amf/amfd/si.cc b/osaf/services/saf/amf/amfd/si.cc
--- a/osaf/services/saf/amf/amfd/si.cc
+++ b/osaf/services/saf/amf/amfd/si.cc
@@ -963,8 +963,9 @@ static SaAisErrorT si_rt_attr_cb(SaImmOi
                } else if (!strcmp("saAmfSINumCurrStandbyAssignments", 
attributeName)) {
                        avd_saImmOiRtObjectUpdate_sync(objectName, 
attributeName,
                                SA_IMM_ATTR_SAUINT32T, 
&si->saAmfSINumCurrStandbyAssignments);
-               } else
-                       osafassert(0);
+               } else {
+                       LOG_ER("Ignoring unknown attribute '%s'", 
attributeName);
+               }
        }
 
        return SA_AIS_OK;
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
@@ -1220,8 +1220,9 @@ static SaAisErrorT su_rt_attr_cb(SaImmOi
                } else if (!strcmp("saAmfSURestartCount", attributeName)) {
                        avd_saImmOiRtObjectUpdate_sync(objectName, 
attributeName,
                                SA_IMM_ATTR_SAUINT32T, 
&su->saAmfSURestartCount);
-               } else
-                       osafassert(0);
+               } else {
+                       LOG_ER("Ignoring unknown attribute '%s'", 
attributeName);
+               }
        }
 
        return SA_AIS_OK;
@@ -1490,8 +1491,9 @@ static void su_ccb_apply_modify_hdlr(str
                                su->saAmfSUFailover_configured = true;
                        }
                        su->su_is_external = sut->saAmfSutIsExternal;
-               } else
+               } else {
                        osafassert(0);
+               }
        }
 
        TRACE_LEAVE();
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
@@ -260,8 +260,9 @@ static void sutype_ccb_apply_modify_hdlr
                                        }
                                }
                        }
-               } else
+               } else {
                        osafassert(0);
+               }
        }
 
        TRACE_LEAVE();

------------------------------------------------------------------------------
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download
http://p.sf.net/sfu/restlet
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to