diff options
Diffstat (limited to 'src/realmd/rdcp_realmdrealm.h')
-rw-r--r-- | src/realmd/rdcp_realmdrealm.h | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/src/realmd/rdcp_realmdrealm.h b/src/realmd/rdcp_realmdrealm.h new file mode 100644 index 0000000..491bc73 --- /dev/null +++ b/src/realmd/rdcp_realmdrealm.h @@ -0,0 +1,310 @@ +#ifndef __RDCP_REALMDREALM_H__ +#define __RDCP_REALMDREALM_H__ + +#include <strings.h> +#include "LMI_RealmdRealm.h" +#include "LMI_RealmdKerberosRealm.h" + + +KINLINE LMI_RealmdKerberosRealm_SupportedJoinCredentialTypes_Enum +SupportedJoinCredentialTypes_name_to_enum(const char *name) +{ + if (strcasecmp(name, "ccache")) + return LMI_RealmdKerberosRealm_SupportedJoinCredentialTypes_ccache; + if (strcasecmp(name, "password")) + return LMI_RealmdKerberosRealm_SupportedJoinCredentialTypes_password; + if (strcasecmp(name, "secrect")) + return LMI_RealmdKerberosRealm_SupportedJoinCredentialTypes_secrect; + if (strcasecmp(name, "automatic")) + return LMI_RealmdKerberosRealm_SupportedJoinCredentialTypes_automatic; + return 0; +} + +KINLINE const char * +SupportedJoinCredentialTypes_enum_to_name(LMI_RealmdKerberosRealm_SupportedJoinCredentialTypes_Enum value) +{ + switch(value) { + case LMI_RealmdKerberosRealm_SupportedJoinCredentialTypes_ccache: + return "ccache"; + case LMI_RealmdKerberosRealm_SupportedJoinCredentialTypes_password: + return "password"; + case LMI_RealmdKerberosRealm_SupportedJoinCredentialTypes_secrect: + return "secrect"; + case LMI_RealmdKerberosRealm_SupportedJoinCredentialTypes_automatic: + return "automatic"; + default: + return NULL; + } +} + +KINLINE LMI_RealmdKerberosRealm_SupportedJoinCredentialOwners_Enum +SupportedJoinCredentialOwners_name_to_enum(const char *name) +{ + if (strcasecmp(name, "administrator")) + return LMI_RealmdKerberosRealm_SupportedJoinCredentialOwners_administrator; + if (strcasecmp(name, "user")) + return LMI_RealmdKerberosRealm_SupportedJoinCredentialOwners_user; + if (strcasecmp(name, "computer")) + return LMI_RealmdKerberosRealm_SupportedJoinCredentialOwners_computer; + if (strcasecmp(name, "none")) + return LMI_RealmdKerberosRealm_SupportedJoinCredentialOwners_none; + return 0; +} + +KINLINE const char * +SupportedJoinCredentialOwners_enum_to_name(LMI_RealmdKerberosRealm_SupportedJoinCredentialOwners_Enum value) +{ + switch(value) { + case LMI_RealmdKerberosRealm_SupportedJoinCredentialOwners_administrator: + return "administrator"; + case LMI_RealmdKerberosRealm_SupportedJoinCredentialOwners_user: + return "user"; + case LMI_RealmdKerberosRealm_SupportedJoinCredentialOwners_computer: + return "computer"; + case LMI_RealmdKerberosRealm_SupportedJoinCredentialOwners_none: + return "none"; + default: + return NULL; + } +} + +KINLINE LMI_RealmdKerberosRealm_SupportedLeaveCredentialTypes_Enum +SupportedLeaveCredentialTypes_name_to_enum(const char *name) +{ + if (strcasecmp(name, "ccache")) + return LMI_RealmdKerberosRealm_SupportedLeaveCredentialTypes_ccache; + if (strcasecmp(name, "password")) + return LMI_RealmdKerberosRealm_SupportedLeaveCredentialTypes_password; + if (strcasecmp(name, "secrect")) + return LMI_RealmdKerberosRealm_SupportedLeaveCredentialTypes_secrect; + if (strcasecmp(name, "automatic")) + return LMI_RealmdKerberosRealm_SupportedLeaveCredentialTypes_automatic; + return 0; +} + +KINLINE const char *SupportedLeaveCredentialTypes_enum_to_name(LMI_RealmdKerberosRealm_SupportedLeaveCredentialTypes_Enum value) +{ + switch(value) { + case LMI_RealmdKerberosRealm_SupportedLeaveCredentialTypes_ccache: + return "ccache"; + case LMI_RealmdKerberosRealm_SupportedLeaveCredentialTypes_password: + return "password"; + case LMI_RealmdKerberosRealm_SupportedLeaveCredentialTypes_secrect: + return "secrect"; + case LMI_RealmdKerberosRealm_SupportedLeaveCredentialTypes_automatic: + return "automatic"; + default: + return NULL; + } +} + +KINLINE LMI_RealmdKerberosRealm_SupportedLeaveCredentialOwners_Enum +SupportedLeaveCredentialOwners_name_to_enum(const char *name) +{ + if (strcasecmp(name, "administrator")) + return LMI_RealmdKerberosRealm_SupportedLeaveCredentialOwners_administrator; + if (strcasecmp(name, "user")) + return LMI_RealmdKerberosRealm_SupportedLeaveCredentialOwners_user; + if (strcasecmp(name, "computer")) + return LMI_RealmdKerberosRealm_SupportedLeaveCredentialOwners_computer; + if (strcasecmp(name, "none")) + return LMI_RealmdKerberosRealm_SupportedLeaveCredentialOwners_none; + return 0; +} + +KINLINE const char * +SupportedLeaveCredentialOwners_enum_to_name(LMI_RealmdKerberosRealm_SupportedLeaveCredentialOwners_Enum value) +{ + switch(value) { + case LMI_RealmdKerberosRealm_SupportedLeaveCredentialOwners_administrator: + return "administrator"; + case LMI_RealmdKerberosRealm_SupportedLeaveCredentialOwners_user: + return "user"; + case LMI_RealmdKerberosRealm_SupportedLeaveCredentialOwners_computer: + return "computer"; + case LMI_RealmdKerberosRealm_SupportedLeaveCredentialOwners_none: + return "none"; + default: + return NULL; + } +} + +#define LMI_RealmdRealmInitKeys(klass, obj, dbus_path) \ +{ \ + gchar *instance_id = NULL; \ + const char *host_name = get_system_name(); \ + \ + klass##_Init(obj, cb, ns); \ + \ + instance_id = instance_id_from_dbus_path(dbus_path); \ + klass##_Set_InstanceID(obj, instance_id); \ + g_free(instance_id); \ + \ + klass##_Set_SystemCreationClassName(obj, get_system_creation_class_name()); \ + klass##_Set_SystemName(obj, host_name); \ +} + +KINLINE bool SupportsDBusInterface(GVariant *dbus_props, const char *dbus_interface) +{ + bool result = false; + GVariantIter *iter = NULL; + gchar *value; + + if (g_variant_lookup(dbus_props, "SupportedInterfaces", "as", &iter)) { + while (g_variant_iter_next(iter, "&s", &value)) { + if (strcmp(value, dbus_interface) == 0) { + result = true; + break; + } + } + G_VARIANT_ITER_FREE(iter); + } + return result; +} + +#define LMI_InitFromDBusRealmProps(klass, obj, dbus_props) \ +{ \ + gchar *value = NULL; \ + gchar *name = NULL; \ + gsize n_items; \ + GVariantIter *iter; \ + CMPICount i; \ + \ + if (g_variant_lookup(dbus_props, "Name", "&s", &value)) { \ + klass##_Set_RealmName(obj, value); \ + } \ + \ + if (g_variant_lookup(dbus_props, "Configured", "&s", &value)) { \ + if (strlen(value) == 0) { \ + klass##_Null_Configured(obj); \ + } else { \ + char *interface_name = get_short_dbus_interface_name(value); \ + klass##_Set_Configured(obj, interface_name); \ + g_free(interface_name); \ + } \ + } \ + \ + if (g_variant_lookup(dbus_props, "SupportedInterfaces", "as", &iter)) { \ + n_items = g_variant_iter_n_children(iter); \ + klass##_Init_SupportedInterfaces(obj, n_items); \ + for (i = 0; g_variant_iter_next(iter, "&s", &value); i++) { \ + char *interface_name = get_short_dbus_interface_name(value); \ + klass##_Set_SupportedInterfaces(obj, i, interface_name); \ + g_free(interface_name); \ + } \ + G_VARIANT_ITER_FREE(iter); \ + } \ + \ + if (g_variant_lookup(dbus_props, "Details", "a(ss)", &iter)) { \ + n_items = g_variant_iter_n_children(iter); \ + klass##_Init_DetailNames(obj, n_items); \ + klass##_Init_DetailValues(obj, n_items); \ + for (i = 0; g_variant_iter_next(iter, "(&s&s)", &name, &value); i++) { \ + klass##_Set_DetailNames(obj, i, name); \ + klass##_Set_DetailValues(obj, i, value); \ + } \ + G_VARIANT_ITER_FREE(iter); \ + } \ + \ + if (g_variant_lookup(dbus_props, "LoginFormats", "as", &iter)) { \ + n_items = g_variant_iter_n_children(iter); \ + klass##_Init_LoginFormats(obj, n_items); \ + for (i = 0; g_variant_iter_next(iter, "&s", &value); i++) { \ + klass##_Set_LoginFormats(obj, i, value); \ + } \ + G_VARIANT_ITER_FREE(iter); \ + } \ + \ + if (g_variant_lookup(dbus_props, "LoginPolicy", "&s", &value)) { \ + klass##_Set_LoginPolicy(obj, value); \ + } \ + \ + if (g_variant_lookup(dbus_props, "PermittedLogins", "as", &iter)) { \ + n_items = g_variant_iter_n_children(iter); \ + klass##_Init_PermittedLogins(obj, n_items); \ + for (i = 0; g_variant_iter_next(iter, "&s", &value); i++) { \ + klass##_Set_PermittedLogins(obj, i, value); \ + } \ + G_VARIANT_ITER_FREE(iter); \ + } \ +} + +#define LMI_InitFromDBusKerberosRealmProps(klass, obj, dbus_props) \ +{ \ + gchar *value = NULL; \ + \ + if (g_variant_lookup(dbus_props, "RealmName", "&s", &value)) { \ + klass##_Set_RealmName(obj, value); \ + } \ + \ + if (g_variant_lookup(dbus_props, "DomainName", "&s", &value)) { \ + klass##_Set_DomainName(obj, value); \ + } \ +} + +#define LMI_InitFromDBusKerberosMembershipProps(klass, obj, dbus_props) \ +{ \ + gchar *value = NULL; \ + gchar *type = NULL; \ + gchar *owner = NULL; \ + gsize n_items; \ + GVariantIter *iter; \ + CMPICount i; \ + \ + if (g_variant_lookup(dbus_props, "SuggestedAdministrator", "&s", &value)) { \ + klass##_Set_SuggestedAdministrator(obj, value); \ + } \ + \ + if (g_variant_lookup(dbus_props, "SupportedJoinCredentials", "a(ss)", &iter)) { \ + n_items = g_variant_iter_n_children(iter); \ + klass##_Init_SupportedJoinCredentialTypes(obj, n_items); \ + klass##_Init_SupportedJoinCredentialOwners(obj, n_items); \ + for (i = 0; g_variant_iter_next(iter, "(&s&s)", &type, &owner); i++) { \ + klass##_Set_SupportedJoinCredentialTypes(obj, i, \ + SupportedJoinCredentialTypes_name_to_enum(type)); \ + klass##_Set_SupportedJoinCredentialOwners(obj, i, \ + SupportedJoinCredentialOwners_name_to_enum(owner)); \ + } \ + G_VARIANT_ITER_FREE(iter); \ + } \ + \ + if (g_variant_lookup(dbus_props, "SupportedLeaveCredentials", "a(ss)", &iter)) { \ + n_items = g_variant_iter_n_children(iter); \ + klass##_Init_SupportedLeaveCredentialTypes(obj, n_items); \ + klass##_Init_SupportedLeaveCredentialOwners(obj, n_items); \ + for (i = 0; g_variant_iter_next(iter, "(&s&s)", &type, &owner); i++) { \ + klass##_Set_SupportedLeaveCredentialTypes(obj, i, \ + SupportedLeaveCredentialTypes_name_to_enum(type)); \ + klass##_Set_SupportedLeaveCredentialOwners(obj, i, \ + SupportedLeaveCredentialOwners_name_to_enum(owner)); \ + } \ + G_VARIANT_ITER_FREE(iter); \ + } \ +} + +CMPIStatus LMI_RealmdRealmRef_InitFromDBusPath( + LMI_RealmdRealmRef* self, + const CMPIBroker* cb, + const char* ns, + const char* dbus_path); + + +CMPIStatus LMI_RealmdRealm_InitFromDBusPath( + LMI_RealmdRealm* self, + const CMPIBroker* cb, + const char* ns, + const char* dbus_path); + +CMPIStatus LMI_RealmdKerberosRealmRef_InitFromDBusPath( + LMI_RealmdKerberosRealmRef* self, + const CMPIBroker* cb, + const char* ns, + const char* dbus_path); + +CMPIStatus LMI_RealmdKerberosRealm_InitFromDBusPath( + LMI_RealmdKerberosRealm* self, + const CMPIBroker* cb, + const char* ns, + const char* dbus_path); + +#endif /* __RDCP_REALMDREALM_H__ */ |