|
Open SCAP Library
|
00001 00013 /* 00014 * Copyright 2009--2014 Red Hat Inc., Durham, North Carolina. 00015 * All Rights Reserved. 00016 * 00017 * This library is free software; you can redistribute it and/or 00018 * modify it under the terms of the GNU Lesser General Public 00019 * License as published by the Free Software Foundation; either 00020 * version 2.1 of the License, or (at your option) any later version. 00021 * 00022 * This library is distributed in the hope that it will be useful, 00023 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00024 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00025 * Lesser General Public License for more details. 00026 * 00027 * You should have received a copy of the GNU Lesser General Public 00028 * License along with this library; if not, write to the Free Software 00029 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00030 * 00031 * Authors: 00032 * Lukas Kuklinek <lkuklinek@redhat.com> 00033 * Maros Barabas <mbarabas@redhat.com> 00034 */ 00035 00036 #ifndef CPELANG_H_ 00037 #define CPELANG_H_ 00038 00039 #include <stdlib.h> 00040 00041 #include "cpe_name.h" 00042 #include "oscap.h" 00043 #include "oscap_text.h" 00044 #include "oscap_source.h" 00045 00049 typedef enum { 00050 CPE_LANG_OPER_INVALID = 0x00, 00051 CPE_LANG_OPER_AND = 0x01, 00052 CPE_LANG_OPER_OR = 0x02, 00053 CPE_LANG_OPER_MATCH = 0x04, 00054 CPE_LANG_OPER_CHECK = 0x08, 00055 00056 CPE_LANG_OPER_MASK = 0xFF, 00057 CPE_LANG_OPER_NOT = 0x100, 00058 00059 CPE_LANG_OPER_NAND = CPE_LANG_OPER_AND | CPE_LANG_OPER_NOT, 00060 CPE_LANG_OPER_NOR = CPE_LANG_OPER_OR | CPE_LANG_OPER_NOT, 00061 } cpe_lang_oper_t; 00062 00067 struct cpe_lang_model; 00068 00073 struct cpe_platform; 00074 00079 struct cpe_testexpr; 00080 00081 00082 /************************************************************/ 00093 struct cpe_platform_iterator; 00094 00096 struct cpe_platform *cpe_platform_iterator_next(struct cpe_platform_iterator *it); 00098 bool cpe_platform_iterator_has_more(struct cpe_platform_iterator *it); 00100 void cpe_platform_iterator_free(struct cpe_platform_iterator *it); 00101 00107 struct cpe_testexpr_iterator; 00109 struct cpe_testexpr *cpe_testexpr_iterator_next(struct cpe_testexpr_iterator *it); 00111 bool cpe_testexpr_iterator_has_more(struct cpe_testexpr_iterator *it); 00113 void cpe_testexpr_iterator_free(struct cpe_testexpr_iterator *it); 00114 00115 /************************************************************/ 00118 /************************************************************/ 00130 cpe_lang_oper_t cpe_testexpr_get_oper(const struct cpe_testexpr *item); 00131 00137 struct cpe_testexpr_iterator *cpe_testexpr_get_meta_expr(const struct cpe_testexpr *item); 00138 00144 const struct cpe_name *cpe_testexpr_get_meta_cpe(const struct cpe_testexpr *item); 00145 00151 const char* cpe_testexpr_get_meta_check_system(const struct cpe_testexpr *item); 00152 00158 const char* cpe_testexpr_get_meta_check_href(const struct cpe_testexpr *item); 00159 00165 const char* cpe_testexpr_get_meta_check_id(const struct cpe_testexpr *item); 00166 00172 const struct cpe_testexpr *cpe_testexpr_get_next(const struct cpe_testexpr *expr); 00173 00178 struct cpe_platform_iterator *cpe_lang_model_get_platforms(const struct cpe_lang_model *item); 00179 00184 struct cpe_platform *cpe_lang_model_get_item(const struct cpe_lang_model *item, const char *key); 00185 00194 bool cpe_platform_applicable_lang_model(const char* platform, struct cpe_lang_model *lang_model, cpe_check_fn check_cb, cpe_dict_fn dict_cb, void* usr); 00195 00200 const char *cpe_platform_get_id(const struct cpe_platform *item); 00205 const char *cpe_platform_get_remark(const struct cpe_platform *item); 00210 struct oscap_text_iterator *cpe_platform_get_titles(const struct cpe_platform *item); 00215 const struct cpe_testexpr *cpe_platform_get_expr(const struct cpe_platform *item); 00216 00217 /************************************************************/ 00220 /************************************************************/ 00232 bool cpe_lang_model_add_platform(struct cpe_lang_model *lang, struct cpe_platform *platform); 00237 bool cpe_platform_add_title(struct cpe_platform *platform, struct oscap_text *title); 00238 00243 /*bool cpe_lang_model_add_xmlns(struct cpe_lang_model * model, struct xml_metadata * xml);*/ 00244 00251 bool cpe_testexpr_add_subexpression(struct cpe_testexpr *expr, struct cpe_testexpr *sub); 00252 00257 bool cpe_platform_set_id(struct cpe_platform *platform, const char *new_id); 00262 bool cpe_platform_set_remark(struct cpe_platform *platform, const char *new_remark); 00269 bool cpe_platform_set_expr(struct cpe_platform *platform, struct cpe_testexpr *expr); 00276 bool cpe_testexpr_set_oper(struct cpe_testexpr *expr, cpe_lang_oper_t oper); 00277 00285 bool cpe_testexpr_set_name(struct cpe_testexpr *expr, struct cpe_name *name); 00286 00287 /************************************************************/ 00290 00291 void cpe_platform_iterator_remove(struct cpe_platform_iterator *it, struct cpe_lang_model *parent); 00293 void cpe_platform_iterator_reset(struct cpe_platform_iterator *it); 00294 00299 struct cpe_lang_model *cpe_lang_model_new(void); 00300 00305 struct cpe_testexpr *cpe_testexpr_new(void); 00306 00311 struct cpe_platform *cpe_platform_new(void); 00312 00318 struct cpe_testexpr * cpe_testexpr_clone(struct cpe_testexpr * old_expr); 00319 00324 void cpe_testexpr_free(struct cpe_testexpr *expr); 00325 00330 void cpe_testexpr_iterator_reset(struct cpe_testexpr_iterator *it); 00331 00336 void cpe_lang_model_free(struct cpe_lang_model *platformspec); 00337 00342 void cpe_platform_free(struct cpe_platform *platform); 00343 00344 /************************************************************/ 00355 const char * cpe_lang_model_supported(void); 00356 00363 OSCAP_DEPRECATED(char * cpe_lang_model_detect_version(const char* file)); 00364 00372 bool cpe_platform_match_cpe(struct cpe_name **cpe, size_t n, const struct cpe_platform *platform); 00373 00374 /************************************************************/ 00383 OSCAP_DEPRECATED(struct cpe_lang_model *cpe_lang_model_import(const char *file)); 00384 00389 struct cpe_lang_model *cpe_lang_model_import_source(struct oscap_source *source); 00390 00396 bool cpe_lang_model_set_origin_file(struct cpe_lang_model* lang_model, const char* origin_file); 00397 00405 const char* cpe_lang_model_get_origin_file(const struct cpe_lang_model* lang_model); 00406 00413 void cpe_lang_model_export(const struct cpe_lang_model *spec, const char *file); 00414 00419 #endif /* _CPELANG_H_ */
1.7.3