Loading...
Searching...
No Matches
CPE Language
CPE
Collaboration diagram for CPE Language:

## Files

file | cpe_lang.h
| Interface to Common Platform Enumeration (CPE) Language.

## Data Structures

struct | cpe_lang_model
| CPE platform specification. More...
struct | cpe_platform
| Single platform representation in CPE language. More...
struct | cpe_testexpr
| CPE language boolean expression. More...
struct | cpe_platform_iterator
| Iterator over CPE dictionary items. More...
struct | cpe_testexpr_iterator
| Iterator over CPE language expressions. More...

## Enumerations

enum | cpe_lang_oper_t { CPE_LANG_OPER_INVALID = 0x00 , CPE_LANG_OPER_AND = 0x01 , CPE_LANG_OPER_OR = 0x02 , CPE_LANG_OPER_MATCH = 0x04 , CPE_LANG_OPER_CHECK = 0x08 , CPE_LANG_OPER_MASK = 0xFF , CPE_LANG_OPER_NOT = 0x100 , CPE_LANG_OPER_NAND = CPE_LANG_OPER_AND | CPE_LANG_OPER_NOT , CPE_LANG_OPER_NOR = CPE_LANG_OPER_OR | CPE_LANG_OPER_NOT }
| CPE language operators. More...

## Functions

OSCAP_API void | cpe_platform_iterator::cpe_platform_iterator_remove (struct cpe_platform_iterator *it, struct cpe_lang_model *parent)
OSCAP_API void | cpe_testexpr_iterator::cpe_platform_iterator_reset (struct cpe_platform_iterator *it)
OSCAP_API struct cpe_lang_model * | cpe_lang_model::cpe_lang_model_new (void)
| Constructor of CPE Language model.
OSCAP_API struct cpe_testexpr * | cpe_testexpr::cpe_testexpr_new (void)
| Constructor of CPE test expression.
OSCAP_API struct cpe_platform * | cpe_platform::cpe_platform_new (void)
| Constructor of CPE Platform.
OSCAP_API struct cpe_testexpr * | cpe_testexpr::cpe_testexpr_clone (struct cpe_testexpr *old_expr)
| Clone CPE test expression.
OSCAP_API void | cpe_testexpr::cpe_testexpr_free (struct cpe_testexpr *expr)
| Free function of CPE test expression.
OSCAP_API void | cpe_testexpr::cpe_testexpr_iterator_reset (struct cpe_testexpr_iterator *it)
| Reset function of CPE test expression.
OSCAP_API void | cpe_lang_model::cpe_lang_model_free (struct cpe_lang_model *platformspec)
| Free function of CPE test expression.
OSCAP_API void | cpe_platform::cpe_platform_free (struct cpe_platform *platform)
| Free function of CPE Platform.
OSCAP_API struct cpe_lang_model * | cpe_lang_model::cpe_lang_model_import_source (struct oscap_source *source)
| Load CPE language model from an oscap_source.
OSCAP_API void | cpe_lang_model::cpe_lang_model_export (const struct cpe_lang_model *spec, const char *file)
| Write the lang_model to a file.

## Iterators

OSCAP_API struct cpe_platform * | cpe_platform_iterator::cpe_platform_iterator_next (struct cpe_platform_iterator *it)
OSCAP_API bool | cpe_platform_iterator::cpe_platform_iterator_has_more (struct cpe_platform_iterator *it)
OSCAP_API void | cpe_platform_iterator::cpe_platform_iterator_free (struct cpe_platform_iterator *it)
OSCAP_API struct cpe_testexpr * | cpe_testexpr_iterator::cpe_testexpr_iterator_next (struct cpe_testexpr_iterator *it)
OSCAP_API bool | cpe_testexpr_iterator::cpe_testexpr_iterator_has_more (struct cpe_testexpr_iterator *it)
OSCAP_API void | cpe_testexpr_iterator::cpe_testexpr_iterator_free (struct cpe_testexpr_iterator *it)

## Getters

Return value is pointer to structure's member. Do not free unless you null the pointer in the structure. Use remove function otherwise.
OSCAP_API cpe_lang_oper_t | cpe_testexpr::cpe_testexpr_get_oper (const struct cpe_testexpr *item)
| cpe_testexpr functions to get variable members
OSCAP_API struct cpe_testexpr_iterator * | cpe_testexpr::cpe_testexpr_get_meta_expr (const struct cpe_testexpr *item)
| Get CPE expression subexpression.
OSCAP_API const struct cpe_name * | cpe_testexpr::cpe_testexpr_get_meta_cpe (const struct cpe_testexpr *item)
| Get CPE name to match against.
OSCAP_API const char * | cpe_testexpr::cpe_testexpr_get_meta_check_system (const struct cpe_testexpr *item)
| Get check system to evaluate Only valid for CPE_LANG_OPER_CHECK.
OSCAP_API const char * | cpe_testexpr::cpe_testexpr_get_meta_check_href (const struct cpe_testexpr *item)
| Get check href to evaluate Only valid for CPE_LANG_OPER_CHECK.
OSCAP_API const char * | cpe_testexpr::cpe_testexpr_get_meta_check_id (const struct cpe_testexpr *item)
| Get check idref to evaluate Only valid for CPE_LANG_OPER_CHECK.
OSCAP_API const struct cpe_testexpr * | cpe_testexpr::cpe_testexpr_get_next (const struct cpe_testexpr *expr)
| Function to get next expr from array.
OSCAP_API struct cpe_platform_iterator * | cpe_lang_model::cpe_lang_model_get_platforms (const struct cpe_lang_model *item)
| cpe_lang_model function to get CPE platforms
OSCAP_API struct cpe_platform * | cpe_lang_model::cpe_lang_model_get_item (const struct cpe_lang_model *item, const char *key)
| cpe_lang_model function to get CPE platforms
OSCAP_API bool | cpe_lang_model::cpe_platform_applicable_lang_model (const char *platform, struct cpe_lang_model *lang_model, cpe_check_fn check_cb, cpe_dict_fn dict_cb, void *usr)
| Verify whether given CPE platform idref is applicable by evaluating test expression associated with it.
OSCAP_API const char * | cpe_platform::cpe_platform_get_id (const struct cpe_platform *item)
| cpe_platform functions to get id
OSCAP_API const char * | cpe_platform::cpe_platform_get_remark (const struct cpe_platform *item)
| cpe_platform functions to get remark
OSCAP_API struct oscap_text_iterator * | cpe_platform::cpe_platform_get_titles (const struct cpe_platform *item)
| cpe_platform functions to get titles
OSCAP_API const struct cpe_testexpr * | cpe_platform::cpe_platform_get_expr (const struct cpe_platform *item)
| cpe_platform functions to get test expression

## Setters

For lists use add functions. Parameters of set functions are duplicated in memory and need to be freed by caller.
OSCAP_API bool | cpe_lang_model::cpe_lang_model_add_platform (struct cpe_lang_model *lang, struct cpe_platform *platform)
| Add platform to CPE lang model.
OSCAP_API bool | cpe_platform::cpe_platform_add_title (struct cpe_platform *platform, struct oscap_text *title)
| Add title to platform.
OSCAP_API bool | cpe_testexpr::cpe_testexpr_add_subexpression (struct cpe_testexpr *expr, struct cpe_testexpr *sub)
| Add XML namespace to CPE lang model.
OSCAP_API bool | cpe_platform::cpe_platform_set_id (struct cpe_platform *platform, const char *new_id)
| Set ID of CPE platform.
OSCAP_API bool | cpe_platform::cpe_platform_set_remark (struct cpe_platform *platform, const char *new_remark)
| Set remark of CPE platform.
OSCAP_API bool | cpe_platform::cpe_platform_set_expr (struct cpe_platform *platform, struct cpe_testexpr *expr)
| Set evaluation expression for this CPE platform.
OSCAP_API bool | cpe_testexpr::cpe_testexpr_set_oper (struct cpe_testexpr *expr, cpe_lang_oper_t oper)
| Set CPE operation.
OSCAP_API bool | cpe_testexpr::cpe_testexpr_set_name (struct cpe_testexpr *expr, struct cpe_name *name)
| Set CPE name.

## Evaluators

OSCAP_API const char * | cpe_lang_model::cpe_lang_model_supported (void)
| Get supported version of CPE language XML.

## Detailed Description

Class diagram

## Enumeration Type Documentation

## cpe_lang_oper_t

enum cpe_lang_oper_t

CPE language operators.

Enumerator
CPE_LANG_OPER_INVALID | invalid or unknown operation
CPE_LANG_OPER_AND | logical AND
CPE_LANG_OPER_OR | logical OR
CPE_LANG_OPER_MATCH | fact-ref = match given CPE name against available dictionaries
CPE_LANG_OPER_CHECK | check-ref = evaluate given check
CPE_LANG_OPER_MASK | mask to extract the operator w/o possible negation
CPE_LANG_OPER_NOT | negate

## Function Documentation

## cpe_lang_model_export()

OSCAP_API void cpe_lang_model_export | ( | const struct cpe_lang_model * | spec,
|  | const char * | file )

Write the lang_model to a file.

Parameters

  spec | CPE lang model
  file | filename

## cpe_lang_model_supported()

OSCAP_API const char * cpe_lang_model_supported | ( | void |  | ) |

Get supported version of CPE language XML.

Returns
  version of XML file format

## cpe_platform_applicable_lang_model()

OSCAP_API bool cpe_platform_applicable_lang_model | ( | const char * | platform,
|  | struct cpe_lang_model * | lang_model,
|  | cpe_check_fn | check_cb,
|  | cpe_dict_fn | dict_cb,
|  | void * | usr )

Verify whether given CPE platform idref is applicable by evaluating test expression associated with it.

Parameters

  platform | idref to the platform to verify (do not pass with "#" prepended)
  lang_model | used CPE language model

Returns
  true if lang model contains given platform and the platform is applicable

## cpe_platform_set_expr()

OSCAP_API bool cpe_platform_set_expr | ( | struct cpe_platform * | platform,
|  | struct cpe_testexpr * | expr )

Set evaluation expression for this CPE platform.

Expression has to be a logical-test (i.e. its operation shall be AND or OR, possibly with negation)

## cpe_testexpr_add_subexpression()

OSCAP_API bool cpe_testexpr_add_subexpression | ( | struct cpe_testexpr * | expr,
|  | struct cpe_testexpr * | sub )

Add XML namespace to CPE lang model.

Add an subexpression to a compound CPE language expression.

Expression has to be of type CPE_LANG_OPER_AND or CPE_LANG_OPER_OR, possibly with negation.

## cpe_testexpr_clone()

OSCAP_API struct cpe_testexpr * cpe_testexpr_clone | ( | struct cpe_testexpr * | old_expr | ) |

Clone CPE test expression.

Parameters

  old_expr | CPE test expression

## cpe_testexpr_get_meta_cpe()

OSCAP_API const struct cpe_name * cpe_testexpr_get_meta_cpe | ( | const struct cpe_testexpr * | item | ) |

Get CPE name to match against.

Only valid for CPE_LANG_OPER_MATCH.

## cpe_testexpr_get_meta_expr()

OSCAP_API struct cpe_testexpr_iterator * cpe_testexpr_get_meta_expr | ( | const struct cpe_testexpr * | item | ) |

Get CPE expression subexpression.

Not valid for CPE_LANG_OPER_MATCH operation.

## cpe_testexpr_get_next()

OSCAP_API const struct cpe_testexpr * cpe_testexpr_get_next | ( | const struct cpe_testexpr * | expr | ) |

Function to get next expr from array.

Parameters

  expr | CPE Test expression structure

## cpe_testexpr_set_name()

OSCAP_API bool cpe_testexpr_set_name | ( | struct cpe_testexpr * | expr,
|  | struct cpe_name * | name )

Set CPE name.

If the expression does not have type CPE_LANG_OPER_MATCH, this function has no effect and returns false.

## cpe_testexpr_set_oper()

OSCAP_API bool cpe_testexpr_set_oper | ( | struct cpe_testexpr * | expr,
|  | cpe_lang_oper_t | oper )

Set CPE operation.

Any subexpressions and CPE names associated with this expression will be removed.