sdap_async_autofs.c revision 2234d49c8a307ee4f11cc544c862a359f76b44ad
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek Async LDAP Helper routines for autofs
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek Jakub Hrozek <jhrozek@redhat.com>
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek Copyright (C) 2012 Red Hat
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek This program is free software; you can redistribute it and/or modify
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek it under the terms of the GNU General Public License as published by
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek the Free Software Foundation; either version 3 of the License, or
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek (at your option) any later version.
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek This program is distributed in the hope that it will be useful,
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek but WITHOUT ANY WARRANTY; without even the implied warranty of
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek GNU General Public License for more details.
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek You should have received a copy of the GNU General Public License
29c5542feb4c45865ea61be97e0e84a1d1f04918Jakub Hrozek along with this program. If not, see <http://www.gnu.org/licenses/>.
&el);
&el);
return NULL;
static errno_t
const char *map,
const char *key;
const char *value;
if (!key) {
return EINVAL;
if (!value) {
return EINVAL;
static errno_t
const char *map,
char **add_dn_list,
size_t i;
int hret;
if (!add_dn_list) {
return EOK;
for (i=0; add_dn_list[i]; i++) {
if (!entry) {
if (ret) {
return EOK;
static errno_t
const char *map,
char **del_dn_list)
size_t i;
for (i=0; del_dn_list[i]; i++) {
if (ret) {
return EOK;
static errno_t
const char *mapname;
return ret;
return EOK;
struct automntmaps_process_members_state {
int timeout;
const char *orig_dn;
char *base_filter;
char *filter;
const char **attrs;
static errno_t
static struct tevent_req *
int timeout,
struct automntmaps_process_members_state);
goto immediate;
goto immediate;
goto immediate;
goto immediate;
return req;
return req;
static errno_t
return ENOMEM;
if (!subreq) {
return EIO;
return EOK;
struct tevent_req);
if (ret) {
if (entries_count > 0) {
struct sysdb_attrs *,
for (i=0; i < entries_count; i++) {
static errno_t
if (entries_count) {
if (entries) {
return EOK;
struct sdap_get_automntmap_state {
const char **attrs;
const char *base_filter;
char *filter;
int timeout;
char *higher_timestamp;
static errno_t
static struct tevent_req *
const char **attrs,
const char *filter,
int timeout)
return req;
static errno_t
return ENOMEM;
if (!subreq) {
return EIO;
return EOK;
struct tevent_req);
struct sdap_get_automntmap_state);
if (ret) {
if (!subreq) {
struct tevent_req);
struct sdap_get_automntmap_state);
static errno_t
struct sdap_get_automntmap_state);
if (map) {
if (entries_count) {
if (entries) {
return EOK;
struct sdap_autofs_setautomntent_state {
char *filter;
const char **attrs;
const char *mapname;
int dp_error;
struct tevent_req *
const char *mapname)
char *clean_mapname;
struct sdap_autofs_setautomntent_state);
if (!mapname) {
goto fail;
goto fail;
goto fail;
goto fail;
if (!subreq) {
goto fail;
return req;
fail:
return req;
static errno_t
struct tevent_req);
struct sdap_autofs_setautomntent_state);
static errno_t
struct sdap_autofs_setautomntent_state);
bool in_transaction = false;
const char *key;
const char *val;
char **sysdb_entrylist;
char **ldap_entrylist;
char **add_entries;
char **del_entries;
size_t i, j;
int hret;
if (!ldap_entrylist) {
goto done;
if (ret) {
goto done;
if (!ldap_entrylist[j]) {
goto done;
goto done;
goto done;
if (count == 0) {
if (!sysdb_entrylist) {
goto done;
for (i=0; i < count; i++) {
if (!sysdb_entrylist[i]) {
goto done;
goto done;
in_transaction = true;
goto done;
goto done;
goto done;
goto done;
in_transaction = false;
done:
if (in_transaction) {
return ret;
return EOK;