Open SCAP Library
cpe_dict.h
Go to the documentation of this file.
1 
13 /*
14  * Copyright 2009 Red Hat Inc., Durham, North Carolina.
15  * All Rights Reserved.
16  *
17  * This library is free software; you can redistribute it and/or
18  * modify it under the terms of the GNU Lesser General Public
19  * License as published by the Free Software Foundation; either
20  * version 2.1 of the License, or (at your option) any later version.
21  *
22  * This library is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25  * Lesser General Public License for more details.
26  *
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  *
31  * Authors:
32  * Maros Barabas <mbarabas@redhat.com>
33  * Lukas Kuklinek <lkuklinek@redhat.com>
34  */
35 
36 #ifndef CPEDICT_H_
37 #define CPEDICT_H_
38 
39 #include "cpe_name.h"
40 #include "oscap_text.h"
41 
46 struct cpe_dict_model;
47 
52 struct cpe_item;
53 
58 struct cpe_vendor;
59 
64 struct cpe_generator;
65 
70 struct cpe_check;
71 
76 struct cpe_reference;
77 
82 struct cpe_item_metadata;
83 
88 struct cpe_product;
93 struct cpe_version;
98 struct cpe_update;
103 struct cpe_edition;
108 struct cpe_language;
109 
110 /************************************************************/
122 const char *cpe_item_metadata_get_modification_date(const struct cpe_item_metadata *item);
123 
128 const char *cpe_item_metadata_get_status(const struct cpe_item_metadata *item);
129 
134 const char *cpe_item_metadata_get_nvd_id(const struct cpe_item_metadata *item);
135 
140 const char *cpe_item_metadata_get_deprecated_by_nvd_id(const struct cpe_item_metadata *item);
141 
146 const char *cpe_check_get_system(const struct cpe_check *item);
147 
152 const char *cpe_check_get_href(const struct cpe_check *item);
153 
158 const char *cpe_check_get_identifier(const struct cpe_check *item);
159 
164 const char *cpe_reference_get_href(const struct cpe_reference *item);
165 
170 const char *cpe_reference_get_content(const struct cpe_reference *item);
171 
176 struct cpe_name *cpe_item_get_name(const struct cpe_item *item);
177 
182 struct cpe_name *cpe_item_get_deprecated(const struct cpe_item *item);
183 
188 const char *cpe_item_get_deprecation_date(const struct cpe_item *item);
189 
194 struct cpe_item_metadata *cpe_item_get_metadata(const struct cpe_item *item);
195 
200 struct cpe_reference_iterator *cpe_item_get_references(const struct cpe_item *item);
201 
206 struct cpe_check_iterator *cpe_item_get_checks(const struct cpe_item *item);
207 
212 struct oscap_text_iterator *cpe_item_get_titles(const struct cpe_item *item);
213 
218 struct oscap_text_iterator *cpe_item_get_notes(const struct cpe_item *item);
219 
224 const char *cpe_generator_get_product_name(const struct cpe_generator *item);
225 
230 const char *cpe_generator_get_product_version(const struct cpe_generator *item);
231 
236 const char *cpe_generator_get_schema_version(const struct cpe_generator *item);
237 
242 const char *cpe_generator_get_timestamp(const struct cpe_generator *item);
243 
255 int cpe_dict_model_get_base_version(const struct cpe_dict_model *item);
256 
261 bool cpe_dict_model_set_base_version(struct cpe_dict_model *item, int base_version);
262 
268 struct cpe_generator *cpe_dict_model_get_generator(const struct cpe_dict_model *item);
269 
274 struct cpe_item_iterator *cpe_dict_model_get_items(const struct cpe_dict_model *item);
275 
281 
286 const char *cpe_vendor_get_value(const struct cpe_vendor *item);
287 
292 struct oscap_text_iterator *cpe_vendor_get_titles(const struct cpe_vendor *item);
293 
298 struct cpe_product_iterator *cpe_vendor_get_products(const struct cpe_vendor *item);
299 
304 const char *cpe_product_get_value(const struct cpe_product *item);
305 
310 cpe_part_t cpe_product_get_part(const struct cpe_product *item);
311 
317 struct cpe_version_iterator *cpe_product_get_versions(const struct cpe_product *item);
318 
323 const char *cpe_version_get_value(const struct cpe_version *item);
324 
330 struct cpe_update_iterator *cpe_version_get_updates(const struct cpe_version *item);
331 
336 const char *cpe_update_get_value(const struct cpe_update *item);
337 
343 struct cpe_edition_iterator *cpe_update_get_editions(const struct cpe_update *item);
344 
349 const char *cpe_edition_get_value(const struct cpe_edition *item);
350 
357 
362 const char *cpe_language_get_value(const struct cpe_language *item);
363 
364 /************************************************************/
367 
368 void cpe_check_free(struct cpe_check *check);
370 void cpe_reference_free(struct cpe_reference *ref);
372 void cpe_vendor_free(struct cpe_vendor *vendor);
374 void cpe_product_free(struct cpe_product *product);
376 void cpe_version_free(struct cpe_version *version);
378 void cpe_update_free(struct cpe_update *update);
380 void cpe_edition_free(struct cpe_edition *edition);
382 void cpe_language_free(struct cpe_language *language);
384 void cpe_itemmetadata_free(struct cpe_item_metadata *meta);
386 void cpe_dict_model_free(struct cpe_dict_model *dict);
388 void cpe_generator_free(struct cpe_generator *generator);
390 void cpe_item_free(struct cpe_item *item);
391 
393 struct cpe_dict_model *cpe_dict_model_new(void);
395 struct cpe_generator *cpe_generator_new(void);
397 struct cpe_check *cpe_check_new(void);
399 struct cpe_reference *cpe_reference_new(void);
401 struct cpe_item *cpe_item_new(void);
403 struct cpe_vendor *cpe_vendor_new(void);
405 struct cpe_product *cpe_product_new(void);
407 struct cpe_version *cpe_version_new(void);
409 struct cpe_update *cpe_update_new(void);
411 struct cpe_edition *cpe_edition_new(void);
413 struct cpe_language *cpe_language_new(void);
416 
417 /************************************************************/
425 
426 bool cpe_item_set_deprecation_date(struct cpe_item *item, const char *new_deprecation_date);
427 
430  const char *new_modification_date);
431 
433 bool cpe_item_metadata_set_status(struct cpe_item_metadata *item_metadata, const char *new_status);
434 
436 bool cpe_item_metadata_set_nvd_id(struct cpe_item_metadata *item_metadata, const char *new_nvd_id);
437 
440  const char *new_deprecated_by_nvd_id);
441 
443 bool cpe_check_set_system(struct cpe_check *check, const char *new_system);
444 
446 bool cpe_check_set_href(struct cpe_check *check, const char *new_href);
447 
449 bool cpe_check_set_identifier(struct cpe_check *check, const char *new_identifier);
450 
452 bool cpe_reference_set_href(struct cpe_reference *reference, const char *new_href);
453 
455 bool cpe_reference_set_content(struct cpe_reference *reference, const char *new_content);
456 
458 bool cpe_generator_set_product_name(struct cpe_generator *generator, const char *new_product_name);
459 
461 bool cpe_generator_set_product_version(struct cpe_generator *generator, const char *new_product_version);
462 
464 bool cpe_generator_set_schema_version(struct cpe_generator *generator, const char *new_schema_version);
465 
467 bool cpe_generator_set_timestamp(struct cpe_generator *generator, const char *new_timestamp);
468 
470 bool cpe_vendor_set_value(struct cpe_vendor *vendor, const char *new_value);
471 
473 bool cpe_product_set_value(struct cpe_product *product, const char *new_value);
474 
476 bool cpe_product_set_part(struct cpe_product *product, cpe_part_t new_part);
477 
479 bool cpe_version_set_value(struct cpe_version *version, const char *new_value);
480 
482 bool cpe_update_set_value(struct cpe_update *update, const char *new_value);
483 
485 bool cpe_edition_set_value(struct cpe_edition *edition, const char *new_value);
486 
488 bool cpe_language_set_value(struct cpe_language *language, const char *new_value);
489 
490 /*
491  * Add functions
492  */
493 
495 bool cpe_item_add_reference(struct cpe_item *item, struct cpe_reference *new_reference);
496 
498 bool cpe_item_add_check(struct cpe_item *item, struct cpe_check *new_check);
499 
501 bool cpe_item_add_title(struct cpe_item *item, struct oscap_text *new_title);
502 
504 bool cpe_item_add_note(struct cpe_item *item, struct oscap_text *new_title);
505 
507 bool cpe_dict_model_add_vendor(struct cpe_dict_model *dict, struct cpe_vendor *new_vendor);
508 
510 bool cpe_vendor_add_title(struct cpe_vendor *vendor, struct oscap_text *new_title);
511 
513 bool cpe_vendor_add_product(struct cpe_vendor *vendor, struct cpe_product *new_product);
514 
516 bool cpe_product_add_version(struct cpe_product *product, struct cpe_version *new_version);
517 
519 bool cpe_version_add_update(struct cpe_version *version, struct cpe_update *new_update);
520 
522 bool cpe_update_add_edition(struct cpe_update *update, struct cpe_edition *new_edition);
523 
525 bool cpe_edition_add_language(struct cpe_edition *edition, struct cpe_language *new_language);
526 
527 
528 /************************************************************/
531 /************************************************************/
542 struct cpe_item_iterator;
543 
550 
557 
564 
569 
576 
583 
590 
597 
602 
608 struct cpe_check_iterator;
609 
616 
623 
630 
635 
641 struct cpe_vendor_iterator;
642 
649 
656 
663 
668 
674 struct cpe_product_iterator;
675 
682 
689 
696 
701 
707 struct cpe_version_iterator;
708 
715 
722 
729 
734 
740 struct cpe_update_iterator;
741 
748 
755 
762 
767 
773 struct cpe_edition_iterator;
774 
781 
788 
795 
800 
806 struct cpe_language_iterator;
807 
814 
821 
828 
833 
834 /************************************************************/
837 /************************************************************/
848 const char * cpe_dict_model_supported(void);
849 
855 char * cpe_dict_detect_version(const char* file);
856 
865 bool cpe_name_match_dict(struct cpe_name *cpe, struct cpe_dict_model *dict);
866 
875 bool cpe_name_match_dict_str(const char *cpe, struct cpe_dict_model *dict);
876 
886 bool cpe_name_applicable_dict(struct cpe_name *cpe, struct cpe_dict_model *dict, cpe_check_fn cb, void* usr);
887 
889 bool cpe_item_is_applicable(struct cpe_item* item, cpe_check_fn cb, void* usr);
890 
891 /************************************************************/
899 void cpe_dict_model_export(const struct cpe_dict_model *dict, const char *file);
900 
908 struct cpe_dict_model *cpe_dict_model_import(const char *file);
909 
915 bool cpe_dict_model_set_origin_file(struct cpe_dict_model* dict, const char* origin_file);
916 
924 const char* cpe_dict_model_get_origin_file(const struct cpe_dict_model* dict);
925 
930 #endif /* _CPEDICT_H_ */