Open SCAP Library
|
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