Open SCAP Library

oval_definitions_impl.h
Go to the documentation of this file.
1
8 /*
9 * Copyright 2009--2013 Red Hat Inc., Durham, North Carolina.
10 * All Rights Reserved.
11 *
12 * This library is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU Lesser General Public
14 * License as published by the Free Software Foundation; either
15 * version 2.1 of the License, or (at your option) any later version.
16 *
17 * This library is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * Lesser General Public License for more details.
21 *
22 * You should have received a copy of the GNU Lesser General Public
23 * License along with this library; if not, write to the Free Software
24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 *
26 * Authors:
27 * "David Niemoller" <David.Niemoller@g2-inc.com>
28 */
29
30 #ifndef OVAL_DEFINITIONS_IMPL
31 #define OVAL_DEFINITIONS_IMPL
32
33 #include <libxml/xmlreader.h>
34 #include "public/oval_definitions.h"
35 #include "public/oval_system_characteristics.h"
36 #include "oval_parser_impl.h"
37 #include "adt/oval_string_map_impl.h"
38 #include "../common/util.h"
39
40 OSCAP_HIDDEN_START;
41
42 oval_family_t oval_family_parse(xmlTextReaderPtr);
43 xmlNs *oval_family_to_namespace(oval_family_t family, const char *schema_ns, xmlDoc *doc, xmlNode *parent);
44 oval_subtype_t oval_subtype_parse(xmlTextReaderPtr);
45 oval_affected_family_t oval_affected_family_parse(xmlTextReaderPtr);
46 oval_operator_t oval_operator_parse(xmlTextReaderPtr, char *, oval_operator_t);
47 oval_operation_t oval_operation_parse(xmlTextReaderPtr, char *, oval_operation_t);
48 oval_definition_class_t oval_definition_class_parse(xmlTextReaderPtr);
49 oval_existence_t oval_existence_parse(xmlTextReaderPtr, char *, oval_existence_t);
50 oval_check_t oval_check_parse(xmlTextReaderPtr, char *, oval_check_t);
51 const char *oval_check_get_description(oval_check_t);
52 oval_entity_type_t oval_entity_type_parse(xmlTextReaderPtr);
53 oval_datatype_t oval_datatype_parse(xmlTextReaderPtr, char *, oval_datatype_t);
54 oval_entity_varref_type_t oval_entity_varref_type_parse(xmlTextReaderPtr);
55 oval_setobject_type_t oval_set_type_parse(xmlTextReaderPtr);
56 oval_setobject_operation_t oval_set_operation_parse(xmlTextReaderPtr, char *, oval_setobject_operation_t);
57 oval_filter_action_t oval_filter_action_parse(xmlTextReaderPtr, char *, oval_filter_action_t);
58 oval_variable_type_t oval_variable_type_parse(xmlTextReaderPtr);
59 oval_component_type_t oval_component_type_parse(xmlTextReaderPtr);
60 oval_arithmetic_operation_t oval_arithmetic_operation_parse(xmlTextReaderPtr, char *, oval_arithmetic_operation_t);
61 oval_datetime_format_t oval_datetime_format_parse(xmlTextReaderPtr, char *, oval_arithmetic_operation_t);
62 oval_message_level_t oval_message_level_parse(xmlTextReaderPtr, char *, oval_message_level_t);
63 void oval_variable_set_type(struct oval_variable *variable, oval_variable_type_t type);
64
65
66 oval_definition_class_t oval_definition_class_enum(char *);
67 const char *oval_definition_class_text(oval_definition_class_t);
68
69
70 typedef void (*oval_affected_consumer) (struct oval_affected *, void *);
71 int oval_affected_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, oval_affected_consumer, void *);
72
73 char *oval_test_get_state_names(struct oval_test *test);
74 int oval_test_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
75 xmlNode *oval_test_to_dom(struct oval_test *, xmlDoc *, xmlNode *);
76
77 typedef void (*oval_criteria_consumer) (struct oval_criteria_node *, void *);
78 xmlNode *oval_criteria_node_to_dom(struct oval_criteria_node *, xmlDoc *, xmlNode *);
79 int oval_criteria_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_criteria_consumer, void *);
80
81 typedef void (*oval_reference_consumer) (struct oval_reference *, void *);
82 int oval_reference_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_reference_consumer, void *);
83
84 int oval_definition_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
85 xmlNode *oval_definition_to_dom(struct oval_definition *, xmlDoc *, xmlNode *);
86
87 int oval_object_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
88 xmlNode *oval_object_to_dom(struct oval_object *, xmlDoc *, xmlNode *);
89 struct oval_object *oval_object_clone2(struct oval_definition_model *, struct oval_object *, char *);
90 struct oval_object *oval_object_create_internal(struct oval_object *, char *);
91 struct oval_object *oval_object_get_base_obj(struct oval_object *);
92
93 OSCAP_DEPRECATED(oval_version_t oval_state_get_schema_version(const struct oval_state *state));
94 oval_schema_version_t oval_state_get_platform_schema_version(const struct oval_state *state);
95 int oval_state_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
96 xmlNode *oval_state_to_dom(struct oval_state *, xmlDoc *, xmlNode *);
97
98 int oval_variable_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
99 xmlNode *oval_variable_to_dom(struct oval_variable *, xmlDoc *, xmlNode *);
100
101 typedef void (*oval_variable_binding_consumer) (struct oval_variable_binding *, void *);
102 void oval_variable_binding_to_dom(struct oval_variable_binding *, xmlDoc *, xmlNode *);
103 int oval_variable_binding_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_variable_binding_consumer, void *);
104
105 const char *oval_variable_type_get_text(oval_variable_type_t);
106
107 typedef void (*oval_filter_consumer) (struct oval_filter *, void *);
108 int oval_filter_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_filter_consumer, void *);
109 xmlNode *oval_filter_to_dom(struct oval_filter *, xmlDoc *, xmlNode *);
110
111 typedef void (*oval_object_content_consumer) (struct oval_object_content *, void *);
112 xmlNode *oval_object_content_to_dom(struct oval_object_content *, xmlDoc *, xmlNode *);
113 int oval_object_content_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_object_content_consumer, void *);
114
115 int oval_state_content_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oscap_consumer_func, void *);
116 xmlNode *oval_state_content_to_dom(struct oval_state_content *, xmlDoc *, xmlNode *);
117
118 typedef void (*oval_behavior_consumer) (struct oval_behavior *, void *);
119 int oval_behavior_parse_tag(xmlTextReaderPtr, struct oval_parser_context *,
120 oval_family_t, oval_behavior_consumer, void *);
121
122 int oval_entity_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oscap_consumer_func, void *);
123 xmlNode *oval_entity_to_dom(struct oval_entity *, xmlDoc *, xmlNode *);
124
125 int oval_record_field_parse_tag(xmlTextReaderPtr, struct oval_parser_context *,
126 oscap_consumer_func, void *, oval_record_field_type_t);
127 xmlNode *oval_record_field_to_dom(struct oval_record_field *, bool, xmlDoc *, xmlNode *, xmlNs *);
128
129 typedef void (*oval_set_consumer) (struct oval_setobject *, void *);
130 int oval_set_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_set_consumer, void *);
131 xmlNode *oval_set_to_dom(struct oval_setobject *, xmlDoc *, xmlNode *);
132 void oval_set_propagate_filters(struct oval_definition_model *, struct oval_setobject *, char *);
133
134 typedef void (*oval_value_consumer) (struct oval_value *, void *);
135 int oval_value_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_value_consumer, void *);
136 xmlNode *oval_value_to_dom(struct oval_value *, xmlDoc *, xmlNode *);
137 int oval_value_cast(struct oval_value *value, oval_datatype_t new_dt);
138
139 oval_syschar_collection_flag_t oval_component_compute(struct oval_syschar_model *sysmod, struct oval_component *component,
140 struct oval_collection *value_collection);
141 oval_syschar_collection_flag_t oval_component_query(oval_probe_session_t *sess, struct oval_component *component,
142 struct oval_collection *value_collection);
143
144 int oval_probe_session_query_object(oval_probe_session_t *sess, struct oval_object *object);
145
146 typedef void (*oval_component_consumer) (struct oval_component *, void *);
147 int oval_component_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_component_consumer, void *);
148 xmlNode *oval_component_to_dom(struct oval_component *, xmlDoc *, xmlNode *);
149
150 /* message */
151 typedef void (*oval_message_consumer) (struct oval_message *, void *);
152 int oval_message_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oscap_consumer_func, void *);
153 void oval_message_to_dom(struct oval_message *, xmlDoc *, xmlNode *);
154
155 /* generator */
156 int oval_generator_parse_tag(xmlTextReader *, struct oval_parser_context *, void *user);
157 xmlNode *oval_generator_to_dom(struct oval_generator *, xmlDocPtr, xmlNode *);
158
159 /* definition_model */
160 xmlNode *oval_definition_model_to_dom(struct oval_definition_model *definition_model, xmlDocPtr doc, xmlNode * parent);
161 void oval_definition_model_optimize_by_filter_propagation(struct oval_definition_model *);
162
163 struct oval_definition *oval_definition_model_get_new_definition(struct oval_definition_model *, const char *);
164 struct oval_test *oval_definition_model_get_new_test(struct oval_definition_model *, const char *);
165 struct oval_object *oval_definition_model_get_new_object(struct oval_definition_model *, const char *);
166 struct oval_state *oval_definition_model_get_new_state(struct oval_definition_model *, const char *);
167 struct oval_variable *oval_definition_model_get_new_variable(struct oval_definition_model *, const char *, oval_variable_type_t type);
168 void oval_definition_model_add_definition(struct oval_definition_model *, struct oval_definition *);
169 void oval_definition_model_add_test(struct oval_definition_model *, struct oval_test *);
170 void oval_definition_model_add_object(struct oval_definition_model *, struct oval_object *);
171 void oval_definition_model_add_state(struct oval_definition_model *, struct oval_state *);
172 void oval_definition_model_add_variable(struct oval_definition_model *, struct oval_variable *);
173
174 const char * oval_definition_model_get_schema(struct oval_definition_model * model);
175 void oval_definition_model_set_schema(struct oval_definition_model *model, const char *version);
176 OSCAP_DEPRECATED(oval_version_t oval_definition_model_get_schema_version(struct oval_definition_model *model));
177 oval_schema_version_t oval_definition_model_get_core_schema_version(struct oval_definition_model *model);
178 oval_schema_version_t oval_definition_model_get_platform_schema_version(struct oval_definition_model *model, const char *platform);
179
180 struct oval_string_map *oval_definition_model_build_vardef_mapping(struct oval_definition_model *model);
181 struct oval_string_iterator *oval_definition_model_get_definitions_dependent_on_variable(struct oval_definition_model *model, struct oval_variable *variable);
182
183 /* variable model */
184 struct oval_collection *oval_variable_model_get_values_ref(struct oval_variable_model *, char *);
185 int oval_variable_bind_ext_var(struct oval_variable *, struct oval_variable_model *, char *);
186 bool oval_variable_contains_value(struct oval_variable *variable, const char* o_value_text);
187
188 //Synthetic object subtype for probing system info.
189 #define OVAL_INDEPENDENT_SYSCHAR_SUBTYPE 7999
190
191 OSCAP_HIDDEN_END
192 #endif
oval_operator_t
oval_operator_t
Boolean operators.
Definition: oval_definitions.h:75
oval_syschar_model
OVAL System Characteristics model.
Definition: oval_sysModel.c:54
oval_entity_varref_type_t
oval_entity_varref_type_t
Varref types.
Definition: oval_definitions.h:169
oval_arithmetic_operation_t
oval_arithmetic_operation_t
Arithmetic format enumeration.
Definition: oval_definitions.h:223
oval_component_type_t
oval_component_type_t
Component types.
Definition: oval_definitions.h:201
oval_operation_t
oval_operation_t
Operations.
Definition: oval_definitions.h:84
oval_subtype_t
oval_subtype_t
Unknown subtypes.
Definition: oval_types.h:120
oval_definition
Oval definition specification.
Definition: oval_definition.c:54
oval_setobject
OVAL set object.
Definition: oval_set.c:45
oval_string_map_impl.h
Open Vulnerability and Assessment Language.
oval_criteria_node
Specify oval_definition dependencies.
Definition: oval_criteriaNode.c:50
OSCAP_DEPRECATED
#define OSCAP_DEPRECATED(func)
This macro will warn, when a deprecated function is used.
Definition: oscap.h:50
oval_affected
Each OVAL Definition specifies certain type of affected system(s).
Definition: oval_affected.c:52
oval_filter
OVAL filter.
Definition: oval_filter.c:43
oval_message
OVAL message.
Definition: oval_message.c:45
oval_state
An Oval_state instance is a collection of one or more characteristics pertaining to a specific object...
Definition: oval_state.c:45
oval_variable_binding
Binding of an value to an OVAL variable.
Definition: oval_variableBinding.c:45
oval_value
OVAL object or item entity value.
Definition: oval_value.c:45
oval_datatype_t
oval_datatype_t
Datatypes.
Definition: oval_definitions.h:149
oval_reference
An Oval_reference links an Oval_definition to a definitive external reference.
Definition: oval_reference.c:43
oval_check_t
oval_check_t
Check enumeration.
Definition: oval_definitions.h:113
oval_entity_type_t
oval_entity_type_t
Type of OVAL entity.
Definition: oval_definitions.h:131
oval_state_content
An Oval_state_content instance specifies an oval_state field.
Definition: oval_stateContent.c:45
oval_variable
An oval variable resolves an oval_value stream which specifies constraints for oval_objects and oval_...
Definition: oval_variable.c:50
oval_component
OVAL variable component Oval_component instances specify evaluation constraints on local variables (s...
Definition: oval_component.c:117
oval_family_t
oval_family_t
OVAL family.
Definition: oval_types.h:41
oval_record_field
Definition: oval_recordField.c:39
oval_string_iterator
oval_existence_t
oval_existence_t
Existence check enumeration.
Definition: oval_definitions.h:103
oval_setobject_operation_t
oval_setobject_operation_t
Set operations.
Definition: oval_definitions.h:184
oval_collection
Definition: oval_collection.c:50
oval_entity
OVAL entity.
Definition: oval_entity.c:54
oval_variable_type_t
oval_variable_type_t
OVAL variable types.
Definition: oval_definitions.h:192
oval_datetime_format_t
oval_datetime_format_t
Datetime format enumeration.
Definition: oval_definitions.h:232
oval_object_content
An Oval_object_content instance specifies an oval_object field.
Definition: oval_objectContent.c:44
oval_definition_class_t
oval_definition_class_t
Definition: oval_types.h:353
oval_system_characteristics.h
oval_definition_model
Oval definition model.
Definition: oval_defModel.c:51
oval_setobject_type_t
oval_setobject_type_t
OVAL set object types.
Definition: oval_definitions.h:177
oval_test
An Oval_test specifies a technical control by identifying an oval_object that is evaluated on an inst...
Definition: oval_test.c:48
oval_syschar_collection_flag_t
oval_syschar_collection_flag_t
System characteristics result flag.
Definition: oval_system_characteristics.h:49
oval_parser_impl.h
Open Vulnerability and Assessment Language.
oval_schema_version_t
Definition: oval_schema_version.h:39
oval_filter_action_t
oval_filter_action_t
Type of filter action.
Definition: oval_definitions.h:142
oval_message_level_t
oval_message_level_t
Message level.
Definition: oval_system_characteristics.h:69
oval_definitions.h
oval_variable_model
The OVAL variable model facilitates access to external variable value bindings used to to constrain t...
Definition: oval_varModel.c:56
oval_generator
Definition: oval_generator.c:44
oval_behavior
OVAL behavior.
Definition: oval_behavior.c:50
oval_affected_family_t
oval_affected_family_t
Affected family enumeration.
Definition: oval_definitions.h:55
oval_probe_session
OVAL probe session structure.
Definition: _oval_probe_session.h:42
oval_parser_context
Definition: oval_parser_impl.h:45
oval_object
An Oval_object instance describes a set of items to look for on an instrumented host platform...
Definition: oval_object.c:46