CMPIStatus Linux_FanAssociatedSensorProviderAssociators( CMPIAssociationMI * mi, const CMPIContext * ctx, const CMPIResult * rslt, const CMPIObjectPath * cop, const char * assocClass, const char * resultClass, const char * role, const char * resultRole, const char ** propertyList) { UNUSED(mi); UNUSED(propertyList); CMPIStatus rc = {CMPI_RC_OK, NULL}; CMPIObjectPath * op = NULL; int refrc = 0; _OSBASE_TRACE(1,("--- %s CMPI Associators() called",_ClassName)); if( assocClass ) { op = CMNewObjectPath( _broker, CMGetCharPtr(CMGetNameSpace(cop,&rc)), _ClassName, &rc ); if( op==NULL ) { CMSetStatusWithChars( _broker, &rc, CMPI_RC_ERR_FAILED, "Create CMPIObjectPath failed." ); _OSBASE_TRACE(2, ("--- %s CMPI Associators() failed : %s",CMGetCharPtr(rc.msg))); return rc; } } if ( (assocClass == NULL) || (CMClassPathIsA(_broker,op,assocClass,&rc) == 1)) { if( _assoc_check_parameter_const( _broker,cop,_RefLeft,_RefRight, _RefLeftClass,_RefRightClass, resultClass,role,resultRole, &rc ) == 0 ) { goto exit; } refrc = _assoc_create_refs_1toN(_broker, ctx, rslt, cop, _ClassName,_RefLeftClass,_RefRightClass, _RefLeft,_RefRight, 1, 1, &rc); if( refrc != 0 ) { if( rc.msg != NULL ) { _OSBASE_TRACE(1, ("--- %s CMPI Associators() failed : %s", _ClassName,CMGetCharPtr(rc.msg))); } else { _OSBASE_TRACE(1,("--- %s CMPI Associators() failed",_ClassName)); } return rc; } } exit: CMReturnDone( rslt ); _OSBASE_TRACE(1,("--- %s CMPI Associators() exited",_ClassName)); CMReturn(CMPI_RC_OK); }
CMPIStatus Linux_FanAssociatedSensorProviderEnumInstances( CMPIInstanceMI * mi, const CMPIContext * ctx, const CMPIResult * rslt, const CMPIObjectPath * ref, const char ** properties) { UNUSED(mi); UNUSED(properties); CMPIStatus rc = {CMPI_RC_OK, NULL}; int refrc = 0; _OSBASE_TRACE(1,("--- %s CMPI EnumInstances() called",_ClassName)); refrc = _assoc_create_inst_1toN( _broker,ctx,rslt,ref, _ClassName,_RefLeftClass,_RefRightClass, _RefLeft,_RefRight, 1,1,&rc); if( refrc != 0 ) { if( rc.msg != NULL ) { _OSBASE_TRACE(1, ("--- %s CMPI EnumInstances() failed : %s", _ClassName,CMGetCharPtr(rc.msg))); } else { _OSBASE_TRACE(1,("--- %s CMPI EnumInstances() failed",_ClassName)); } return rc; } CMReturnDone( rslt ); _OSBASE_TRACE(1,("--- %s CMPI EnumInstances() exited",_ClassName)); return rc; }
CMPIInstance * _makeInst_ServiceProcess( const CMPIBroker * _broker, const CMPIObjectPath * service, CMPIObjectPath * process, CMPIStatus * rc) { CMPIObjectPath * op = NULL; CMPIInstance * ci = NULL; _OSBASE_TRACE(4,("--- _makeInst_ServiceProcess() called")); /* create CMPIObjectPath of this association <_ClassName> */ op = CMNewObjectPath( _broker, CMGetCharPtr(CMGetNameSpace(service,rc)), _ClassName, rc ); if( CMIsNullObject(op) ) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_FAILED, "Create CMPIObjectPath failed." ); goto exit; } ci = CMNewInstance( _broker, op, rc); if( CMIsNullObject(ci) ) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_FAILED, "Create CMPIInstance failed." ); _OSBASE_TRACE(4,("--- _makeInst_ServiceProcess() failed : %s",CMGetCharPtr(rc->msg))); goto exit; } CMSetProperty( ci, _RefLeft, (CMPIValue*)&(service), CMPI_ref ); CMSetProperty( ci, _RefRight, (CMPIValue*)&(process), CMPI_ref ); exit: _OSBASE_TRACE(4,("--- _makeInst_ServiceProcess() exited")); return ci; }
CMPIStatus Linux_FanAssociatedSensorProviderGetInstance( CMPIInstanceMI * mi, const CMPIContext * ctx, const CMPIResult * rslt, const CMPIObjectPath * cop, const char ** properties) { UNUSED(mi); UNUSED(properties); const CMPIInstance * ci = NULL; CMPIStatus rc = {CMPI_RC_OK, NULL}; _OSBASE_TRACE(1,("--- %s CMPI GetInstance() called",_ClassName)); ci = _assoc_get_inst( _broker,ctx,cop,_ClassName,_RefLeft,_RefRight,&rc); if( ci == NULL ) { if( rc.msg != NULL ) { _OSBASE_TRACE(1, ("--- %s CMPI GetInstance() failed : %s", _ClassName,CMGetCharPtr(rc.msg))); } else { _OSBASE_TRACE(1,("--- %s CMPI GetInstance() failed",_ClassName)); } return rc; } CMReturnInstance( rslt, ci ); CMReturnDone(rslt); _OSBASE_TRACE(1,("--- %s CMPI GetInstance() exited",_ClassName)); return rc; }
CMPIStatus Linux_FanProviderCleanup( CMPIInstanceMI * mi, const CMPIContext * ctx, CMPIBoolean terminate) { UNUSED(mi); UNUSED(ctx); UNUSED(terminate); _OSBASE_TRACE(1,("--- %s CMPI Cleanup() called",_ClassName)); cleanup_linux_fan_module(); _OSBASE_TRACE(1,("--- %s CMPI Cleanup() exited",_ClassName)); CMReturn(CMPI_RC_OK); }
CMPIStatus Linux_FanAssociatedSensorProviderAssociationCleanup( CMPIAssociationMI * mi, const CMPIContext * ctx, CMPIBoolean terminate) { UNUSED(mi); UNUSED(ctx); UNUSED(terminate); _OSBASE_TRACE(1,("--- %s CMPI AssociationCleanup() called",_ClassName)); _OSBASE_TRACE(1,("--- %s CMPI AssociationCleanup() exited",_ClassName)); CMReturn(CMPI_RC_OK); }
CMPIStatus Linux_FanProviderCreateInstance( CMPIInstanceMI * mi, const CMPIContext * ctx, const CMPIResult * rslt, const CMPIObjectPath * cop, const CMPIInstance * ci) { UNUSED(mi); UNUSED(ctx); UNUSED(rslt); UNUSED(cop); UNUSED(ci); CMPIStatus rc = {CMPI_RC_OK, NULL}; _OSBASE_TRACE(1, ("--- %s CMPI CreateInstance() called", _ClassName)); CMSetStatusWithChars(_broker, &rc, CMPI_RC_ERR_NOT_SUPPORTED, "CIM_ERR_NOT_SUPPORTED"); _OSBASE_TRACE(1, ("--- %s CMPI CreateInstance() exited", _ClassName)); return rc; }
CMPIStatus Linux_FanProviderEnumInstances( CMPIInstanceMI * mi, const CMPIContext * ctx, const CMPIResult * rslt, const CMPIObjectPath * ref, const char ** properties) { UNUSED(mi); CMPIInstance * ci = NULL; CMPIStatus rc = {CMPI_RC_OK, NULL}; struct fanlist * lptr = NULL; struct fanlist * rm = NULL; _OSBASE_TRACE(1,("--- %s CMPI EnumInstances() called",_ClassName)); if (enum_all_fans(&lptr)) { CMSetStatusWithChars(_broker, &rc, CMPI_RC_ERR_FAILED, "Could not list fans."); _OSBASE_TRACE(1, ("--- %s CMPI EnumInstances() failed : %s", _ClassName,CMGetCharPtr(rc.msg))); return rc; } // iterate fan list for (rm=lptr; lptr && rc.rc == CMPI_RC_OK; lptr = lptr->next) { // method call to create the CMPIInstance object ci = _makeInst_Fan(_broker, ctx, ref, properties, lptr->f, &rc); if (ci == NULL || rc.rc != CMPI_RC_OK ) { if (rc.msg != NULL ) { _OSBASE_TRACE(1, ("--- %s CMPI EnumInstances() failed :" " %s",_ClassName,CMGetCharPtr(rc.msg))); } CMSetStatusWithChars( _broker, &rc, CMPI_RC_ERR_FAILED, "Transformation from internal" " structure to CIM Instance failed."); if (rm) free_fanlist(rm); _OSBASE_TRACE(1, ("--- %s CMPI EnumInstances() failed :" " %s", _ClassName,CMGetCharPtr(rc.msg))); return rc; }else { CMReturnInstance(rslt, ci); } } if (rm) free_fanlist(rm); CMReturnDone(rslt); _OSBASE_TRACE(1, ("--- %s CMPI EnumInstances() exited", _ClassName)); return rc; }
CMPIObjectPath * _makePath_ServiceProcess( const CMPIBroker * _broker, const CMPIObjectPath * service, CMPIObjectPath * process, CMPIStatus * rc) { CMPIObjectPath * op = NULL; CMPIInstance * ci = NULL; _OSBASE_TRACE(4,("--- _makePath_ServiceProcess() called")); ci = _makeInst_ServiceProcess(_broker, service, process, rc); if( ci == NULL ) { return NULL; } op = CMGetObjectPath(ci,rc); CMSetNameSpace(op,CMGetCharPtr(CMGetNameSpace(service,rc))); _OSBASE_TRACE(4,("--- _makePath_ServiceProcess() exited")); return op; }
CMPIStatus Linux_FanAssociatedSensorProviderExecQuery( CMPIInstanceMI * mi, const CMPIContext * ctx, const CMPIResult * rslt, const CMPIObjectPath * ref, const char * lang, const char * query) { UNUSED(mi); UNUSED(ctx); UNUSED(rslt); UNUSED(ref); UNUSED(lang); UNUSED(query); CMPIStatus rc = {CMPI_RC_OK, NULL}; _OSBASE_TRACE(1,("--- %s CMPI ExecQuery() called",_ClassName)); CMSetStatusWithChars( _broker, &rc, CMPI_RC_ERR_NOT_SUPPORTED, "CIM_ERR_NOT_SUPPORTED" ); _OSBASE_TRACE(1,("--- %s CMPI ExecQuery() exited",_ClassName)); return rc; }
CMPIObjectPath * _makePath_Service( const CMPIBroker * _broker, const CMPIContext * ctx, const CMPIObjectPath * ref, LXS_Service * lxssvc, CMPIStatus * rc) { CMPIObjectPath * op = NULL; _OSBASE_TRACE(2,("--- _makePath_Service() called")); /* the sblim-cmpi-base package offers some tool methods to get common * system data */ if( !get_system_name() ) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_FAILED, "no host name found" ); _OSBASE_TRACE(2,("--- _makePath_Service() failed : %s",CMGetCharPtr(rc->msg))); goto exit; } op = CMNewObjectPath( _broker, CMGetCharPtr(CMGetNameSpace(ref,rc)), _ClassName, rc ); if( CMIsNullObject(op) ) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_FAILED, "Create CMPIObjectPath failed." ); _OSBASE_TRACE(2,("--- _makePath_Service() failed : %s",CMGetCharPtr(rc->msg))); goto exit; } CMAddKey(op, "SystemCreationClassName", CSCreationClassName, CMPI_chars); CMAddKey(op, "SystemName", get_system_name(), CMPI_chars); CMAddKey(op, "CreationClassName", _ClassName, CMPI_chars); CMAddKey(op, "Name", lxssvc->svName, CMPI_chars); exit: _OSBASE_TRACE(2,("--- _makePath_Service() exited")); return op; }
int assoc_ServiceProcess( const CMPIBroker * _broker, const CMPIContext * ctx, const CMPIResult * rslt, const CMPIObjectPath * ref, int assocType, CMPIStatus * rc ) { CMPIString * sourceClass = NULL; CMPIData serviceName; CMPIObjectPath * op = NULL; CMPIObjectPath * rop = NULL; CMPIInstance * rci = NULL; CMPIInstance * sci = NULL; LXS_Handle lhdl; LXS_Service * lxssvc = NULL; int i = 0; _OSBASE_TRACE(2,("--- assoc_ServiceProcess() called")); /* check if source instance does exist */ sci = CBGetInstance(_broker, ctx, ref, NULL, rc); if( sci == NULL ) { if( rc->rc == CMPI_RC_ERR_FAILED ) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_FAILED, "GetInstance of source object failed."); } if( rc->rc == CMPI_RC_ERR_NOT_FOUND ) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_NOT_FOUND, "Source object not found."); } _OSBASE_TRACE(2,("--- assoc_ServiceProcess() failed : %s",CMGetCharPtr(rc->msg))); return -1; } sourceClass = CMGetClassName(ref, rc); if (CMGetCharPtr(sourceClass) == NULL) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_FAILED, "Could not get source class name."); _OSBASE_TRACE(2,("--- assoc_ServiceProcess() failed : %s",CMGetCharPtr(rc->msg))); return -1; } /* source class is Linux_UnixProcess; target class is Linux_Service */ if( strcasecmp(CMGetCharPtr(sourceClass),_RefRightClass) == 0 ) { /* NOT_SUPPORTED - association is uni-directional */ } /* source class is Linux_Service; target class is Linux_UnixProcess */ else if( strcasecmp(CMGetCharPtr(sourceClass),_RefLeftClass) == 0 ) { serviceName = CMGetKey(ref, "Name", rc); if( serviceName.value.string == NULL ) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_FAILED, "Could not get Name of Service" ); _OSBASE_TRACE(2,("--- assoc_ServiceProcess() failed : %s",CMGetCharPtr(rc->msg))); return -1; } lhdl=LXS_InitFiltered(CMGetCharPtr(serviceName.value.string)); if (lhdl==NULL) { _OSBASE_TRACE(2,("--- assoc_ServiceProcess() exited : Could not find associated Service.")); return 0; } lxssvc=LXS_Next(lhdl); if (lxssvc==NULL) { _OSBASE_TRACE(2,("--- assoc_ServiceProcess() exited : Could not find associated Service.")); return 0; } /* get the list of associated processe */ for (i=0;lxssvc->svProcesses[i]!=NULL;i++) { op = CMNewObjectPath( _broker, CMGetCharPtr(CMGetNameSpace(ref,rc)), _RefRightClass, rc ); if( CMIsNullObject(op) ) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_FAILED, "Create CMPIObjectPath failed." ); _OSBASE_TRACE(2,("--- assoc_ServiceProcess() failed : %s",CMGetCharPtr(rc->msg))); return -1; } CMAddKey(op, "CSCreationClassName", CSCreationClassName, CMPI_chars); CMAddKey(op, "CSName", get_system_name(), CMPI_chars); CMAddKey(op, "OSCreationClassName", OSCreationClassName, CMPI_chars); CMAddKey(op, "OSName", get_os_name(), CMPI_chars); CMAddKey(op, "CreationClassName", _RefRightClass, CMPI_chars); CMAddKey(op, "Handle", lxssvc->svProcesses[i], CMPI_chars); if (assocType&ATYPE_ASSOC) { /* the process (name) */ if (assocType&ATYPE_NAME) { CMReturnObjectPath(rslt, op); } else { rci = CBGetInstance(_broker, ctx, op, NULL, rc); if(rci==NULL) { return -1; } CMReturnInstance( rslt, rci ); } } else { /* the reference object (name) */ if (assocType&ATYPE_NAME) { rop = _makePath_ServiceProcess(_broker, ref, op, rc); CMReturnObjectPath(rslt, rop); } else { rci = _makeInst_ServiceProcess(_broker, ref, op, rc); CMReturnInstance( rslt, rci ); } } } LXS_Term(lhdl); } _OSBASE_TRACE(2,("--- assoc_ServiceProcess() exited")); return 0; }
CMPIInstance * _makeInst_Service( const CMPIBroker * _broker, const CMPIContext * ctx, const CMPIObjectPath * ref, const char ** properties, LXS_Service * lxssvc, CMPIStatus * rc) { CMPIObjectPath * op = NULL; CMPIInstance * ci = NULL; const char ** keys = NULL; int keyCount = 0; _OSBASE_TRACE(2,("--- _makeInst_Service() called")); /* the sblim-cmpi-base package offers some tool methods to get common * system data */ if( !get_system_name() ) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_FAILED, "no host name found" ); _OSBASE_TRACE(2,("--- _makeInst_Service() failed : %s",CMGetCharPtr(rc->msg))); goto exit; } op = CMNewObjectPath( _broker, CMGetCharPtr(CMGetNameSpace(ref,rc)), _ClassName, rc ); if( CMIsNullObject(op) ) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_FAILED, "Create CMPIObjectPath failed." ); _OSBASE_TRACE(2,("--- _makeInst_Service() failed : %s",CMGetCharPtr(rc->msg))); goto exit; } ci = CMNewInstance( _broker, op, rc); if( CMIsNullObject(ci) ) { CMSetStatusWithChars( _broker, rc, CMPI_RC_ERR_FAILED, "Create CMPIInstance failed." ); _OSBASE_TRACE(2,("--- _makeInst_Service() failed : %s",CMGetCharPtr(rc->msg))); goto exit; } /* set property filter */ keys = calloc(5,sizeof(char*)); keys[0] = strdup("SystemCreationClassName"); keys[1] = strdup("SystemName"); keys[2] = strdup("CreationClassName"); keys[3] = strdup("Name"); CMSetPropertyFilter(ci,properties,keys); for( ;keys[keyCount]!=NULL;keyCount++) { free((char*)keys[keyCount]); } free(keys); CMSetProperty( ci, "SystemCreationClassName", CSCreationClassName, CMPI_chars ); CMSetProperty( ci, "SystemName", get_system_name(), CMPI_chars ); CMSetProperty( ci, "CreationClassName", _ClassName, CMPI_chars ); CMSetProperty( ci, "Name", lxssvc->svName, CMPI_chars ); CMSetProperty( ci, "Caption", "Linux (/etc/init.d) Service", CMPI_chars); CMSetProperty( ci, "Description", "Instances of this class represents the /etc/init.d managed Services.", CMPI_chars); CMSetProperty( ci, "Status", lxssvc->svStatus, CMPI_chars); CMSetProperty( ci, "Started", (CMPIValue*)&(lxssvc->svStarted), CMPI_boolean); exit: _OSBASE_TRACE(2,("--- _makeInst_Service() exited")); return ci; }
CMPIStatus Linux_FanProviderSetInstance( CMPIInstanceMI * mi, const CMPIContext * ctx, const CMPIResult * rslt, const CMPIObjectPath * cop, const CMPIInstance * ci, const char ** properties) { UNUSED(mi); UNUSED(ctx); UNUSED(rslt); UNUSED(properties); CMPIStatus rc = {CMPI_RC_OK, NULL}; CMPIData data; char const * device_id = NULL; struct cim_fan * sptr; cim_fan_prop_value_t cfpv; cim_fan_error_t cmdrc; char const * tmp = NULL; char buf[200]; _OSBASE_TRACE(1, ("--- %s CMPI SetInstance() called", _ClassName)); _check_system_key_value_pairs(_broker, cop, "SystemCreationClassName", "SystemName", &rc); if (rc.rc != CMPI_RC_OK) { _OSBASE_TRACE(1, ("--- %s CMPI SetInstance() failed : %s", _ClassName, CMGetCharPtr(rc.msg))); return rc; } data = CMGetKey(cop, "DeviceID", &rc); if (data.value.string == NULL) { CMSetStatusWithChars(_broker, &rc, CMPI_RC_ERR_FAILED, "Could not get fan ID." ); _OSBASE_TRACE(1, ("--- %s CMPI SetInstance() failed : %s", _ClassName, CMGetCharPtr(rc.msg))); } device_id = CMGetCharPtr(data.value.string); if (device_id) { cmdrc = get_fan_data_by_id(device_id, &sptr); } if (cmdrc || !sptr) { CMSetStatusWithChars(_broker, &rc, CMPI_RC_ERR_NOT_FOUND, cim_fan_strerror(cmdrc)); _OSBASE_TRACE(1, ("--- %s CMPI SetInstance() exited : %s", _ClassName,CMGetCharPtr(rc.msg))); return rc; } data = CMGetProperty(ci, "MinSpeed", &rc); if (!rc.rc && data.value.uint64 != (uint64_t) sptr->min_speed) { tmp = "MinSpeed"; cfpv.min_speed = data.value.uint64; cmdrc = set_fan_prop_by_id(device_id, CIM_FAN_MIN_SPEED, &cfpv); } data = CMGetProperty(ci , "MaxSpeed", &rc); if (!cmdrc && !rc.rc && data.value.uint64 != (uint64_t) sptr->max_speed) { tmp = "MaxSpeed"; cfpv.max_speed = data.value.uint64; set_fan_prop_by_id(device_id, CIM_FAN_MAX_SPEED, &cfpv); } data = CMGetProperty(ci, "Divisor", &rc); if (!cmdrc && !rc.rc && data.value.uint32 != sptr->divisor) { tmp = "Divisor"; cfpv.divisor = data.value.uint32; set_fan_prop_by_id(device_id, CIM_FAN_DIV, &cfpv); } data = CMGetProperty(ci, "Pulses", &rc); if (!cmdrc && !rc.rc && data.value.uint32 != sptr->pulses) { tmp = "Pulses"; cfpv.pulses = data.value.uint32; set_fan_prop_by_id(device_id, CIM_FAN_PULSES, &cfpv); } data = CMGetProperty(ci, "Beep", &rc); if (!cmdrc && !rc.rc && data.value.boolean != sptr->beep) { tmp = "Beep"; cfpv.beep = data.value.uint32; set_fan_prop_by_id(device_id, CIM_FAN_BEEP, &cfpv); } if (cmdrc) { if (tmp && cmdrc == CIM_FAN_SEN_NO_ENTRY) { snprintf(buf, 200, "System interface for fan(name=\"%s\", chip=\"%s\") does not" " provide a way to set \"%s\".", sptr->name, sptr->chip_name, tmp); CMSetStatusWithChars(_broker, &rc, CMPI_RC_ERR_FAILED, buf); }else { CMSetStatusWithChars(_broker, &rc, CMPI_RC_ERR_FAILED, cim_fan_strerror(cmdrc)) } _OSBASE_TRACE(2, ("--- %s CMPI SetInstance() exited : %s", _ClassName, CMGetCharPtr(rc.msg))); }else {
CMPIStatus Linux_FanProviderGetInstance( CMPIInstanceMI * mi, const CMPIContext * ctx, const CMPIResult * rslt, const CMPIObjectPath * cop, const char **properties) { UNUSED(mi); CMPIInstance * ci = NULL; CMPIStatus rc = {CMPI_RC_OK, NULL}; struct cim_fan * sptr = NULL; CMPIData data; CMPIArray * other_identifying_info = NULL; CMPIString * sys_path = NULL; CMPIString * fan_name = NULL; CMPIString * device_id = NULL; cim_fan_error_t cmdrc; _OSBASE_TRACE(1,("--- %s CMPI GetInstance() called",_ClassName)); _check_system_key_value_pairs(_broker, cop, "SystemCreationClassName", "SystemName", &rc); if (rc.rc != CMPI_RC_OK) { _OSBASE_TRACE(1, ("--- %s CMPI GetInstance() failed : %s", _ClassName, CMGetCharPtr(rc.msg))); return rc; } data = CMGetKey(cop, "OtherIdentifyingInfo", &rc); if ( !rc.rc && data.type == CMPI_stringA && (other_identifying_info = data.value.array) && !rc.rc && (CMGetArrayCount(other_identifying_info, &rc) > 1) && !rc.rc) { data = CMGetArrayElementAt(other_identifying_info, 0, &rc); if (!rc.rc) sys_path = data.value.string; data = CMGetArrayElementAt(other_identifying_info, 1, &rc); if (!rc.rc) fan_name = data.value.string; } device_id = CMGetKey(cop, "DeviceID", &rc).value.string; if ((sys_path == NULL || fan_name == NULL) && (device_id == NULL)) { CMSetStatusWithChars(_broker, &rc, CMPI_RC_ERR_FAILED, "Could not get fan ID." ); _OSBASE_TRACE(1, ("--- %s CMPI GetInstance() failed : %s", _ClassName, CMGetCharPtr(rc.msg))); return rc; } if (sys_path && fan_name) { cmdrc = get_fan_data(CMGetCharPtr(sys_path), CMGetCharPtr(fan_name), &sptr); } if ((cmdrc || !sptr) && device_id) { cmdrc = get_fan_data_by_id(CMGetCharPtr(device_id), &sptr); } if (cmdrc || !sptr) { CMSetStatusWithChars(_broker, &rc, CMPI_RC_ERR_NOT_FOUND, cim_fan_strerror(cmdrc)); _OSBASE_TRACE(1, ("--- %s CMPI GetInstance() exited : %s", _ClassName,CMGetCharPtr(rc.msg))); return rc; } ci = _makeInst_Fan(_broker, ctx, cop, properties, sptr, &rc); if (sptr) free_fan(sptr); if (ci == NULL) { if (rc.msg != NULL) { _OSBASE_TRACE(1, ("--- %s CMPI GetInstance() failed : %s", _ClassName, CMGetCharPtr(rc.msg))); }else { _OSBASE_TRACE(1, ("--- %s CMPI GetInstance() failed", _ClassName)); } return rc; } CMReturnInstance(rslt, ci); CMReturnDone(rslt); _OSBASE_TRACE(1, ("--- %s CMPI GetInstance() exited", _ClassName)); return rc; }