Open SCAP Library
Loading...
Searching...
No Matches
Files | Data Structures | Enumerations | Functions
CPE Language
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_modelcpe_lang_model::cpe_lang_model_new (void)
 Constructor of CPE Language model.
 
OSCAP_API struct cpe_testexprcpe_testexpr::cpe_testexpr_new (void)
 Constructor of CPE test expression.
 
OSCAP_API struct cpe_platformcpe_platform::cpe_platform_new (void)
 Constructor of CPE Platform.
 
OSCAP_API struct cpe_testexprcpe_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_modelcpe_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_platformcpe_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_testexprcpe_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_iteratorcpe_testexpr::cpe_testexpr_get_meta_expr (const struct cpe_testexpr *item)
 Get CPE expression subexpression.
 
OSCAP_API const struct cpe_namecpe_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_testexprcpe_testexpr::cpe_testexpr_get_next (const struct cpe_testexpr *expr)
 Function to get next expr from array.
 
OSCAP_API struct cpe_platform_iteratorcpe_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_platformcpe_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_iteratorcpe_platform::cpe_platform_get_titles (const struct cpe_platform *item)
 cpe_platform functions to get titles
 
OSCAP_API const struct cpe_testexprcpe_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

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
specCPE lang model
filefilename

◆ 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
platformidref to the platform to verify (do not pass with "#" prepended)
lang_modelused 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_exprCPE 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
exprCPE 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.