ifp_iface.c revision c747b0c875785ce693f70b50bdda0237c4b04e35
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance/*
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance Authors:
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance Pavel Březina <pbrezina@redhat.com>
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance Copyright (C) 2015 Red Hat
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance This program is free software; you can redistribute it and/or modify
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance it under the terms of the GNU General Public License as published by
c0949afe66b701d624196bea79094dbfbeefa4abFelix Gabriel Mance the Free Software Foundation; either version 3 of the License, or
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance (at your option) any later version.
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance This program is distributed in the hope that it will be useful,
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance but WITHOUT ANY WARRANTY; without even the implied warranty of
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e32f2729ffc4e828e41a528f47a4815d4a1689f0Felix Gabriel Mance GNU General Public License for more details.
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance You should have received a copy of the GNU General Public License
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance along with this program. If not, see <http://www.gnu.org/licenses/>.
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance*/
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance
fc05327b875b5723b6c17849b83477f29ec12c90Felix Gabriel Mance#include <dbus/dbus.h>
fc05327b875b5723b6c17849b83477f29ec12c90Felix Gabriel Mance
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance#include "sbus/sssd_dbus.h"
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance#include "responder/ifp/ifp_iface_generated.h"
fc05327b875b5723b6c17849b83477f29ec12c90Felix Gabriel Mance#include "responder/ifp/ifp_domains.h"
fc05327b875b5723b6c17849b83477f29ec12c90Felix Gabriel Mance#include "responder/ifp/ifp_components.h"
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu#include "responder/ifp/ifp_users.h"
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mancestruct iface_ifp iface_ifp = {
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance { &iface_ifp_meta, 0 },
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .Ping = ifp_ping,
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance /* components */
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .ListComponents = ifp_list_components,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .ListResponders = ifp_list_responders,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .ListBackends = ifp_list_backends,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .FindMonitor = ifp_find_monitor,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .FindResponderByName = ifp_find_responder_by_name,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .FindBackendByName = ifp_find_backend_by_name,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance
bed4f1f668ac5d014595c17199fa786aacda4e4cChristian Maeder .GetUserAttr = ifp_user_get_attr,
bed4f1f668ac5d014595c17199fa786aacda4e4cChristian Maeder .GetUserGroups = ifp_user_get_groups,
bed4f1f668ac5d014595c17199fa786aacda4e4cChristian Maeder .ListDomains = ifp_list_domains,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .FindDomainByName = ifp_find_domain_by_name,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance};
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mancestruct iface_ifp_components iface_ifp_components = {
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance { &iface_ifp_components_meta, 0 },
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .Enable = ifp_component_enable,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .Disable = ifp_component_disable,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .ChangeDebugLevel = ifp_component_change_debug_level,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .ChangeDebugLevelTemporarily = ifp_component_change_debug_level_tmp,
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu .get_name = ifp_component_get_name,
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu .get_debug_level = ifp_component_get_debug_level,
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu .get_enabled = ifp_component_get_enabled,
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu .get_type = ifp_component_get_type,
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu /* FIXME: This should be part of Components.Backends interface, onece
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu * SSSD supports multiple interfaces per object path. */
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu .get_providers = ifp_backend_get_providers
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu};
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu
9a46e7194fce1b73383479ba16f81e21c292722cmcodescustruct iface_ifp_domains iface_ifp_domains = {
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu { &iface_ifp_domains_meta, 0 },
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu .get_name = ifp_dom_get_name,
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu .get_provider = ifp_dom_get_provider,
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu .get_primary_servers = ifp_dom_get_primary_servers,
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu .get_backup_servers = ifp_dom_get_backup_servers,
9a46e7194fce1b73383479ba16f81e21c292722cmcodescu .get_min_id = ifp_dom_get_min_id,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .get_max_id = ifp_dom_get_max_id,
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance .get_realm = ifp_dom_get_realm,
e05e1babc9a0edf2ebd39713d5c44fd0a035d6daFelix Gabriel Mance .get_forest = ifp_dom_get_forest,
e05e1babc9a0edf2ebd39713d5c44fd0a035d6daFelix Gabriel Mance .get_login_format = ifp_dom_get_login_format,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .get_fully_qualified_name_format = ifp_dom_get_fqdn_format,
1341e758a8a0785dd7063b93aed3989f13b36f2aFelix Gabriel Mance .get_enumerable = ifp_dom_get_enumerable,
1341e758a8a0785dd7063b93aed3989f13b36f2aFelix Gabriel Mance .get_use_fully_qualified_names = ifp_dom_get_use_fqdn,
1341e758a8a0785dd7063b93aed3989f13b36f2aFelix Gabriel Mance .get_subdomain = ifp_dom_get_subdomain,
1341e758a8a0785dd7063b93aed3989f13b36f2aFelix Gabriel Mance .get_parent_domain = ifp_dom_get_parent_domain
1341e758a8a0785dd7063b93aed3989f13b36f2aFelix Gabriel Mance};
1341e758a8a0785dd7063b93aed3989f13b36f2aFelix Gabriel Mance
1341e758a8a0785dd7063b93aed3989f13b36f2aFelix Gabriel Mancestruct iface_ifp_users iface_ifp_users = {
1341e758a8a0785dd7063b93aed3989f13b36f2aFelix Gabriel Mance { &iface_ifp_users_meta, 0 },
7c2291b25eadfb81c4850bf7ea92a3168f547fa9Felix Gabriel Mance .FindByName = ifp_users_find_by_name,
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance .FindByID = ifp_users_find_by_id,
7c2291b25eadfb81c4850bf7ea92a3168f547fa9Felix Gabriel Mance .ListByName = ifp_users_list_by_name,
c41f2d65ecbf5ad9d3233a21f406a7698338a04bFelix Gabriel Mance .ListByDomainAndName = ifp_users_list_by_domain_and_name
e05e1babc9a0edf2ebd39713d5c44fd0a035d6daFelix Gabriel Mance};
c41f2d65ecbf5ad9d3233a21f406a7698338a04bFelix Gabriel Mance
e05e1babc9a0edf2ebd39713d5c44fd0a035d6daFelix Gabriel Mancestruct iface_map {
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance const char *path;
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance struct sbus_vtable *vtable;
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance};
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mancestatic struct iface_map iface_map[] = {
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance { IFP_PATH, &iface_ifp.vtable },
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance { IFP_PATH_DOMAINS_TREE, &iface_ifp_domains.vtable },
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance { IFP_PATH_COMPONENTS_TREE, &iface_ifp_components.vtable },
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance { IFP_PATH_USERS, &iface_ifp_users.vtable },
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance { NULL, NULL },
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance};
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Manceerrno_t ifp_register_sbus_interface(struct sbus_connection *conn, void *pvt)
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance{
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance errno_t ret;
137edd3944aacd150d60af8977de962113ead859Felix Gabriel Mance int i;
e05e1babc9a0edf2ebd39713d5c44fd0a035d6daFelix Gabriel Mance
e05e1babc9a0edf2ebd39713d5c44fd0a035d6daFelix Gabriel Mance for (i = 0; iface_map[i].path != NULL; i++) {
e05e1babc9a0edf2ebd39713d5c44fd0a035d6daFelix Gabriel Mance ret = sbus_conn_register_iface(conn, iface_map[i].vtable,
e05e1babc9a0edf2ebd39713d5c44fd0a035d6daFelix Gabriel Mance iface_map[i].path, pvt);
e05e1babc9a0edf2ebd39713d5c44fd0a035d6daFelix Gabriel Mance if (ret != EOK) {
6e7fe479953725884826bd38e4779229d45d3a40Felix Gabriel Mance return ret;
e05e1babc9a0edf2ebd39713d5c44fd0a035d6daFelix Gabriel Mance }
6e7fe479953725884826bd38e4779229d45d3a40Felix Gabriel Mance }
e05e1babc9a0edf2ebd39713d5c44fd0a035d6daFelix Gabriel Mance
41ddc1ba03dadd983308781ae8fd638c3faab453Felix Gabriel Mance return EOK;
41ddc1ba03dadd983308781ae8fd638c3faab453Felix Gabriel Mance}
6e7fe479953725884826bd38e4779229d45d3a40Felix Gabriel Mance