Open SCAP Library
/home/pvrabec/project/openscap/openscap-0.8.0/src/OVAL/public/oval_definitions.h
Go to the documentation of this file.
00001 
00016 /*
00017  * Copyright 2009-2010 Red Hat Inc., Durham, North Carolina.
00018  * All Rights Reserved.
00019  *
00020  * This library is free software; you can redistribute it and/or
00021  * modify it under the terms of the GNU Lesser General Public
00022  * License as published by the Free Software Foundation; either
00023  * version 2.1 of the License, or (at your option) any later version.
00024  *
00025  * This library is distributed in the hope that it will be useful,
00026  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00027  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00028  * Lesser General Public License for more details.
00029  *
00030  * You should have received a copy of the GNU Lesser General Public
00031  * License along with this library; if not, write to the Free Software
00032  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00033  *
00034  * Authors:
00035  *      "David Niemoller" <David.Niemoller@g2-inc.com>
00036  */
00037 
00038 
00039 #ifndef OVAL_DEFINITIONS
00040 #define OVAL_DEFINITIONS
00041 
00042 #include "oval_types.h"
00043 #include <stdbool.h>
00044 #include <libxml/tree.h>
00045 
00046 
00052 typedef enum {
00053         OVAL_AFCFML_UNKNOWN = 0,
00054         OVAL_AFCFML_CATOS = 1,
00055         OVAL_AFCFML_IOS = 2,
00056         OVAL_AFCFML_MACOS = 3,
00057         OVAL_AFCFML_PIXOS = 4,
00058         OVAL_AFCFML_UNDEFINED = 5,
00059         OVAL_AFCFML_UNIX = 6,
00060         OVAL_AFCFML_WINDOWS = 7
00061 } oval_affected_family_t;
00062 
00064 typedef enum {
00065         OVAL_NODETYPE_UNKNOWN = 0,
00066         OVAL_NODETYPE_CRITERIA = 1,
00067         OVAL_NODETYPE_CRITERION = 2,
00068         OVAL_NODETYPE_EXTENDDEF = 3
00069 } oval_criteria_node_type_t;
00070 
00072 typedef enum {
00073         OVAL_OPERATOR_UNKNOWN = 0,
00074         OVAL_OPERATOR_AND = 1,
00075         OVAL_OPERATOR_ONE = 2,
00076         OVAL_OPERATOR_OR = 3,
00077         OVAL_OPERATOR_XOR = 4
00078 } oval_operator_t;
00079 
00081 typedef enum {
00082         OVAL_OPERATION_UNKNOWN = 0,
00083         OVAL_OPERATION_BITWISE_AND,
00084         OVAL_OPERATION_BITWISE_OR,
00085         OVAL_OPERATION_CASE_INSENSITIVE_EQUALS,
00086         OVAL_OPERATION_CASE_INSENSITIVE_NOT_EQUAL,
00087         OVAL_OPERATION_EQUALS,
00088         OVAL_OPERATION_GREATER_THAN,
00089         OVAL_OPERATION_GREATER_THAN_OR_EQUAL,
00090         OVAL_OPERATION_LESS_THAN,
00091         OVAL_OPERATION_LESS_THAN_OR_EQUAL,
00092         OVAL_OPERATION_NOT_EQUAL,
00093         OVAL_OPERATION_PATTERN_MATCH,
00094         OVAL_OPERATION_SUBSET_OF,
00095         OVAL_OPERATION_SUPERSET_OF,
00096 } oval_operation_t;
00097 
00098 
00100 typedef enum {
00101         OVAL_EXISTENCE_UNKNOWN = 0,
00102         OVAL_ALL_EXIST = 1,
00103         OVAL_ANY_EXIST = 2,
00104         OVAL_AT_LEAST_ONE_EXISTS = 3,
00105         OVAL_ONLY_ONE_EXISTS = 4,
00106         OVAL_NONE_EXIST = 5
00107 } oval_existence_t;
00108 
00110 typedef enum {
00111         OVAL_CHECK_UNKNOWN = 0,
00112         OVAL_CHECK_ALL = 1,
00113         OVAL_CHECK_AT_LEAST_ONE = 2,
00114         OVAL_CHECK_NONE_EXIST = 3,
00115         OVAL_CHECK_NONE_SATISFY = 4,
00116         OVAL_CHECK_ONLY_ONE = 5
00117 } oval_check_t;
00118 
00120 typedef enum {
00121         OVAL_OBJECTCONTENT_UNKNOWN = 0,
00122         OVAL_OBJECTCONTENT_ENTITY = 1,
00123         OVAL_OBJECTCONTENT_SET = 2,
00124         OVAL_OBJECTCONTENT_FILTER = 3
00125 } oval_object_content_type_t;
00126 
00128 typedef enum {
00129         OVAL_ENTITY_TYPE_UNKNOWN,
00130         OVAL_ENTITY_TYPE_ANY,
00131         OVAL_ENTITY_TYPE_BINARY,
00132         OVAL_ENTITY_TYPE_BOOLEAN,
00133         OVAL_ENTITY_TYPE_FLOAT,
00134         OVAL_ENTITY_TYPE_INTEGER,
00135         OVAL_ENTITY_TYPE_STRING,
00136 } oval_entity_type_t;
00137 
00139 typedef enum {
00140         OVAL_FILTER_ACTION_UNKNOWN = 0,
00141         OVAL_FILTER_ACTION_EXCLUDE,
00142         OVAL_FILTER_ACTION_INCLUDE
00143 } oval_filter_action_t;
00144 
00146 typedef enum {
00147         OVAL_DATATYPE_UNKNOWN = 0,
00148         OVAL_DATATYPE_BINARY,
00149         OVAL_DATATYPE_BOOLEAN,
00150         OVAL_DATATYPE_EVR_STRING,
00151         OVAL_DATATYPE_FILESET_REVISION,
00152         OVAL_DATATYPE_FLOAT,
00153         OVAL_DATATYPE_INTEGER,
00154         OVAL_DATATYPE_IOS_VERSION,
00155         OVAL_DATATYPE_IPV4ADDR,
00156         OVAL_DATATYPE_IPV6ADDR,
00157         OVAL_DATATYPE_RECORD,
00158         OVAL_DATATYPE_SEXP,
00159         OVAL_DATATYPE_STRING,
00160         OVAL_DATATYPE_STRING_M,
00161         OVAL_DATATYPE_VERSION,
00162 } oval_datatype_t;
00163 
00165 typedef enum {
00166         OVAL_ENTITY_VARREF_UNKNOWN,
00167         OVAL_ENTITY_VARREF_NONE,
00168         OVAL_ENTITY_VARREF_ATTRIBUTE,
00169         OVAL_ENTITY_VARREF_ELEMENT
00170 } oval_entity_varref_type_t;
00171 
00173 typedef enum {
00174         OVAL_SET_UNKNOWN,
00175         OVAL_SET_AGGREGATE,
00176         OVAL_SET_COLLECTIVE
00177 } oval_setobject_type_t;
00178 
00180 typedef enum {
00181         OVAL_SET_OPERATION_UNKNOWN,
00182         OVAL_SET_OPERATION_COMPLEMENT = 1,
00183         OVAL_SET_OPERATION_INTERSECTION = 2,
00184         OVAL_SET_OPERATION_UNION = 3
00185 } oval_setobject_operation_t;
00186 
00188 typedef enum {
00189         OVAL_VARIABLE_UNKNOWN,
00190         OVAL_VARIABLE_EXTERNAL,
00191         OVAL_VARIABLE_CONSTANT,
00192         OVAL_VARIABLE_LOCAL
00193 } oval_variable_type_t;
00194 
00195 #define OVAL_FUNCTION 4
00196 
00197 typedef enum {
00198         OVAL_COMPONENT_UNKNOWN = 0,
00199         OVAL_COMPONENT_LITERAL = 1,
00200         OVAL_COMPONENT_OBJECTREF = 2,
00201         OVAL_COMPONENT_VARREF = 3,
00202         OVAL_COMPONENT_FUNCTION = 4,
00203         OVAL_FUNCTION_BEGIN = OVAL_FUNCTION + 1,
00204         OVAL_FUNCTION_CONCAT = OVAL_FUNCTION + 2,
00205         OVAL_FUNCTION_END = OVAL_FUNCTION + 3,
00206         OVAL_FUNCTION_SPLIT = OVAL_FUNCTION + 4,
00207         OVAL_FUNCTION_SUBSTRING = OVAL_FUNCTION + 5,
00208         OVAL_FUNCTION_TIMEDIF = OVAL_FUNCTION + 6,
00209         OVAL_FUNCTION_ESCAPE_REGEX = OVAL_FUNCTION + 7,
00210         OVAL_FUNCTION_REGEX_CAPTURE = OVAL_FUNCTION + 8,
00211         OVAL_FUNCTION_ARITHMETIC = OVAL_FUNCTION + 9
00212 } oval_component_type_t;
00213 
00215 typedef enum {
00216         OVAL_ARITHMETIC_UNKNOWN = 0,
00217         OVAL_ARITHMETIC_ADD = 1,
00218         OVAL_ARITHMETIC_MULTIPLY = 2,
00219         OVAL_ARITHMETIC_SUBTRACT = 3,   //NOT YET SUPPORTED BY OVAL
00220         OVAL_ARITHMETIC_DIVIDE = 4      //NOT YET SUPPORTED BY OVAL
00221 } oval_arithmetic_operation_t;
00222 
00224 typedef enum {
00225         OVAL_DATETIME_UNKNOWN = 0,
00226         OVAL_DATETIME_YEAR_MONTH_DAY = 1,
00227         OVAL_DATETIME_MONTH_DAY_YEAR = 2,
00228         OVAL_DATETIME_DAY_MONTH_YEAR = 3,
00229         OVAL_DATETIME_WIN_FILETIME = 4,
00230         OVAL_DATETIME_SECONDS_SINCE_EPOCH = 5
00231 } oval_datetime_format_t;
00232 
00233 typedef enum {
00234         OVAL_RECORD_FIELD_UNKNOWN = 0,
00235         OVAL_RECORD_FIELD_STATE = 1,
00236         OVAL_RECORD_FIELD_ITEM = 2,
00237 } oval_record_field_type_t;
00238 
00242 oval_family_t oval_subtype_get_family(oval_subtype_t);
00243 const char *oval_operator_get_text(oval_operator_t);
00244 const char *oval_subtype_get_text(oval_subtype_t);
00245 const char *oval_family_get_text(oval_family_t);
00246 const char *oval_check_get_text(oval_check_t);
00247 const char *oval_existence_get_text(oval_existence_t);
00248 const char *oval_affected_family_get_text(oval_affected_family_t);
00249 const char *oval_datatype_get_text(oval_datatype_t);
00250 oval_datatype_t oval_datatype_from_text(const char *);
00251 const char *oval_operation_get_text(oval_operation_t);
00252 const char *oval_set_operation_get_text(oval_setobject_operation_t);
00253 const char *oval_datetime_format_get_text(oval_datetime_format_t);
00254 const char *oval_arithmetic_operation_get_text(oval_arithmetic_operation_t);
00255 const char *oval_filter_action_get_text(oval_filter_action_t);
00256 
00257 
00262 struct oval_definition_model;
00263 
00270 struct oval_definition;
00275 struct oval_definition_iterator;
00281 struct oval_test;
00286 struct oval_test_iterator;
00295 struct oval_object;
00300 struct oval_object_iterator;
00307 struct oval_state;
00312 struct oval_state_iterator;
00327 struct oval_variable;
00332 struct oval_variable_iterator;
00353 struct oval_affected;
00358 struct oval_affected_iterator;
00366 struct oval_reference;
00371 struct oval_reference_iterator;
00380 struct oval_criteria_node;
00385 struct oval_criteria_node_iterator;
00390 struct oval_object_content;
00395 struct oval_object_content_iterator;
00400 struct oval_behavior;
00405 struct oval_behavior_iterator;
00410 struct oval_state_content;
00415 struct oval_state_content_iterator;
00420 struct oval_value;
00425 struct oval_value_iterator;
00430 struct oval_entity;
00434 struct oval_entity_iterator;
00438 struct oval_record_field;
00442 struct oval_record_field_iterator;
00447 struct oval_setobject;
00452 struct oval_setobject_iterator;
00457 struct oval_filter;
00461 struct oval_filter_iterator;
00559 struct oval_component;
00564 struct oval_component_iterator;
00574 struct oval_string_iterator;
00575 
00579 struct oval_generator;
00580 
00581 struct oval_generator *oval_generator_new(void);
00582 void oval_generator_free(struct oval_generator *generator);
00583 struct oval_generator *oval_generator_clone(struct oval_generator *old_generator);
00584 char *oval_generator_get_product_name(struct oval_generator *generator);
00585 char *oval_generator_get_product_version(struct oval_generator *generator);
00586 char *oval_generator_get_schema_version(struct oval_generator *generator);
00587 char *oval_generator_get_timestamp(struct oval_generator *generator);
00588 void oval_generator_set_product_name(struct oval_generator *generator, char *product_name);
00589 void oval_generator_set_product_version(struct oval_generator *generator, char *product_version);
00590 void oval_generator_set_schema_version(struct oval_generator *generator, char *schema_version);
00591 void oval_generator_set_timestamp(struct oval_generator *generator, char *timestamp);
00592 
00597 struct oval_definition_model *oval_definition_model_new(void);
00604 struct oval_definition_model * oval_definition_model_import(const char *file);
00605 
00614 int oval_definition_model_merge(struct oval_definition_model *model, const char *file);
00615 
00621 struct oval_definition_model *oval_definition_model_clone(struct oval_definition_model *);
00627 int oval_definition_model_export(struct oval_definition_model *, const char *file);
00632 void oval_definition_model_free(struct oval_definition_model *model);
00633 
00638 void oval_definition_model_set_generator(struct oval_definition_model *model, struct oval_generator *generator);
00644 int oval_definition_model_bind_variable_model(struct oval_definition_model *, struct oval_variable_model *);
00645 
00646 void oval_definition_model_clear_external_variables(struct oval_definition_model *);
00653 struct oval_generator *oval_definition_model_get_generator(struct oval_definition_model *model);
00661 struct oval_definition *oval_definition_model_get_definition(struct oval_definition_model *, const char *id);
00670 struct oval_test *oval_definition_model_get_test(struct oval_definition_model *model, const char *id);
00679 struct oval_object *oval_definition_model_get_object(struct oval_definition_model *model, const char *id);
00688 struct oval_state *oval_definition_model_get_state(struct oval_definition_model *model, const char *id);
00697 struct oval_variable *oval_definition_model_get_variable(struct oval_definition_model *model, const char *id);
00702 struct oval_definition_iterator *oval_definition_model_get_definitions(struct oval_definition_model *model);
00709 struct oval_test_iterator *oval_definition_model_get_tests(struct oval_definition_model *model);
00716 struct oval_object_iterator *oval_definition_model_get_objects(struct oval_definition_model *model);
00723 struct oval_state_iterator *oval_definition_model_get_states(struct oval_definition_model *model);
00730 struct oval_variable_iterator *oval_definition_model_get_variables(struct oval_definition_model *model);
00731 
00737 const char * oval_definition_model_supported(void);
00743 struct oval_variable_model_iterator *oval_definition_model_get_variable_models(struct oval_definition_model *);
00769 struct oval_definition *oval_definition_new(struct oval_definition_model *, const char *id);
00770 
00776 struct oval_definition *oval_definition_clone(struct oval_definition_model *new_model, struct oval_definition *old_definition);
00777 
00787 void oval_definition_free(struct oval_definition *);
00788 
00800 void oval_definition_set_version(struct oval_definition *, int version);
00808 void oval_definition_set_class(struct oval_definition *, oval_definition_class_t);
00814 void oval_definition_set_deprecated(struct oval_definition *, bool deprecated);
00822 void oval_definition_set_title(struct oval_definition *, char *title);
00830 void oval_definition_set_description(struct oval_definition *, char *description);
00841 void oval_definition_add_affected(struct oval_definition *, struct oval_affected *affected);
00852 void oval_definition_add_reference(struct oval_definition *, struct oval_reference *reference);
00858 void oval_definition_add_note(struct oval_definition *, char *note);
00872 void oval_definition_set_criteria(struct oval_definition *, struct oval_criteria_node *criteria);
00883 char *oval_definition_get_id(struct oval_definition *);
00889 int oval_definition_get_version(struct oval_definition *);
00894 oval_definition_class_t oval_definition_get_class(struct oval_definition *);
00899 bool oval_definition_get_deprecated(struct oval_definition *);
00905 char *oval_definition_get_title(struct oval_definition *);
00911 char *oval_definition_get_description(struct oval_definition *);
00918 struct oval_affected_iterator *oval_definition_get_affected(struct oval_definition *);
00925 struct oval_reference_iterator *oval_definition_get_references(struct oval_definition *);
00932 struct oval_string_iterator *oval_definition_get_notes(struct oval_definition *);
00939 xmlNode *oval_definition_get_metadata(struct oval_definition *);
00945 struct oval_criteria_node *oval_definition_get_criteria(struct oval_definition *);
00962 bool oval_definition_iterator_has_more(struct oval_definition_iterator *);
00968 struct oval_definition *oval_definition_iterator_next(struct oval_definition_iterator *);
00973 void oval_definition_iterator_free(struct oval_definition_iterator *);
00996 struct oval_test *oval_test_new(struct oval_definition_model *, const char *id);
01002 struct oval_test *oval_test_clone(struct oval_definition_model *new_model, struct oval_test *old_test);
01007 void oval_test_free(struct oval_test *);
01008 
01022 void oval_test_set_subtype(struct oval_test *, oval_subtype_t subtype);
01028 void oval_test_add_note(struct oval_test *, char *note);
01034 void oval_test_set_comment(struct oval_test *, char *comment);
01039 void oval_test_set_deprecated(struct oval_test *, bool deprecated);
01048 void oval_test_set_version(struct oval_test *, int version);
01053 void oval_test_set_state_operator(struct oval_test *, oval_operator_t);
01062 void oval_test_set_existence(struct oval_test *, oval_existence_t);
01072 void oval_test_set_check(struct oval_test *, oval_check_t);
01081 void oval_test_set_object(struct oval_test *, struct oval_object *);
01087 void oval_test_add_state(struct oval_test *, struct oval_state *);
01098 oval_family_t oval_test_get_family(struct oval_test *);
01103 oval_subtype_t oval_test_get_subtype(struct oval_test *);
01110 struct oval_string_iterator *oval_test_get_notes(struct oval_test *);
01116 char *oval_test_get_comment(struct oval_test *);
01122 char *oval_test_get_id(struct oval_test *);
01127 bool oval_test_get_deprecated(struct oval_test *);
01132 int oval_test_get_version(struct oval_test *);
01137 oval_operator_t oval_test_get_state_operator(struct oval_test *);
01142 oval_existence_t oval_test_get_existence(struct oval_test *);
01147 oval_check_t oval_test_get_check(struct oval_test *);
01153 struct oval_object *oval_test_get_object(struct oval_test *);
01160 struct oval_state_iterator *oval_test_get_states(struct oval_test *);
01161 
01178 bool oval_test_iterator_has_more(struct oval_test_iterator *);
01183 struct oval_test *oval_test_iterator_next(struct oval_test_iterator *);
01188 void oval_test_iterator_free(struct oval_test_iterator *);
01209 struct oval_object *oval_object_new(struct oval_definition_model *, const char *id);
01215 struct oval_object *oval_object_clone(struct oval_definition_model *new_model, struct oval_object *old_object);
01220 void oval_object_free(struct oval_object *);
01221 
01235 void oval_object_set_subtype(struct oval_object *, oval_subtype_t subtype);
01241 void oval_object_add_note(struct oval_object *, char *note);
01242 
01248 void oval_object_set_comment(struct oval_object *, char *comment);
01249 
01254 void oval_object_set_deprecated(struct oval_object *, bool deprecated);
01263 void oval_object_set_version(struct oval_object *, int version);
01276 void oval_object_add_object_content(struct oval_object *, struct oval_object_content *content);
01289 void oval_object_add_behavior(struct oval_object *, struct oval_behavior *behavior);
01300 oval_family_t oval_object_get_family(struct oval_object *);
01306 const char *oval_object_get_name(struct oval_object *);
01311 oval_subtype_t oval_object_get_subtype(struct oval_object *);
01318 struct oval_string_iterator *oval_object_get_notes(struct oval_object *);
01324 char *oval_object_get_comment(struct oval_object *);
01330 char *oval_object_get_id(struct oval_object *);
01331 
01336 bool oval_object_get_deprecated(struct oval_object *);
01341 int oval_object_get_version(struct oval_object *);
01348 struct oval_object_content_iterator *oval_object_get_object_contents(struct oval_object *);
01355 struct oval_behavior_iterator *oval_object_get_behaviors(struct oval_object *);
01372 bool oval_object_iterator_has_more(struct oval_object_iterator *);
01377 struct oval_object *oval_object_iterator_next(struct oval_object_iterator *);
01382 void oval_object_iterator_free(struct oval_object_iterator *);
01403 struct oval_state *oval_state_new(struct oval_definition_model *, const char *id);
01409 struct oval_state *oval_state_clone(struct oval_definition_model *new_model, struct oval_state *old_state);
01414 void oval_state_free(struct oval_state *);
01415 
01429 void oval_state_set_subtype(struct oval_state *, oval_subtype_t subtype);
01435 void oval_state_add_note(struct oval_state *, char *note);
01441 void oval_state_set_comment(struct oval_state *, char *comment);
01446 void oval_state_set_deprecated(struct oval_state *, bool deprecated);
01455 void oval_state_set_version(struct oval_state *, int version);
01460 void oval_state_set_operator(struct oval_state *, oval_operator_t);
01473 void oval_state_add_content(struct oval_state *, struct oval_state_content *content);
01484 oval_family_t oval_state_get_family(struct oval_state *);
01490 const char *oval_state_get_name(struct oval_state *);
01495 oval_subtype_t oval_state_get_subtype(struct oval_state *);
01502 struct oval_string_iterator *oval_state_get_notes(struct oval_state *);
01508 char *oval_state_get_comment(struct oval_state *);
01514 char *oval_state_get_id(struct oval_state *);
01519 bool oval_state_get_deprecated(struct oval_state *);
01524 int oval_state_get_version(struct oval_state *);
01529 int oval_state_get_operator(struct oval_state *);
01536 struct oval_state_content_iterator *oval_state_get_contents(struct oval_state *);
01547 bool oval_state_iterator_has_more(struct oval_state_iterator *);
01552 struct oval_state *oval_state_iterator_next(struct oval_state_iterator *);
01557 void oval_state_iterator_free(struct oval_state_iterator *);
01590 struct oval_variable *oval_variable_new(struct oval_definition_model *model, const char *id, oval_variable_type_t type);
01596 struct oval_variable *oval_variable_clone(struct oval_definition_model *new_model, struct oval_variable *old_variable);
01601 void oval_variable_free(struct oval_variable *);
01602 
01614 void oval_variable_set_comment(struct oval_variable *, char *comment);
01622 void oval_variable_set_version(struct oval_variable *, int version);
01628 void oval_variable_set_deprecated(struct oval_variable *, bool deprecated);
01636 void oval_variable_set_datatype(struct oval_variable *, oval_datatype_t);
01650 void oval_variable_add_value(struct oval_variable *, struct oval_value *);      //type==OVAL_VARIABLE_CONSTANT
01651 
01652 void oval_variable_clear_values(struct oval_variable *);
01665 void oval_variable_set_component(struct oval_variable *, struct oval_component *component);     //type==OVAL_VARIABLE_LOCAL
01677 char *oval_variable_get_id(struct oval_variable *);
01683 char *oval_variable_get_comment(struct oval_variable *);
01688 int oval_variable_get_version(struct oval_variable *);
01693 bool oval_variable_get_deprecated(struct oval_variable *);
01698 oval_variable_type_t oval_variable_get_type(struct oval_variable *);
01703 oval_datatype_t oval_variable_get_datatype(struct oval_variable *);
01711 struct oval_value_iterator *oval_variable_get_values(struct oval_variable *);   //type==OVAL_VARIABLE_CONSTANT
01718 struct oval_component *oval_variable_get_component(struct oval_variable *);     //type==OVAL_VARIABLE_LOCAL
01723 const char *oval_component_type_get_text(oval_component_type_t type);
01734 bool oval_variable_iterator_has_more(struct oval_variable_iterator *);
01739 struct oval_variable *oval_variable_iterator_next(struct oval_variable_iterator *);
01744 void oval_variable_iterator_free(struct oval_variable_iterator *);
01757 struct oval_affected *oval_affected_new(struct oval_definition_model *);
01763 struct oval_affected *oval_affected_clone(struct oval_definition_model *new_model, struct oval_affected *old_affected);
01768 void oval_affected_free(struct oval_affected *);
01769 
01778 void oval_affected_set_family(struct oval_affected *, oval_affected_family_t family);
01783 void oval_affected_add_platform(struct oval_affected *, char *platform_name);
01788 void oval_affected_add_product(struct oval_affected *, char *product_name);
01801 oval_affected_family_t oval_affected_get_family(struct oval_affected *);
01809 struct oval_string_iterator *oval_affected_get_platforms(struct oval_affected *);
01817 struct oval_string_iterator *oval_affected_get_products(struct oval_affected *);
01834 bool oval_affected_iterator_has_more(struct oval_affected_iterator *);
01839 struct oval_affected *oval_affected_iterator_next(struct oval_affected_iterator *);
01844 void oval_affected_iterator_free(struct oval_affected_iterator *);
01850 struct oval_reference *oval_reference_new(struct oval_definition_model *);
01855 struct oval_reference *oval_reference_clone
01856     (struct oval_definition_model *new_model, struct oval_reference *old_reference);
01860 void oval_reference_free(struct oval_reference *);
01861 
01871 void oval_reference_set_source(struct oval_reference *, char *);
01875 void oval_reference_set_id(struct oval_reference *, char *);
01879 void oval_reference_set_url(struct oval_reference *, char *);
01891 char *oval_reference_get_source(struct oval_reference *);
01897 char *oval_reference_get_id(struct oval_reference *);
01903 char *oval_reference_get_url(struct oval_reference *);
01913 bool oval_reference_iterator_has_more(struct oval_reference_iterator *);
01917 struct oval_reference *oval_reference_iterator_next(struct oval_reference_iterator *);
01921 void oval_reference_iterator_free(struct oval_reference_iterator *);
01950 struct oval_criteria_node *oval_criteria_node_new(struct oval_definition_model *, oval_criteria_node_type_t type);
01956 struct oval_criteria_node *oval_criteria_node_clone
01957     (struct oval_definition_model *new_model, struct oval_criteria_node *old_node);
01962 void oval_criteria_node_free(struct oval_criteria_node *);
01963 
01973 void oval_criteria_node_set_negate(struct oval_criteria_node *, bool negate);
01979 void oval_criteria_set_node_type(struct oval_criteria_node *node, oval_criteria_node_type_t type);
01985 void oval_criteria_node_set_comment(struct oval_criteria_node *, char *comment);
01993 void oval_criteria_node_set_operator(struct oval_criteria_node *, oval_operator_t op);
02004 void oval_criteria_node_add_subnode(struct oval_criteria_node *, struct oval_criteria_node *node);
02012 void oval_criteria_node_set_test(struct oval_criteria_node *, struct oval_test *);
02020 void oval_criteria_node_set_definition(struct oval_criteria_node *, struct oval_definition *);  //type==NODETYPE_EXTENDDEF
02031 oval_criteria_node_type_t oval_criteria_node_get_type(struct oval_criteria_node *);
02036 bool oval_criteria_node_get_negate(struct oval_criteria_node *);
02042 char *oval_criteria_node_get_comment(struct oval_criteria_node *);
02048 oval_operator_t oval_criteria_node_get_operator(struct oval_criteria_node *);
02056 struct oval_criteria_node_iterator *oval_criteria_node_get_subnodes(struct oval_criteria_node *);
02063 struct oval_test *oval_criteria_node_get_test(struct oval_criteria_node *);
02070 struct oval_definition *oval_criteria_node_get_definition(struct oval_criteria_node *);
02081 bool oval_criteria_node_iterator_has_more(struct oval_criteria_node_iterator *);
02087 struct oval_criteria_node *oval_criteria_node_iterator_next(struct oval_criteria_node_iterator *);
02092 void oval_criteria_node_iterator_free(struct oval_criteria_node_iterator *);
02104 struct oval_object_content *oval_object_content_new(struct oval_definition_model *model, oval_object_content_type_t type);
02105 
02110 struct oval_object_content *oval_object_content_clone
02111     (struct oval_definition_model *new_model, struct oval_object_content *old_content);
02112 
02116 void oval_object_content_free(struct oval_object_content *);
02117 
02126 void oval_object_content_set_type(struct oval_object_content *, oval_object_content_type_t);
02130 void oval_object_content_set_field_name(struct oval_object_content *, char *);
02134 void oval_object_content_set_entity(struct oval_object_content *, struct oval_entity *);        //type == OVAL_OBJECTCONTENT_ENTITY
02138 void oval_object_content_set_varCheck(struct oval_object_content *, oval_check_t);      //type == OVAL_OBJECTCONTENT_ENTITY
02142 void oval_object_content_set_setobject(struct oval_object_content *, struct oval_setobject *);  //type == OVAL_OBJECTCONTENT_SET
02154 char *oval_object_content_get_field_name(struct oval_object_content *);
02159 oval_object_content_type_t oval_object_content_get_type(struct oval_object_content *);
02165 struct oval_entity *oval_object_content_get_entity(struct oval_object_content *);       //type == OVAL_OBJECTCONTENT_ENTITY
02170 oval_check_t oval_object_content_get_varCheck(struct oval_object_content *);    //type == OVAL_OBJECTCONTENT_ENTITY
02176 struct oval_setobject *oval_object_content_get_setobject(struct oval_object_content *); //type == OVAL_OBJECTCONTENT_SET
02186 bool oval_object_content_iterator_has_more(struct oval_object_content_iterator *);
02190 struct oval_object_content *oval_object_content_iterator_next(struct oval_object_content_iterator *);
02194 void oval_object_content_iterator_free(struct oval_object_content_iterator *);
02206 struct oval_behavior *oval_behavior_new(struct oval_definition_model *);
02207 
02212 struct oval_behavior *oval_behavior_clone(struct oval_definition_model *new_model, struct oval_behavior *old_behavior);
02216 void oval_behavior_free(struct oval_behavior *);
02217 
02225 void oval_behavior_set_keyval(struct oval_behavior *behavior, const char *key, const char *value);
02237 char *oval_behavior_get_key(struct oval_behavior *);
02243 char *oval_behavior_get_value(struct oval_behavior *);
02253 bool oval_behavior_iterator_has_more(struct oval_behavior_iterator *);
02257 struct oval_behavior *oval_behavior_iterator_next(struct oval_behavior_iterator *);
02261 void oval_behavior_iterator_free(struct oval_behavior_iterator *);
02273 struct oval_state_content *oval_state_content_new(struct oval_definition_model *);
02278 struct oval_state_content *oval_state_content_clone (struct oval_definition_model *new_model, struct oval_state_content *old_content);
02282 void oval_state_content_free(struct oval_state_content *);
02283 
02291 void oval_state_content_set_entity(struct oval_state_content *, struct oval_entity *);
02295 void oval_state_content_add_record_field(struct oval_state_content *, struct oval_record_field *);
02299 void oval_state_content_set_varcheck(struct oval_state_content *, oval_check_t);
02303 void oval_state_content_set_entcheck(struct oval_state_content *, oval_check_t);
02315 struct oval_entity *oval_state_content_get_entity(struct oval_state_content *);
02319 struct oval_record_field_iterator *oval_state_content_get_record_fields(struct oval_state_content *);
02324 oval_check_t oval_state_content_get_var_check(struct oval_state_content *);
02329 oval_check_t oval_state_content_get_ent_check(struct oval_state_content *);
02340 bool oval_state_content_iterator_has_more(struct oval_state_content_iterator *);
02344 struct oval_state_content *oval_state_content_iterator_next(struct oval_state_content_iterator *);
02348 void oval_state_content_iterator_free(struct oval_state_content_iterator *);
02354 struct oval_value *oval_value_new(oval_datatype_t datatype, char *text_value);
02359 struct oval_value *oval_value_clone(struct oval_value *old_value);
02363 void oval_value_free(struct oval_value *);
02364 
02373 oval_datatype_t oval_value_get_datatype(struct oval_value *);
02379 char *oval_value_get_text(struct oval_value *);
02384 unsigned char *oval_value_get_binary(struct oval_value *);      //datatype==OVAL_DATATYPE_BINARY
02389 bool oval_value_get_boolean(struct oval_value *);       //datatype==OVAL_DATATYPE_BOOLEAN
02394 float oval_value_get_float(struct oval_value *);        //datatype==OVAL_DATATYPE_FLOAT
02399 long long oval_value_get_integer(struct oval_value *);  //datatype==OVAL_DATATYPE_INTEGER
02409 bool oval_value_iterator_has_more(struct oval_value_iterator *);
02413 struct oval_value *oval_value_iterator_next(struct oval_value_iterator *);
02417 int oval_value_iterator_remaining(struct oval_value_iterator *iterator);
02421 void oval_value_iterator_free(struct oval_value_iterator *);
02433 struct oval_entity *oval_entity_new(struct oval_definition_model *);
02438 struct oval_entity *oval_entity_clone(struct oval_definition_model *model, struct oval_entity *old_entity);
02442 void oval_entity_free(struct oval_entity *);
02443 
02451 void oval_entity_set_type(struct oval_entity *, oval_entity_type_t);
02455 void oval_entity_set_datatype(struct oval_entity *, oval_datatype_t);
02459 void oval_entity_set_mask(struct oval_entity *, int);
02463 void oval_entity_set_varref_type(struct oval_entity *, oval_entity_varref_type_t);
02467 void oval_entity_set_variable(struct oval_entity *, struct oval_variable *);
02471 void oval_entity_set_value(struct oval_entity *, struct oval_value *);
02475 void oval_entity_set_name(struct oval_entity *, char *);
02479 void oval_entity_set_operation(struct oval_entity *, oval_operation_t);
02491 char *oval_entity_get_name(struct oval_entity *);
02496 oval_entity_type_t oval_entity_get_type(struct oval_entity *);
02501 oval_datatype_t oval_entity_get_datatype(struct oval_entity *);
02506 oval_operation_t oval_entity_get_operation(struct oval_entity *);
02512 struct oval_variable *oval_entity_get_variable(struct oval_entity *);
02518 struct oval_value *oval_entity_get_value(struct oval_entity *);
02523 int oval_entity_get_mask(struct oval_entity *);
02528 oval_entity_varref_type_t oval_entity_get_varref_type(struct oval_entity *);
02538 bool oval_entity_iterator_has_more(struct oval_entity_iterator *);
02542 struct oval_entity *oval_entity_iterator_next(struct oval_entity_iterator *);
02546 void oval_entity_iterator_free(struct oval_entity_iterator *);
02558 struct oval_record_field *oval_record_field_new(oval_record_field_type_t);
02562 struct oval_record_field *oval_record_field_clone(struct oval_record_field *);
02566 void oval_record_field_free(struct oval_record_field *);
02567 
02575 void oval_record_field_set_name(struct oval_record_field *, char *);
02579 void oval_record_field_set_value(struct oval_record_field *, char *);
02583 void oval_record_field_set_datatype(struct oval_record_field *, oval_datatype_t);
02587 void oval_record_field_set_mask(struct oval_record_field *, int);
02591 void oval_record_field_set_operation(struct oval_record_field *, oval_operation_t);
02595 void oval_record_field_set_variable(struct oval_record_field *, struct oval_variable *);
02599 void oval_record_field_set_var_check(struct oval_record_field *, oval_check_t);
02603 void oval_record_field_set_ent_check(struct oval_record_field *, oval_check_t);
02613 oval_record_field_type_t oval_record_field_get_type(struct oval_record_field *);
02617 char *oval_record_field_get_name(struct oval_record_field *);
02621 char *oval_record_field_get_value(struct oval_record_field *);
02625 oval_datatype_t oval_record_field_get_datatype(struct oval_record_field *);
02629 int oval_record_field_get_mask(struct oval_record_field *);
02633 oval_operation_t oval_record_field_get_operation(struct oval_record_field *);
02637 struct oval_variable *oval_record_field_get_variable(struct oval_record_field *);
02641 oval_check_t oval_record_field_get_var_check(struct oval_record_field *);
02645 oval_check_t oval_record_field_get_ent_check(struct oval_record_field *);
02655 bool oval_record_field_iterator_has_more(struct oval_record_field_iterator *);
02659 struct oval_record_field *oval_record_field_iterator_next(struct oval_record_field_iterator *);
02663 void oval_record_field_iterator_free(struct oval_record_field_iterator *);
02675 struct oval_filter *oval_filter_new(struct oval_definition_model *);
02679 void oval_filter_free(struct oval_filter *);
02683 struct oval_filter *oval_filter_clone(struct oval_definition_model *, struct oval_filter *);
02684 
02692 void oval_filter_set_state(struct oval_filter *, struct oval_state *);
02696 void oval_filter_set_filter_action(struct oval_filter *, oval_filter_action_t );
02706 struct oval_state *oval_filter_get_state(struct oval_filter *);
02710 oval_filter_action_t oval_filter_get_filter_action(struct oval_filter *);
02720 bool oval_filter_iterator_has_more(struct oval_filter_iterator *);
02724 struct oval_filter *oval_filter_iterator_next(struct oval_filter_iterator *);
02728 void oval_filter_iterator_free(struct oval_filter_iterator *);
02740 struct oval_setobject *oval_setobject_new(struct oval_definition_model *);
02745 struct oval_setobject *oval_setobject_clone(struct oval_definition_model *new_model, struct oval_setobject *old_setobject);
02749 void oval_setobject_free(struct oval_setobject *);
02750 
02757 void oval_setobject_set_type(struct oval_setobject *, oval_setobject_type_t);
02761 void oval_setobject_set_operation(struct oval_setobject *, oval_setobject_operation_t);
02765 void oval_setobject_add_subset(struct oval_setobject *, struct oval_setobject *);       //type==OVAL_SET_AGGREGATE;
02769 void oval_setobject_add_object(struct oval_setobject *, struct oval_object *);  //type==OVAL_SET_COLLECTIVE;
02773 void oval_setobject_add_filter(struct oval_setobject *, struct oval_filter *);  //type==OVAL_SET_COLLECTIVE;
02784 oval_setobject_type_t oval_setobject_get_type(struct oval_setobject *);
02789 oval_setobject_operation_t oval_setobject_get_operation(struct oval_setobject *);
02797 struct oval_setobject_iterator *oval_setobject_get_subsets(struct oval_setobject *);    //type==OVAL_SET_AGGREGATE;
02805 struct oval_object_iterator *oval_setobject_get_objects(struct oval_setobject *);       //type==OVAL_SET_COLLECTIVE;
02813 struct oval_filter_iterator *oval_setobject_get_filters(struct oval_setobject *);       //type==OVAL_SET_COLLECTIVE;
02823 bool oval_setobject_iterator_has_more(struct oval_setobject_iterator *);
02827 struct oval_setobject *oval_setobject_iterator_next(struct oval_setobject_iterator *);
02831 void oval_setobject_iterator_free(struct oval_setobject_iterator *);
02881 struct oval_component *oval_component_new(struct oval_definition_model *, oval_component_type_t type);
02887 struct oval_component *oval_component_clone(struct oval_definition_model *new_model,
02888                                             struct oval_component *old_component);
02893 void oval_component_free(struct oval_component *);
02894 
02903 void oval_component_set_type(struct oval_component *component, oval_component_type_t type);
02909 void oval_component_set_object(struct oval_component *, struct oval_object *object);
02914 void oval_component_set_item_field(struct oval_component *, char *);
02919 void oval_component_set_record_field(struct oval_component *, char *);
02925 void oval_component_set_variable(struct oval_component *, struct oval_variable *variable);
02929 void oval_component_add_function_component(struct oval_component *, struct oval_component *);   //type==OVAL_COMPONENT_FUNCTION
02933 void oval_component_set_arithmetic_operation(struct oval_component *, oval_arithmetic_operation_t);     //type==OVAL_COMPONENT_ARITHMETIC
02937 void oval_component_set_prefix(struct oval_component *, char *);        //type==OVAL_COMPONENT_BEGIN
02941 void oval_component_set_suffix(struct oval_component *, char *);        //type==OVAL_COMPONENT_END
02945 void oval_component_set_split_delimiter(struct oval_component *, char *);       //type==OVAL_COMPONENT_SPLIT
02949 void oval_component_set_substring_start(struct oval_component *, int);  //type==OVAL_COMPONENT_SUBSTRING
02953 void oval_component_set_substring_length(struct oval_component *, int); //type==OVAL_COMPONENT_SUBSTRING
02957 void oval_component_set_timedif_format_1(struct oval_component *, oval_datetime_format_t);      //type==OVAL_COMPONENT_TIMEDIF
02961 void oval_component_set_timedif_format_2(struct oval_component *, oval_datetime_format_t);      //type==OVAL_COMPONENT_TIMEDIF
02965 void oval_component_set_regex_pattern(struct oval_component *, char *); //type==OVAL_COMPONENT_REGEX_CAPTURE
02969 void oval_component_set_literal_value(struct oval_component *, struct oval_value *);    //type==OVAL_COMPONENT_LITERAL
02980 oval_component_type_t oval_component_get_type(struct oval_component *);
02988 struct oval_object *oval_component_get_object(struct oval_component *); //type==OVAL_COMPONENT_OBJECTREF
02995 char *oval_component_get_item_field(struct oval_component *);
03002 char *oval_component_get_record_field(struct oval_component *);
03010 struct oval_variable *oval_component_get_variable(struct oval_component *);
03018 struct oval_component_iterator *oval_component_get_function_components(struct oval_component *);        //type==OVAL_COMPONENT_FUNCTION
03024 oval_arithmetic_operation_t oval_component_get_arithmetic_operation(struct oval_component *);   //type==OVAL_COMPONENT_ARITHMETIC
03032 char *oval_component_get_prefix(struct oval_component *);       //type==OVAL_COMPONENT_BEGIN
03040 char *oval_component_get_suffix(struct oval_component *);       //type==OVAL_COMPONENT_END
03048 char *oval_component_get_split_delimiter(struct oval_component *);      //type==OVAL_COMPONENT_SPLIT
03054 int oval_component_get_substring_start(struct oval_component *);        //type==OVAL_COMPONENT_SUBSTRING
03060 int oval_component_get_substring_length(struct oval_component *);       //type==OVAL_COMPONENT_SUBSTRING
03066 oval_datetime_format_t oval_component_get_timedif_format_1(struct oval_component *);    //type==OVAL_COMPONENT_TIMEDIF
03072 oval_datetime_format_t oval_component_get_timedif_format_2(struct oval_component *);    //type==OVAL_COMPONENT_TIMEDIF
03080 char *oval_component_get_regex_pattern(struct oval_component *);        //type==OVAL_COMPONENT_REGEX_CAPTURE
03088 struct oval_value *oval_component_get_literal_value(struct oval_component *);   //type==OVAL_COMPONENT_LITERAL
03099 bool oval_component_iterator_has_more(struct oval_component_iterator *);
03105 struct oval_component *oval_component_iterator_next(struct oval_component_iterator *);
03110 void oval_component_iterator_free(struct oval_component_iterator *);
03115 int oval_component_iterator_remaining(struct oval_component_iterator *);
03132 bool oval_string_iterator_has_more(struct oval_string_iterator *);
03137 char *oval_string_iterator_next(struct oval_string_iterator *);
03142 int oval_string_iterator_remaining(struct oval_string_iterator *);
03147 void oval_string_iterator_free(struct oval_string_iterator *);
03154 #endif