xccdf_policy.h
Go to the documentation of this file.
/*
* Copyright 2009 Red Hat Inc., Durham, North Carolina.
* All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#ifndef XCCDF_POLICY_H_
#define XCCDF_POLICY_H_
#include <xccdf_benchmark.h>
#include <stdbool.h>
#include <time.h>
#include <oscap.h>
struct xccdf_policy_model;
struct xccdf_policy;
struct xccdf_value_binding;
struct xccdf_value_binding_iterator;
struct xccdf_policy_iterator;
typedef enum {
POLICY_ENGINE_QUERY_NAMES_FOR_HREF = 1,
} xccdf_policy_engine_query_t;
typedef void *(*xccdf_policy_engine_query_fn) (void *, xccdf_policy_engine_query_t, void *);
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);
/************************************************************/
struct xccdf_policy_model *xccdf_policy_model_new(struct xccdf_benchmark *benchmark);
struct xccdf_policy * xccdf_policy_new(struct xccdf_policy_model * model, struct xccdf_profile * profile);
struct xccdf_value_binding * xccdf_value_binding_new(void);
void xccdf_policy_model_free(struct xccdf_policy_model *);
void xccdf_policy_free(struct xccdf_policy *);
void xccdf_value_binding_free(struct xccdf_value_binding *);
bool xccdf_policy_model_set_tailoring(struct xccdf_policy_model *model, struct xccdf_tailoring *tailoring);
struct xccdf_tailoring *xccdf_policy_model_get_tailoring(struct xccdf_policy_model *model);
bool xccdf_policy_model_add_cpe_dict(struct xccdf_policy_model * model, const char * cpe_dict);
bool xccdf_policy_model_add_cpe_lang_model(struct xccdf_policy_model * model, const char * cpe_lang);
bool xccdf_policy_model_add_cpe_autodetect(struct xccdf_policy_model *model, const char* filepath);
struct oscap_htable_iterator *xccdf_policy_model_get_cpe_oval_sessions(struct xccdf_policy_model *model);
OSCAP_DEPRECATED(bool xccdf_policy_model_register_engine_callback(struct xccdf_policy_model * model, char * sys, void * func, void * usr));
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);
typedef int (*policy_reporter_output)(struct xccdf_rule_result *, void *);
bool xccdf_policy_model_register_output_callback(struct xccdf_policy_model * model, policy_reporter_output func, void * usr);
typedef int (*policy_reporter_start)(struct xccdf_rule *, void *);
bool xccdf_policy_model_register_start_callback(struct xccdf_policy_model * model, policy_reporter_start func, void * usr);
/************************************************************/
struct xccdf_policy_model * xccdf_policy_get_model(const struct xccdf_policy * policy);
struct xccdf_benchmark * xccdf_policy_model_get_benchmark(const struct xccdf_policy_model * item);
struct xccdf_value_binding_iterator * xccdf_policy_get_values(const struct xccdf_policy * item);
struct xccdf_policy_iterator * xccdf_policy_model_get_policies(const struct xccdf_policy_model *model);
struct xccdf_select_iterator * xccdf_policy_get_selected_rules(struct xccdf_policy *);
struct xccdf_profile * xccdf_policy_get_profile(const struct xccdf_policy *);
struct xccdf_select_iterator * xccdf_policy_get_selects(const struct xccdf_policy *);
char * xccdf_value_binding_get_name(const struct xccdf_value_binding *);
char * xccdf_value_binding_get_value(const struct xccdf_value_binding *);
xccdf_value_type_t xccdf_value_binding_get_type(const struct xccdf_value_binding *);
xccdf_operator_t xccdf_value_binding_get_operator(const struct xccdf_value_binding *);
char * xccdf_value_binding_get_setvalue(const struct xccdf_value_binding *);
struct xccdf_result_iterator * xccdf_policy_get_results(const struct xccdf_policy * policy);
struct xccdf_result * xccdf_policy_get_result_by_id(struct xccdf_policy * policy, const char * id);
const char * xccdf_policy_get_id(struct xccdf_policy * policy);
struct xccdf_policy * xccdf_policy_model_get_policy_by_id(struct xccdf_policy_model * policy_model, const char * id);
/************************************************************/
/************************************************************/
bool xccdf_policy_model_add_policy(struct xccdf_policy_model *, struct xccdf_policy *);
bool xccdf_policy_add_select(struct xccdf_policy *, struct xccdf_select *);
OSCAP_DEPRECATED(
bool xccdf_policy_set_selected(struct xccdf_policy * policy, char * idref)
);
bool xccdf_policy_add_result(struct xccdf_policy * policy, struct xccdf_result * item);
bool xccdf_policy_add_value(struct xccdf_policy *, struct xccdf_value_binding *);
bool xccdf_policy_is_item_selected(struct xccdf_policy *policy, const char *id);
int xccdf_policy_get_selected_rules_count(struct xccdf_policy *policy);
struct xccdf_select * xccdf_policy_get_select_by_id(struct xccdf_policy * policy, const char *item_id);
/************************************************************/
/************************************************************/
struct xccdf_result * xccdf_policy_evaluate(struct xccdf_policy * policy);
bool xccdf_policy_resolve(struct xccdf_policy * policy);
int xccdf_policy_generate_fix(struct xccdf_policy *policy, struct xccdf_result *result, const char *sys, int output_fd);
struct xccdf_item * xccdf_policy_tailor_item(struct xccdf_policy * policy, struct xccdf_item * item);
struct oscap_file_entry;
struct oscap_file_entry *oscap_file_entry_new(void);
struct oscap_file_entry *oscap_file_entry_dup(struct oscap_file_entry* file_entry);
void oscap_file_entry_free(struct oscap_file_entry* entry);
const char* oscap_file_entry_get_system(struct oscap_file_entry* entry);
const char* oscap_file_entry_get_file(struct oscap_file_entry* entry);
struct oscap_file_entry_iterator;
const struct oscap_file_entry *oscap_file_entry_iterator_next(struct oscap_file_entry_iterator *it);
bool oscap_file_entry_iterator_has_more(struct oscap_file_entry_iterator *it);
void oscap_file_entry_iterator_free(struct oscap_file_entry_iterator *it);
void oscap_file_entry_iterator_reset(struct oscap_file_entry_iterator *it);
struct oscap_file_entry_list;
struct oscap_file_entry_list* oscap_file_entry_list_new(void);
void oscap_file_entry_list_free(struct oscap_file_entry_list* list);
struct oscap_file_entry_iterator* oscap_file_entry_list_get_files(struct oscap_file_entry_list* list);
struct oscap_file_entry_list * xccdf_policy_model_get_systems_and_files(struct xccdf_policy_model * policy_model);
struct oscap_file_entry_list * xccdf_item_get_systems_and_files(struct xccdf_item * item);
struct oscap_stringlist * xccdf_policy_model_get_files(struct xccdf_policy_model * policy_model);
struct oscap_stringlist * xccdf_item_get_files(struct xccdf_item * item);
xccdf_test_result_type_t xccdf_test_result_resolve_and_operation(xccdf_test_result_type_t A, xccdf_test_result_type_t B);
/************************************************************/
/************************************************************/
bool xccdf_policy_iterator_has_more(struct xccdf_policy_iterator *it);
struct xccdf_policy * xccdf_policy_iterator_next(struct xccdf_policy_iterator *it);
void xccdf_policy_iterator_free(struct xccdf_policy_iterator *it);
void xccdf_policy_iterator_reset(struct xccdf_policy_iterator *it);
bool xccdf_value_binding_iterator_has_more(struct xccdf_value_binding_iterator *it);
struct xccdf_value_binding * xccdf_value_binding_iterator_next(struct xccdf_value_binding_iterator *it);
void xccdf_value_binding_iterator_free(struct xccdf_value_binding_iterator *it);
void xccdf_value_binding_iterator_reset(struct xccdf_value_binding_iterator *it);
struct xccdf_score * xccdf_policy_get_score(struct xccdf_policy * policy, struct xccdf_result * test_result, const char * system);
char* xccdf_policy_substitute(const char *text, struct xccdf_policy *policy);
/************************************************************/
#endif