diff options
Diffstat (limited to 'src/providers/ldap/sdap_sudo.h')
-rw-r--r-- | src/providers/ldap/sdap_sudo.h | 53 |
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); |