ipa_hbac  1.9.92
ipa_hbac.h
1 /*
2  SSSD
3 
4  IPA Backend Module -- Access control
5 
6  Authors:
7  Sumit Bose <sbose@redhat.com>
8  Stephen Gallagher <sgallagh@redhat.com>
9 
10  Copyright (C) 2009 Red Hat
11 
12  This program is free software; you can redistribute it and/or modify
13  it under the terms of the GNU General Public License as published by
14  the Free Software Foundation; either version 3 of the License, or
15  (at your option) any later version.
16 
17  This program is distributed in the hope that it will be useful,
18  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  GNU General Public License for more details.
21 
22  You should have received a copy of the GNU General Public License
23  along with this program. If not, see <http://www.gnu.org/licenses/>.
24 */
25 
26 #ifndef IPA_HBAC_H_
27 #define IPA_HBAC_H_
28 
40 #include <stdint.h>
41 #include <stdbool.h>
42 
49 
52 
55 
60 };
61 
65 #define HBAC_CATEGORY_NULL 0x0000
66 
70 #define HBAC_CATEGORY_ALL 0x0001
71 
75 struct hbac_time_rules;
76 
91  uint32_t category;
92 
100  const char **names;
101 
109  const char **groups;
110 };
111 
115 struct hbac_rule {
116  const char *name;
117  bool enabled;
118 
124 
130 
135 
140 
144  struct hbac_time_rules *timerules;
145 };
146 
158  const char *name;
159 
167  const char **groups;
168 };
169 
182 
189 
196 
203 
205  time_t request_time;
206 };
207 
214 
217 
220 
223 
226 };
227 
229 struct hbac_info {
236 
241  char *rule_name;
242 };
243 
244 
258 enum hbac_eval_result hbac_evaluate(struct hbac_rule **rules,
259  struct hbac_eval_req *hbac_req,
260  struct hbac_info **info);
261 
267 const char *hbac_result_string(enum hbac_eval_result result);
268 
274 const char *hbac_error_string(enum hbac_error_code code);
275 
280 void hbac_free_info(struct hbac_info *info);
281 
283 #define HBAC_RULE_ELEMENT_USERS 0x01
284 
286 #define HBAC_RULE_ELEMENT_SERVICES 0x02
287 
289 #define HBAC_RULE_ELEMENT_TARGETHOSTS 0x04
290 
292 #define HBAC_RULE_ELEMENT_SOURCEHOSTS 0x08
293 
309 bool hbac_rule_is_complete(struct hbac_rule *rule, uint32_t *missing_attrs);
310 
311 
315 #endif /* IPA_HBAC_H_ */