Open SCAP Library
xccdf_policy.h
Go to the documentation of this file.
1 /*
2  * Copyright 2009 Red Hat Inc., Durham, North Carolina.
3  * All Rights Reserved.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  */
20 
21 
31 #ifndef XCCDF_POLICY_H_
32 #define XCCDF_POLICY_H_
33 
34 #include <xccdf_benchmark.h>
35 #include <stdbool.h>
36 #include <time.h>
37 #include <oscap.h>
38 
43 struct xccdf_policy_model;
44 
49 struct xccdf_policy;
50 
55 struct xccdf_value_binding;
56 
57 struct xccdf_value_binding_iterator;
58 
65 
70 typedef enum {
71  POLICY_ENGINE_QUERY_NAMES_FOR_HREF = 1,
73 
88 typedef void *(*xccdf_policy_engine_query_fn) (void *, xccdf_policy_engine_query_t, void *);
89 
98 typedef xccdf_test_result_type_t (*xccdf_policy_engine_eval_fn) (struct xccdf_policy *policy, const char *rule_id, const char *definition_id, const char *href_if, struct xccdf_value_binding_iterator *value_binding_it, struct xccdf_check_import_iterator *check_imports_it, void *user_data);
99 
100 /************************************************************/
101 
112 
120 
127 
133 
138 void xccdf_policy_free(struct xccdf_policy *);
139 
145 
161 bool xccdf_policy_model_set_tailoring(struct xccdf_policy_model *model, struct xccdf_tailoring *tailoring);
162 
168 
173 bool xccdf_policy_model_add_cpe_dict(struct xccdf_policy_model * model, const char * cpe_dict);
174 
179 bool xccdf_policy_model_add_cpe_lang_model(struct xccdf_policy_model * model, const char * cpe_lang);
180 
186 bool xccdf_policy_model_add_cpe_autodetect(struct xccdf_policy_model *model, const char* filepath);
187 
200 OSCAP_DEPRECATED(bool xccdf_policy_model_register_engine_callback(struct xccdf_policy_model * model, char * sys, void * func, void * usr));
201 
213 
214 typedef int (*policy_reporter_output)(struct xccdf_rule_result *, void *);
215 
224 bool xccdf_policy_model_register_output_callback(struct xccdf_policy_model * model, policy_reporter_output func, void * usr);
225 
226 typedef int (*policy_reporter_start)(struct xccdf_rule *, void *);
227 
236 bool xccdf_policy_model_register_start_callback(struct xccdf_policy_model * model, policy_reporter_start func, void * usr);
237 
238 /************************************************************/
252 struct xccdf_policy_model * xccdf_policy_get_model(const struct xccdf_policy * policy);
253 
261 
266 struct xccdf_value_binding_iterator * xccdf_policy_get_values(const struct xccdf_policy * item);
267 
276 
284 
290 struct xccdf_profile * xccdf_policy_get_profile(const struct xccdf_policy *);
291 
298 
305 
312 
319 
326 
333 
338 struct xccdf_result_iterator * xccdf_policy_get_results(const struct xccdf_policy * policy);
339 
345 struct xccdf_result * xccdf_policy_get_result_by_id(struct xccdf_policy * policy, const char * id);
346 
353 const char * xccdf_policy_get_id(struct xccdf_policy * policy);
354 
362 struct xccdf_policy * xccdf_policy_model_get_policy_by_id(struct xccdf_policy_model * policy_model, const char * id);
363 
364 /************************************************************/
367 /************************************************************/
381 
387 bool xccdf_policy_add_select(struct xccdf_policy *, struct xccdf_select *);
388 
397 bool xccdf_policy_set_selected(struct xccdf_policy * policy, char * idref)
398 );
399 
404 bool xccdf_policy_add_result(struct xccdf_policy * policy, struct xccdf_result * item);
405 
412 
418 bool xccdf_policy_is_item_selected(struct xccdf_policy *policy, const char *id);
419 
425 
431 struct xccdf_select * xccdf_policy_get_select_by_id(struct xccdf_policy * policy, const char *item_id);
432 
433 /************************************************************/
436 /************************************************************/
460 struct xccdf_result * xccdf_policy_evaluate(struct xccdf_policy * policy);
461 
470 bool xccdf_policy_resolve(struct xccdf_policy * policy);
471 
482 int xccdf_policy_generate_fix(struct xccdf_policy *policy, struct xccdf_result *result, const char *sys, int output_fd);
483 
490 struct xccdf_item * xccdf_policy_tailor_item(struct xccdf_policy * policy, struct xccdf_item * item);
491 
495 struct oscap_file_entry;
496 
500 struct oscap_file_entry *oscap_file_entry_dup(struct oscap_file_entry* file_entry);
502 void oscap_file_entry_free(struct oscap_file_entry* entry);
504 const char* oscap_file_entry_get_system(struct oscap_file_entry* entry);
506 const char* oscap_file_entry_get_file(struct oscap_file_entry* entry);
507 
512 
521 
525 struct oscap_file_entry_list;
526 
533 
543 
552 
559 
565 struct oscap_stringlist * xccdf_item_get_files(struct xccdf_item * item);
566 
573 
574 /************************************************************/
577 /************************************************************/
588 
594 
600 
606 
611 bool xccdf_value_binding_iterator_has_more(struct xccdf_value_binding_iterator *it);
612 
617 struct xccdf_value_binding * xccdf_value_binding_iterator_next(struct xccdf_value_binding_iterator *it);
618 
623 void xccdf_value_binding_iterator_free(struct xccdf_value_binding_iterator *it);
624 
629 void xccdf_value_binding_iterator_reset(struct xccdf_value_binding_iterator *it);
630 
638 struct xccdf_score * xccdf_policy_get_score(struct xccdf_policy * policy, struct xccdf_result * test_result, const char * system);
639 
645 char* xccdf_policy_substitute(const char *text, struct xccdf_policy *policy);
646 
647 /************************************************************/
653 #endif
654 
655