Ack.

Thanks
-Nagu

> -----Original Message-----
> From: Gary Lee [mailto:gary....@dektech.com.au]
> Sent: 28 May 2014 12:50
> To: hans.fe...@ericsson.com; hans.nordeb...@ericsson.com; Nagendra
> Kumar; Praveen Malviya
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: [PATCH 1 of 1] amfd: Remove asserts from validation routines [#849]
> 
>  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