/* The following definitions are auto-generated from ifp_iface.xml */ #include "util/util.h" #include "sbus/sssd_dbus.h" #include "sbus/sssd_dbus_meta.h" #include "ifp_iface_generated.h" /* invokes a handler with a 's' DBus signature */ static int invoke_s_method(struct sbus_request *dbus_req, void *function_ptr); static int invoke_get_s(struct sbus_request *dbus_req, void *function_ptr); static int invoke_get_as(struct sbus_request *dbus_req, void *function_ptr); static int invoke_get_u(struct sbus_request *dbus_req, void *function_ptr); static int invoke_get_b(struct sbus_request *dbus_req, void *function_ptr); static int invoke_get_o(struct sbus_request *dbus_req, void *function_ptr); /* arguments for org.freedesktop.sssd.infopipe.GetUserAttr */ const struct sbus_arg_meta infopipe_iface_GetUserAttr__in[] = { { "user", "s" }, { "attr", "as" }, { NULL, } }; /* arguments for org.freedesktop.sssd.infopipe.GetUserAttr */ const struct sbus_arg_meta infopipe_iface_GetUserAttr__out[] = { { "values", "a{sv}" }, { NULL, } }; /* arguments for org.freedesktop.sssd.infopipe.GetUserGroups */ const struct sbus_arg_meta infopipe_iface_GetUserGroups__in[] = { { "user", "s" }, { NULL, } }; /* arguments for org.freedesktop.sssd.infopipe.GetUserGroups */ const struct sbus_arg_meta infopipe_iface_GetUserGroups__out[] = { { "values", "as" }, { NULL, } }; int infopipe_iface_GetUserGroups_finish(struct sbus_request *req, const char *arg_values[], int len_values) { return sbus_request_return_and_finish(req, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &arg_values, len_values, DBUS_TYPE_INVALID); } /* arguments for org.freedesktop.sssd.infopipe.FindDomainByName */ const struct sbus_arg_meta infopipe_iface_FindDomainByName__in[] = { { "name", "s" }, { NULL, } }; /* arguments for org.freedesktop.sssd.infopipe.FindDomainByName */ const struct sbus_arg_meta infopipe_iface_FindDomainByName__out[] = { { "domain", "o" }, { NULL, } }; int infopipe_iface_FindDomainByName_finish(struct sbus_request *req, const char *arg_domain) { return sbus_request_return_and_finish(req, DBUS_TYPE_OBJECT_PATH, &arg_domain, DBUS_TYPE_INVALID); } /* arguments for org.freedesktop.sssd.infopipe.ListDomains */ const struct sbus_arg_meta infopipe_iface_ListDomains__out[] = { { "domain", "ao" }, { NULL, } }; int infopipe_iface_ListDomains_finish(struct sbus_request *req, const char *arg_domain[], int len_domain) { return sbus_request_return_and_finish(req, DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &arg_domain, len_domain, DBUS_TYPE_INVALID); } /* methods for org.freedesktop.sssd.infopipe */ const struct sbus_method_meta infopipe_iface__methods[] = { { "Ping", /* name */ NULL, /* no in_args */ NULL, /* no out_args */ offsetof(struct infopipe_iface, Ping), NULL, /* no invoker */ }, { "GetUserAttr", /* name */ infopipe_iface_GetUserAttr__in, infopipe_iface_GetUserAttr__out, offsetof(struct infopipe_iface, GetUserAttr), NULL, /* no invoker */ }, { "GetUserGroups", /* name */ infopipe_iface_GetUserGroups__in, infopipe_iface_GetUserGroups__out, offsetof(struct infopipe_iface, GetUserGroups), invoke_s_method, }, { "FindDomainByName", /* name */ infopipe_iface_FindDomainByName__in, infopipe_iface_FindDomainByName__out, offsetof(struct infopipe_iface, FindDomainByName), invoke_s_method, }, { "ListDomains", /* name */ NULL, /* no in_args */ infopipe_iface_ListDomains__out, offsetof(struct infopipe_iface, ListDomains), NULL, /* no invoker */ }, { NULL, } }; /* invokes GetAll for the 'org.freedesktop.sssd.infopipe' interface */ static int invoke_infopipe_iface_get_all(struct sbus_request *dbus_req, void *function_ptr) { DBusMessage *reply; dbus_bool_t dbret; DBusMessageIter iter; DBusMessageIter iter_dict; reply = dbus_message_new_method_return(dbus_req->message); if (!reply) return ENOMEM; dbus_message_iter_init_append(reply, &iter); dbret = dbus_message_iter_open_container( &iter, DBUS_TYPE_ARRAY, DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &iter_dict); if (!dbret) return ENOMEM; dbret = dbus_message_iter_close_container(&iter, &iter_dict); if (!dbret) return ENOMEM; return sbus_request_finish(dbus_req, reply); } /* interface info for org.freedesktop.sssd.infopipe */ const struct sbus_interface_meta infopipe_iface_meta = { "org.freedesktop.sssd.infopipe", /* name */ infopipe_iface__methods, NULL, /* no signals */ NULL, /* no properties */ invoke_infopipe_iface_get_all, /* GetAll invoker */ }; /* invokes GetAll for the 'org.freedesktop.sssd.infopipe.Domains' interface */ static int invoke_infopipe_domain_get_all(struct sbus_request *dbus_req, void *function_ptr) { struct sbus_interface *intf = dbus_req->intf; const struct sbus_property_meta *property; DBusMessage *reply; dbus_bool_t dbret; DBusMessageIter iter; DBusMessageIter iter_dict; int ret; const char * s_prop_val; const char * s_out_val; void (*s_handler)(struct sbus_request *, void *data, const char * *); bool b_prop_val; dbus_bool_t b_out_val; void (*b_handler)(struct sbus_request *, void *data, bool *); uint32_t u_prop_val; uint32_t u_out_val; void (*u_handler)(struct sbus_request *, void *data, uint32_t *); const char * *as_prop_val; int as_prop_len; const char * *as_out_val; void (*as_handler)(struct sbus_request *, void *data, const char * * *, int *); const char * o_prop_val; const char * o_out_val; void (*o_handler)(struct sbus_request *, void *data, const char * *); reply = dbus_message_new_method_return(dbus_req->message); if (!reply) return ENOMEM; dbus_message_iter_init_append(reply, &iter); dbret = dbus_message_iter_open_container( &iter, DBUS_TYPE_ARRAY, DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &iter_dict); if (!dbret) return ENOMEM; property = sbus_meta_find_property(intf->vtable->meta, "name"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { s_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (s_handler) { (s_handler)(dbus_req, dbus_req->intf->instance_data, &s_prop_val); s_out_val = s_prop_val == NULL ? "" : s_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "name", DBUS_TYPE_STRING, &s_out_val); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "provider"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { s_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (s_handler) { (s_handler)(dbus_req, dbus_req->intf->instance_data, &s_prop_val); s_out_val = s_prop_val == NULL ? "" : s_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "provider", DBUS_TYPE_STRING, &s_out_val); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "primary_servers"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { as_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (as_handler) { (as_handler)(dbus_req, dbus_req->intf->instance_data, &as_prop_val, &as_prop_len); as_out_val = as_prop_val; ret = sbus_add_array_as_variant_to_dict(&iter_dict, "primary_servers", DBUS_TYPE_STRING, (uint8_t*)as_out_val, as_prop_len, sizeof(const char *)); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "backup_servers"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { as_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (as_handler) { (as_handler)(dbus_req, dbus_req->intf->instance_data, &as_prop_val, &as_prop_len); as_out_val = as_prop_val; ret = sbus_add_array_as_variant_to_dict(&iter_dict, "backup_servers", DBUS_TYPE_STRING, (uint8_t*)as_out_val, as_prop_len, sizeof(const char *)); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "min_id"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { u_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (u_handler) { (u_handler)(dbus_req, dbus_req->intf->instance_data, &u_prop_val); u_out_val = u_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "min_id", DBUS_TYPE_UINT32, &u_out_val); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "max_id"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { u_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (u_handler) { (u_handler)(dbus_req, dbus_req->intf->instance_data, &u_prop_val); u_out_val = u_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "max_id", DBUS_TYPE_UINT32, &u_out_val); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "realm"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { s_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (s_handler) { (s_handler)(dbus_req, dbus_req->intf->instance_data, &s_prop_val); s_out_val = s_prop_val == NULL ? "" : s_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "realm", DBUS_TYPE_STRING, &s_out_val); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "forest"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { s_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (s_handler) { (s_handler)(dbus_req, dbus_req->intf->instance_data, &s_prop_val); s_out_val = s_prop_val == NULL ? "" : s_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "forest", DBUS_TYPE_STRING, &s_out_val); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "login_format"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { s_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (s_handler) { (s_handler)(dbus_req, dbus_req->intf->instance_data, &s_prop_val); s_out_val = s_prop_val == NULL ? "" : s_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "login_format", DBUS_TYPE_STRING, &s_out_val); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "fully_qualified_name_format"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { s_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (s_handler) { (s_handler)(dbus_req, dbus_req->intf->instance_data, &s_prop_val); s_out_val = s_prop_val == NULL ? "" : s_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "fully_qualified_name_format", DBUS_TYPE_STRING, &s_out_val); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "enumerable"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { b_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (b_handler) { (b_handler)(dbus_req, dbus_req->intf->instance_data, &b_prop_val); b_out_val = b_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "enumerable", DBUS_TYPE_BOOLEAN, &b_out_val); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "use_fully_qualified_names"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { b_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (b_handler) { (b_handler)(dbus_req, dbus_req->intf->instance_data, &b_prop_val); b_out_val = b_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "use_fully_qualified_names", DBUS_TYPE_BOOLEAN, &b_out_val); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "subdomain"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { b_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (b_handler) { (b_handler)(dbus_req, dbus_req->intf->instance_data, &b_prop_val); b_out_val = b_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "subdomain", DBUS_TYPE_BOOLEAN, &b_out_val); if (ret != EOK) return ret; } } property = sbus_meta_find_property(intf->vtable->meta, "parent_domain"); if (property != NULL && property->flags & SBUS_PROPERTY_READABLE) { o_handler = VTABLE_FUNC(intf->vtable, property->vtable_offset_get); if (o_handler) { (o_handler)(dbus_req, dbus_req->intf->instance_data, &o_prop_val); o_out_val = o_prop_val == NULL ? "/" : o_prop_val; ret = sbus_add_variant_to_dict(&iter_dict, "parent_domain", DBUS_TYPE_OBJECT_PATH, &o_out_val); if (ret != EOK) return ret; } } dbret = dbus_message_iter_close_container(&iter, &iter_dict); if (!dbret) return ENOMEM; return sbus_request_finish(dbus_req, reply); } /* property info for org.freedesktop.sssd.infopipe.Domains */ const struct sbus_property_meta infopipe_domain__properties[] = { { "name", /* name */ "s", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_name), invoke_get_s, 0, /* not writable */ NULL, /* no invoker */ }, { "provider", /* name */ "s", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_provider), invoke_get_s, 0, /* not writable */ NULL, /* no invoker */ }, { "primary_servers", /* name */ "as", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_primary_servers), invoke_get_as, 0, /* not writable */ NULL, /* no invoker */ }, { "backup_servers", /* name */ "as", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_backup_servers), invoke_get_as, 0, /* not writable */ NULL, /* no invoker */ }, { "min_id", /* name */ "u", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_min_id), invoke_get_u, 0, /* not writable */ NULL, /* no invoker */ }, { "max_id", /* name */ "u", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_max_id), invoke_get_u, 0, /* not writable */ NULL, /* no invoker */ }, { "realm", /* name */ "s", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_realm), invoke_get_s, 0, /* not writable */ NULL, /* no invoker */ }, { "forest", /* name */ "s", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_forest), invoke_get_s, 0, /* not writable */ NULL, /* no invoker */ }, { "login_format", /* name */ "s", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_login_format), invoke_get_s, 0, /* not writable */ NULL, /* no invoker */ }, { "fully_qualified_name_format", /* name */ "s", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_fully_qualified_name_format), invoke_get_s, 0, /* not writable */ NULL, /* no invoker */ }, { "enumerable", /* name */ "b", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_enumerable), invoke_get_b, 0, /* not writable */ NULL, /* no invoker */ }, { "use_fully_qualified_names", /* name */ "b", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_use_fully_qualified_names), invoke_get_b, 0, /* not writable */ NULL, /* no invoker */ }, { "subdomain", /* name */ "b", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_subdomain), invoke_get_b, 0, /* not writable */ NULL, /* no invoker */ }, { "parent_domain", /* name */ "o", /* type */ SBUS_PROPERTY_READABLE, offsetof(struct infopipe_domain, infopipe_domain_get_parent_domain), invoke_get_o, 0, /* not writable */ NULL, /* no invoker */ }, { NULL, } }; /* interface info for org.freedesktop.sssd.infopipe.Domains */ const struct sbus_interface_meta infopipe_domain_meta = { "org.freedesktop.sssd.infopipe.Domains", /* name */ NULL, /* no methods */ NULL, /* no signals */ infopipe_domain__properties, invoke_infopipe_domain_get_all, /* GetAll invoker */ }; /* invokes a handler with a 's' DBus signature */ static int invoke_s_method(struct sbus_request *dbus_req, void *function_ptr) { const char * arg_0; int (*handler)(struct sbus_request *, void *, const char *) = function_ptr; if (!sbus_request_parse_or_finish(dbus_req, DBUS_TYPE_STRING, &arg_0, DBUS_TYPE_INVALID)) { return EOK; /* request handled */ } return (handler)(dbus_req, dbus_req->intf->instance_data, arg_0); } /* invokes a getter with a 'const char *' DBus type */ static int invoke_get_s(struct sbus_request *dbus_req, void *function_ptr) { const char * prop_val; const char * out_val; void (*handler)(struct sbus_request *, void *data, const char * *) = function_ptr; (handler)(dbus_req, dbus_req->intf->instance_data, &prop_val); out_val = prop_val == NULL ? "" : prop_val; return sbus_request_return_as_variant(dbus_req, DBUS_TYPE_STRING, &out_val); } /* invokes a getter with a 'dbus_bool_t' DBus type */ static int invoke_get_b(struct sbus_request *dbus_req, void *function_ptr) { bool prop_val; dbus_bool_t out_val; void (*handler)(struct sbus_request *, void *data, bool *) = function_ptr; (handler)(dbus_req, dbus_req->intf->instance_data, &prop_val); out_val = prop_val; return sbus_request_return_as_variant(dbus_req, DBUS_TYPE_BOOLEAN, &out_val); } /* invokes a getter with a 'uint32_t' DBus type */ static int invoke_get_u(struct sbus_request *dbus_req, void *function_ptr) { uint32_t prop_val; uint32_t out_val; void (*handler)(struct sbus_request *, void *data, uint32_t *) = function_ptr; (handler)(dbus_req, dbus_req->intf->instance_data, &prop_val); out_val = prop_val; return sbus_request_return_as_variant(dbus_req, DBUS_TYPE_UINT32, &out_val); } /* invokes a getter with an array of 'const char *' DBus type */ static int invoke_get_as(struct sbus_request *dbus_req, void *function_ptr) { const char * *prop_val; int prop_len; const char * *out_val; void (*handler)(struct sbus_request *, void *data, const char * * *, int *) = function_ptr; (handler)(dbus_req, dbus_req->intf->instance_data, &prop_val, &prop_len); out_val = prop_val; return sbus_request_return_array_as_variant(dbus_req, DBUS_TYPE_STRING, (uint8_t*)out_val, prop_len, sizeof(const char *)); } /* invokes a getter with a 'const char *' DBus type */ static int invoke_get_o(struct sbus_request *dbus_req, void *function_ptr) { const char * prop_val; const char * out_val; void (*handler)(struct sbus_request *, void *data, const char * *) = function_ptr; (handler)(dbus_req, dbus_req->intf->instance_data, &prop_val); out_val = prop_val == NULL ? "/" : prop_val; return sbus_request_return_as_variant(dbus_req, DBUS_TYPE_OBJECT_PATH, &out_val); }