diff options
Diffstat (limited to 'src/providers/ipa/ipa_access.h')
-rw-r--r-- | src/providers/ipa/ipa_access.h | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/src/providers/ipa/ipa_access.h b/src/providers/ipa/ipa_access.h index 514afc00..b43c712f 100644 --- a/src/providers/ipa/ipa_access.h +++ b/src/providers/ipa/ipa_access.h @@ -47,6 +47,7 @@ struct ipa_access_ctx { struct hbac_ctx { struct sdap_id_ctx *sdap_ctx; + struct sdap_id_op *sdap_op; struct dp_option *ipa_options; struct time_rules_ctx *tr_ctx; struct be_req *be_req; @@ -58,12 +59,51 @@ struct hbac_ctx { const char *user_dn; size_t groups_count; const char **groups; - bool offline; char *ldap_basedn; struct sysdb_attrs **hbac_services_list; size_t hbac_services_count; }; +/* Get BE context associated with HBAC context */ +static inline struct be_ctx *hbac_ctx_be(struct hbac_ctx *hbac_ctx) +{ + struct be_req *req = hbac_ctx != NULL ? hbac_ctx->be_req : NULL; + return req != NULL ? req->be_ctx : NULL; +} + +/* Get sysdb associated with HBAC context */ +static inline struct sysdb_ctx *hbac_ctx_sysdb(struct hbac_ctx *hbac_ctx) +{ + struct be_ctx *be_ctx = hbac_ctx_be(hbac_ctx); + return be_ctx != NULL ? be_ctx->sysdb : NULL; +} + +/* Get tevent context associated with HBAC context */ +static inline struct tevent_context *hbac_ctx_ev(struct hbac_ctx *hbac_ctx) +{ + struct be_ctx *be_ctx = hbac_ctx_be(hbac_ctx); + return be_ctx != NULL ? be_ctx->ev : NULL; +} + +/* Get sdap_id_ctx associated with HBAC context */ +static inline struct sdap_id_ctx *hbac_ctx_sdap_id_ctx(struct hbac_ctx *hbac_ctx) +{ + return hbac_ctx != NULL ? hbac_ctx->sdap_ctx : NULL; +} + +/* Get struct sdap_id_op associated with HBAC context */ +static inline struct sdap_id_op *hbac_ctx_sdap_id_op(struct hbac_ctx *hbac_ctx) +{ + return hbac_ctx != NULL ? hbac_ctx->sdap_op : NULL; +} + +/* Check whether the current HBAC request is processed in off-line mode */ +static inline bool hbac_ctx_is_offline(struct hbac_ctx *ctx) +{ + return ctx == NULL || ctx->sdap_op == NULL; +} + + void ipa_access_handler(struct be_req *be_req); #endif /* _IPA_ACCESS_H_ */ |