Open SCAP Library
/home/pvrabec/project/openscap/openscap-0.8.1/src/XCCDF_POLICY/public/xccdf_policy.h
Go to the documentation of this file.
00001 /*
00002  * Copyright 2009 Red Hat Inc., Durham, North Carolina.
00003  * All Rights Reserved.
00004  *
00005  * This library is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU Lesser General Public
00007  * License as published by the Free Software Foundation; either
00008  * version 2.1 of the License, or (at your option) any later version.
00009  *
00010  * This library is distributed in the hope that it will be useful, 
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  * Lesser General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU Lesser General Public
00016  * License along with this library; if not, write to the Free Software 
00017  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018  *
00019  */
00020 
00021 
00031 #ifndef XCCDF_POLICY_H_
00032 #define XCCDF_POLICY_H_
00033 
00034 #include <stdbool.h>
00035 #include <time.h>
00036 #include <oscap.h>
00037 #include <xccdf.h>
00038 #include <reporter.h>
00039  
00044 struct xccdf_policy_model;
00045 
00050 struct xccdf_policy;
00051 
00056 struct xccdf_value_binding;
00057 
00058 struct xccdf_value_binding_iterator;
00059 
00065 struct xccdf_policy_iterator;
00066 
00067 /************************************************************/
00068 
00075 struct xccdf_policy_model *xccdf_policy_model_new(struct xccdf_benchmark *benchmark);
00076 
00083 struct xccdf_policy * xccdf_policy_new(struct xccdf_policy_model * model, struct xccdf_profile * profile);
00084 
00090 struct xccdf_value_binding * xccdf_value_binding_new(void);
00091 
00096 void xccdf_policy_model_free(struct xccdf_policy_model *);
00097 
00102 void xccdf_policy_free(struct xccdf_policy *);
00103 
00108 void xccdf_value_binding_free(struct xccdf_value_binding *);
00109 
00119 bool xccdf_policy_model_register_engine_callback(struct xccdf_policy_model * model, char * sys, void * func, void * usr);
00120 
00151 bool xccdf_policy_model_register_output_callback(struct xccdf_policy_model * model, oscap_reporter func, void * usr);
00152 
00178 bool xccdf_policy_model_register_start_callback(struct xccdf_policy_model * model, oscap_reporter func, void * usr);
00179 
00180 /************************************************************/
00194 struct xccdf_policy_model * xccdf_policy_get_model(const struct xccdf_policy * policy);
00195 
00202 struct xccdf_benchmark * xccdf_policy_model_get_benchmark(const struct xccdf_policy_model * item);
00203 
00208 struct xccdf_value_binding_iterator  * xccdf_policy_get_values(const struct xccdf_policy * item);
00209 
00216 struct xccdf_policy_iterator * xccdf_policy_model_get_policies(const struct xccdf_policy_model *model);
00217 
00224 struct xccdf_select_iterator * xccdf_policy_get_selected_rules(struct xccdf_policy *);
00225 
00231 struct xccdf_profile * xccdf_policy_get_profile(const struct xccdf_policy *);
00232 
00238 struct xccdf_select_iterator * xccdf_policy_get_selects(const struct xccdf_policy *);
00239 
00245 char * xccdf_value_binding_get_name(const struct xccdf_value_binding *);
00246 
00252 char * xccdf_value_binding_get_value(const struct xccdf_value_binding *);
00253 
00259 xccdf_value_type_t xccdf_value_binding_get_type(const struct xccdf_value_binding *);
00260 
00266 xccdf_operator_t xccdf_value_binding_get_operator(const struct xccdf_value_binding *);
00267 
00273 char * xccdf_value_binding_get_setvalue(const struct xccdf_value_binding *);
00274 
00279 struct xccdf_result_iterator * xccdf_policy_get_results(const struct xccdf_policy * policy);
00280 
00286 struct xccdf_result * xccdf_policy_get_result_by_id(struct xccdf_policy * policy, const char * id);
00287 
00294 const char * xccdf_policy_get_id(struct xccdf_policy * policy);
00295 
00303 struct xccdf_policy * xccdf_policy_model_get_policy_by_id(struct xccdf_policy_model * policy_model, const char * id);
00304 
00305 /************************************************************/
00308 /************************************************************/
00321 bool xccdf_policy_model_add_policy(struct xccdf_policy_model *, struct xccdf_policy *);
00322 
00328 bool xccdf_policy_add_select(struct xccdf_policy *, struct xccdf_select *);
00329 
00335 bool xccdf_policy_set_selected(struct xccdf_policy * policy, char * idref);
00336 
00341 bool xccdf_policy_add_result(struct xccdf_policy * policy, struct xccdf_result * item);
00342 
00348 bool xccdf_policy_add_value(struct xccdf_policy *, struct xccdf_value_binding *);
00349 
00355 //bool xccdf_value_binding_add_check_export(struct xccdf_value_binding *, struct xccdf_check_export *);
00361 struct xccdf_select * xccdf_policy_get_select_by_id(struct xccdf_policy * policy, const char *item_id);
00362 
00363 /************************************************************/
00366 /************************************************************/
00390 struct xccdf_result *  xccdf_policy_evaluate(struct xccdf_policy * policy);
00391 
00400 bool xccdf_policy_resolve(struct xccdf_policy * policy);
00401 
00408 struct xccdf_item * xccdf_policy_tailor_item(struct xccdf_policy * policy, struct xccdf_item * item);
00409 
00413 struct oscap_file_entry;
00414 
00416 struct oscap_file_entry *oscap_file_entry_new(void);
00418 struct oscap_file_entry *oscap_file_entry_dup(struct oscap_file_entry* file_entry);
00420 void oscap_file_entry_free(struct oscap_file_entry* entry);
00422 const char* oscap_file_entry_get_system(struct oscap_file_entry* entry);
00424 const char* oscap_file_entry_get_file(struct oscap_file_entry* entry);
00425 
00429 struct oscap_file_entry_iterator;
00430 
00432 const struct oscap_file_entry *oscap_file_entry_iterator_next(struct oscap_file_entry_iterator *it);
00434 bool oscap_file_entry_iterator_has_more(struct oscap_file_entry_iterator *it);
00436 void oscap_file_entry_iterator_free(struct oscap_file_entry_iterator *it);
00438 void oscap_file_entry_iterator_reset(struct oscap_file_entry_iterator *it);
00439 
00443 struct oscap_file_entry_list;
00444 
00446 struct oscap_file_entry_list* oscap_file_entry_list_new(void);
00448 void oscap_file_entry_list_free(struct oscap_file_entry_list* list);
00450 struct oscap_file_entry_iterator* oscap_file_entry_list_get_files(struct oscap_file_entry_list* list);
00451 
00460 struct oscap_file_entry_list * xccdf_policy_model_get_systems_and_files(struct xccdf_policy_model * policy_model);
00461 
00469 struct oscap_file_entry_list * xccdf_item_get_systems_and_files(struct xccdf_item * item);
00470 
00476 struct oscap_stringlist * xccdf_policy_model_get_files(struct xccdf_policy_model * policy_model);
00477 
00483 struct oscap_stringlist * xccdf_item_get_files(struct xccdf_item * item);
00484 
00485 /************************************************************/
00488 /************************************************************/
00498 bool xccdf_policy_iterator_has_more(struct xccdf_policy_iterator *it);
00499 
00504 struct xccdf_policy * xccdf_policy_iterator_next(struct xccdf_policy_iterator *it);
00505 
00510 void xccdf_policy_iterator_free(struct xccdf_policy_iterator *it);
00511 
00516 void xccdf_policy_iterator_reset(struct xccdf_policy_iterator *it);
00517 
00522 bool xccdf_value_binding_iterator_has_more(struct xccdf_value_binding_iterator *it);
00523 
00528 struct xccdf_value_binding * xccdf_value_binding_iterator_next(struct xccdf_value_binding_iterator *it);
00529 
00534 void xccdf_value_binding_iterator_free(struct xccdf_value_binding_iterator *it);
00535 
00540 void xccdf_value_binding_iterator_reset(struct xccdf_value_binding_iterator *it);
00541 
00549 struct xccdf_score * xccdf_policy_get_score(struct xccdf_policy * policy, struct xccdf_result * test_result, const char * system);
00550 
00556 char* xccdf_policy_substitute(const char *text, struct xccdf_policy *policy);
00557 
00558 /************************************************************/
00561 /*
00562  * @}
00563  */
00564 #endif
00565 
00566