00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
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
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