9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio/*
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio SSSD
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio Authors:
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio Stephen Gallagher <sgallagh@redhat.com>
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio Copyright (C) 2011 Red Hat
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio This program is free software; you can redistribute it and/or modify
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio it under the terms of the GNU General Public License as published by
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio the Free Software Foundation; either version 3 of the License, or
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio (at your option) any later version.
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio This program is distributed in the hope that it will be useful,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio but WITHOUT ANY WARRANTY; without even the implied warranty of
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio GNU General Public License for more details.
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio You should have received a copy of the GNU General Public License
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio along with this program. If not, see <http://www.gnu.org/licenses/>.
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio*/
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio#ifndef IPA_RULES_COMMON_H_
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio#define IPA_RULES_COMMON_H_
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio#include "providers/backend.h"
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio#define IPA_UNIQUE_ID "ipauniqueid"
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio#define OBJECTCLASS "objectclass"
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio#define IPA_MEMBER_USER "memberUser"
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio#define IPA_USER_CATEGORY "userCategory"
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio#define IPA_EXTERNAL_HOST "externalHost"
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio#define IPA_ENABLED_FLAG "ipaenabledflag"
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio#define IPA_MEMBER_HOST "memberHost"
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio#define IPA_HOST_CATEGORY "hostCategory"
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio#define IPA_CN "cn"
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio#define IPA_TRUE_VALUE "TRUE"
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio/* From ipa_rules_common.c */
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidênciostruct ipa_common_entries {
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio const char *entry_subdir;
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio size_t entry_count;
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio struct sysdb_attrs **entries;
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio const char *group_subdir;
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio size_t group_count;
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio struct sysdb_attrs **groups;
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio};
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncioerrno_t
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncioipa_common_entries_and_groups_sysdb_save(struct sss_domain_info *domain,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio const char *primary_subdir,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio const char *attr_name,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio size_t primary_count,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio struct sysdb_attrs **primary,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio const char *group_subdir,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio const char *groupattr_name,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio size_t group_count,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio struct sysdb_attrs **groups);
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncioerrno_t
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncioipa_common_get_cached_rules(TALLOC_CTX *mem_ctx,
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncio struct sss_domain_info *domain,
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncio const char *rule,
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncio const char *subtree_name,
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncio const char **attrs,
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncio size_t *_rule_count,
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncio struct sysdb_attrs ***_rules);
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncio
d2a0b4a6a220bf9a58c7306c3f673891efc419ebFabiano Fidêncioerrno_t
d2a0b4a6a220bf9a58c7306c3f673891efc419ebFabiano Fidêncioipa_common_purge_rules(struct sss_domain_info *domain,
d2a0b4a6a220bf9a58c7306c3f673891efc419ebFabiano Fidêncio const char *subtree_name);
d2a0b4a6a220bf9a58c7306c3f673891efc419ebFabiano Fidêncio
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncioerrno_t
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncioipa_common_save_rules(struct sss_domain_info *domain,
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio struct ipa_common_entries *hosts,
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio struct ipa_common_entries *services,
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio struct ipa_common_entries *rules,
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio time_t *last_update);
0f623456437c96f50330fe0ff21afd9638d14e57Fabiano Fidêncio
ee164913f9c12a557044eb469f4498b9be9a8f50Fabiano Fidêncioerrno_t
ee164913f9c12a557044eb469f4498b9be9a8f50Fabiano Fidêncioipa_common_get_hostgroupname(TALLOC_CTX *mem_ctx,
ee164913f9c12a557044eb469f4498b9be9a8f50Fabiano Fidêncio struct sysdb_ctx *sysdb,
ee164913f9c12a557044eb469f4498b9be9a8f50Fabiano Fidêncio const char *host_dn,
ee164913f9c12a557044eb469f4498b9be9a8f50Fabiano Fidêncio char **_hostgroupname);
ee164913f9c12a557044eb469f4498b9be9a8f50Fabiano Fidêncio
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio#endif /* IPA_RULES_COMMON_H_ */