summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2014-04-10 10:38:47 +0200
committerPavel Březina <pbrezina@redhat.com>2014-05-09 19:38:30 +0200
commitd17d09110916379b4df5945d03bbe3c8ccae60d9 (patch)
treecd0940fee25855b1134eaf4f66b8cee83fc80399
parentf27b554bfc3dc8f112bc45c1c8c651c8ffec0faf (diff)
downloadopenlmi_sssd-d17d09110916379b4df5945d03bbe3c8ccae60d9.tar.gz
openlmi_sssd-d17d09110916379b4df5945d03bbe3c8ccae60d9.tar.xz
openlmi_sssd-d17d09110916379b4df5945d03bbe3c8ccae60d9.zip
Mock the provider
-rw-r--r--src/sssd/CMakeLists.txt16
-rw-r--r--src/sssd/LMI_HostedSSSDServiceProvider.c238
-rw-r--r--src/sssd/LMI_SSSDAvailableDomainProvider.c243
-rw-r--r--src/sssd/LMI_SSSDAvailableResponderProvider.c245
-rw-r--r--src/sssd/LMI_SSSDAvailableSubdomainProvider.c244
-rw-r--r--src/sssd/LMI_SSSDComponentProvider.c201
-rw-r--r--src/sssd/LMI_SSSDDataProviderProvider.c (renamed from src/sssd/LMI_SSSDProvider.c)95
-rw-r--r--src/sssd/LMI_SSSDDomainDataProviderProvider.c222
-rw-r--r--src/sssd/LMI_SSSDDomainProvider.c222
-rw-r--r--src/sssd/LMI_SSSDResponderProvider.c223
-rw-r--r--src/sssd/LMI_SSSDServiceProvider.c210
-rw-r--r--src/sssd/LMI_SSSDSubdomainProvider.c222
-rw-r--r--src/sssd/LMI_SSSD_utils.c63
-rw-r--r--src/sssd/LMI_SSSD_utils.h59
14 files changed, 2450 insertions, 53 deletions
diff --git a/src/sssd/CMakeLists.txt b/src/sssd/CMakeLists.txt
index 2393a6f..fad0b22 100644
--- a/src/sssd/CMakeLists.txt
+++ b/src/sssd/CMakeLists.txt
@@ -11,10 +11,22 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -ggdb3 -O0")
konkretcmpi_generate(${MOF} CIM_PROVIDERS CIM_HEADERS CIM_CLASSES)
# Include directories
-include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMPI_INCLUDE_DIR})
+include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMPI_INCLUDE_DIR} ..)
# Source files
-set(provider_SRCS LMI_${PROVIDER_NAME}Provider.c)
+set(provider_SRCS
+ LMI_${PROVIDER_NAME}ServiceProvider.c
+ LMI_${PROVIDER_NAME}ComponentProvider.c
+ LMI_${PROVIDER_NAME}ResponderProvider.c
+ LMI_${PROVIDER_NAME}DomainProvider.c
+ LMI_${PROVIDER_NAME}SubdomainProvider.c
+ LMI_${PROVIDER_NAME}DataProviderProvider.c
+ LMI_${PROVIDER_NAME}AvailableDomainProvider.c
+ LMI_${PROVIDER_NAME}AvailableResponderProvider.c
+ LMI_${PROVIDER_NAME}AvailableSubdomainProvider.c
+ LMI_${PROVIDER_NAME}DomainDataProviderProvider.c
+ LMI_Hosted${PROVIDER_NAME}ServiceProvider.c
+ LMI_${PROVIDER_NAME}_utils.c)
# Define library
add_library(${LIBRARY_NAME} SHARED
diff --git a/src/sssd/LMI_HostedSSSDServiceProvider.c b/src/sssd/LMI_HostedSSSDServiceProvider.c
new file mode 100644
index 0000000..8db231a
--- /dev/null
+++ b/src/sssd/LMI_HostedSSSDServiceProvider.c
@@ -0,0 +1,238 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <konkret/konkret.h>
+#include <openlmi/openlmi.h>
+#include "LMI_HostedSSSDService.h"
+#include "LMI_SSSD_utils.h"
+
+static const CMPIBroker* _cb;
+
+static void LMI_HostedSSSDServiceInitialize(const CMPIContext *ctx)
+{
+ lmi_init(PROVIDER_NAME, _cb, ctx, NULL);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceCleanup(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceEnumInstanceNames(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ return KDefaultEnumerateInstanceNames(
+ _cb, mi, cc, cr, cop);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceEnumInstances(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ LMI_SSSDServiceRef lmi_sssd;
+ LMI_HostedSSSDService association;
+ const char *namespace = KNameSpace(cop);
+
+ LMI_SSSDService_Get_Ref(_cb, namespace, &lmi_sssd);
+
+ LMI_HostedSSSDService_Init(&association, _cb, namespace);
+ LMI_HostedSSSDService_Set_Dependent(&association, &lmi_sssd);
+ LMI_HostedSSSDService_SetObjectPath_Antecedent(&association,
+ lmi_get_computer_system());
+
+ KReturnInstance(cr, association);
+
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceGetInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ return KDefaultGetInstance(
+ _cb, mi, cc, cr, cop, properties);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceCreateInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceModifyInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci,
+ const char**properties)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceDeleteInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceExecQuery(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* lang,
+ const char* query)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceAssociationCleanup(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceAssociators(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* resultClass,
+ const char* role,
+ const char* resultRole,
+ const char** properties)
+{
+ return KDefaultAssociators(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_HostedSSSDService_ClassName,
+ assocClass,
+ resultClass,
+ role,
+ resultRole,
+ properties);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceAssociatorNames(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* resultClass,
+ const char* role,
+ const char* resultRole)
+{
+ return KDefaultAssociatorNames(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_HostedSSSDService_ClassName,
+ assocClass,
+ resultClass,
+ role,
+ resultRole);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceReferences(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* role,
+ const char** properties)
+{
+ return KDefaultReferences(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_HostedSSSDService_ClassName,
+ assocClass,
+ role,
+ properties);
+}
+
+static CMPIStatus LMI_HostedSSSDServiceReferenceNames(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* role)
+{
+ return KDefaultReferenceNames(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_HostedSSSDService_ClassName,
+ assocClass,
+ role);
+}
+
+CMInstanceMIStub(
+ LMI_HostedSSSDService,
+ LMI_HostedSSSDService,
+ _cb,
+ LMI_HostedSSSDServiceInitialize(ctx))
+
+CMAssociationMIStub(
+ LMI_HostedSSSDService,
+ LMI_HostedSSSDService,
+ _cb,
+ LMI_HostedSSSDServiceInitialize(ctx))
+
+KONKRET_REGISTRATION(
+ "root/cimv2",
+ "LMI_HostedSSSDService",
+ "LMI_HostedSSSDService",
+ "instance association")
diff --git a/src/sssd/LMI_SSSDAvailableDomainProvider.c b/src/sssd/LMI_SSSDAvailableDomainProvider.c
new file mode 100644
index 0000000..3beaa3a
--- /dev/null
+++ b/src/sssd/LMI_SSSDAvailableDomainProvider.c
@@ -0,0 +1,243 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <konkret/konkret.h>
+#include "LMI_SSSDAvailableDomain.h"
+#include "LMI_SSSD_utils.h"
+
+static const CMPIBroker* _cb;
+
+static void LMI_SSSDAvailableDomainInitialize(const CMPIContext *ctx)
+{
+ lmi_init(PROVIDER_NAME, _cb, ctx, NULL);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainCleanup(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainEnumInstanceNames(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ return KDefaultEnumerateInstanceNames(
+ _cb, mi, cc, cr, cop);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainEnumInstances(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ LMI_SSSDServiceRef lmi_sssd;
+ LMI_SSSDDomainRef lmi_domain;
+ LMI_SSSDAvailableDomain association;
+ const char *namespace = KNameSpace(cop);
+ const char *domains[] = {"ldap.pb", "ad.pb", "ipa.pb", NULL};
+ int i;
+
+ LMI_SSSDService_Get_Ref(_cb, namespace, &lmi_sssd);
+
+ for (i = 0; domains[i] != NULL; i++) {
+ LMI_SSSDDomain_Get_Ref(_cb, namespace, domains[i], &lmi_domain);
+
+ LMI_SSSDAvailableDomain_Init(&association, _cb, namespace);
+ LMI_SSSDAvailableDomain_Set_SSSD(&association, &lmi_sssd);
+ LMI_SSSDAvailableDomain_Set_Domain(&association, &lmi_domain);
+
+ KReturnInstance(cr, association);
+ }
+
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainGetInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ return KDefaultGetInstance(
+ _cb, mi, cc, cr, cop, properties);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainCreateInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainModifyInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci,
+ const char**properties)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainDeleteInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainExecQuery(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* lang,
+ const char* query)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainAssociationCleanup(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainAssociators(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* resultClass,
+ const char* role,
+ const char* resultRole,
+ const char** properties)
+{
+ return KDefaultAssociators(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableDomain_ClassName,
+ assocClass,
+ resultClass,
+ role,
+ resultRole,
+ properties);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainAssociatorNames(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* resultClass,
+ const char* role,
+ const char* resultRole)
+{
+ return KDefaultAssociatorNames(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableDomain_ClassName,
+ assocClass,
+ resultClass,
+ role,
+ resultRole);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainReferences(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* role,
+ const char** properties)
+{
+ return KDefaultReferences(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableDomain_ClassName,
+ assocClass,
+ role,
+ properties);
+}
+
+static CMPIStatus LMI_SSSDAvailableDomainReferenceNames(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* role)
+{
+ return KDefaultReferenceNames(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableDomain_ClassName,
+ assocClass,
+ role);
+}
+
+CMInstanceMIStub(
+ LMI_SSSDAvailableDomain,
+ LMI_SSSDAvailableDomain,
+ _cb,
+ LMI_SSSDAvailableDomainInitialize(ctx))
+
+CMAssociationMIStub(
+ LMI_SSSDAvailableDomain,
+ LMI_SSSDAvailableDomain,
+ _cb,
+ LMI_SSSDAvailableDomainInitialize(ctx))
+
+KONKRET_REGISTRATION(
+ "root/cimv2",
+ "LMI_SSSDAvailableDomain",
+ "LMI_SSSDAvailableDomain",
+ "instance association")
diff --git a/src/sssd/LMI_SSSDAvailableResponderProvider.c b/src/sssd/LMI_SSSDAvailableResponderProvider.c
new file mode 100644
index 0000000..413af0c
--- /dev/null
+++ b/src/sssd/LMI_SSSDAvailableResponderProvider.c
@@ -0,0 +1,245 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <konkret/konkret.h>
+#include "LMI_SSSDAvailableResponder.h"
+#include "LMI_SSSD_utils.h"
+
+static const CMPIBroker* _cb;
+
+static void LMI_SSSDAvailableResponderInitialize(const CMPIContext *ctx)
+{
+ lmi_init(PROVIDER_NAME, _cb, ctx, NULL);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderCleanup(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderEnumInstanceNames(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ return KDefaultEnumerateInstanceNames(
+ _cb, mi, cc, cr, cop);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderEnumInstances(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ LMI_SSSDServiceRef lmi_sssd;
+ LMI_SSSDResponderRef lmi_responder;
+ LMI_SSSDAvailableResponder association;
+ const char *namespace = KNameSpace(cop);
+ const char *responders[] = {"nss", "pam", "sudo", "ssh", "autofs",
+ "pac", "ifp", NULL};
+ int i;
+
+ LMI_SSSDService_Get_Ref(_cb, namespace, &lmi_sssd);
+
+ for (i = 0; responders[i] != NULL; i++) {
+ LMI_SSSDResponder_Get_Ref(_cb, namespace, responders[i],
+ &lmi_responder);
+
+ LMI_SSSDAvailableResponder_Init(&association, _cb, namespace);
+ LMI_SSSDAvailableResponder_Set_SSSD(&association, &lmi_sssd);
+ LMI_SSSDAvailableResponder_Set_Responder(&association, &lmi_responder);
+
+ KReturnInstance(cr, association);
+ }
+
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderGetInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ return KDefaultGetInstance(
+ _cb, mi, cc, cr, cop, properties);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderCreateInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderModifyInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci,
+ const char**properties)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderDeleteInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderExecQuery(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* lang,
+ const char* query)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderAssociationCleanup(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderAssociators(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* resultClass,
+ const char* role,
+ const char* resultRole,
+ const char** properties)
+{
+ return KDefaultAssociators(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableResponder_ClassName,
+ assocClass,
+ resultClass,
+ role,
+ resultRole,
+ properties);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderAssociatorNames(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* resultClass,
+ const char* role,
+ const char* resultRole)
+{
+ return KDefaultAssociatorNames(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableResponder_ClassName,
+ assocClass,
+ resultClass,
+ role,
+ resultRole);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderReferences(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* role,
+ const char** properties)
+{
+ return KDefaultReferences(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableResponder_ClassName,
+ assocClass,
+ role,
+ properties);
+}
+
+static CMPIStatus LMI_SSSDAvailableResponderReferenceNames(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* role)
+{
+ return KDefaultReferenceNames(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableResponder_ClassName,
+ assocClass,
+ role);
+}
+
+CMInstanceMIStub(
+ LMI_SSSDAvailableResponder,
+ LMI_SSSDAvailableResponder,
+ _cb,
+ LMI_SSSDAvailableResponderInitialize(ctx))
+
+CMAssociationMIStub(
+ LMI_SSSDAvailableResponder,
+ LMI_SSSDAvailableResponder,
+ _cb,
+ LMI_SSSDAvailableResponderInitialize(ctx))
+
+KONKRET_REGISTRATION(
+ "root/cimv2",
+ "LMI_SSSDAvailableResponder",
+ "LMI_SSSDAvailableResponder",
+ "instance association")
diff --git a/src/sssd/LMI_SSSDAvailableSubdomainProvider.c b/src/sssd/LMI_SSSDAvailableSubdomainProvider.c
new file mode 100644
index 0000000..95e6454
--- /dev/null
+++ b/src/sssd/LMI_SSSDAvailableSubdomainProvider.c
@@ -0,0 +1,244 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <konkret/konkret.h>
+#include "LMI_SSSDAvailableSubdomain.h"
+#include "LMI_SSSD_utils.h"
+
+static const CMPIBroker* _cb;
+
+static void LMI_SSSDAvailableSubdomainInitialize(const CMPIContext *ctx)
+{
+ lmi_init(PROVIDER_NAME, _cb, ctx, NULL);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainCleanup(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainEnumInstanceNames(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ return KDefaultEnumerateInstanceNames(
+ _cb, mi, cc, cr, cop);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainEnumInstances(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ LMI_SSSDDomainRef lmi_domain;
+ LMI_SSSDSubdomainRef lmi_subdomain;
+ LMI_SSSDAvailableSubdomain association;
+ const char *namespace = KNameSpace(cop);
+ const char *subdomains[] = {"bos.ad.pb", "brq.ad.pb", NULL};
+ int i;
+
+ LMI_SSSDDomain_Get_Ref(_cb, namespace, "ad.pb", &lmi_domain);
+
+ for (i = 0; subdomains[i] != NULL; i++) {
+ LMI_SSSDSubdomain_Get_Ref(_cb, namespace, subdomains[i],
+ &lmi_subdomain);
+
+ LMI_SSSDAvailableSubdomain_Init(&association, _cb, namespace);
+ LMI_SSSDAvailableSubdomain_Set_Domain(&association, &lmi_domain);
+ LMI_SSSDAvailableSubdomain_Set_Subdomain(&association, &lmi_subdomain);
+
+ KReturnInstance(cr, association);
+ }
+
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainGetInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ return KDefaultGetInstance(
+ _cb, mi, cc, cr, cop, properties);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainCreateInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainModifyInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci,
+ const char**properties)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainDeleteInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainExecQuery(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* lang,
+ const char* query)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainAssociationCleanup(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainAssociators(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* resultClass,
+ const char* role,
+ const char* resultRole,
+ const char** properties)
+{
+ return KDefaultAssociators(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableSubdomain_ClassName,
+ assocClass,
+ resultClass,
+ role,
+ resultRole,
+ properties);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainAssociatorNames(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* resultClass,
+ const char* role,
+ const char* resultRole)
+{
+ return KDefaultAssociatorNames(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableSubdomain_ClassName,
+ assocClass,
+ resultClass,
+ role,
+ resultRole);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainReferences(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* role,
+ const char** properties)
+{
+ return KDefaultReferences(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableSubdomain_ClassName,
+ assocClass,
+ role,
+ properties);
+}
+
+static CMPIStatus LMI_SSSDAvailableSubdomainReferenceNames(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* role)
+{
+ return KDefaultReferenceNames(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDAvailableSubdomain_ClassName,
+ assocClass,
+ role);
+}
+
+CMInstanceMIStub(
+ LMI_SSSDAvailableSubdomain,
+ LMI_SSSDAvailableSubdomain,
+ _cb,
+ LMI_SSSDAvailableSubdomainInitialize(ctx))
+
+CMAssociationMIStub(
+ LMI_SSSDAvailableSubdomain,
+ LMI_SSSDAvailableSubdomain,
+ _cb,
+ LMI_SSSDAvailableSubdomainInitialize(ctx))
+
+KONKRET_REGISTRATION(
+ "root/cimv2",
+ "LMI_SSSDAvailableSubdomain",
+ "LMI_SSSDAvailableSubdomain",
+ "instance association")
diff --git a/src/sssd/LMI_SSSDComponentProvider.c b/src/sssd/LMI_SSSDComponentProvider.c
new file mode 100644
index 0000000..d6676d5
--- /dev/null
+++ b/src/sssd/LMI_SSSDComponentProvider.c
@@ -0,0 +1,201 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <konkret/konkret.h>
+#include "LMI_SSSDComponent.h"
+
+static const CMPIBroker* _cb = NULL;
+
+static void LMI_SSSDComponentInitialize()
+{
+}
+
+static CMPIStatus LMI_SSSDComponentCleanup(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDComponentEnumInstanceNames(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ return KDefaultEnumerateInstanceNames(
+ _cb, mi, cc, cr, cop);
+}
+
+static CMPIStatus LMI_SSSDComponentEnumInstances(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDComponentGetInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ return KDefaultGetInstance(
+ _cb, mi, cc, cr, cop, properties);
+}
+
+static CMPIStatus LMI_SSSDComponentCreateInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDComponentModifyInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci,
+ const char** properties)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDComponentDeleteInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDComponentExecQuery(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* lang,
+ const char* query)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+CMInstanceMIStub(
+ LMI_SSSDComponent,
+ LMI_SSSDComponent,
+ _cb,
+ LMI_SSSDComponentInitialize())
+
+static CMPIStatus LMI_SSSDComponentMethodCleanup(
+ CMPIMethodMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDComponentInvokeMethod(
+ CMPIMethodMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* meth,
+ const CMPIArgs* in,
+ CMPIArgs* out)
+{
+ return LMI_SSSDComponent_DispatchMethod(
+ _cb, mi, cc, cr, cop, meth, in, out);
+}
+
+CMMethodMIStub(
+ LMI_SSSDComponent,
+ LMI_SSSDComponent,
+ _cb,
+ LMI_SSSDComponentInitialize())
+
+KUint32 LMI_SSSDComponent_SetDebugLevelPermanently(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDComponentRef* self,
+ const KUint16* debug_level,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDComponent_SetDebugLevelTemporarily(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDComponentRef* self,
+ const KUint16* debug_level,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDComponent_Enable(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDComponentRef* self,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDComponent_Disable(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDComponentRef* self,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KONKRET_REGISTRATION(
+ "root/cimv2",
+ "LMI_SSSDComponent",
+ "LMI_SSSDComponent",
+ "instance method")
diff --git a/src/sssd/LMI_SSSDProvider.c b/src/sssd/LMI_SSSDDataProviderProvider.c
index aa9dcb3..9342456 100644
--- a/src/sssd/LMI_SSSDProvider.c
+++ b/src/sssd/LMI_SSSDDataProviderProvider.c
@@ -1,13 +1,35 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
#include <konkret/konkret.h>
-#include "LMI_SSSD.h"
+#include "LMI_SSSDDataProvider.h"
+#include "LMI_SSSD_utils.h"
static const CMPIBroker* _cb = NULL;
-static void LMI_SSSDInitialize()
+static void LMI_SSSDDataProviderInitialize(const CMPIContext *ctx)
{
+ lmi_init(PROVIDER_NAME, _cb, ctx, NULL);
}
-static CMPIStatus LMI_SSSDCleanup(
+static CMPIStatus LMI_SSSDDataProviderCleanup(
CMPIInstanceMI* mi,
const CMPIContext* cc,
CMPIBoolean term)
@@ -15,7 +37,7 @@ static CMPIStatus LMI_SSSDCleanup(
CMReturn(CMPI_RC_OK);
}
-static CMPIStatus LMI_SSSDEnumInstanceNames(
+static CMPIStatus LMI_SSSDDataProviderEnumInstanceNames(
CMPIInstanceMI* mi,
const CMPIContext* cc,
const CMPIResult* cr,
@@ -25,7 +47,7 @@ static CMPIStatus LMI_SSSDEnumInstanceNames(
_cb, mi, cc, cr, cop);
}
-static CMPIStatus LMI_SSSDEnumInstances(
+static CMPIStatus LMI_SSSDDataProviderEnumInstances(
CMPIInstanceMI* mi,
const CMPIContext* cc,
const CMPIResult* cr,
@@ -35,7 +57,7 @@ static CMPIStatus LMI_SSSDEnumInstances(
CMReturn(CMPI_RC_OK);
}
-static CMPIStatus LMI_SSSDGetInstance(
+static CMPIStatus LMI_SSSDDataProviderGetInstance(
CMPIInstanceMI* mi,
const CMPIContext* cc,
const CMPIResult* cr,
@@ -46,7 +68,7 @@ static CMPIStatus LMI_SSSDGetInstance(
_cb, mi, cc, cr, cop, properties);
}
-static CMPIStatus LMI_SSSDCreateInstance(
+static CMPIStatus LMI_SSSDDataProviderCreateInstance(
CMPIInstanceMI* mi,
const CMPIContext* cc,
const CMPIResult* cr,
@@ -56,7 +78,7 @@ static CMPIStatus LMI_SSSDCreateInstance(
CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
}
-static CMPIStatus LMI_SSSDModifyInstance(
+static CMPIStatus LMI_SSSDDataProviderModifyInstance(
CMPIInstanceMI* mi,
const CMPIContext* cc,
const CMPIResult* cr,
@@ -67,7 +89,7 @@ static CMPIStatus LMI_SSSDModifyInstance(
CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
}
-static CMPIStatus LMI_SSSDDeleteInstance(
+static CMPIStatus LMI_SSSDDataProviderDeleteInstance(
CMPIInstanceMI* mi,
const CMPIContext* cc,
const CMPIResult* cr,
@@ -76,7 +98,7 @@ static CMPIStatus LMI_SSSDDeleteInstance(
CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
}
-static CMPIStatus LMI_SSSDExecQuery(
+static CMPIStatus LMI_SSSDDataProviderExecQuery(
CMPIInstanceMI* mi,
const CMPIContext* cc,
const CMPIResult* cr,
@@ -88,12 +110,12 @@ static CMPIStatus LMI_SSSDExecQuery(
}
CMInstanceMIStub(
- LMI_SSSD,
- LMI_SSSD,
+ LMI_SSSDDataProvider,
+ LMI_SSSDDataProvider,
_cb,
- LMI_SSSDInitialize())
+ LMI_SSSDDataProviderInitialize(ctx))
-static CMPIStatus LMI_SSSDMethodCleanup(
+static CMPIStatus LMI_SSSDDataProviderMethodCleanup(
CMPIMethodMI* mi,
const CMPIContext* cc,
CMPIBoolean term)
@@ -101,7 +123,7 @@ static CMPIStatus LMI_SSSDMethodCleanup(
CMReturn(CMPI_RC_OK);
}
-static CMPIStatus LMI_SSSDInvokeMethod(
+static CMPIStatus LMI_SSSDDataProviderInvokeMethod(
CMPIMethodMI* mi,
const CMPIContext* cc,
const CMPIResult* cr,
@@ -110,47 +132,18 @@ static CMPIStatus LMI_SSSDInvokeMethod(
const CMPIArgs* in,
CMPIArgs* out)
{
- return LMI_SSSD_DispatchMethod(
+ return LMI_SSSDDataProvider_DispatchMethod(
_cb, mi, cc, cr, cop, meth, in, out);
}
CMMethodMIStub(
- LMI_SSSD,
- LMI_SSSD,
+ LMI_SSSDDataProvider,
+ LMI_SSSDDataProvider,
_cb,
- LMI_SSSDInitialize())
-
-KUint32 LMI_SSSD_GetSupportedServices(
- const CMPIBroker* cb,
- CMPIMethodMI* mi,
- const CMPIContext* context,
- KStringA* services,
- CMPIStatus* status)
-{
- KUint32 result = KUINT32_INIT;
- CMPIBoolean bret;
-
- bret = KStringA_Init(services, cb, 6);
- if (!bret) {
- KSetStatus(status, ERR_FAILED);
- KUint32_Set(&result, 1);
- return result;
- }
-
- KStringA_Set(services, cb, 0, "nss");
- KStringA_Set(services, cb, 1, "pam");
- KStringA_Set(services, cb, 2, "sudo");
- KStringA_Set(services, cb, 3, "autofs");
- KStringA_Set(services, cb, 4, "ssh");
- KStringA_Set(services, cb, 5, "pac");
-
- KSetStatus(status, OK);
- KUint32_Set(&result, 0);
- return result;
-}
+ LMI_SSSDDataProviderInitialize(ctx))
KONKRET_REGISTRATION(
"root/cimv2",
- "LMI_SSSD",
- "LMI_SSSD",
- "instance method");
+ "LMI_SSSDDataProvider",
+ "LMI_SSSDDataProvider",
+ "instance method")
diff --git a/src/sssd/LMI_SSSDDomainDataProviderProvider.c b/src/sssd/LMI_SSSDDomainDataProviderProvider.c
new file mode 100644
index 0000000..bb68531
--- /dev/null
+++ b/src/sssd/LMI_SSSDDomainDataProviderProvider.c
@@ -0,0 +1,222 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <konkret/konkret.h>
+#include "LMI_SSSDDomainDataProvider.h"
+
+static const CMPIBroker* _cb;
+
+static void LMI_SSSDDomainDataProviderInitialize()
+{
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderCleanup(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderEnumInstanceNames(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ return KDefaultEnumerateInstanceNames(
+ _cb, mi, cc, cr, cop);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderEnumInstances(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderGetInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ return KDefaultGetInstance(
+ _cb, mi, cc, cr, cop, properties);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderCreateInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderModifyInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci,
+ const char**properties)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderDeleteInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderExecQuery(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* lang,
+ const char* query)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderAssociationCleanup(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderAssociators(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* resultClass,
+ const char* role,
+ const char* resultRole,
+ const char** properties)
+{
+ return KDefaultAssociators(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDDomainDataProvider_ClassName,
+ assocClass,
+ resultClass,
+ role,
+ resultRole,
+ properties);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderAssociatorNames(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* resultClass,
+ const char* role,
+ const char* resultRole)
+{
+ return KDefaultAssociatorNames(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDDomainDataProvider_ClassName,
+ assocClass,
+ resultClass,
+ role,
+ resultRole);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderReferences(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* role,
+ const char** properties)
+{
+ return KDefaultReferences(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDDomainDataProvider_ClassName,
+ assocClass,
+ role,
+ properties);
+}
+
+static CMPIStatus LMI_SSSDDomainDataProviderReferenceNames(
+ CMPIAssociationMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* assocClass,
+ const char* role)
+{
+ return KDefaultReferenceNames(
+ _cb,
+ mi,
+ cc,
+ cr,
+ cop,
+ LMI_SSSDDomainDataProvider_ClassName,
+ assocClass,
+ role);
+}
+
+CMInstanceMIStub(
+ LMI_SSSDDomainDataProvider,
+ LMI_SSSDDomainDataProvider,
+ _cb,
+ LMI_SSSDDomainDataProviderInitialize())
+
+CMAssociationMIStub(
+ LMI_SSSDDomainDataProvider,
+ LMI_SSSDDomainDataProvider,
+ _cb,
+ LMI_SSSDDomainDataProviderInitialize())
+
+KONKRET_REGISTRATION(
+ "root/cimv2",
+ "LMI_SSSDDomainDataProvider",
+ "LMI_SSSDDomainDataProvider",
+ "instance association")
diff --git a/src/sssd/LMI_SSSDDomainProvider.c b/src/sssd/LMI_SSSDDomainProvider.c
new file mode 100644
index 0000000..56edc21
--- /dev/null
+++ b/src/sssd/LMI_SSSDDomainProvider.c
@@ -0,0 +1,222 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <konkret/konkret.h>
+#include "LMI_SSSDDomain.h"
+#include "LMI_SSSD_utils.h"
+
+static const CMPIBroker* _cb = NULL;
+
+static void LMI_SSSDDomainInitialize(const CMPIContext *ctx)
+{
+ lmi_init(PROVIDER_NAME, _cb, ctx, NULL);
+}
+
+static CMPIStatus LMI_SSSDDomainCleanup(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDDomainEnumInstanceNames(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ return KDefaultEnumerateInstanceNames(
+ _cb, mi, cc, cr, cop);
+}
+
+static CMPIStatus LMI_SSSDDomainEnumInstances(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ LMI_SSSDDomain lmi_domain;
+ const char *namespace = KNameSpace(cop);
+ const char *domains[] = {"ldap.pb", "ad.pb", "ipa.pb", NULL};
+ int i;
+
+ for (i = 0; domains[i] != NULL; i++) {
+ LMI_SSSDDomain_Init(&lmi_domain, _cb, namespace);
+
+ /* Set keys */
+ LMI_SSSDDomain_Set_Name(&lmi_domain, domains[i]);
+
+ /* Set values */
+ LMI_SSSDDomain_Set_DebugLevel(&lmi_domain, 0x3ff0);
+ LMI_SSSDDomain_Set_IsEnabled(&lmi_domain, true);
+ LMI_SSSDDomain_Set_Description(&lmi_domain, "SSSD Domain");
+
+ KReturnInstance(cr, lmi_domain);
+ }
+
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDDomainGetInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ return KDefaultGetInstance(
+ _cb, mi, cc, cr, cop, properties);
+}
+
+static CMPIStatus LMI_SSSDDomainCreateInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDDomainModifyInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci,
+ const char** properties)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDDomainDeleteInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDDomainExecQuery(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* lang,
+ const char* query)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+CMInstanceMIStub(
+ LMI_SSSDDomain,
+ LMI_SSSDDomain,
+ _cb,
+ LMI_SSSDDomainInitialize(ctx))
+
+static CMPIStatus LMI_SSSDDomainMethodCleanup(
+ CMPIMethodMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDDomainInvokeMethod(
+ CMPIMethodMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* meth,
+ const CMPIArgs* in,
+ CMPIArgs* out)
+{
+ return LMI_SSSDDomain_DispatchMethod(
+ _cb, mi, cc, cr, cop, meth, in, out);
+}
+
+CMMethodMIStub(
+ LMI_SSSDDomain,
+ LMI_SSSDDomain,
+ _cb,
+ LMI_SSSDDomainInitialize(ctx))
+
+KUint32 LMI_SSSDDomain_SetDebugLevelPermanently(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDDomainRef* self,
+ const KUint16* debug_level,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDDomain_SetDebugLevelTemporarily(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDDomainRef* self,
+ const KUint16* debug_level,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDDomain_Enable(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDDomainRef* self,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDDomain_Disable(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDDomainRef* self,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KONKRET_REGISTRATION(
+ "root/cimv2",
+ "LMI_SSSDDomain",
+ "LMI_SSSDDomain",
+ "instance method")
diff --git a/src/sssd/LMI_SSSDResponderProvider.c b/src/sssd/LMI_SSSDResponderProvider.c
new file mode 100644
index 0000000..d826a72
--- /dev/null
+++ b/src/sssd/LMI_SSSDResponderProvider.c
@@ -0,0 +1,223 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <konkret/konkret.h>
+#include "LMI_SSSDResponder.h"
+#include "LMI_SSSD_utils.h"
+
+static const CMPIBroker* _cb = NULL;
+
+static void LMI_SSSDResponderInitialize(const CMPIContext *ctx)
+{
+ lmi_init(PROVIDER_NAME, _cb, ctx, NULL);
+}
+
+static CMPIStatus LMI_SSSDResponderCleanup(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDResponderEnumInstanceNames(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ return KDefaultEnumerateInstanceNames(
+ _cb, mi, cc, cr, cop);
+}
+
+static CMPIStatus LMI_SSSDResponderEnumInstances(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ LMI_SSSDResponder lmi_responder;
+ const char *namespace = KNameSpace(cop);
+ const char *responders[] = {"nss", "pam", "sudo", "ssh", "autofs",
+ "pac", "ifp", NULL};
+ int i;
+
+ for (i = 0; responders[i] != NULL; i++) {
+ LMI_SSSDResponder_Init(&lmi_responder, _cb, namespace);
+
+ /* Set keys */
+ LMI_SSSDResponder_Set_Name(&lmi_responder, responders[i]);
+
+ /* Set values */
+ LMI_SSSDResponder_Set_DebugLevel(&lmi_responder, 0x3ff0);
+ LMI_SSSDResponder_Set_IsEnabled(&lmi_responder, true);
+ LMI_SSSDResponder_Set_Description(&lmi_responder, "SSSD Responder");
+
+ KReturnInstance(cr, lmi_responder);
+ }
+
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDResponderGetInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ return KDefaultGetInstance(
+ _cb, mi, cc, cr, cop, properties);
+}
+
+static CMPIStatus LMI_SSSDResponderCreateInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDResponderModifyInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci,
+ const char** properties)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDResponderDeleteInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDResponderExecQuery(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* lang,
+ const char* query)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+CMInstanceMIStub(
+ LMI_SSSDResponder,
+ LMI_SSSDResponder,
+ _cb,
+ LMI_SSSDResponderInitialize(ctx))
+
+static CMPIStatus LMI_SSSDResponderMethodCleanup(
+ CMPIMethodMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDResponderInvokeMethod(
+ CMPIMethodMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* meth,
+ const CMPIArgs* in,
+ CMPIArgs* out)
+{
+ return LMI_SSSDResponder_DispatchMethod(
+ _cb, mi, cc, cr, cop, meth, in, out);
+}
+
+CMMethodMIStub(
+ LMI_SSSDResponder,
+ LMI_SSSDResponder,
+ _cb,
+ LMI_SSSDResponderInitialize(ctx))
+
+KUint32 LMI_SSSDResponder_SetDebugLevelPermanently(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDResponderRef* self,
+ const KUint16* debug_level,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDResponder_SetDebugLevelTemporarily(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDResponderRef* self,
+ const KUint16* debug_level,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDResponder_Enable(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDResponderRef* self,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDResponder_Disable(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDResponderRef* self,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KONKRET_REGISTRATION(
+ "root/cimv2",
+ "LMI_SSSDResponder",
+ "LMI_SSSDResponder",
+ "instance method")
diff --git a/src/sssd/LMI_SSSDServiceProvider.c b/src/sssd/LMI_SSSDServiceProvider.c
new file mode 100644
index 0000000..cd57d1d
--- /dev/null
+++ b/src/sssd/LMI_SSSDServiceProvider.c
@@ -0,0 +1,210 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <konkret/konkret.h>
+#include "LMI_SSSDService.h"
+#include "LMI_SSSD_utils.h"
+
+static const CMPIBroker* _cb = NULL;
+
+static void LMI_SSSDServiceInitialize(const CMPIContext *ctx)
+{
+ lmi_init(PROVIDER_NAME, _cb, ctx, NULL);
+}
+
+static CMPIStatus LMI_SSSDServiceCleanup(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDServiceEnumInstanceNames(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ return KDefaultEnumerateInstanceNames(
+ _cb, mi, cc, cr, cop);
+}
+
+static CMPIStatus LMI_SSSDServiceEnumInstances(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ LMI_SSSDService lmi_sssd;
+ const char *namespace = KNameSpace(cop);
+ const char *hostname = lmi_get_system_name();
+
+ /* LMI_SSSDService is a singleton. */
+
+ /* Set keys */
+ LMI_SSSDService_Init(&lmi_sssd, _cb, namespace);
+ LMI_SSSDService_Set_Name(&lmi_sssd, SERVICE_NAME);
+ LMI_SSSDService_Set_SystemName(&lmi_sssd, hostname);
+ LMI_SSSDService_Set_CreationClassName(&lmi_sssd, LMI_SSSDService_ClassName);
+ LMI_SSSDService_Set_SystemCreationClassName(&lmi_sssd,
+ lmi_get_system_creation_class_name());
+
+ /* Set values */
+ LMI_SSSDService_Set_DefaultDomainSuffix(&lmi_sssd, "testdomain.sssd");
+
+ KReturnInstance(cr, lmi_sssd);
+
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDServiceGetInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ return KDefaultGetInstance(
+ _cb, mi, cc, cr, cop, properties);
+}
+
+static CMPIStatus LMI_SSSDServiceCreateInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDServiceModifyInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci,
+ const char** properties)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDServiceDeleteInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDServiceExecQuery(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* lang,
+ const char* query)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+CMInstanceMIStub(
+ LMI_SSSDService,
+ LMI_SSSDService,
+ _cb,
+ LMI_SSSDServiceInitialize(ctx))
+
+static CMPIStatus LMI_SSSDServiceMethodCleanup(
+ CMPIMethodMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDServiceInvokeMethod(
+ CMPIMethodMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* meth,
+ const CMPIArgs* in,
+ CMPIArgs* out)
+{
+ return LMI_SSSDService_DispatchMethod(
+ _cb, mi, cc, cr, cop, meth, in, out);
+}
+
+CMMethodMIStub(
+ LMI_SSSDService,
+ LMI_SSSDService,
+ _cb,
+ LMI_SSSDServiceInitialize(ctx))
+
+KUint32 LMI_SSSDService_RequestStateChange(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDServiceRef* self,
+ const KUint16* RequestedState,
+ KRef* Job,
+ const KDateTime* TimeoutPeriod,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDService_StartService(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDServiceRef* self,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDService_StopService(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDServiceRef* self,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KONKRET_REGISTRATION(
+ "root/cimv2",
+ "LMI_SSSDService",
+ "LMI_SSSDService",
+ "instance method")
diff --git a/src/sssd/LMI_SSSDSubdomainProvider.c b/src/sssd/LMI_SSSDSubdomainProvider.c
new file mode 100644
index 0000000..a89ab61
--- /dev/null
+++ b/src/sssd/LMI_SSSDSubdomainProvider.c
@@ -0,0 +1,222 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <konkret/konkret.h>
+#include "LMI_SSSDSubdomain.h"
+#include "LMI_SSSD_utils.h"
+
+static const CMPIBroker* _cb = NULL;
+
+static void LMI_SSSDSubdomainInitialize(const CMPIContext *ctx)
+{
+ lmi_init(PROVIDER_NAME, _cb, ctx, NULL);
+}
+
+static CMPIStatus LMI_SSSDSubdomainCleanup(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDSubdomainEnumInstanceNames(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ return KDefaultEnumerateInstanceNames(
+ _cb, mi, cc, cr, cop);
+}
+
+static CMPIStatus LMI_SSSDSubdomainEnumInstances(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ LMI_SSSDSubdomain lmi_subdomain;
+ const char *namespace = KNameSpace(cop);
+ const char *subdomains[] = {"bos.ad.pb", "brq.ad.pb", NULL};
+ int i;
+
+ for (i = 0; subdomains[i] != NULL; i++) {
+ LMI_SSSDSubdomain_Init(&lmi_subdomain, _cb, namespace);
+
+ /* Set keys */
+ LMI_SSSDSubdomain_Set_Name(&lmi_subdomain, subdomains[i]);
+
+ /* Set values */
+ LMI_SSSDSubdomain_Set_DebugLevel(&lmi_subdomain, 0x3ff0);
+ LMI_SSSDSubdomain_Set_IsEnabled(&lmi_subdomain, true);
+ LMI_SSSDSubdomain_Set_Description(&lmi_subdomain, "SSSD Subdomain");
+
+ KReturnInstance(cr, lmi_subdomain);
+ }
+
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDSubdomainGetInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ return KDefaultGetInstance(
+ _cb, mi, cc, cr, cop, properties);
+}
+
+static CMPIStatus LMI_SSSDSubdomainCreateInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDSubdomainModifyInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const CMPIInstance* ci,
+ const char** properties)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDSubdomainDeleteInstance(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+static CMPIStatus LMI_SSSDSubdomainExecQuery(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* lang,
+ const char* query)
+{
+ CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
+}
+
+CMInstanceMIStub(
+ LMI_SSSDSubdomain,
+ LMI_SSSDSubdomain,
+ _cb,
+ LMI_SSSDSubdomainInitialize(ctx))
+
+static CMPIStatus LMI_SSSDSubdomainMethodCleanup(
+ CMPIMethodMI* mi,
+ const CMPIContext* cc,
+ CMPIBoolean term)
+{
+ CMReturn(CMPI_RC_OK);
+}
+
+static CMPIStatus LMI_SSSDSubdomainInvokeMethod(
+ CMPIMethodMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char* meth,
+ const CMPIArgs* in,
+ CMPIArgs* out)
+{
+ return LMI_SSSDSubdomain_DispatchMethod(
+ _cb, mi, cc, cr, cop, meth, in, out);
+}
+
+CMMethodMIStub(
+ LMI_SSSDSubdomain,
+ LMI_SSSDSubdomain,
+ _cb,
+ LMI_SSSDSubdomainInitialize(ctx))
+
+KUint32 LMI_SSSDSubdomain_SetDebugLevelPermanently(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDSubdomainRef* self,
+ const KUint16* debug_level,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDSubdomain_SetDebugLevelTemporarily(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDSubdomainRef* self,
+ const KUint16* debug_level,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDSubdomain_Enable(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDSubdomainRef* self,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KUint32 LMI_SSSDSubdomain_Disable(
+ const CMPIBroker* cb,
+ CMPIMethodMI* mi,
+ const CMPIContext* context,
+ const LMI_SSSDSubdomainRef* self,
+ CMPIStatus* status)
+{
+ KUint32 result = KUINT32_INIT;
+
+ KSetStatus(status, ERR_NOT_SUPPORTED);
+ return result;
+}
+
+KONKRET_REGISTRATION(
+ "root/cimv2",
+ "LMI_SSSDSubdomain",
+ "LMI_SSSDSubdomain",
+ "instance method")
diff --git a/src/sssd/LMI_SSSD_utils.c b/src/sssd/LMI_SSSD_utils.c
new file mode 100644
index 0000000..adf77e4
--- /dev/null
+++ b/src/sssd/LMI_SSSD_utils.c
@@ -0,0 +1,63 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <openlmi/openlmi.h>
+#include "LMI_SSSD_utils.h"
+
+void LMI_SSSDService_Get_Ref(const CMPIBroker *cb,
+ const char *namespace,
+ LMI_SSSDServiceRef *ref)
+{
+ const char *hostname = lmi_get_system_name();
+ const char *sysclass = lmi_get_system_creation_class_name();
+
+ LMI_SSSDServiceRef_Init(ref, cb, namespace);
+ LMI_SSSDServiceRef_Set_Name(ref, SERVICE_NAME);
+ LMI_SSSDServiceRef_Set_SystemName(ref, hostname);
+ LMI_SSSDServiceRef_Set_CreationClassName(ref, LMI_SSSDService_ClassName);
+ LMI_SSSDServiceRef_Set_SystemCreationClassName(ref, sysclass);
+}
+
+void LMI_SSSDResponder_Get_Ref(const CMPIBroker *cb,
+ const char *namespace,
+ const char *name,
+ LMI_SSSDResponderRef *ref)
+{
+ LMI_SSSDResponderRef_Init(ref, cb, namespace);
+ LMI_SSSDResponderRef_Set_Name(ref, name);
+}
+
+void LMI_SSSDDomain_Get_Ref(const CMPIBroker *cb,
+ const char *namespace,
+ const char *name,
+ LMI_SSSDDomainRef *ref)
+{
+ LMI_SSSDDomainRef_Init(ref, cb, namespace);
+ LMI_SSSDDomainRef_Set_Name(ref, name);
+}
+
+void LMI_SSSDSubdomain_Get_Ref(const CMPIBroker *cb,
+ const char *namespace,
+ const char *name,
+ LMI_SSSDSubdomainRef *ref)
+{
+ LMI_SSSDSubdomainRef_Init(ref, cb, namespace);
+ LMI_SSSDSubdomainRef_Set_Name(ref, name);
+}
diff --git a/src/sssd/LMI_SSSD_utils.h b/src/sssd/LMI_SSSD_utils.h
new file mode 100644
index 0000000..3fb403b
--- /dev/null
+++ b/src/sssd/LMI_SSSD_utils.h
@@ -0,0 +1,59 @@
+/*
+ Authors:
+ Pavel Březina <pbrezina@redhat.com>
+
+ Copyright (C) 2014 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef LMI_SSSD_UTILS_H_
+#define LMI_SSSD_UTILS_H_
+
+#include <openlmi/openlmi.h>
+#include "LMI_SSSDService.h"
+#include "LMI_SSSDResponder.h"
+#include "LMI_SSSDDomain.h"
+#include "LMI_SSSDSubdomain.h"
+
+#define PROVIDER_NAME "sssd"
+#define SERVICE_NAME "OpenLMI SSSD Service"
+
+#ifndef true
+ #define true 1
+#endif
+#ifndef false
+ #define false 0
+#endif
+
+void LMI_SSSDService_Get_Ref(const CMPIBroker *cb,
+ const char *namespace,
+ LMI_SSSDServiceRef *ref);
+
+void LMI_SSSDResponder_Get_Ref(const CMPIBroker *cb,
+ const char *namespace,
+ const char *name,
+ LMI_SSSDResponderRef *ref);
+
+void LMI_SSSDDomain_Get_Ref(const CMPIBroker *cb,
+ const char *namespace,
+ const char *name,
+ LMI_SSSDDomainRef *ref);
+
+void LMI_SSSDSubdomain_Get_Ref(const CMPIBroker *cb,
+ const char *namespace,
+ const char *name,
+ LMI_SSSDSubdomainRef *ref);
+
+#endif /* LMI_SSSD_UTILS_H_ */