DS

## Files

file | scap_ds.h
| Open-scap Data Stream interface.

## Data Structures

struct | ds_stream_index
| Contains information about one particular "<data-stream>" element in the datastream collection (also called SDS = source datastream). More...
struct | ds_sds_index
| Represents <data-stream-collection> element - the root element of each source datastream. More...
struct | ds_stream_index_iterator
struct | rds_report_request_index
struct | rds_asset_index
struct | rds_report_index
struct | rds_report_request_index_iterator
struct | rds_asset_index_iterator
struct | rds_report_index_iterator
struct | rds_index
| Represents <asset-report-collection> element - the root element of each result datastream in Asset Reporting Format = ARF. More...

## Functions

int | ds_sds_decompose (const char *input_file, const char *id, const char *xccdf_id, const char *target_dir, const char *target_filename)
| takes given source data stream and decomposes it into separate files More...
int | ds_sds_decompose_custom (const char *input_file, const char *id, const char *target_dir, const char *container_name, const char *component_id, const char *target_filename)
| same as ds_sds_decompose but works with other components than just XCCDFs More...
int | ds_sds_compose_from_xccdf (const char *xccdf_file, const char *target_datastream)
| takes given xccdf file and constructs a source datastream More...
int | ds_sds_compose_add_component (const char *target_datastream, const char *datastream_id, const char *new_component, bool extended)
| append a new given component to the existing source datastream More...
int | ds_rds_decompose (const char *input_file, const char *report_id, const char *request_id, const char *target_dir)
int | ds_rds_create (const char *sds_file, const char *xccdf_result_file, const char **oval_result_files, const char *target_file)
| takes given source data stream and XCCDF result file and makes a result data stream More...
int | ds_sds_index_select_checklist (struct ds_sds_index *s, const char **datastream_id, const char **component_id)
| chooses datastream and checklist id combination given the IDs More...
int | ds_sds_index_select_checklist_by_benchmark_id (struct ds_sds_index *s, const char *benchmark_id, const char **datastream_id, const char **component_ref_id)
| chooses datastream and checklist component ref ID combination, given benchmark ID More...
struct rds_report_request_index * | rds_report_request_index_new (void)
void | rds_report_request_index_free (struct rds_report_request_index *s)
const char * | rds_report_request_index_get_id (struct rds_report_request_index *s)
struct rds_asset_index * | rds_asset_index_new (void)
void | rds_asset_index_free (struct rds_asset_index *s)
const char * | rds_asset_index_get_id (struct rds_asset_index *s)
void | rds_asset_index_add_report_ref (struct rds_asset_index *s, struct rds_report_index *report)
struct rds_report_index_iterator * | rds_asset_index_get_reports (struct rds_asset_index *s)
struct rds_report_index * | rds_report_index_new (void)
void | rds_report_index_free (struct rds_report_index *s)
const char * | rds_report_index_get_id (struct rds_report_index *s)
void | rds_report_index_set_request (struct rds_report_index *s, struct rds_report_request_index *request)
struct rds_report_request_index * | rds_report_index_get_request (struct rds_report_index *s)
struct ds_stream_index * | ds_stream_index::ds_stream_index_new (void)
void | ds_stream_index::ds_stream_index_free (struct ds_stream_index *s)
const char * | ds_stream_index::ds_stream_index_get_id (struct ds_stream_index *s)
| Gets ID of the <data-stream> element the index represents.
const char * | ds_stream_index::ds_stream_index_get_timestamp (struct ds_stream_index *s)
| Timestamp of creation OR modification of the <data-stream> element the index represents.
const char * | ds_stream_index::ds_stream_index_get_version (struct ds_stream_index *s)
| scap-version of the the <data-stream> element the index represents.
struct oscap_string_iterator * | ds_stream_index::ds_stream_index_get_checks (struct ds_stream_index *s)
| Retrieves iterator over all components inside the <checks> element.
struct oscap_string_iterator * | ds_stream_index::ds_stream_index_get_checklists (struct ds_stream_index *s)
| Retrieves iterator over all components inside the <checklists> element.
struct oscap_string_iterator * | ds_stream_index::ds_stream_index_get_dictionaries (struct ds_stream_index *s)
| Retrieves iterator over all components inside the <dictionaries> element.
struct oscap_string_iterator * | ds_stream_index::ds_stream_index_get_extended_components (struct ds_stream_index *s)
| Retrieves iterator over all components inside the <extended-components> element.
struct ds_sds_index * | ds_sds_index::ds_sds_index_new (void)
void | ds_sds_index::ds_sds_index_free (struct ds_sds_index *s)
struct ds_stream_index * | ds_sds_index::ds_sds_index_get_stream (struct ds_sds_index *s, const char *stream_id)
| retrieves a stream index by data-stream ID
struct ds_stream_index_iterator * | ds_sds_index::ds_sds_index_get_streams (struct ds_sds_index *s)
| retrieves all streams indexed inside this structure
struct ds_sds_index * | ds_sds_index::ds_sds_index_import (const char *file)
| imports given source datastream and indexes it
struct ds_stream_index * | ds_stream_index_iterator::ds_stream_index_iterator_next (struct ds_stream_index_iterator *it)
bool | ds_stream_index_iterator::ds_stream_index_iterator_has_more (struct ds_stream_index_iterator *it)
void | ds_stream_index_iterator::ds_stream_index_iterator_free (struct ds_stream_index_iterator *it)
struct rds_report_request_index * | rds_report_request_index_iterator::rds_report_request_index_iterator_next (struct rds_report_request_index_iterator *it)
bool | rds_report_request_index_iterator::rds_report_request_index_iterator_has_more (struct rds_report_request_index_iterator *it)
void | rds_report_request_index_iterator::rds_report_request_index_iterator_free (struct rds_report_request_index_iterator *it)
struct rds_asset_index * | rds_asset_index_iterator::rds_asset_index_iterator_next (struct rds_asset_index_iterator *it)
bool | rds_asset_index_iterator::rds_asset_index_iterator_has_more (struct rds_asset_index_iterator *it)
void | rds_asset_index_iterator::rds_asset_index_iterator_free (struct rds_asset_index_iterator *it)
struct rds_report_index * | rds_report_index_iterator::rds_report_index_iterator_next (struct rds_report_index_iterator *it)
bool | rds_report_index_iterator::rds_report_index_iterator_has_more (struct rds_report_index_iterator *it)
void | rds_report_index_iterator::rds_report_index_iterator_free (struct rds_report_index_iterator *it)
struct rds_index * | rds_index::rds_index_new (void)
void | rds_index::rds_index_free (struct rds_index *s)
struct rds_report_request_index_iterator * | rds_index::rds_index_get_report_requests (struct rds_index *s)
struct rds_asset_index_iterator * | rds_index::rds_index_get_assets (struct rds_index *s)
struct rds_report_index_iterator * | rds_index::rds_index_get_reports (struct rds_index *s)
struct rds_report_request_index * | rds_index::rds_index_get_report_request (struct rds_index *rds, const char *id)
struct rds_asset_index * | rds_index::rds_index_get_asset (struct rds_index *rds, const char *id)
struct rds_report_index * | rds_index::rds_index_get_report (struct rds_index *rds, const char *id)
struct rds_index * | rds_index::rds_index_import (const char *file)
int | rds_index::rds_index_select_report (struct rds_index *s, const char **report_id)

## Detailed Description

## Function Documentation

int ds_rds_create | ( | const char * | sds_file,
|  | const char * | xccdf_result_file,
|  | const char ** | oval_result_files,
|  | const char * | target_file
| ) |  |

takes given source data stream and XCCDF result file and makes a result data stream

Parameters

  sds_file | Path to the source data stream file that was used to generate the result XCCDF
  xccdf_result_file | Contains xccdf:TestResult(s) and the embedded Benchmark (optionally). The embedded Benchmark (source data) will not be included in the result data stream, we will instead bundle the source data stream.
  oval_result_files | NULL terminated list of paths to OVAL result files that should be bundled in the result data stream.
  target_file | Path to the file where the result data stream will be stored

Returns
  0 if no errors were encountered -1 in case of errors

int ds_sds_compose_add_component | ( | const char * | target_datastream,
|  | const char * | datastream_id,
|  | const char * | new_component,
|  | bool | extended
| ) |  |

append a new given component to the existing source datastream

Parameters

  target_datastream | Path of the existing source datastream into which the new component shall be added.
  datastream_id | ID of the datastream into which the component shall be added. Null value indicates the very first datastream in the collection.
  new_component | Path to the new component file (XCCDF, OVAL, or CPE Dictionary).

Returns
  0 in case of success

int ds_sds_compose_from_xccdf | ( | const char * | xccdf_file,
|  | const char * | target_datastream
| ) |  |

takes given xccdf file and constructs a source datastream

Parameters

  xccdf_file | Path to the XCCDF file that should be included in the datastream (including its dependencies).
  target_datastream | ID of the datastream that should contain the XCCDF file. It will be the only datastream in the resulting data-stream-collection.

Returns
  0 if no errors were encountered -1 in case of errors

int ds_sds_decompose | ( | const char * | input_file,
|  | const char * | id,
|  | const char * | xccdf_id,
|  | const char * | target_dir,
|  | const char * | target_filename
| ) |  |

takes given source data stream and decomposes it into separate files

This function bases the output on an XCCDF embedded in the "checklists" element in the datastream. Most of the times this is what everybody wants.

If you want to decompose just an OVAL file or some other custom behavior, see ds_sds_decompose_custom.

Parameters

  input_file | File containing a datastream collection we want to decompose parts from
  id | ID of a datastream we want to use from the given datastream collection. The first encountered datastream is used if id is NULL.
  xccdf_id | ID of the component containing the XCCDF we want to process. The first encountered XCCDF component is used if id is NULL.
  target_dir | Directory where the resulting files will be stored, names of the files are deduced using component-refs inside the datastream.
  target_filename | Base name of the target XCCDF file, if NULL is given the filename will be deduced from the contents of the datastream.

Returns
  0 if no errors were encountered -1 in case of errors

int ds_sds_decompose_custom | ( | const char * | input_file,
|  | const char * | id,
|  | const char * | target_dir,
|  | const char * | container_name,
|  | const char * | component_id,
|  | const char * | target_filename
| ) |  |

same as ds_sds_decompose but works with other components than just XCCDFs

Parameters

  container | component reference container such as "checklists", "checks", ...
  component_id | id of the component you want to start the export from. If NULL, all components refs inside given container will be exported.
  target_filename | Base name of the target file, if NULL is given the filename will be deduced from the contents of the datastream.

See Also
  ds_sds_decompose

void ds_sds_index_free | ( | struct ds_sds_index * | s | ) |

struct ds_sds_index * ds_sds_index_new | ( | void |  | ) |

read

int ds_sds_index_select_checklist | ( | struct ds_sds_index * | s,
|  | const char ** | datastream_id,
|  | const char ** | component_id
| ) |  |

chooses datastream and checklist id combination given the IDs

Parameters

  datastream_id | has to point to an allocated char*, selected datastream ID will be filled into it
  component_id | has to point to an allocated char*, selected xccdf ID will be filled into it

datastream_id and component_id must not point to the same memory! However, the pointers pointed to may be NULL (which means any ID will do).

component_id is actually a component-ref ID, the reason is that we need the component-ref to know which other components are in the catalog and thus needed when splitting.

int ds_sds_index_select_checklist_by_benchmark_id | ( | struct ds_sds_index * | s,
|  | const char * | benchmark_id,
|  | const char ** | datastream_id,
|  | const char ** | component_ref_id
| ) |  |

chooses datastream and checklist component ref ID combination, given benchmark ID

Parameters

  benchmark_id | Which XCCDF Benchmark ID are we looking for? Parameters are similar to ds_sds_index_select_checklist, except for benchmark_id.

See Also
  ds_sds_index_select_checklist

This function looks through to datastream index to find the first component-ref (top-down) which satisfies the following condition: "it does point to a component which contains XCCDF Benchmark with id exactly the same as given benchmark_id".

Please note that datastream_id AND component_ref_id are pointers to pointers and they will be overwritten if 0 is returned. The values are never used, unlike with ds_sds_index_select_checklist.

void ds_stream_index_free | ( | struct ds_stream_index * | s | ) |

void ds_stream_index_iterator_free | ( | struct ds_stream_index_iterator * | it | ) |

bool ds_stream_index_iterator_has_more | ( | struct ds_stream_index_iterator * | it | ) |

struct ds_stream_index * ds_stream_index_iterator_next | ( | struct ds_stream_index_iterator * | it | ) |

read

struct ds_stream_index * ds_stream_index_new | ( | void |  | ) |

read

void rds_asset_index_iterator_free | ( | struct rds_asset_index_iterator * | it | ) |

bool rds_asset_index_iterator_has_more | ( | struct rds_asset_index_iterator * | it | ) |

struct rds_asset_index * rds_asset_index_iterator_next | ( | struct rds_asset_index_iterator * | it | ) |

read

void rds_index_free | ( | struct rds_index * | s | ) |

struct rds_asset_index * rds_index_get_asset | ( | struct rds_index * | rds,
|  | const char * | id
| ) |  |

read

struct rds_asset_index_iterator * rds_index_get_assets | ( | struct rds_index * | s | ) |

read

struct rds_report_index * rds_index_get_report | ( | struct rds_index * | rds,
|  | const char * | id
| ) |  |

read

struct rds_report_request_index * rds_index_get_report_request | ( | struct rds_index * | rds,
|  | const char * | id
| ) |  |

read

struct rds_report_request_index_iterator * rds_index_get_report_requests | ( | struct rds_index * | s | ) |

read

struct rds_report_index_iterator * rds_index_get_reports | ( | struct rds_index * | s | ) |

read

struct rds_index * rds_index_import | ( | const char * | file | ) |

read

struct rds_index * rds_index_new | ( | void |  | ) |

read

int rds_index_select_report | ( | struct rds_index * | s,
|  | const char ** | report_id
| ) |  |

void rds_report_index_iterator_free | ( | struct rds_report_index_iterator * | it | ) |

bool rds_report_index_iterator_has_more | ( | struct rds_report_index_iterator * | it | ) |

struct rds_report_index * rds_report_index_iterator_next | ( | struct rds_report_index_iterator * | it | ) |

read

void rds_report_request_index_iterator_free | ( | struct rds_report_request_index_iterator * | it | ) |

bool rds_report_request_index_iterator_has_more | ( | struct rds_report_request_index_iterator * | it | ) |

struct rds_report_request_index * rds_report_request_index_iterator_next | ( | struct rds_report_request_index_iterator * | it | ) |

read