osaf/services/saf/avsv/avd/avd_app.c | 17 ++++++++++++----- osaf/services/saf/avsv/avd/avd_comp.c | 5 +++-- osaf/services/saf/avsv/avd/avd_compcstype.c | 5 +++-- osaf/services/saf/avsv/avd/avd_csi.c | 3 ++- osaf/services/saf/avsv/avd/avd_csiattr.c | 2 +- osaf/services/saf/avsv/avd/avd_hlt.c | 10 +++++++--- osaf/services/saf/avsv/avd/avd_sg.c | 10 +++++++--- osaf/services/saf/avsv/avd/avd_si.c | 5 +++-- osaf/services/saf/avsv/avd/avd_su.c | 8 +++++--- 9 files changed, 43 insertions(+), 22 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/avsv/avd/avd_app.c b/osaf/services/saf/avsv/avd/avd_app.c --- a/osaf/services/saf/avsv/avd/avd_app.c +++ b/osaf/services/saf/avsv/avd/avd_app.c @@ -279,12 +279,17 @@ static SaAisErrorT app_ccb_completed_cb( SaNameT dn = *((SaNameT*)attribute->attrValues[0]); if (NULL == avd_apptype_get(&dn)) { LOG_ER("saAmfAppType '%s' not found", dn.value); + rc = SA_AIS_ERR_BAD_OPERATION; goto done; } rc = SA_AIS_OK; break; - } else - osafassert(0); + } else { + LOG_ER("Unknown attribute '%s'", + attribute->attrName); + rc = SA_AIS_ERR_BAD_OPERATION; + goto done; + } } break; case CCBUTIL_DELETE: @@ -332,8 +337,9 @@ static void app_ccb_apply_cb(CcbUtilOper app->saAmfAppType.value, app->name.value); break; } - else + else { osafassert(0); + } } break; } @@ -432,8 +438,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/avsv/avd/avd_comp.c b/osaf/services/saf/avsv/avd/avd_comp.c --- a/osaf/services/saf/avsv/avd/avd_comp.c +++ b/osaf/services/saf/avsv/avd/avd_comp.c @@ -814,8 +814,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/avsv/avd/avd_compcstype.c b/osaf/services/saf/avsv/avd/avd_compcstype.c --- a/osaf/services/saf/avsv/avd/avd_compcstype.c +++ b/osaf/services/saf/avsv/avd/avd_compcstype.c @@ -425,8 +425,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/avsv/avd/avd_csi.c b/osaf/services/saf/avsv/avd/avd_csi.c --- a/osaf/services/saf/avsv/avd/avd_csi.c +++ b/osaf/services/saf/avsv/avd/avd_csi.c @@ -782,8 +782,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/avsv/avd/avd_csiattr.c b/osaf/services/saf/avsv/avd/avd_csiattr.c --- a/osaf/services/saf/avsv/avd/avd_csiattr.c +++ b/osaf/services/saf/avsv/avd/avd_csiattr.c @@ -410,7 +410,7 @@ static SaAisErrorT csiattr_ccb_completed if (NULL == csi_name_value_pair_find(csi, &csi_attr_name, value)) { LOG_ER("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/avsv/avd/avd_hlt.c b/osaf/services/saf/avsv/avd/avd_hlt.c --- a/osaf/services/saf/avsv/avd/avd_hlt.c +++ b/osaf/services/saf/avsv/avd/avd_hlt.c @@ -48,8 +48,11 @@ static SaAisErrorT ccb_completed_modify_ *value, opdata->objectName.value); return SA_AIS_ERR_BAD_OPERATION; } - } else - osafassert(0); + } else { + LOG_ER("Unknown attribute '%s'", + attribute->attrName); + return SA_AIS_ERR_BAD_OPERATION; + } } return SA_AIS_OK; @@ -143,8 +146,9 @@ static void ccb_apply_modify_hdlr(CcbUti param.attr_id = saAmfHealthcheckPeriod_ID; } else if (!strcmp(attribute->attrName, "saAmfHealthcheckMaxDuration")) { param.attr_id = saAmfHealthcheckMaxDuration_ID; - } else + } else { osafassert(0); + } avd_snd_op_req_msg(avd_cb, comp->su->su_on_node, ¶m); } diff --git a/osaf/services/saf/avsv/avd/avd_sg.c b/osaf/services/saf/avsv/avd/avd_sg.c --- a/osaf/services/saf/avsv/avd/avd_sg.c +++ b/osaf/services/saf/avsv/avd/avd_sg.c @@ -551,7 +551,10 @@ static SaAisErrorT ccb_completed_modify_ } else if (!strcmp(attribute->attrName, "saAmfSGSuRestartProb")) { } else if (!strcmp(attribute->attrName, "saAmfSGSuRestartMax")) { } else { - osafassert(0); + LOG_ER("Unknown attribute '%s'", + attribute->attrName); + rc = SA_AIS_ERR_BAD_OPERATION; + goto done; } } /* while (attr_mod != NULL) */ @@ -1181,8 +1184,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/avsv/avd/avd_si.c b/osaf/services/saf/avsv/avd/avd_si.c --- a/osaf/services/saf/avsv/avd/avd_si.c +++ b/osaf/services/saf/avsv/avd/avd_si.c @@ -955,8 +955,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/avsv/avd/avd_su.c b/osaf/services/saf/avsv/avd/avd_su.c --- a/osaf/services/saf/avsv/avd/avd_su.c +++ b/osaf/services/saf/avsv/avd/avd_su.c @@ -1219,8 +1219,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; @@ -1459,8 +1460,9 @@ static void su_ccb_apply_modify_hdlr(str avd_sutype_add_su(su); su->saAmfSUFailover = sut->saAmfSutDefSUFailover; su->su_is_external = sut->saAmfSutIsExternal; - } 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