00001
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #ifndef OVAL_SYSTEM_CHARACTERISTICS
00041 #define OVAL_SYSTEM_CHARACTERISTICS
00042
00043 #include "oscap.h"
00044 #include "oscap_source.h"
00045 #include "oval_types.h"
00046 #include "oval_definitions.h"
00047
00049 typedef enum {
00050 SYSCHAR_FLAG_UNKNOWN = 0,
00051 SYSCHAR_FLAG_ERROR = 1,
00052 SYSCHAR_FLAG_COMPLETE = 2,
00053 SYSCHAR_FLAG_INCOMPLETE = 3,
00054 SYSCHAR_FLAG_DOES_NOT_EXIST = 4,
00055 SYSCHAR_FLAG_NOT_COLLECTED = 5,
00056 SYSCHAR_FLAG_NOT_APPLICABLE = 6
00057 } oval_syschar_collection_flag_t;
00058
00060 typedef enum {
00061 SYSCHAR_STATUS_UNKNOWN = 0,
00062 SYSCHAR_STATUS_ERROR = 1,
00063 SYSCHAR_STATUS_EXISTS = 2,
00064 SYSCHAR_STATUS_DOES_NOT_EXIST = 3,
00065 SYSCHAR_STATUS_NOT_COLLECTED = 4
00066 } oval_syschar_status_t;
00067
00069 typedef enum {
00070 OVAL_MESSAGE_LEVEL_NONE = 0,
00071 OVAL_MESSAGE_LEVEL_DEBUG = 1,
00072 OVAL_MESSAGE_LEVEL_INFO = 2,
00073 OVAL_MESSAGE_LEVEL_WARNING = 3,
00074 OVAL_MESSAGE_LEVEL_ERROR = 4,
00075 OVAL_MESSAGE_LEVEL_FATAL = 5
00076 } oval_message_level_t;
00077
00078 const char *oval_syschar_collection_flag_get_text(oval_syschar_collection_flag_t flag);
00079 const char *oval_syschar_status_get_text(oval_syschar_status_t status);
00080 const char *oval_message_level_text(oval_message_level_t);
00081
00082
00083
00084
00085
00086
00093 struct oval_syschar_model;
00094
00101 struct oval_sysinfo;
00105 struct oval_sysinfo_iterator;
00106
00121 struct oval_syschar;
00126 struct oval_syschar_iterator;
00127
00134 struct oval_sysint;
00139 struct oval_sysint_iterator;
00140
00150 struct oval_sysitem;
00155 struct oval_sysitem_iterator;
00156
00160 struct oval_sysent;
00165 struct oval_sysent_iterator;
00166
00171 struct oval_message;
00175 struct oval_message_iterator;
00176
00181 struct oval_variable_binding;
00185 struct oval_variable_binding_iterator;
00186
00187
00188
00189
00190
00197 struct oval_syschar_model *oval_syschar_model_new(struct oval_definition_model *definition_model);
00198
00207 int oval_syschar_model_import_source(struct oval_syschar_model *model, struct oscap_source *source);
00208
00220 OSCAP_DEPRECATED(int oval_syschar_model_import(struct oval_syschar_model *model, const char *file));
00226 struct oval_syschar_model *oval_syschar_model_clone(struct oval_syschar_model *);
00231 int oval_syschar_model_export(struct oval_syschar_model *, const char *file);
00237 void oval_syschar_model_free(struct oval_syschar_model *model);
00238
00243 void oval_syschar_model_set_generator(struct oval_syschar_model *model, struct oval_generator *generator);
00249 int oval_syschar_model_bind_variable_model(struct oval_syschar_model *, struct oval_variable_model *);
00253 void oval_syschar_model_set_sysinfo(struct oval_syschar_model *model, struct oval_sysinfo *sysinfo);
00260 struct oval_generator *oval_syschar_model_get_generator(struct oval_syschar_model *model);
00266 struct oval_definition_model *oval_syschar_model_get_definition_model(struct oval_syschar_model *model);
00272 struct oval_syschar_iterator *oval_syschar_model_get_syschars(struct oval_syschar_model *model);
00278 struct oval_sysinfo *oval_syschar_model_get_sysinfo(struct oval_syschar_model *model);
00286 struct oval_syschar *oval_syschar_model_get_syschar(struct oval_syschar_model *model, const char *object_id);
00291 int oval_syschar_model_compute_variable(struct oval_syschar_model *, struct oval_variable *);
00292 oval_syschar_collection_flag_t oval_variable_get_collection_flag(struct oval_variable *);
00296 struct oval_sysitem *oval_syschar_model_get_sysitem(struct oval_syschar_model *, const char *);
00313 struct oval_sysinfo *oval_sysinfo_new(struct oval_syschar_model *);
00318 struct oval_sysinfo *oval_sysinfo_clone(struct oval_syschar_model *new_model, struct oval_sysinfo *old_sysinfo);
00322 void oval_sysinfo_free(struct oval_sysinfo *);
00323
00331 void oval_sysinfo_set_os_name(struct oval_sysinfo *, char *);
00335 void oval_sysinfo_set_os_version(struct oval_sysinfo *, char *);
00339 void oval_sysinfo_set_os_architecture(struct oval_sysinfo *, char *);
00343 void oval_sysinfo_set_primary_host_name(struct oval_sysinfo *, char *);
00347 void oval_sysinfo_add_interface(struct oval_sysinfo *, struct oval_sysint *);
00358 char *oval_sysinfo_get_os_name(struct oval_sysinfo *);
00359
00364 char *oval_sysinfo_get_os_version(struct oval_sysinfo *);
00365
00370 char *oval_sysinfo_get_os_architecture(struct oval_sysinfo *);
00371
00376 char *oval_sysinfo_get_primary_host_name(struct oval_sysinfo *);
00377
00382 struct oval_sysint_iterator *oval_sysinfo_get_interfaces(struct oval_sysinfo *);
00392 bool oval_sysinfo_iterator_has_more(struct oval_sysinfo_iterator *);
00396 struct oval_sysinfo *oval_sysinfo_iterator_next(struct oval_sysinfo_iterator *);
00400 void oval_sysinfo_iterator_free(struct oval_sysinfo_iterator *);
00417 struct oval_syschar *oval_syschar_new(struct oval_syschar_model *, struct oval_object *);
00422 struct oval_syschar *oval_syschar_clone(struct oval_syschar_model *new_model, struct oval_syschar *old_syschar);
00426 void oval_syschar_free(struct oval_syschar *);
00427
00435 void oval_syschar_add_variable_binding(struct oval_syschar *, struct oval_variable_binding *);
00439 void oval_syschar_set_flag(struct oval_syschar *model, oval_syschar_collection_flag_t flag);
00443 void oval_syschar_set_object(struct oval_syschar *, struct oval_object *);
00449 int oval_syschar_get_variable_instance(const struct oval_syschar *syschar);
00456 void oval_syschar_set_variable_instance(struct oval_syschar *syschar, int variable_instance_in);
00460 void oval_syschar_add_sysitem(struct oval_syschar *, struct oval_sysitem *);
00464 void oval_syschar_add_message(struct oval_syschar *syschar, struct oval_message *message);
00468 void oval_syschar_add_new_message(struct oval_syschar *syschar, char *text, oval_message_level_t level);
00479 oval_syschar_collection_flag_t oval_syschar_get_flag(struct oval_syschar *);
00480
00485 struct oval_message_iterator *oval_syschar_get_messages(struct oval_syschar *);
00486
00491 struct oval_object *oval_syschar_get_object(struct oval_syschar *);
00492
00497 struct oval_variable_binding_iterator *oval_syschar_get_variable_bindings(struct oval_syschar *);
00498
00503 struct oval_sysitem_iterator *oval_syschar_get_sysitem(struct oval_syschar *);
00513 bool oval_syschar_iterator_has_more(struct oval_syschar_iterator *);
00517 struct oval_syschar *oval_syschar_iterator_next(struct oval_syschar_iterator *);
00521 void oval_syschar_iterator_free(struct oval_syschar_iterator *);
00538 struct oval_sysint *oval_sysint_new(struct oval_syschar_model *);
00543 struct oval_sysint *oval_sysint_clone(struct oval_syschar_model *new_model, struct oval_sysint *old_sysint);
00547 void oval_sysint_free(struct oval_sysint *);
00548
00556 void oval_sysint_set_name(struct oval_sysint *, char *);
00560 void oval_sysint_set_ip_address(struct oval_sysint *, char *);
00564 void oval_sysint_set_mac_address(struct oval_sysint *, char *);
00575 char *oval_sysint_get_name(struct oval_sysint *);
00576
00581 char *oval_sysint_get_ip_address(struct oval_sysint *);
00582
00587 char *oval_sysint_get_mac_address(struct oval_sysint *);
00597 bool oval_sysint_iterator_has_more(struct oval_sysint_iterator *);
00601 struct oval_sysint *oval_sysint_iterator_next(struct oval_sysint_iterator *);
00605 void oval_sysint_iterator_free(struct oval_sysint_iterator *);
00622 struct oval_sysitem *oval_sysitem_new(struct oval_syschar_model *, const char *id);
00627 struct oval_sysitem *oval_sysitem_clone(struct oval_syschar_model *new_model, struct oval_sysitem *old_data);
00631 void oval_sysitem_free(struct oval_sysitem *);
00632
00640 void oval_sysitem_set_status(struct oval_sysitem *, oval_syschar_status_t);
00644 void oval_sysitem_set_subtype(struct oval_sysitem *sysitem, oval_subtype_t subtype);
00648 void oval_sysitem_add_message(struct oval_sysitem *, struct oval_message *);
00652 void oval_sysitem_add_sysent(struct oval_sysitem *, struct oval_sysent *);
00663 char *oval_sysitem_get_id(struct oval_sysitem *);
00668 oval_syschar_status_t oval_sysitem_get_status(struct oval_sysitem *);
00673 struct oval_sysent_iterator *oval_sysitem_get_sysents(struct oval_sysitem *);
00678 struct oval_message_iterator *oval_sysitem_get_messages(struct oval_sysitem *);
00683 oval_subtype_t oval_sysitem_get_subtype(struct oval_sysitem *);
00693 bool oval_sysitem_iterator_has_more(struct oval_sysitem_iterator *);
00697 struct oval_sysitem *oval_sysitem_iterator_next(struct oval_sysitem_iterator *);
00701 void oval_sysitem_iterator_free(struct oval_sysitem_iterator *);
00718 struct oval_sysent *oval_sysent_new(struct oval_syschar_model *);
00723 struct oval_sysent *oval_sysent_clone(struct oval_syschar_model *new_model, struct oval_sysent *old_item);
00727 void oval_sysent_free(struct oval_sysent *);
00735 void oval_sysent_set_name(struct oval_sysent *sysent, char *name);
00739 void oval_sysent_set_value(struct oval_sysent *sysent, char *value);
00743 void oval_sysent_add_record_field(struct oval_sysent *, struct oval_record_field *);
00747 void oval_sysent_set_status(struct oval_sysent *sysent, oval_syschar_status_t status);
00751 void oval_sysent_set_datatype(struct oval_sysent *sysent, oval_datatype_t type);
00755 void oval_sysent_set_mask(struct oval_sysent *sysent, int mask);
00766 char *oval_sysent_get_name(struct oval_sysent *);
00767
00772 char *oval_sysent_get_value(struct oval_sysent *);
00773
00777 struct oval_record_field_iterator *oval_sysent_get_record_fields(struct oval_sysent *);
00778
00783 oval_syschar_status_t oval_sysent_get_status(struct oval_sysent *);
00784
00789 oval_datatype_t oval_sysent_get_datatype(struct oval_sysent *);
00790
00795 int oval_sysent_get_mask(struct oval_sysent *);
00805 bool oval_sysent_iterator_has_more(struct oval_sysent_iterator *);
00809 struct oval_sysent *oval_sysent_iterator_next(struct oval_sysent_iterator *);
00813 void oval_sysent_iterator_free(struct oval_sysent_iterator *);
00829 void oval_record_field_set_status(struct oval_record_field *, oval_syschar_status_t);
00838 oval_syschar_status_t oval_record_field_get_status(struct oval_record_field *);
00844 struct oval_message *oval_message_new(void);
00849 struct oval_message *oval_message_clone(struct oval_message *old_message);
00853 void oval_message_free(struct oval_message *);
00854
00862 void oval_message_set_text(struct oval_message *, char *);
00866 void oval_message_set_level(struct oval_message *, oval_message_level_t);
00877 char *oval_message_get_text(struct oval_message *message);
00882 oval_message_level_t oval_message_get_level(struct oval_message *message);
00892 bool oval_message_iterator_has_more(struct oval_message_iterator *oc_message);
00896 struct oval_message *oval_message_iterator_next(struct oval_message_iterator *oc_message);
00900 void oval_message_iterator_free(struct oval_message_iterator *oc_message);
00907 struct oval_variable_binding *oval_variable_binding_new(struct oval_variable *, char *);
00912 struct oval_variable_binding *oval_variable_binding_clone(struct oval_variable_binding *,
00913 struct oval_definition_model *);
00917 void oval_variable_binding_free(struct oval_variable_binding *);
00918
00926 void oval_variable_binding_set_variable(struct oval_variable_binding *, struct oval_variable *);
00930 void oval_variable_binding_add_value(struct oval_variable_binding *, char *);
00941 struct oval_variable *oval_variable_binding_get_variable(struct oval_variable_binding *);
00946 struct oval_string_iterator *oval_variable_binding_get_values(struct oval_variable_binding *);
00956 bool oval_variable_binding_iterator_has_more(struct oval_variable_binding_iterator *);
00960 struct oval_variable_binding *oval_variable_binding_iterator_next(struct oval_variable_binding_iterator *);
00964 void oval_variable_binding_iterator_free(struct oval_variable_binding_iterator *);
00971 #endif