Open SCAP Library
xccdf_session.h
Go to the documentation of this file.
1 
12 /*
13  * Copyright 2013 Red Hat Inc., Durham, North Carolina.
14  * All Rights Reserved.
15  *
16  * This library is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU Lesser General Public
18  * License as published by the Free Software Foundation; either
19  * version 2.1 of the License, or (at your option) any later version.
20  *
21  * This library is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24  * Lesser General Public License for more details.
25  *
26  * You should have received a copy of the GNU Lesser General Public
27  * License along with this library; if not, write to the Free Software
28  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
29  *
30  */
31 
32 #ifndef XCCDF_SESSION_H_
33 #define XCCDF_SESSION_H_
34 
35 #include "xccdf_policy.h"
36 
42 typedef void (*download_progress_calllback_t) (bool warning, const char * format, ...);
43 
48 struct xccdf_session;
49 
57 struct xccdf_session *xccdf_session_new(const char *filename);
58 
64 void xccdf_session_free(struct xccdf_session *session);
65 
70 const char *xccdf_session_get_filename(const struct xccdf_session *session);
71 
78 bool xccdf_session_is_sds(const struct xccdf_session *session);
79 
87 void xccdf_session_set_validation(struct xccdf_session *session, bool validate, bool full_validation);
88 
97 void xccdf_session_set_datastream_id(struct xccdf_session *session, const char *datastream_id);
98 
104 const char *xccdf_session_get_datastream_id(struct xccdf_session *session);
105 
114 void xccdf_session_set_component_id(struct xccdf_session *session, const char *component_id);
115 
121 const char *xccdf_session_get_component_id(struct xccdf_session *session);
122 
129 void xccdf_session_set_benchmark_id(struct xccdf_session *session, const char *benchmark_id);
130 
136 const char *xccdf_session_get_benchmark_id(struct xccdf_session *session);
137 
145 void xccdf_session_set_user_cpe(struct xccdf_session *session, const char *user_cpe);
146 
155 
164 
173 void xccdf_session_set_remote_resources(struct xccdf_session *session, bool allowed, download_progress_calllback_t callback);
174 
183 void xccdf_session_set_custom_oval_files(struct xccdf_session *session, char **oval_filenames);
184 
193 
201 bool xccdf_session_set_product_cpe(struct xccdf_session *session, const char *product_cpe);
202 
209 void xccdf_session_set_oval_results_export(struct xccdf_session *session, bool to_export_oval_results);
210 
217 void xccdf_session_set_check_engine_plugins_results_export(struct xccdf_session *session, bool to_export_results);
218 
225 OSCAP_DEPRECATED(void xccdf_session_set_sce_results_export(struct xccdf_session *session, bool to_export_sce_results));
226 
233 void xccdf_session_set_oval_variables_export(struct xccdf_session *session, bool to_export_oval_variables);
234 
242 bool xccdf_session_set_xccdf_export(struct xccdf_session *session, const char *xccdf_file);
243 
251 bool xccdf_session_set_arf_export(struct xccdf_session *session, const char *arf_file);
252 
260 bool xccdf_session_set_report_export(struct xccdf_session *session, const char *report_file);
261 
269 bool xccdf_session_set_profile_id(struct xccdf_session *session, const char *profile_id);
270 
276 const char *xccdf_session_get_profile_id(struct xccdf_session *session);
277 
285 struct ds_sds_index *xccdf_session_get_sds_idx(struct xccdf_session *session);
286 
294 int xccdf_session_load(struct xccdf_session *session);
295 
308 int xccdf_session_load_xccdf(struct xccdf_session *session);
309 
317 int xccdf_session_load_cpe(struct xccdf_session *session);
318 
325 int xccdf_session_load_oval(struct xccdf_session *session);
326 
339 int xccdf_session_load_check_engine_plugin(struct xccdf_session *session, const char* plugin_name);
340 
352 
359 
366 int xccdf_session_load_tailoring(struct xccdf_session *session);
367 
374 int xccdf_session_evaluate(struct xccdf_session *session);
375 
382 int xccdf_session_export_xccdf(struct xccdf_session *session);
383 
390 int xccdf_session_export_oval(struct xccdf_session *session);
391 
401 
411 
418 int xccdf_session_export_arf(struct xccdf_session *session);
419 
428 
435 struct xccdf_policy *xccdf_session_get_xccdf_policy(const struct xccdf_session *session);
436 
443 float xccdf_session_get_base_score(const struct xccdf_session *session);
444 
451 unsigned int xccdf_session_get_oval_agents_count(const struct xccdf_session *session);
452 
461 unsigned int xccdf_session_get_cpe_oval_agents_count(const struct xccdf_session *session);
462 
469 bool xccdf_session_contains_fail_result(const struct xccdf_session *session);
470 
479 int xccdf_session_remediate(struct xccdf_session *session);
480 
491 int xccdf_session_build_policy_from_testresult(struct xccdf_session *session, const char *testresult_id);
492 
495 #endif
void xccdf_session_set_custom_oval_eval_fn(struct xccdf_session *session, xccdf_policy_engine_eval_fn eval_fn)
Set custom OVAL eval function to register with each OVAL session.
Definition: xccdf_session.c:242
int xccdf_session_load_sce(struct xccdf_session *session)
Definition: xccdf_session.c:831
char * user_tailoring_file
Path to Tailoring file requested by the user.
Definition: xccdf_session.c:92
void xccdf_session_free(struct xccdf_session *session)
Destructor of xccdf_session.
Definition: xccdf_session.c:132
int xccdf_session_load_tailoring(struct xccdf_session *session)
Load Tailoring file (if applicable) to the XCCDF session.
Definition: xccdf_session.c:836
bool xccdf_session_is_sds(const struct xccdf_session *session)
Query if the session is based on Source DataStream.
Definition: xccdf_session.c:169
A structure encapsulating the context of XCCDF operations.
Definition: xccdf_session.c:54
void xccdf_session_set_datastream_id(struct xccdf_session *session, const char *datastream_id)
Set requested datastream_id for this session.
Definition: xccdf_session.c:180
const char * xccdf_session_get_component_id(struct xccdf_session *session)
Retrieves the component id.
Definition: xccdf_session.c:201
Open-scap XCCDF Policy library interface.
float xccdf_session_get_base_score(const struct xccdf_session *session)
Get the base score of the latest XCCDF evaluation in the session.
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)
Type of function which implements OpenSCAP checking engine.
Definition: xccdf_policy.h:98
#define OSCAP_DEPRECATED(func)
This macro will warn, when a deprecated function is used.
Definition: oscap.h:50
int xccdf_session_load(struct xccdf_session *session)
Load and parse all XCCDF structures needed to evaluate this session.
Definition: xccdf_session.c:325
char * profile_id
Last selected profile.
Definition: xccdf_session.c:61
int xccdf_session_export_check_engine_plugins(struct xccdf_session *session)
Export results (if any) from any check engine plugins that are loaded.
Definition: xccdf_session.c:1276
char * xccdf_file
Path to XCCDF file to export.
Definition: xccdf_session.c:85
char * component_id
Component id used (only applicable for sds).
Definition: xccdf_session.c:71
void xccdf_session_set_sce_results_export(struct xccdf_session *session, bool to_export_sce_results)
Set that SCE reult files shall be exported.
Definition: xccdf_session.c:269
XCCDF policy model structure contains xccdf_benchmark as reference to Benchmark element in XML file a...
Definition: xccdf_policy.c:58
int xccdf_session_export_xccdf(struct xccdf_session *session)
Export XCCDF file.
Definition: xccdf_session.c:976
char * report_file
Path to HTML file to eport.
Definition: xccdf_session.c:86
int xccdf_session_load_check_engine_plugin(struct xccdf_session *session, const char *plugin_name)
Load extra check engine from a plugin of given name to the XCCDF session.
Definition: xccdf_session.c:784
void xccdf_session_set_user_cpe(struct xccdf_session *session, const char *user_cpe)
Set path to custom CPE dictionary for the session.
Definition: xccdf_session.c:218
void xccdf_session_set_check_engine_plugins_results_export(struct xccdf_session *session, bool to_export_results)
Set that check engine plugin's result files shall be exported.
Definition: xccdf_session.c:264
const char * xccdf_session_get_datastream_id(struct xccdf_session *session)
Retrieves the datastream id.
Definition: xccdf_session.c:188
bool xccdf_session_set_profile_id(struct xccdf_session *session, const char *profile_id)
Select XCCDF Profile for evaluation.
Definition: xccdf_session.c:295
Represents <data-stream-collection> element - the root element of each source datastream.
Definition: sds_index.c:211
int xccdf_session_export_oval(struct xccdf_session *session)
Export OVAL (result and variables) files.
Definition: xccdf_session.c:1196
bool xccdf_session_set_product_cpe(struct xccdf_session *session, const char *product_cpe)
Set custom product CPE name.
Definition: xccdf_session.c:247
void(* download_progress_calllback_t)(bool warning, const char *format,...)
Type of the function used to report progress of download.
Definition: xccdf_session.h:42
char * user_cpe
Path to CPE dictionary required by user.
Definition: xccdf_session.c:91
int xccdf_session_build_policy_from_testresult(struct xccdf_session *session, const char *testresult_id)
Load xccdf:TestResult to the session from file and prepare session for remediation.
Definition: xccdf_session.c:1414
const char * xccdf_session_get_benchmark_id(struct xccdf_session *session)
Retrieves the benchmark_id.
Definition: xccdf_session.c:213
struct xccdf_policy * xccdf_session_get_xccdf_policy(const struct xccdf_session *session)
Get xccdf_policy of the session.
Definition: xccdf_session.c:1343
char * datastream_id
Datastream id used (only applicable for sds).
Definition: xccdf_session.c:70
char * user_tailoring_cid
Component ID of the Tailoring file requested by the user.
Definition: xccdf_session.c:93
bool xccdf_session_set_report_export(struct xccdf_session *session, const char *report_file)
Set where to export HTML Report file.
Definition: xccdf_session.c:288
int xccdf_session_evaluate(struct xccdf_session *session)
Evaluate XCCDF Policy.
Definition: xccdf_session.c:898
struct xccdf_policy_model * xccdf_session_get_policy_model(const struct xccdf_session *session)
Get policy_model of the session.
int xccdf_session_export_arf(struct xccdf_session *session)
Export ARF (if enabled by xccdf_session_set_arf_export).
Definition: xccdf_session.c:1305
bool xccdf_session_set_arf_export(struct xccdf_session *session, const char *arf_file)
Set where to export ARF file.
Definition: xccdf_session.c:274
int xccdf_session_load_oval(struct xccdf_session *session)
Load and parse OVAL definitions files for the XCCDF session.
Definition: xccdf_session.c:713
void xccdf_session_set_user_tailoring_cid(struct xccdf_session *session, const char *user_tailoring_cid)
Set ID of Tailoring component for the session.
Definition: xccdf_session.c:230
int xccdf_session_load_check_engine_plugins(struct xccdf_session *session)
Load extra check engines (if any are available) to the XCCDF session.
Definition: xccdf_session.c:796
int xccdf_session_remediate(struct xccdf_session *session)
Run XCCDF Remediation.
Definition: xccdf_session.c:1396
void xccdf_session_set_custom_oval_files(struct xccdf_session *session, char **oval_filenames)
Set custom oval files for this session.
Definition: xccdf_session.c:578
const char * filename
File name of SCAP (SDS or XCCDF) file for this session.
Definition: xccdf_session.c:55
void xccdf_session_set_component_id(struct xccdf_session *session, const char *component_id)
Set requested component_id for this session.
Definition: xccdf_session.c:193
void xccdf_session_set_validation(struct xccdf_session *session, bool validate, bool full_validation)
Set XSD validation level.
Definition: xccdf_session.c:174
int xccdf_session_load_cpe(struct xccdf_session *session)
Load and parse CPE dictionaries.
Definition: xccdf_session.c:455
char * arf_file
Path to ARF file to export.
Definition: xccdf_session.c:84
XCCDF policy structure is abstract (class) structure of Profile element from benchmark.
Definition: xccdf_policy.c:83
int xccdf_session_load_xccdf(struct xccdf_session *session)
Load and parse XCCDF file.
Definition: xccdf_session.c:355
struct xccdf_session * xccdf_session_new(const char *filename)
Costructor of xccdf_session.
Definition: xccdf_session.c:108
void xccdf_session_set_benchmark_id(struct xccdf_session *session, const char *benchmark_id)
Sets requested benchmark_id for this session.
Definition: xccdf_session.c:206
int xccdf_session_export_sce(struct xccdf_session *session)
Export SCE files (if enabled by xccdf_session_set_sce_results_export).
Definition: xccdf_session.c:1300
struct ds_sds_index * xccdf_session_get_sds_idx(struct xccdf_session *session)
Get Source DataStream index of the session.
Definition: xccdf_session.c:315
bool full_validation
True value indicates that every possible step will be validated by XSD.
Definition: xccdf_session.c:96
char * product_cpe
CPE of scanner product.
Definition: xccdf_session.c:80
void xccdf_session_set_oval_results_export(struct xccdf_session *session, bool to_export_oval_results)
Set whether the OVAL result files shall be exported.
Definition: xccdf_session.c:254
bool validate
False value indicates to skip any XSD validation.
Definition: xccdf_session.c:95
bool xccdf_session_contains_fail_result(const struct xccdf_session *session)
Query if the result of evaluation contains FAIL, ERROR, or UNKNOWN rule-result elements.
Definition: xccdf_session.c:1379
bool xccdf_session_set_xccdf_export(struct xccdf_session *session, const char *xccdf_file)
Set where to export XCCDF file.
Definition: xccdf_session.c:281
void xccdf_session_set_remote_resources(struct xccdf_session *session, bool allowed, download_progress_calllback_t callback)
Set properties of remote content.
Definition: xccdf_session.c:236
void xccdf_session_set_user_tailoring_file(struct xccdf_session *session, const char *user_tailoring_file)
Set path to custom Tailoring file for the session.
Definition: xccdf_session.c:224
void xccdf_session_set_oval_variables_export(struct xccdf_session *session, bool to_export_oval_variables)
Set whether the OVAL variables files shall be exported.
Definition: xccdf_session.c:259
unsigned int xccdf_session_get_oval_agents_count(const struct xccdf_session *session)
Get count of OVAL agent sessions not used for CPE in the xccdf_session.
Definition: xccdf_session.c:1352
const char * xccdf_session_get_profile_id(struct xccdf_session *session)
Retrieves ID of the profile that we will evaluate with, or NULL.
Definition: xccdf_session.c:304
unsigned int xccdf_session_get_cpe_oval_agents_count(const struct xccdf_session *session)
Get count of OVAL agent sessions for CPE in the xccdf_session.
Definition: xccdf_session.c:1361
const char * xccdf_session_get_filename(const struct xccdf_session *session)
Retrieves the filename the session was created with.
Definition: xccdf_session.c:164