summaryrefslogtreecommitdiffstats
path: root/src/providers/ldap/sdap_sudo.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/providers/ldap/sdap_sudo.h')
-rw-r--r--src/providers/ldap/sdap_sudo.h53
1 files changed, 50 insertions, 3 deletions
diff --git a/src/providers/ldap/sdap_sudo.h b/src/providers/ldap/sdap_sudo.h
index e2764b90c..2061de475 100644
--- a/src/providers/ldap/sdap_sudo.h
+++ b/src/providers/ldap/sdap_sudo.h
@@ -21,11 +21,17 @@
#ifndef _SDAP_SUDO_H_
#define _SDAP_SUDO_H_
+/* these two structures are used by both LDAP and IPA SUDO Providers */
struct sdap_sudo_ctx {
+ struct be_ctx *be_ctx;
struct sdap_id_ctx *id_ctx;
char **hostnames;
char **ip_addr;
+
+ char *ipa_hostname;
+ char **ipa_hostgroups;
+
bool include_netgroups;
bool include_regexp;
bool use_host_filter;
@@ -37,6 +43,26 @@ struct sdap_sudo_ctx {
struct tevent_req *first_refresh_timer;
};
+struct sdap_sudo_refresh_state {
+ struct be_ctx *be_ctx;
+ struct sdap_options *opts;
+ struct sdap_id_op *sdap_op;
+ struct sdap_id_conn_cache *sdap_conn_cache;
+ struct sysdb_ctx *sysdb;
+ struct sss_domain_info *domain;
+
+ const char *ldap_filter; /* search */
+ const char *sysdb_filter; /* delete */
+
+ struct sysdb_attrs **ldap_rules; /* search result will be stored here */
+ size_t ldap_rules_count;
+
+ int dp_error;
+ int error;
+ char *highest_usn;
+ size_t num_rules;
+};
+
enum sdap_sudo_refresh_type {
SDAP_SUDO_REFRESH_FULL,
SDAP_SUDO_REFRESH_SMART,
@@ -49,6 +75,7 @@ int sdap_sudo_init(struct be_ctx *be_ctx,
struct sdap_id_ctx *id_ctx,
struct bet_ops **ops,
void **pvt_data);
+void sdap_sudo_set_usn(struct sdap_server_opts *srv_opts, char *usn);
/* sdap async interface */
struct tevent_req *sdap_sudo_refresh_send(TALLOC_CTX *mem_ctx,
@@ -58,14 +85,34 @@ struct tevent_req *sdap_sudo_refresh_send(TALLOC_CTX *mem_ctx,
const char *ldap_filter,
const char *sysdb_filter);
+int sdap_sudo_load_sudoers_recv(struct tevent_req *req,
+ TALLOC_CTX *mem_ctx,
+ size_t *rules_count,
+ struct sysdb_attrs ***rules);
+
int sdap_sudo_refresh_recv(TALLOC_CTX *mem_ctx,
struct tevent_req *req,
int *dp_error,
int *error,
char **usn,
- size_t *num_rules);
-
-/* timer */
+ size_t *num_rules,
+ struct sysdb_attrs ***rules);
+
+/* sysdb */
+int sdap_sudo_purge_sudoers(struct sss_domain_info *dom,
+ const char *filter,
+ struct sdap_attr_map *map,
+ size_t rules_count,
+ struct sysdb_attrs **rules);
+
+int sdap_sudo_store_sudoers(TALLOC_CTX *mem_ctx,
+ struct sss_domain_info *domain,
+ struct sdap_options *opts,
+ size_t rules_count,
+ struct sysdb_attrs **rules,
+ int cache_timeout,
+ time_t now,
+ char **_usn);
typedef struct tevent_req * (*sdap_sudo_timer_fn_t)(TALLOC_CTX *mem_ctx,
struct sdap_sudo_ctx *sudo_ctx);