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
00115 void xccdf_policy_export_variables(struct xccdf_policy *, char *export_namespace, const char *file);
00121 void xccdf_policy_export_controls (struct xccdf_policy *, char *export_namespace, const char *file);
00127 void xccdf_policy_import_results(struct xccdf_policy *, char *import_namespace, const char *file);
00133 void xccdf_policy_export_results(struct xccdf_policy *, char *scoring_model_namespace, const char *file);
00134
00145 bool xccdf_policy_model_register_engine_callback(struct xccdf_policy_model * model, char * sys, void * func, void * usr);
00146
00172 bool xccdf_policy_model_register_output_callback(struct xccdf_policy_model * model, oscap_reporter func, void * usr);
00173
00174
00188 struct xccdf_policy_model * xccdf_policy_get_model(const struct xccdf_policy * policy);
00189
00196 struct xccdf_benchmark * xccdf_policy_model_get_benchmark(const struct xccdf_policy_model * item);
00197
00202 struct xccdf_value_binding_iterator * xccdf_policy_get_values(const struct xccdf_policy * item);
00203
00210 struct xccdf_policy_iterator * xccdf_policy_model_get_policies(const struct xccdf_policy_model *model);
00211
00218 struct xccdf_select_iterator * xccdf_policy_get_selected_rules(struct xccdf_policy *);
00219
00225 struct xccdf_profile * xccdf_policy_get_profile(const struct xccdf_policy *);
00226
00232 struct xccdf_select_iterator * xccdf_policy_get_rules(const struct xccdf_policy *);
00233
00239 char * xccdf_value_binding_get_name(const struct xccdf_value_binding *);
00240
00246 char * xccdf_value_binding_get_value(const struct xccdf_value_binding *);
00247
00253 xccdf_value_type_t xccdf_value_binding_get_type(const struct xccdf_value_binding *);
00254
00260 xccdf_operator_t xccdf_value_binding_get_operator(const struct xccdf_value_binding *);
00261
00267 char * xccdf_value_binding_get_setvalue(const struct xccdf_value_binding *);
00268
00273 struct xccdf_result_iterator * xccdf_policy_get_results(const struct xccdf_policy * policy);
00274
00280 struct xccdf_result * xccdf_policy_get_result_by_id(struct xccdf_policy * policy, const char * id);
00281
00288 const char * xccdf_policy_get_id(struct xccdf_policy * policy);
00289
00297 struct xccdf_policy * xccdf_policy_model_get_policy_by_id(struct xccdf_policy_model * policy_model, const char * id);
00298
00299
00302
00315 bool xccdf_policy_model_add_policy(struct xccdf_policy_model *, struct xccdf_policy *);
00316
00322 bool xccdf_policy_add_rule(struct xccdf_policy *, struct xccdf_select *);
00323
00329 bool xccdf_policy_set_selected(struct xccdf_policy * policy, char * idref);
00330
00335 bool xccdf_policy_add_result(struct xccdf_policy * policy, struct xccdf_result * item);
00336
00342 bool xccdf_policy_add_value(struct xccdf_policy *, struct xccdf_value_binding *);
00343
00349
00350
00351
00354
00378 struct xccdf_result * xccdf_policy_evaluate(struct xccdf_policy * policy);
00379
00388 bool xccdf_policy_resolve(struct xccdf_policy * policy);
00389
00390
00393
00403 bool xccdf_policy_iterator_has_more(struct xccdf_policy_iterator *it);
00404
00409 struct xccdf_policy * xccdf_policy_iterator_next(struct xccdf_policy_iterator *it);
00410
00415 void xccdf_policy_iterator_free(struct xccdf_policy_iterator *it);
00416
00421 bool xccdf_value_binding_iterator_has_more(struct xccdf_value_binding_iterator *it);
00422
00427 struct xccdf_value_binding * xccdf_value_binding_iterator_next(struct xccdf_value_binding_iterator *it);
00428
00433 void xccdf_value_binding_iterator_free(struct xccdf_value_binding_iterator *it);
00434
00439 void xccdf_value_binding_iterator_reset(struct xccdf_value_binding_iterator *it);
00440
00448 struct xccdf_score * xccdf_policy_get_score(struct xccdf_policy * policy, struct xccdf_result * test_result, const char * system);
00449
00450
00453
00454
00455
00456 #endif
00457
00458