sdap_async_sudo.c revision 15ebeedaad83cc5dcf896cfcdea850227fdc46b5
f90884915ff10ae83f59e709c68824de834e64f5Dominik Luecke Async LDAP Helper routines for sudo
f90884915ff10ae83f59e709c68824de834e64f5Dominik Luecke Pavel Březina <pbrezina@redhat.com>
b72a390042c19e630cf221494b60c9df2a60d187Dominik Luecke Copyright (C) 2012 Red Hat
f90884915ff10ae83f59e709c68824de834e64f5Dominik Luecke This program is free software; you can redistribute it and/or modify
f90884915ff10ae83f59e709c68824de834e64f5Dominik Luecke it under the terms of the GNU General Public License as published by
2af38fde95f93562f2124ec615fba0e509c8202eDominik Luecke the Free Software Foundation; either version 3 of the License, or
2af38fde95f93562f2124ec615fba0e509c8202eDominik Luecke (at your option) any later version.
cf04ba46b9eb495d334466e24e082e391055ca7bDominik Luecke This program is distributed in the hope that it will be useful,
2af38fde95f93562f2124ec615fba0e509c8202eDominik Luecke but WITHOUT ANY WARRANTY; without even the implied warranty of
2af38fde95f93562f2124ec615fba0e509c8202eDominik Luecke MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2af38fde95f93562f2124ec615fba0e509c8202eDominik Luecke GNU General Public License for more details.
f90884915ff10ae83f59e709c68824de834e64f5Dominik Luecke You should have received a copy of the GNU General Public License
f90884915ff10ae83f59e709c68824de834e64f5Dominik Luecke along with this program. If not, see <http://www.gnu.org/licenses/>.
4df63f7187b1ba16cbe5c781db187a42f2f49579Dominik Luecke const char **attrs;
f90884915ff10ae83f59e709c68824de834e64f5Dominik Lueckestatic errno_t sdap_sudo_load_sudoers_next_base(struct tevent_req *req);
f90884915ff10ae83f59e709c68824de834e64f5Dominik Lueckestatic void sdap_sudo_load_sudoers_done(struct tevent_req *subreq);
fcac596b16bb10f475066c323b9b1ca44db2b755Dominik Lueckestatic struct tevent_req *
fcac596b16bb10f475066c323b9b1ca44db2b755Dominik Lueckesdap_sudo_load_sudoers_send(TALLOC_CTX *mem_ctx,
08056875f5f633ef432598d5245ea41c112d2178Dominik Luecke state->search_bases = opts->sdom->sudo_search_bases;
08056875f5f633ef432598d5245ea41c112d2178Dominik Luecke state->timeout = dp_opt_get_int(opts->basic, SDAP_SEARCH_TIMEOUT);
08056875f5f633ef432598d5245ea41c112d2178Dominik Luecke "SUDOERS lookup request without a search base\n");
08056875f5f633ef432598d5245ea41c112d2178Dominik Luecke /* create attrs from map */
08056875f5f633ef432598d5245ea41c112d2178Dominik Luecke ret = build_attrs_from_map(state, opts->sudorule_map, SDAP_OPTS_SUDO,
08056875f5f633ef432598d5245ea41c112d2178Dominik Luecke /* begin search */
0859769b65851f4c06d6d32fac084b0f4db56c94Christian Maeder /* asynchronous processing */
char *filter;
return EOK;
return ENOMEM;
return ENOMEM;
return EAGAIN;
int ret;
size_t i;
if (count > 0) {
struct sysdb_attrs *,
for (i = 0; i < count; i++) {
attrs[i]);
return EOK;
const char *filter,
const char *name;
size_t i;
return EOK;
for (i = 0; i < rules_count; i++) {
&name);
goto done;
done:
return ret;
int cache_timeout,
char **_usn)
return EOK;
_usn);
return ret;
return EOK;
unsigned int usn_number;
char **hostnames,
char **ip_addr,
bool netgroups,
bool regexp)
return NULL;
goto done;
goto done;
goto done;
hostnames[i]);
goto done;
ip_addr[i]);
goto done;
if (netgroups) {
goto done;
/* from sudo match.c :
if (regexp) {
goto done;
goto done;
done:
return filter;
const char *rule_filter)
return NULL;
goto done;
goto done;
done:
return filter;
struct sdap_sudo_refresh_state {
const char *search_filter;
const char *delete_filter;
int dp_error;
const char *search_filter,
const char *delete_filter)
int ret;
if (!req) {
return NULL;
goto immediately;
goto immediately;
goto immediately;
goto immediately;
return req;
return req;
int ret;
return ret;
return EAGAIN;
int dp_error;
int ret;
char *filter;
return ENOMEM;
filter);
return ENOMEM;
return EAGAIN;
int dp_error;
int ret;
bool in_transaction = false;
goto done;
in_transaction = true;
goto done;
goto done;
goto done;
in_transaction = false;
done:
if (in_transaction) {
int *dp_error,
return EOK;