00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef OVAL_DEFINITIONS_IMPL
00031 #define OVAL_DEFINITIONS_IMPL
00032
00033 #include <libxml/xmlreader.h>
00034 #include "public/oval_definitions.h"
00035 #include "public/oval_system_characteristics.h"
00036 #include "oval_parser_impl.h"
00037 #include "adt/oval_string_map_impl.h"
00038 #include "../common/util.h"
00039
00040 OSCAP_HIDDEN_START;
00041
00042 oval_family_t oval_family_parse(xmlTextReaderPtr);
00043 xmlNs *oval_family_to_namespace(oval_family_t family, const char *schema_ns, xmlDoc *doc, xmlNode *parent);
00044 oval_subtype_t oval_subtype_parse(xmlTextReaderPtr);
00045 oval_affected_family_t oval_affected_family_parse(xmlTextReaderPtr);
00046 oval_operator_t oval_operator_parse(xmlTextReaderPtr, char *, oval_operator_t);
00047 oval_operation_t oval_operation_parse(xmlTextReaderPtr, char *, oval_operation_t);
00048 oval_definition_class_t oval_definition_class_parse(xmlTextReaderPtr);
00049 oval_existence_t oval_existence_parse(xmlTextReaderPtr, char *, oval_existence_t);
00050 oval_check_t oval_check_parse(xmlTextReaderPtr, char *, oval_check_t);
00051 const char *oval_check_get_description(oval_check_t);
00052 oval_entity_type_t oval_entity_type_parse(xmlTextReaderPtr);
00053 oval_datatype_t oval_datatype_parse(xmlTextReaderPtr, char *, oval_datatype_t);
00054 oval_entity_varref_type_t oval_entity_varref_type_parse(xmlTextReaderPtr);
00055 oval_setobject_type_t oval_set_type_parse(xmlTextReaderPtr);
00056 oval_setobject_operation_t oval_set_operation_parse(xmlTextReaderPtr, char *, oval_setobject_operation_t);
00057 oval_filter_action_t oval_filter_action_parse(xmlTextReaderPtr, char *, oval_filter_action_t);
00058 oval_variable_type_t oval_variable_type_parse(xmlTextReaderPtr);
00059 oval_component_type_t oval_component_type_parse(xmlTextReaderPtr);
00060 oval_arithmetic_operation_t oval_arithmetic_operation_parse(xmlTextReaderPtr, char *, oval_arithmetic_operation_t);
00061 oval_datetime_format_t oval_datetime_format_parse(xmlTextReaderPtr, char *, oval_arithmetic_operation_t);
00062 oval_message_level_t oval_message_level_parse(xmlTextReaderPtr, char *, oval_message_level_t);
00063 void oval_variable_set_type(struct oval_variable *variable, oval_variable_type_t type);
00064
00065
00066 oval_definition_class_t oval_definition_class_enum(char *);
00067 const char *oval_definition_class_text(oval_definition_class_t);
00068
00069
00070 typedef void (*oval_affected_consumer) (struct oval_affected *, void *);
00071 int oval_affected_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, oval_affected_consumer, void *);
00072
00073 char *oval_test_get_state_names(struct oval_test *test);
00074 int oval_test_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
00075 xmlNode *oval_test_to_dom(struct oval_test *, xmlDoc *, xmlNode *);
00076
00077 typedef void (*oval_criteria_consumer) (struct oval_criteria_node *, void *);
00078 xmlNode *oval_criteria_node_to_dom(struct oval_criteria_node *, xmlDoc *, xmlNode *);
00079 int oval_criteria_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_criteria_consumer, void *);
00080
00081 typedef void (*oval_reference_consumer) (struct oval_reference *, void *);
00082 int oval_reference_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_reference_consumer, void *);
00083
00084 int oval_definition_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
00085 xmlNode *oval_definition_to_dom(struct oval_definition *, xmlDoc *, xmlNode *);
00086
00087 int oval_object_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
00088 xmlNode *oval_object_to_dom(struct oval_object *, xmlDoc *, xmlNode *);
00089 struct oval_object *oval_object_clone2(struct oval_definition_model *, struct oval_object *, char *);
00090 struct oval_object *oval_object_create_internal(struct oval_object *, char *);
00091 struct oval_object *oval_object_get_base_obj(struct oval_object *);
00092
00093 OSCAP_DEPRECATED(oval_version_t oval_state_get_schema_version(const struct oval_state *state));
00094 oval_schema_version_t oval_state_get_platform_schema_version(const struct oval_state *state);
00095 int oval_state_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
00096 xmlNode *oval_state_to_dom(struct oval_state *, xmlDoc *, xmlNode *);
00097
00098 int oval_variable_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
00099 xmlNode *oval_variable_to_dom(struct oval_variable *, xmlDoc *, xmlNode *);
00100
00101 typedef void (*oval_variable_binding_consumer) (struct oval_variable_binding *, void *);
00102 void oval_variable_binding_to_dom(struct oval_variable_binding *, xmlDoc *, xmlNode *);
00103 int oval_variable_binding_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_variable_binding_consumer, void *);
00104
00105 const char *oval_variable_type_get_text(oval_variable_type_t);
00106
00107 typedef void (*oval_filter_consumer) (struct oval_filter *, void *);
00108 int oval_filter_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_filter_consumer, void *);
00109 xmlNode *oval_filter_to_dom(struct oval_filter *, xmlDoc *, xmlNode *);
00110
00111 typedef void (*oval_object_content_consumer) (struct oval_object_content *, void *);
00112 xmlNode *oval_object_content_to_dom(struct oval_object_content *, xmlDoc *, xmlNode *);
00113 int oval_object_content_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_object_content_consumer, void *);
00114
00115 int oval_state_content_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oscap_consumer_func, void *);
00116 xmlNode *oval_state_content_to_dom(struct oval_state_content *, xmlDoc *, xmlNode *);
00117
00118 typedef void (*oval_behavior_consumer) (struct oval_behavior *, void *);
00119 int oval_behavior_parse_tag(xmlTextReaderPtr, struct oval_parser_context *,
00120 oval_family_t, oval_behavior_consumer, void *);
00121
00122 int oval_entity_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oscap_consumer_func, void *);
00123 xmlNode *oval_entity_to_dom(struct oval_entity *, xmlDoc *, xmlNode *);
00124
00125 int oval_record_field_parse_tag(xmlTextReaderPtr, struct oval_parser_context *,
00126 oscap_consumer_func, void *, oval_record_field_type_t);
00127 xmlNode *oval_record_field_to_dom(struct oval_record_field *, bool, xmlDoc *, xmlNode *, xmlNs *);
00128
00129 typedef void (*oval_set_consumer) (struct oval_setobject *, void *);
00130 int oval_set_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_set_consumer, void *);
00131 xmlNode *oval_set_to_dom(struct oval_setobject *, xmlDoc *, xmlNode *);
00132 void oval_set_propagate_filters(struct oval_definition_model *, struct oval_setobject *, char *);
00133
00134 typedef void (*oval_value_consumer) (struct oval_value *, void *);
00135 int oval_value_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_value_consumer, void *);
00136 xmlNode *oval_value_to_dom(struct oval_value *, xmlDoc *, xmlNode *);
00137 int oval_value_cast(struct oval_value *value, oval_datatype_t new_dt);
00138
00139 oval_syschar_collection_flag_t oval_component_compute(struct oval_syschar_model *sysmod, struct oval_component *component,
00140 struct oval_collection *value_collection);
00141 oval_syschar_collection_flag_t oval_component_query(oval_probe_session_t *sess, struct oval_component *component,
00142 struct oval_collection *value_collection);
00143
00144 int oval_probe_session_query_object(oval_probe_session_t *sess, struct oval_object *object);
00145
00146 typedef void (*oval_component_consumer) (struct oval_component *, void *);
00147 int oval_component_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_component_consumer, void *);
00148 xmlNode *oval_component_to_dom(struct oval_component *, xmlDoc *, xmlNode *);
00149
00150
00151 typedef void (*oval_message_consumer) (struct oval_message *, void *);
00152 int oval_message_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oscap_consumer_func, void *);
00153 void oval_message_to_dom(struct oval_message *, xmlDoc *, xmlNode *);
00154
00155
00156 int oval_generator_parse_tag(xmlTextReader *, struct oval_parser_context *, void *user);
00157 xmlNode *oval_generator_to_dom(struct oval_generator *, xmlDocPtr, xmlNode *);
00158
00159
00160 xmlNode *oval_definition_model_to_dom(struct oval_definition_model *definition_model, xmlDocPtr doc, xmlNode * parent);
00161 void oval_definition_model_optimize_by_filter_propagation(struct oval_definition_model *);
00162
00163 struct oval_definition *oval_definition_model_get_new_definition(struct oval_definition_model *, const char *);
00164 struct oval_test *oval_definition_model_get_new_test(struct oval_definition_model *, const char *);
00165 struct oval_object *oval_definition_model_get_new_object(struct oval_definition_model *, const char *);
00166 struct oval_state *oval_definition_model_get_new_state(struct oval_definition_model *, const char *);
00167 struct oval_variable *oval_definition_model_get_new_variable(struct oval_definition_model *, const char *, oval_variable_type_t type);
00168 void oval_definition_model_add_definition(struct oval_definition_model *, struct oval_definition *);
00169 void oval_definition_model_add_test(struct oval_definition_model *, struct oval_test *);
00170 void oval_definition_model_add_object(struct oval_definition_model *, struct oval_object *);
00171 void oval_definition_model_add_state(struct oval_definition_model *, struct oval_state *);
00172 void oval_definition_model_add_variable(struct oval_definition_model *, struct oval_variable *);
00173
00174 const char * oval_definition_model_get_schema(struct oval_definition_model * model);
00175 void oval_definition_model_set_schema(struct oval_definition_model *model, const char *version);
00176 OSCAP_DEPRECATED(oval_version_t oval_definition_model_get_schema_version(struct oval_definition_model *model));
00177 oval_schema_version_t oval_definition_model_get_core_schema_version(struct oval_definition_model *model);
00178 oval_schema_version_t oval_definition_model_get_platform_schema_version(struct oval_definition_model *model, const char *platform);
00179
00180 struct oval_string_map *oval_definition_model_build_vardef_mapping(struct oval_definition_model *model);
00181 struct oval_string_iterator *oval_definition_model_get_definitions_dependent_on_variable(struct oval_definition_model *model, struct oval_variable *variable);
00182
00183
00184 struct oval_collection *oval_variable_model_get_values_ref(struct oval_variable_model *, char *);
00185 int oval_variable_bind_ext_var(struct oval_variable *, struct oval_variable_model *, char *);
00186 bool oval_variable_contains_value(struct oval_variable *variable, const char* o_value_text);
00187
00188
00189 #define OVAL_INDEPENDENT_SYSCHAR_SUBTYPE 7999
00190
00191 OSCAP_HIDDEN_END
00192 #endif