ipa_hbac_services.c revision 0700185377ad23885cc2ddae20abe0dc36a3abca
842ae4bd224140319ae7feec1872b93dfd491143fielding Stephen Gallagher <sgallagh@redhat.com>
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz Copyright (C) 2011 Red Hat
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz This program is free software; you can redistribute it and/or modify
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd it under the terms of the GNU General Public License as published by
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd the Free Software Foundation; either version 3 of the License, or
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd (at your option) any later version.
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd This program is distributed in the hope that it will be useful,
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz but WITHOUT ANY WARRANTY; without even the implied warranty of
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz GNU General Public License for more details.
3a2bc69dbf5d2afe57bcc21c554aa1e3851fb159jim You should have received a copy of the GNU General Public License
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz along with this program. If not, see <http://www.gnu.org/licenses/>.
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz const char **attrs;
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz /* Return values */
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantzipa_hbac_service_info_done(struct tevent_req *subreq);
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantzipa_hbac_servicegroup_info_next(struct tevent_req *req,
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantzipa_hbac_servicegroup_info_done(struct tevent_req *subreq);
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz req = tevent_req_create(mem_ctx, &state, struct ipa_hbac_service_state);
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz service_filter = talloc_asprintf(state, "(objectClass=%s)",
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz state->attrs = talloc_array(state, const char *, 6);
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz DEBUG(1, ("Failed to allocate service attribute list.\n"));
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantzstatic errno_t ipa_hbac_service_info_next(struct tevent_req *req,
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz base = state->search_bases[state->search_base_iter];
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz state->cur_filter = sdap_get_id_specific_filter(state,
8c83461e53ca7d204e1d634f0c78199d60320d7bjerenkrantz DEBUG(SSSDBG_TRACE_FUNC, ("Sending request for next search base: "
01e8aca9299a0b872414c24c8b7724d6f88ae665ianh subreq = sdap_get_generic_send(state, state->ev, state->opts, state->sh,
baf4649272f3dabd48b095a23b3180cc0105dce6rjung DEBUG(SSSDBG_CRIT_FAILURE, ("Error requesting service info\n"));
baf4649272f3dabd48b095a23b3180cc0105dce6rjung tevent_req_set_callback(subreq, ipa_hbac_service_info_done, req);
baf4649272f3dabd48b095a23b3180cc0105dce6rjung /* If there are no services, we'll shortcut out
baf4649272f3dabd48b095a23b3180cc0105dce6rjung * This is still valid, as rules can apply to
baf4649272f3dabd48b095a23b3180cc0105dce6rjung * all services
baf4649272f3dabd48b095a23b3180cc0105dce6rjung * There's no reason to try to process groups
e302f38fd646764ce1a1e1c578d794aef514a9e5sf ret = replace_attribute_name(IPA_MEMBEROF, SYSDB_ORIG_MEMBEROF,
e302f38fd646764ce1a1e1c578d794aef514a9e5sf servicegroup_filter = talloc_asprintf(state, "(objectClass=%s)",
baf4649272f3dabd48b095a23b3180cc0105dce6rjungipa_hbac_servicegroup_info_next(struct tevent_req *req,
b5033962c73a470b6f36a3ac796c542a6ab4ddf6brianp state->cur_filter = sdap_get_id_specific_filter(state,
f48a3dc705ff69288cb5af136a2cd753f45d6572brianp /* Look up service groups */
f48a3dc705ff69288cb5af136a2cd753f45d6572brianp DEBUG(SSSDBG_TRACE_FUNC, ("Sending request for next search base: "
f48a3dc705ff69288cb5af136a2cd753f45d6572brianp subreq = sdap_get_generic_send(state, state->ev, state->opts, state->sh,
f48a3dc705ff69288cb5af136a2cd753f45d6572brianp DEBUG(SSSDBG_CRIT_FAILURE, ("Error requesting servicegroup info\n"));
f48a3dc705ff69288cb5af136a2cd753f45d6572brianp tevent_req_set_callback(subreq, ipa_hbac_servicegroup_info_done, req);
f48a3dc705ff69288cb5af136a2cd753f45d6572brianpipa_hbac_servicegroup_info_done(struct tevent_req *subreq)
f48a3dc705ff69288cb5af136a2cd753f45d6572brianp ret = replace_attribute_name(IPA_MEMBER, SYSDB_ORIG_MEMBER,
3a2bc69dbf5d2afe57bcc21c554aa1e3851fb159jim DEBUG(SSSDBG_CRIT_FAILURE, ("Could not replace attribute names\n"));
3a2bc69dbf5d2afe57bcc21c554aa1e3851fb159jim ret = replace_attribute_name(IPA_MEMBEROF, SYSDB_ORIG_MEMBEROF,
3a2bc69dbf5d2afe57bcc21c554aa1e3851fb159jim DEBUG(SSSDBG_CRIT_FAILURE, ("Could not replace attribute names\n"));
3a2bc69dbf5d2afe57bcc21c554aa1e3851fb159jim state->servicegroups = talloc_realloc(state, state->servicegroups,
goto done;
done:
size_t c;
return EOK;
const char *rule_name,
size_t i;
char *member_dn;
char *filter;
const char *name;
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
&member_dn);
goto done;
goto done;
goto done;
num_services++;
goto done;
goto done;
goto done;
goto done;
done:
return ret;
const char *service_dn,
char **servicegroupname)
const char *rdn_name;
const char *svc_comp_name;
const char *hbac_comp_name;
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
done:
return ret;