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>
36 #include "oval_parser_impl.h"
38 #include "../common/util.h"
39 
40 OSCAP_HIDDEN_START;
41 
42 oval_family_t oval_family_parse(xmlTextReaderPtr);
43 oval_subtype_t oval_subtype_parse(xmlTextReaderPtr);
44 oval_affected_family_t oval_affected_family_parse(xmlTextReaderPtr);
45 oval_operator_t oval_operator_parse(xmlTextReaderPtr, char *, oval_operator_t);
46 oval_operation_t oval_operation_parse(xmlTextReaderPtr, char *, oval_operation_t);
47 oval_definition_class_t oval_definition_class_parse(xmlTextReaderPtr);
48 oval_existence_t oval_existence_parse(xmlTextReaderPtr, char *, oval_existence_t);
49 oval_check_t oval_check_parse(xmlTextReaderPtr, char *, oval_check_t);
50 oval_entity_type_t oval_entity_type_parse(xmlTextReaderPtr);
51 oval_datatype_t oval_datatype_parse(xmlTextReaderPtr, char *, oval_datatype_t);
52 oval_entity_varref_type_t oval_entity_varref_type_parse(xmlTextReaderPtr);
53 oval_setobject_type_t oval_set_type_parse(xmlTextReaderPtr);
54 oval_setobject_operation_t oval_set_operation_parse(xmlTextReaderPtr, char *, oval_setobject_operation_t);
55 oval_filter_action_t oval_filter_action_parse(xmlTextReaderPtr, char *, oval_filter_action_t);
56 oval_variable_type_t oval_variable_type_parse(xmlTextReaderPtr);
57 oval_component_type_t oval_component_type_parse(xmlTextReaderPtr);
58 oval_arithmetic_operation_t oval_arithmetic_operation_parse(xmlTextReaderPtr, char *, oval_arithmetic_operation_t);
59 oval_datetime_format_t oval_datetime_format_parse(xmlTextReaderPtr, char *, oval_arithmetic_operation_t);
60 oval_message_level_t oval_message_level_parse(xmlTextReaderPtr, char *, oval_message_level_t);
61 void oval_variable_set_type(struct oval_variable *variable, oval_variable_type_t type);
62 
63 
64 oval_definition_class_t oval_definition_class_enum(char *);
65 const char *oval_definition_class_text(oval_definition_class_t);
66 
67 
68 typedef void (*oval_affected_consumer) (struct oval_affected *, void *);
69 int oval_affected_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, oval_affected_consumer, void *);
70 
71 int oval_test_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
72 xmlNode *oval_test_to_dom(struct oval_test *, xmlDoc *, xmlNode *);
73 
74 typedef void (*oval_criteria_consumer) (struct oval_criteria_node *, void *);
75 xmlNode *oval_criteria_node_to_dom(struct oval_criteria_node *, xmlDoc *, xmlNode *);
76 int oval_criteria_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_criteria_consumer, void *);
77 
78 typedef void (*oval_reference_consumer) (struct oval_reference *, void *);
79 int oval_reference_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_reference_consumer, void *);
80 
81 int oval_definition_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
82 xmlNode *oval_definition_to_dom(struct oval_definition *, xmlDoc *, xmlNode *);
83 
84 int oval_object_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
85 xmlNode *oval_object_to_dom(struct oval_object *, xmlDoc *, xmlNode *);
86 struct oval_object *oval_object_clone2(struct oval_definition_model *, struct oval_object *, char *);
87 struct oval_object *oval_object_create_internal(struct oval_object *, char *);
88 struct oval_object *oval_object_get_base_obj(struct oval_object *);
89 
90 int oval_state_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
91 xmlNode *oval_state_to_dom(struct oval_state *, xmlDoc *, xmlNode *);
92 
93 int oval_variable_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *);
94 xmlNode *oval_variable_to_dom(struct oval_variable *, xmlDoc *, xmlNode *);
95 
96 typedef void (*oval_variable_binding_consumer) (struct oval_variable_binding *, void *);
97 void oval_variable_binding_to_dom(struct oval_variable_binding *, xmlDoc *, xmlNode *);
98 int oval_variable_binding_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_variable_binding_consumer, void *);
99 
100 const char *oval_variable_type_get_text(oval_variable_type_t);
101 
102 typedef void (*oval_filter_consumer) (struct oval_filter *, void *);
103 int oval_filter_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_filter_consumer, void *);
104 xmlNode *oval_filter_to_dom(struct oval_filter *, xmlDoc *, xmlNode *);
105 
106 typedef void (*oval_object_content_consumer) (struct oval_object_content *, void *);
107 xmlNode *oval_object_content_to_dom(struct oval_object_content *, xmlDoc *, xmlNode *);
108 int oval_object_content_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_object_content_consumer, void *);
109 struct oval_filter *oval_object_content_get_filter(struct oval_object_content *);
110 void oval_object_content_set_filter(struct oval_object_content *, struct oval_filter *);
111 
112 int oval_state_content_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oscap_consumer_func, void *);
113 xmlNode *oval_state_content_to_dom(struct oval_state_content *, xmlDoc *, xmlNode *);
114 
115 typedef void (*oval_behavior_consumer) (struct oval_behavior *, void *);
116 int oval_behavior_parse_tag(xmlTextReaderPtr, struct oval_parser_context *,
117  oval_family_t, oval_behavior_consumer, void *);
118 
119 int oval_entity_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oscap_consumer_func, void *);
120 xmlNode *oval_entity_to_dom(struct oval_entity *, xmlDoc *, xmlNode *);
121 
122 int oval_record_field_parse_tag(xmlTextReaderPtr, struct oval_parser_context *,
123  oscap_consumer_func, void *, oval_record_field_type_t);
124 xmlNode *oval_record_field_to_dom(struct oval_record_field *, bool, xmlDoc *, xmlNode *, xmlNs *);
125 
126 typedef void (*oval_set_consumer) (struct oval_setobject *, void *);
127 int oval_set_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_set_consumer, void *);
128 xmlNode *oval_set_to_dom(struct oval_setobject *, xmlDoc *, xmlNode *);
129 void oval_set_propagate_filters(struct oval_definition_model *, struct oval_setobject *, char *);
130 
131 typedef void (*oval_value_consumer) (struct oval_value *, void *);
132 int oval_value_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_value_consumer, void *);
133 xmlNode *oval_value_to_dom(struct oval_value *, xmlDoc *, xmlNode *);
134 int oval_value_cast(struct oval_value *value, oval_datatype_t new_dt);
135 
136 oval_syschar_collection_flag_t oval_component_compute(struct oval_syschar_model *sysmod, struct oval_component *component,
137  struct oval_collection *value_collection);
138 oval_syschar_collection_flag_t oval_component_query(oval_probe_session_t *sess, struct oval_component *component,
139  struct oval_collection *value_collection);
140 
141 int oval_probe_session_query_object(oval_probe_session_t *sess, struct oval_object *object);
142 
143 typedef void (*oval_component_consumer) (struct oval_component *, void *);
144 int oval_component_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oval_component_consumer, void *);
145 xmlNode *oval_component_to_dom(struct oval_component *, xmlDoc *, xmlNode *);
146 
147 /* message */
148 typedef void (*oval_message_consumer) (struct oval_message *, void *);
149 int oval_message_parse_tag(xmlTextReaderPtr, struct oval_parser_context *, oscap_consumer_func, void *);
150 void oval_message_to_dom(struct oval_message *, xmlDoc *, xmlNode *);
151 
152 /* generator */
153 int oval_generator_parse_tag(xmlTextReader *, struct oval_parser_context *, void *user);
154 xmlNode *oval_generator_to_dom(struct oval_generator *, xmlDocPtr, xmlNode *);
155 
156 /* definition_model */
157 xmlNode *oval_definition_model_to_dom(struct oval_definition_model *definition_model, xmlDocPtr doc, xmlNode * parent);
158 void oval_definition_model_optimize_by_filter_propagation(struct oval_definition_model *);
159 
160 struct oval_definition *oval_definition_model_get_new_definition(struct oval_definition_model *, const char *);
161 struct oval_test *oval_definition_model_get_new_test(struct oval_definition_model *, const char *);
162 struct oval_object *oval_definition_model_get_new_object(struct oval_definition_model *, const char *);
163 struct oval_state *oval_definition_model_get_new_state(struct oval_definition_model *, const char *);
164 struct oval_variable *oval_definition_model_get_new_variable(struct oval_definition_model *, const char *, oval_variable_type_t type);
165 void oval_definition_model_add_definition(struct oval_definition_model *, struct oval_definition *);
166 void oval_definition_model_add_test(struct oval_definition_model *, struct oval_test *);
167 void oval_definition_model_add_object(struct oval_definition_model *, struct oval_object *);
168 void oval_definition_model_add_state(struct oval_definition_model *, struct oval_state *);
169 void oval_definition_model_add_variable(struct oval_definition_model *, struct oval_variable *);
170 
171 const char * oval_definition_model_get_schema(struct oval_definition_model * model);
172 void oval_definition_model_set_schema(struct oval_definition_model *model, const char *version);
173 
174 struct oval_string_map *oval_definition_model_build_vardef_mapping(struct oval_definition_model *model);
175 struct oval_string_iterator *oval_definition_model_get_definitions_dependent_on_variable(struct oval_definition_model *model, struct oval_variable *variable);
176 
177 /* variable model */
178 struct oval_collection *oval_variable_model_get_values_ref(struct oval_variable_model *, char *);
179 int oval_variable_bind_ext_var(struct oval_variable *, struct oval_variable_model *, char *);
180 bool oval_variable_contains_value(struct oval_variable *variable, const char* o_value_text);
181 
182 //Synthetic object subtype for probing system info.
183 #define OVAL_INDEPENDENT_SYSCHAR_SUBTYPE 7999
184 
185 OSCAP_HIDDEN_END
186 #endif