
JG> static CMPIStatus trigger(struct std_indication_ctx *ctx, JG> const CMPIContext *context) JG> { JG> - if (ctx->handler->trigger_fn == NULL) JG> + if (ctx->handler == NULL || ctx->handler->trigger_fn == NULL) JG> return (CMPIStatus){CMPI_RC_OK, NULL}; Maybe I'm misreading the diff, but do you check for enabled/activated on trigger? JG> +CMPIStatus stdi_activate_filter(CMPIIndicationMI* mi, JG> + const CMPIContext* ctx, JG> + const CMPISelectExp* se, JG> + const char *ns, JG> + const CMPIObjectPath* op, JG> + CMPIBoolean first) JG> +{ JG> + CMPIStatus s = {CMPI_RC_OK, NULL}; JG> + struct std_indication_ctx *_ctx; JG> + _ctx = (struct std_indication_ctx *)mi->hdl; JG> + char *cn = NULL; JG> + JG> + _ctx = (struct std_indication_ctx *)mi->hdl; Looks like you have the _ctx initialization twice in here. Remove the first to avoid intermixed statements and declarations. JG> +CMPIStatus stdi_deactivate_filter(CMPIIndicationMI* mi, JG> + const CMPIContext* ctx, JG> + const CMPISelectExp* se, JG> + const char *ns, JG> + const CMPIObjectPath* op, JG> + CMPIBoolean last) JG> +{ JG> + CMPIStatus s = {CMPI_RC_OK, NULL}; JG> + struct std_indication_ctx *_ctx; JG> + _ctx = (struct std_indication_ctx *)mi->hdl; JG> + char *cn = NULL; JG> + JG> + _ctx = (struct std_indication_ctx *)mi->hdl; Here too. JG> +_EI_RTYPE stdi_enable_indications (CMPIIndicationMI* mi, JG> + const CMPIContext *ctx) JG> +{ JG> + struct std_indication_ctx *_ctx; JG> + _ctx = (struct std_indication_ctx *)mi->hdl; JG> + JG> + CU_DEBUG("enabling indications"); I think this debug would be a lot more useful if it had the indication type in it. Would that be much trouble? JG> +_EI_RTYPE stdi_disable_indications (CMPIIndicationMI* mi, JG> + const CMPIContext *ctx) JG> +{ JG> + struct std_indication_ctx *_ctx; JG> + _ctx = (struct std_indication_ctx *)mi->hdl; JG> + JG> + CU_DEBUG("disabling indications"); This one too. Otherwise this looks fantastic...Thanks! -- Dan Smith IBM Linux Technology Center Open Hypervisor Team email: danms@us.ibm.com