ipa_hbac_rules.c revision 6dff95bdfe437afc0b62b5270d0d84140981c786
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl Stephen Gallagher <sgallagh@redhat.com>
031b91a62d25106ae69d4693475c79618dd5e884fielding Copyright (C) 2011 Red Hat
031b91a62d25106ae69d4693475c79618dd5e884fielding This program is free software; you can redistribute it and/or modify
031b91a62d25106ae69d4693475c79618dd5e884fielding it under the terms of the GNU General Public License as published by
031b91a62d25106ae69d4693475c79618dd5e884fielding the Free Software Foundation; either version 3 of the License, or
031b91a62d25106ae69d4693475c79618dd5e884fielding (at your option) any later version.
1aa933455fcd538b1ee573f4566e1a78a89fce77nd This program is distributed in the hope that it will be useful,
1aa933455fcd538b1ee573f4566e1a78a89fce77nd but WITHOUT ANY WARRANTY; without even the implied warranty of
1aa933455fcd538b1ee573f4566e1a78a89fce77nd MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1aa933455fcd538b1ee573f4566e1a78a89fce77nd GNU General Public License for more details.
1aa933455fcd538b1ee573f4566e1a78a89fce77nd You should have received a copy of the GNU General Public License
1aa933455fcd538b1ee573f4566e1a78a89fce77nd along with this program. If not, see <http://www.gnu.org/licenses/>.
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl const char **attrs;
545805c4e49aafd8660829ddfd6ea32fea6a8f74jslstatic void
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl const char *host_dn;
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl const char **memberof_list;
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl ret = sysdb_attrs_get_string(ipa_host, SYSDB_ORIG_DN, &host_dn);
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl DEBUG(SSSDBG_CRIT_FAILURE, "Could not identify IPA hostname\n");
b12ec3ef6851e503ee5575de7e056b7bd2eef871jsl ret = sss_filter_sanitize(tmp_ctx, host_dn, &host_dn_clean);
b12ec3ef6851e503ee5575de7e056b7bd2eef871jsl req = tevent_req_create(mem_ctx, &state, struct ipa_hbac_rule_state);
b12ec3ef6851e503ee5575de7e056b7bd2eef871jsl DEBUG(SSSDBG_CRIT_FAILURE, "tevent_req_create failed.\n");
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl state->attrs = talloc_zero_array(state, const char *, 15);
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl "(&(objectclass=%s)"
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl "(%s=%s)(%s=%s)"
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl "(|(%s=%s)(%s=%s)",
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl /* Add all parent groups of ipa_hostname to the filter */
fd628bf6869709f4ecd354e849f23115ed7a8e04igalic ret = sysdb_attrs_get_string_array(ipa_host, SYSDB_ORIG_MEMBEROF,
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl /* This host is not a member of any hostgroups */
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl for (i = 0; memberof_list[i]; i++) {
545805c4e49aafd8660829ddfd6ea32fea6a8f74jsl rule_filter = talloc_asprintf_append(rule_filter, "(%s=%s)",
55c7c8aeb74b8c7736d5833e50d22a07134b23fejsl rule_filter = talloc_asprintf_append(rule_filter, "))");
return EOK;
return ENOMEM;
NULL, 0,
return ENOMEM;
return EAGAIN;
&rules);
goto fail;
if (rule_count > 0) {
struct sysdb_attrs *,
goto fail;
goto fail;
fail:
return EOK;