/sblim-cmpi-network-1.4.0/cmpiOSBase_LocalLoopbackPortProvider.c
C | 361 lines | 263 code | 61 blank | 37 comment | 84 complexity | 35c604a3fd49740dae09b50057397f40 MD5 | raw file
Possible License(s): EPL-1.0
- /*
- * cmpiOSBase_LocalLoopbackPortProvider.c
- *
- * (C) Copyright IBM Corp. 2002, 2009
- *
- * THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
- * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
- * CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
- *
- * You can obtain a current copy of the Eclipse Public License from
- * http://www.opensource.org/licenses/eclipse-1.0.php
- *
- * Author: Heidi Neumann <heidineu@de.ibm.com>
- * Contributors:
- *
- * Interface Type : Common Manageability Programming Interface ( CMPI )
- *
- * Description:
- *
- */
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include "cmpidt.h"
- #include "cmpift.h"
- #include "cmpimacs.h"
- #include "OSBase_Common.h"
- #include "OSBase_CommonNetwork.h"
- #include "cmpiOSBase_Common.h"
- #include "cmpiOSBase_LocalLoopbackPort.h"
- static const CMPIBroker * _broker;
- /* ---------------------------------------------------------------------------*/
- /* private declarations */
- #ifdef CMPI_VER_100
- #define OSBase_LocalLoopbackPortProviderSetInstance OSBase_LocalLoopbackPortProviderModifyInstance
- #endif
- /* ---------------------------------------------------------------------------*/
- /* ---------------------------------------------------------------------------*/
- /* Instance Provider Interface */
- /* ---------------------------------------------------------------------------*/
- CMPIStatus OSBase_LocalLoopbackPortProviderCleanup( CMPIInstanceMI * mi,
- const CMPIContext * ctx, CMPIBoolean terminate) {
- _OSBASE_TRACE(1,("--- %s CMPI Cleanup() called",_ClassName));
- _OSBASE_TRACE(1,("--- %s CMPI Cleanup() exited",_ClassName));
- CMReturn(CMPI_RC_OK);
- }
- CMPIStatus OSBase_LocalLoopbackPortProviderEnumInstanceNames( CMPIInstanceMI * mi,
- const CMPIContext * ctx,
- const CMPIResult * rslt,
- const CMPIObjectPath * ref) {
- CMPIObjectPath * op = NULL;
- CMPIStatus rc = {CMPI_RC_OK, NULL};
- struct netPortList * lptr = NULL ;
- struct netPortList * rm = NULL ;
-
- _OSBASE_TRACE(1,("--- %s CMPI EnumInstanceNames() called",_ClassName));
-
- if( enum_all_netPorts( &lptr ) != 0 ) {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_FAILED, "Could not list local loopback ports." );
- _OSBASE_TRACE(1,("--- %s CMPI EnumInstanceNames() failed : %s",_ClassName,CMGetCharPtr(rc.msg)));
- return rc;
- }
- rm = lptr;
- // iterate port list
- if( lptr != NULL ) {
- for ( ; lptr && rc.rc == CMPI_RC_OK ; lptr = lptr->next) {
- if( lptr->sptr->type == 3 ) {
- op = _makePath_LocalLoopbackPort( _broker, ctx, ref, lptr->sptr, &rc );
- if( op == NULL || rc.rc != CMPI_RC_OK ) {
- if( rc.msg != NULL ) {
- _OSBASE_TRACE(1,("--- %s CMPI EnumInstanceNames() failed : %s",_ClassName,CMGetCharPtr(rc.msg)));
- }
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_FAILED, "Transformation from internal structure to CIM ObjectPath failed." );
- if(rm) free_netPortList(rm);
- _OSBASE_TRACE(1,("--- %s CMPI EnumInstanceNames() failed : %s",_ClassName,CMGetCharPtr(rc.msg)));
- return rc;
- }
- else { CMReturnObjectPath( rslt, op ); }
- }
- }
- free_netPortList(rm);
- }
- CMReturnDone( rslt );
- _OSBASE_TRACE(1,("--- %s CMPI EnumInstanceNames() exited",_ClassName));
- return rc;
- }
- CMPIStatus OSBase_LocalLoopbackPortProviderEnumInstances( CMPIInstanceMI * mi,
- const CMPIContext * ctx,
- const CMPIResult * rslt,
- const CMPIObjectPath * ref,
- const char ** properties) {
- CMPIInstance * ci = NULL;
- CMPIStatus rc = {CMPI_RC_OK, NULL};
- struct netPortList * lptr = NULL ;
- struct netPortList * rm = NULL ;
- int cmdrc = 0;
- _OSBASE_TRACE(1,("--- %s CMPI EnumInstances() called",_ClassName));
-
- cmdrc = enum_all_netPorts( &lptr );
- if( cmdrc != 0 ) {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_FAILED, "Could not list local loopback ports." );
- _OSBASE_TRACE(1,("--- %s CMPI EnumInstances() failed : %s",_ClassName,CMGetCharPtr(rc.msg)));
- return rc;
- }
- rm = lptr;
- // iterate port list
- if( lptr != NULL ) {
- for ( ; lptr && rc.rc == CMPI_RC_OK ; lptr = lptr->next) {
- if( lptr->sptr->type == 3 ) {
- ci = _makeInst_LocalLoopbackPort( _broker, ctx, ref, properties, lptr->sptr, &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_netPortList(rm);
- _OSBASE_TRACE(1,("--- %s CMPI EnumInstances() failed : %s",_ClassName,CMGetCharPtr(rc.msg)));
- return rc;
- }
- else { CMReturnInstance( rslt, ci ); }
- }
- }
- if(rm) free_netPortList(rm);
- }
- CMReturnDone( rslt );
- _OSBASE_TRACE(1,("--- %s CMPI EnumInstances() exited",_ClassName));
- return rc;
- }
- CMPIStatus OSBase_LocalLoopbackPortProviderGetInstance( CMPIInstanceMI * mi,
- const CMPIContext * ctx,
- const CMPIResult * rslt,
- const CMPIObjectPath * cop,
- const char ** properties) {
- CMPIInstance * ci = NULL;
- CMPIString * id = NULL;
- struct cim_netPort * sptr = NULL;
- CMPIStatus rc = {CMPI_RC_OK, NULL};
- int cmdrc = 0;
- _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;
- }
- id = CMGetKey( cop, "DeviceID", &rc).value.string;
- if( id == NULL ) {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_FAILED, "Could not get LocalLoopbackPortID." );
- _OSBASE_TRACE(1,("--- %s CMPI GetInstance() failed : %s",_ClassName,CMGetCharPtr(rc.msg)));
- return rc;
- }
- cmdrc = get_netPort_data( CMGetCharPtr(id) , 2, &sptr );
- if( cmdrc != 0 || sptr == NULL ) {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_NOT_FOUND, "LocalLoopbackPort does not exist." );
- _OSBASE_TRACE(1,("--- %s CMPI GetInstance() failed : %s",_ClassName,CMGetCharPtr(rc.msg)));
- return rc;
- }
- ci = _makeInst_LocalLoopbackPort( _broker, ctx, cop, properties, sptr, &rc );
- if(sptr) free_netPort(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;
- }
- CMPIStatus OSBase_LocalLoopbackPortProviderCreateInstance( CMPIInstanceMI * mi,
- const CMPIContext * ctx,
- const CMPIResult * rslt,
- const CMPIObjectPath * cop,
- const CMPIInstance * 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 OSBase_LocalLoopbackPortProviderSetInstance( CMPIInstanceMI * mi,
- const CMPIContext * ctx,
- const CMPIResult * rslt,
- const CMPIObjectPath * cop,
- const CMPIInstance * ci,
- const char **properties) {
- CMPIStatus rc = {CMPI_RC_OK, NULL};
- _OSBASE_TRACE(1,("--- %s CMPI SetInstance() called",_ClassName));
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_NOT_SUPPORTED, "CIM_ERR_NOT_SUPPORTED" );
- _OSBASE_TRACE(1,("--- %s CMPI SetInstance() exited",_ClassName));
- return rc;
- }
- CMPIStatus OSBase_LocalLoopbackPortProviderDeleteInstance( CMPIInstanceMI * mi,
- const CMPIContext * ctx,
- const CMPIResult * rslt,
- const CMPIObjectPath * cop) {
- CMPIStatus rc = {CMPI_RC_OK, NULL};
- _OSBASE_TRACE(1,("--- %s CMPI DeleteInstance() called",_ClassName));
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_NOT_SUPPORTED, "CIM_ERR_NOT_SUPPORTED" );
- _OSBASE_TRACE(1,("--- %s CMPI DeleteInstance() exited",_ClassName));
- return rc;
- }
- CMPIStatus OSBase_LocalLoopbackPortProviderExecQuery( CMPIInstanceMI * mi,
- const CMPIContext * ctx,
- const CMPIResult * rslt,
- const CMPIObjectPath * ref,
- const char * lang,
- const char * 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;
- }
- /* ---------------------------------------------------------------------------*/
- /* Method Provider Interface */
- /* ---------------------------------------------------------------------------*/
- CMPIStatus OSBase_LocalLoopbackPortProviderMethodCleanup( CMPIMethodMI * mi,
- const CMPIContext * ctx, CMPIBoolean terminate) {
- _OSBASE_TRACE(1,("--- %s CMPI MethodCleanup() called",_ClassName));
- _OSBASE_TRACE(1,("--- %s CMPI MethodCleanup() exited",_ClassName));
- CMReturn(CMPI_RC_OK);
- }
- CMPIStatus OSBase_LocalLoopbackPortProviderInvokeMethod( CMPIMethodMI * mi,
- const CMPIContext * ctx,
- const CMPIResult * rslt,
- const CMPIObjectPath * ref,
- const char * methodName,
- const CMPIArgs * in,
- CMPIArgs * out) {
- CMPIString * class = NULL;
- CMPIStatus rc = {CMPI_RC_OK, NULL};
- _OSBASE_TRACE(1,("--- %s CMPI InvokeMethod() called",_ClassName));
- class = CMGetClassName(ref, &rc);
- if( strcasecmp(CMGetCharPtr(class), _ClassName) == 0 &&
- strcasecmp("SetPowerState",methodName) == 0 ) {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_NOT_SUPPORTED, methodName );
- }
- else if( strcasecmp(CMGetCharPtr(class), _ClassName) == 0 &&
- strcasecmp("Reset",methodName) == 0 ) {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_NOT_SUPPORTED, methodName );
- }
- else if( strcasecmp(CMGetCharPtr(class), _ClassName) == 0 &&
- strcasecmp("EnableDevice",methodName) == 0 ) {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_NOT_SUPPORTED, methodName );
- }
- else if( strcasecmp(CMGetCharPtr(class), _ClassName) == 0 &&
- strcasecmp("OnlineDevice",methodName) == 0 ) {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_NOT_SUPPORTED, methodName );
- }
- else if( strcasecmp(CMGetCharPtr(class), _ClassName) == 0 &&
- strcasecmp("QuiesceDevice",methodName) == 0 ) {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_NOT_SUPPORTED, methodName );
- }
- else if( strcasecmp(CMGetCharPtr(class), _ClassName) == 0 &&
- strcasecmp("SaveProperties",methodName) == 0 ) {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_NOT_SUPPORTED, methodName );
- }
- else if( strcasecmp(CMGetCharPtr(class), _ClassName) == 0 &&
- strcasecmp("RestoreProperties",methodName) == 0 ) {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_NOT_SUPPORTED, methodName );
- }
- else {
- CMSetStatusWithChars( _broker, &rc,
- CMPI_RC_ERR_NOT_FOUND, methodName );
- }
-
- _OSBASE_TRACE(1,("--- %s CMPI InvokeMethod() exited",_ClassName));
- return rc;
- }
- /* ---------------------------------------------------------------------------*/
- /* Provider Factory */
- /* ---------------------------------------------------------------------------*/
- CMInstanceMIStub( OSBase_LocalLoopbackPortProvider,
- OSBase_LocalLoopbackPortProvider,
- _broker,
- CMNoHook);
- CMMethodMIStub( OSBase_LocalLoopbackPortProvider,
- OSBase_LocalLoopbackPortProvider,
- _broker,
- CMNoHook);
- /* ---------------------------------------------------------------------------*/
- /* end of cmpiOSBase_LocalLoopbackPortProvider */
- /* ---------------------------------------------------------------------------*/