Open SCAP Library
Loading...
Searching...
No Matches
xccdf_policy.h
Go to the documentation of this file.
1/*
2 * Copyright 2009--2014 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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#include "oscap_export.h"
39#include "oval_definitions.h"
40
46
51struct xccdf_policy;
52
58
59struct xccdf_value_binding_iterator;
60
67
72typedef enum {
73 POLICY_ENGINE_QUERY_NAMES_FOR_HREF = 1,
74 POLICY_ENGINE_QUERY_OVAL_DEFS_FOR_HREF = 2,
76
93typedef void *(*xccdf_policy_engine_query_fn) (void *, xccdf_policy_engine_query_t, void *);
94
103typedef 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);
104
105/************************************************************/
106
117
124OSCAP_API struct xccdf_policy * xccdf_policy_new(struct xccdf_policy_model * model, struct xccdf_profile * profile);
125
131OSCAP_API struct xccdf_value_binding * xccdf_value_binding_new(void);
132
137OSCAP_API void xccdf_policy_model_free(struct xccdf_policy_model *);
138
143OSCAP_API void xccdf_policy_free(struct xccdf_policy *);
144
149OSCAP_API void xccdf_value_binding_free(struct xccdf_value_binding *);
150
166OSCAP_API bool xccdf_policy_model_set_tailoring(struct xccdf_policy_model *model, struct xccdf_tailoring *tailoring);
167
172OSCAP_API struct xccdf_tailoring *xccdf_policy_model_get_tailoring(struct xccdf_policy_model *model);
173
183OSCAP_API char *xccdf_policy_get_readable_item_title(struct xccdf_policy *policy, struct xccdf_item *item, const char *preferred_lang);
184
195OSCAP_API char *xccdf_policy_get_readable_item_description(struct xccdf_policy *policy, struct xccdf_item *item, const char *preferred_lang);
196
201OSCAP_API bool xccdf_policy_model_add_cpe_dict_source(struct xccdf_policy_model * model, struct oscap_source *source);
202
209OSCAP_API bool xccdf_policy_model_add_cpe_dict(struct xccdf_policy_model * model, const char * cpe_dict);
210
215OSCAP_API bool xccdf_policy_model_add_cpe_lang_model_source(struct xccdf_policy_model * model, struct oscap_source *source);
216
222OSCAP_API bool xccdf_policy_model_add_cpe_autodetect_source(struct xccdf_policy_model *model, struct oscap_source *source);
223
229
240OSCAP_API bool xccdf_policy_model_register_engine_and_query_callback(struct xccdf_policy_model *model, char *sys, xccdf_policy_engine_eval_fn eval_fn, void *usr, xccdf_policy_engine_query_fn query_fn);
241
242typedef int (*policy_reporter_output)(struct xccdf_rule_result *, void *);
243
252OSCAP_API bool xccdf_policy_model_register_output_callback(struct xccdf_policy_model * model, policy_reporter_output func, void * usr);
253
254typedef int (*policy_reporter_start)(struct xccdf_rule *, void *);
255
264OSCAP_API bool xccdf_policy_model_register_start_callback(struct xccdf_policy_model * model, policy_reporter_start func, void * usr);
265
266typedef int (*policy_reporter_multicheck)(struct oval_definition*, void *);
276OSCAP_API bool xccdf_policy_model_register_multicheck_callback(struct xccdf_policy_model *model, policy_reporter_multicheck func, void *usr);
277
278/************************************************************/
292OSCAP_API struct xccdf_policy_model * xccdf_policy_get_model(const struct xccdf_policy * policy);
293
301
306OSCAP_API struct xccdf_value_binding_iterator * xccdf_policy_get_values(const struct xccdf_policy * item);
307
316
325OSCAP_API int xccdf_policy_model_build_all_useful_policies(struct xccdf_policy_model *policy_model);
326
333OSCAP_API struct xccdf_select_iterator * xccdf_policy_get_selected_rules(struct xccdf_policy *);
334
340OSCAP_API struct xccdf_profile * xccdf_policy_get_profile(const struct xccdf_policy *);
341
348
354OSCAP_API char * xccdf_value_binding_get_name(const struct xccdf_value_binding *);
355
361OSCAP_API char * xccdf_value_binding_get_value(const struct xccdf_value_binding *);
362
369
376
383
388OSCAP_API struct xccdf_result_iterator * xccdf_policy_get_results(const struct xccdf_policy * policy);
389
395OSCAP_API struct xccdf_result * xccdf_policy_get_result_by_id(struct xccdf_policy * policy, const char * id);
396
403OSCAP_API const char * xccdf_policy_get_id(struct xccdf_policy * policy);
404
412OSCAP_API struct xccdf_policy * xccdf_policy_model_get_policy_by_id(struct xccdf_policy_model * policy_model, const char * id);
413
414/************************************************************/
417/************************************************************/
431
437OSCAP_API bool xccdf_policy_add_select(struct xccdf_policy *, struct xccdf_select *);
438
443OSCAP_API bool xccdf_policy_add_result(struct xccdf_policy * policy, struct xccdf_result * item);
444
450OSCAP_API bool xccdf_policy_add_value(struct xccdf_policy *, struct xccdf_value_binding *);
451
457OSCAP_API bool xccdf_policy_is_item_selected(struct xccdf_policy *policy, const char *id);
458
463OSCAP_API int xccdf_policy_get_selected_rules_count(struct xccdf_policy *policy);
464
470OSCAP_API struct xccdf_select * xccdf_policy_get_select_by_id(struct xccdf_policy * policy, const char *item_id);
471
472/************************************************************/
475/************************************************************/
499OSCAP_API struct xccdf_result * xccdf_policy_evaluate(struct xccdf_policy * policy);
500
509OSCAP_API bool xccdf_policy_resolve(struct xccdf_policy * policy);
510
524OSCAP_API int xccdf_policy_generate_fix(struct xccdf_policy *policy, struct xccdf_result *result, const char *sys, const char *input_file_name, struct oscap_source *tailoring, int output_fd, int raw);
525
529struct oscap_file_entry;
530
532OSCAP_API struct oscap_file_entry *oscap_file_entry_new(void);
534OSCAP_API struct oscap_file_entry *oscap_file_entry_dup(struct oscap_file_entry* file_entry);
536OSCAP_API void oscap_file_entry_free(struct oscap_file_entry* entry);
538OSCAP_API const char* oscap_file_entry_get_system(struct oscap_file_entry* entry);
540OSCAP_API const char* oscap_file_entry_get_file(struct oscap_file_entry* entry);
541
546
548OSCAP_API const struct oscap_file_entry *oscap_file_entry_iterator_next(struct oscap_file_entry_iterator *it);
550OSCAP_API bool oscap_file_entry_iterator_has_more(struct oscap_file_entry_iterator *it);
552OSCAP_API void oscap_file_entry_iterator_free(struct oscap_file_entry_iterator *it);
554OSCAP_API void oscap_file_entry_iterator_reset(struct oscap_file_entry_iterator *it);
555
560
562OSCAP_API struct oscap_file_entry_list* oscap_file_entry_list_new(void);
564OSCAP_API void oscap_file_entry_list_free(struct oscap_file_entry_list* list);
566OSCAP_API struct oscap_file_entry_iterator* oscap_file_entry_list_get_files(struct oscap_file_entry_list* list);
567
577
586
592OSCAP_API struct oscap_stringlist * xccdf_policy_model_get_files(struct xccdf_policy_model * policy_model);
593
599OSCAP_API struct oscap_stringlist * xccdf_item_get_files(struct xccdf_item * item);
600
607
608/************************************************************/
611/************************************************************/
622
628
634
640
645OSCAP_API bool xccdf_value_binding_iterator_has_more(struct xccdf_value_binding_iterator *it);
646
651OSCAP_API struct xccdf_value_binding * xccdf_value_binding_iterator_next(struct xccdf_value_binding_iterator *it);
652
657OSCAP_API void xccdf_value_binding_iterator_free(struct xccdf_value_binding_iterator *it);
658
663OSCAP_API void xccdf_value_binding_iterator_reset(struct xccdf_value_binding_iterator *it);
664
672OSCAP_API struct xccdf_score * xccdf_policy_get_score(struct xccdf_policy * policy, struct xccdf_result * test_result, const char * system);
673
680OSCAP_API int xccdf_policy_recalculate_score(struct xccdf_policy * policy, struct xccdf_result * test_result);
681
690OSCAP_API const char *xccdf_policy_get_value_of_item(struct xccdf_policy * policy, struct xccdf_item * item);
691
697OSCAP_API char* xccdf_policy_substitute(const char *text, struct xccdf_policy *policy);
698
699/************************************************************/
705#endif
706
707
OSCAP_API void xccdf_policy_iterator_reset(struct xccdf_policy_iterator *it)
Reset the iterator structure (it will point to the first item in the list)
OSCAP_API bool xccdf_policy_is_item_selected(struct xccdf_policy *policy, const char *id)
Get the selection settings of the item.
Definition xccdf_policy.c:621
OSCAP_API struct oscap_stringlist * xccdf_item_get_files(struct xccdf_item *item)
Return names of files that are used in checks of particular rules.
Definition xccdf_policy.c:1528
OSCAP_API bool xccdf_policy_model_add_cpe_dict(struct xccdf_policy_model *model, const char *cpe_dict)
Registers an additional CPE dictionary for applicability testing The one embedded in the evaluated XC...
Definition xccdf_policy.c:1623
OSCAP_API struct xccdf_policy_model * xccdf_policy_model_new(struct xccdf_benchmark *benchmark)
Constructor of Policy Model structure.
Definition xccdf_policy.c:1750
OSCAP_API struct oscap_file_entry_list * xccdf_policy_model_get_systems_and_files(struct xccdf_policy_model *policy_model)
Return names of files that are used in checks of particular rules.
Definition xccdf_policy.c:2253
OSCAP_API struct xccdf_result_iterator * xccdf_policy_get_results(const struct xccdf_policy *policy)
Get results of all XCCDF Policy results.
OSCAP_API struct xccdf_value_binding * xccdf_value_binding_new(void)
Constructor of structure with profile bindings - refine_rules, refine_values and set_values.
Definition xccdf_policy.c:1933
OSCAP_API struct xccdf_select_iterator * xccdf_policy_get_selects(const struct xccdf_policy *)
Get rules from Policy.
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)
Type of function which implements OpenSCAP checking engine.
Definition xccdf_policy.h:103
OSCAP_API bool xccdf_policy_model_add_cpe_autodetect_source(struct xccdf_policy_model *model, struct oscap_source *source)
Registers an additional CPE resource (either dictionary or language) Autodetects given file and acts ...
Definition xccdf_policy.c:1642
OSCAP_API struct oscap_stringlist * xccdf_policy_model_get_files(struct xccdf_policy_model *policy_model)
Return names of files that are used in checks of particular rules.
Definition xccdf_policy.c:2258
OSCAP_API bool xccdf_policy_add_select(struct xccdf_policy *, struct xccdf_select *)
Add rule to Policy.
Definition xccdf_policy.c:1831
OSCAP_API struct xccdf_policy * xccdf_policy_new(struct xccdf_policy_model *model, struct xccdf_profile *profile)
Constructor of Policy structure.
Definition xccdf_policy.c:1884
OSCAP_API struct xccdf_score * xccdf_policy_get_score(struct xccdf_policy *policy, struct xccdf_result *test_result, const char *system)
Get score of the XCCDF Benchmark.
Definition xccdf_policy.c:2200
OSCAP_API char * xccdf_value_binding_get_name(const struct xccdf_value_binding *)
Get variable name from value bindings.
void *(* xccdf_policy_engine_query_fn)(void *, xccdf_policy_engine_query_t, void *)
Type of function which implements queries defined within xccdf_policy_engine_query_t.
Definition xccdf_policy.h:93
OSCAP_API struct xccdf_policy_model * xccdf_policy_get_model(const struct xccdf_policy *policy)
Get model from Policy (parent structure of Policy to access the benchmark)
xccdf_policy_engine_query_t
Type of a query over checking-engine data.
Definition xccdf_policy.h:72
OSCAP_API void xccdf_policy_iterator_free(struct xccdf_policy_iterator *it)
Free the iterator structure (it makes no changes to the list structure)
OSCAP_API struct xccdf_profile * xccdf_policy_get_profile(const struct xccdf_policy *)
Get XCCDF Profile from Policy.
OSCAP_API struct oscap_file_entry_list * xccdf_item_get_systems_and_files(struct xccdf_item *item)
Return names of files that are used in checks of particular rules.
Definition xccdf_policy.c:1419
OSCAP_API char * xccdf_value_binding_get_value(const struct xccdf_value_binding *)
Get value from value bindings.
OSCAP_API struct xccdf_value_binding_iterator * xccdf_policy_get_values(const struct xccdf_policy *item)
Get Value Bindings from XCCDF Policy.
OSCAP_API bool xccdf_policy_iterator_has_more(struct xccdf_policy_iterator *it)
Return true if the list is not empty, false otherwise.
OSCAP_API void xccdf_value_binding_free(struct xccdf_value_binding *)
Destructor of Value binding structure.
Definition xccdf_policy.c:2356
OSCAP_API bool xccdf_policy_add_value(struct xccdf_policy *, struct xccdf_value_binding *)
Add value binding to the Policy structure.
OSCAP_API xccdf_value_type_t xccdf_value_binding_get_type(const struct xccdf_value_binding *)
get variable type from value bindings
OSCAP_API struct xccdf_policy_iterator * xccdf_policy_model_get_policies(const struct xccdf_policy_model *model)
Get policies from Policy Model.
OSCAP_API bool xccdf_policy_model_add_policy(struct xccdf_policy_model *, struct xccdf_policy *)
Add Policy to Policy Model.
OSCAP_API bool xccdf_policy_model_set_tailoring(struct xccdf_policy_model *model, struct xccdf_tailoring *tailoring)
Sets the Tailoring element to use in the policy.
Definition xccdf_policy.c:1594
OSCAP_API char * xccdf_policy_substitute(const char *text, struct xccdf_policy *policy)
Perform textual substitution of cdf:sub elements with respect to given XCCDF policy.
Definition xccdf_policy_substitute.c:210
OSCAP_API struct xccdf_policy * xccdf_policy_iterator_next(struct xccdf_policy_iterator *it)
Return the next xccdf_policy structure from the list and increment the iterator.
OSCAP_API struct oscap_htable_iterator * xccdf_policy_model_get_cpe_oval_sessions(struct xccdf_policy_model *model)
Retrieves an iterator of all OVAL sessions created for CPE applicability evaluation key is the OVAL h...
Definition xccdf_policy.c:1650
OSCAP_API bool xccdf_policy_model_add_cpe_lang_model_source(struct xccdf_policy_model *model, struct oscap_source *source)
Registers an additional CPE lang model for applicability testing The one embedded in the evaluated XC...
Definition xccdf_policy.c:1634
OSCAP_API bool xccdf_policy_model_add_cpe_dict_source(struct xccdf_policy_model *model, struct oscap_source *source)
Registers an additional CPE dictionary for applicability testing The one embedded in the evaluated XC...
Definition xccdf_policy.c:1615
OSCAP_API xccdf_test_result_type_t xccdf_test_result_resolve_and_operation(xccdf_test_result_type_t A, xccdf_test_result_type_t B)
Return result of the AND operation for two given attributes.
Definition xccdf_policy.c:310
OSCAP_API char * xccdf_value_binding_get_setvalue(const struct xccdf_value_binding *)
get Set Value from value bindings
OSCAP_API struct xccdf_benchmark * xccdf_policy_model_get_benchmark(const struct xccdf_policy_model *item)
Get Benchmark from Policy Model.
OSCAP_API xccdf_operator_t xccdf_value_binding_get_operator(const struct xccdf_value_binding *)
get Value operator from value bindings
OSCAP_API int xccdf_policy_get_selected_rules_count(struct xccdf_policy *policy)
Retrieves number of selected items in the policy.
Definition xccdf_policy.c:634
OSCAP_API int xccdf_policy_recalculate_score(struct xccdf_policy *policy, struct xccdf_result *test_result)
Recalculate score of the XCCDF Benchmark.
Definition xccdf_policy.c:2206
OSCAP_API bool xccdf_policy_add_result(struct xccdf_policy *policy, struct xccdf_result *item)
Add result to XCCDF Policy Model.
xccdf_operator_t
Operator to be applied on an xccdf_value.
Definition xccdf_benchmark.h:101
xccdf_value_type_t
Type of an xccdf_value.
Definition xccdf_benchmark.h:94
xccdf_test_result_type_t
Test result.
Definition xccdf_benchmark.h:170
General OpenScap functions and types.
Definition xccdf_policy.c:1273
Definition list.c:572
Definition oscap_source.c:66
A collection of strings.
Oval definition specification.
Definition oval_definition.c:53
Top level XCCDF structure containing profiles, rules, values and results.
Check import iterator.
A base class for XCCDF items.
Definition item.h:220
Iterate through policies.
XCCDF policy model structure contains xccdf_benchmark as reference to Benchmark element in XML file a...
Definition xccdf_policy_priv.h:38
struct xccdf_benchmark * benchmark
Benchmark element (root element of XML file)
Definition xccdf_policy_priv.h:40
XCCDF policy structure is abstract (class) structure of Profile element from benchmark.
Definition xccdf_policy_priv.h:57
struct xccdf_policy_model * model
XCCDF Policy model.
Definition xccdf_policy_priv.h:59
struct xccdf_profile * profile
Profile structure (from benchmark)
Definition xccdf_policy_priv.h:60
XCCDF profile is a set of tests and their settings in a compact package.
Result iterator.
Actual results of running a XCCDF test or profile.
XCCDF rule result.
Definition item.h:344
XCCDF rule defines a test execution.
XCCDF score.
Definition item.h:369
Select iterator.
XCCDF select option usen in the profile.
Definition item.h:253
Stores content from xccdf:Tailoring element which can be loaded from a separate file.
Definition item.h:171
XCCDF value binding structure is binding between Refine values, Set values, Value element and Check e...
Definition xccdf_policy.c:79
Open-scap XCCDF library interface.
bool xccdf_policy_resolve(struct xccdf_policy *policy)
Resolve benchmark - apply all refine_rules to the benchmark items.
Definition xccdf_policy.c:1992
struct xccdf_policy * xccdf_policy_model_get_policy_by_id(struct xccdf_policy_model *policy_model, const char *id)
Get Policy from Policy model by it's id.
Definition xccdf_policy.c:1974
const char * xccdf_policy_get_id(struct xccdf_policy *policy)
Get ID of XCCDF Profile that belongs to XCCDF Policy.
Definition xccdf_policy.c:1663
struct xccdf_result * xccdf_policy_evaluate(struct xccdf_policy *policy)
Evaluate XCCDF Policy Iterate through Benchmark items and evaluate one by one by calling callback for...
Definition xccdf_policy.c:2105
struct xccdf_select * xccdf_policy_get_select_by_id(struct xccdf_policy *policy, const char *item_id)
If policy has the select specified by item_id return the select, NULL otherwise.
Definition xccdf_policy.c:1957