00001
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057 #pragma once
00058 #ifndef PROBE_API_H
00059 #define PROBE_API_H
00060
00061 #include <seap.h>
00062 #include <stdarg.h>
00063 #include <stdint.h>
00064 #include <stdbool.h>
00065 #include <pthread.h>
00066 #include <oval_definitions.h>
00067 #include <oval_system_characteristics.h>
00068 #include <oval_results.h>
00069
00070
00071
00072
00073
00078 SEXP_t *probe_item_build(const char *fmt, ...);
00079
00080
00092 SEXP_t *probe_item_creat(const char *name, SEXP_t * attrs, ...);
00093
00099 SEXP_t *probe_item_new(const char *name, SEXP_t * attrs);
00100
00108 SEXP_t *probe_item_attr_add(SEXP_t * item, const char *name, SEXP_t * val);
00109
00118 SEXP_t *probe_item_ent_add(SEXP_t * item, const char *name, SEXP_t * attrs, SEXP_t * val);
00119
00125 int probe_item_setstatus(SEXP_t * obj, oval_syschar_status_t status);
00126
00134 int probe_itement_setstatus(SEXP_t * obj, const char *name, uint32_t n, oval_syschar_status_t status);
00135
00139 struct id_desc_t;
00140
00146 SEXP_t *probe_item_newid(struct id_desc_t *id_desc);
00147
00152 void probe_item_resetidctr(struct id_desc_t *id_desc);
00153
00154 #define probe_item_getent(item, name, n) probe_obj_getent (item, name, n)
00155
00156
00157
00158
00159
00167 SEXP_t *probe_attr_creat(const char *name, const SEXP_t * val, ...);
00168
00169
00170
00171
00172
00177 SEXP_t *probe_obj_build(const char *fmt, ...);
00178
00190 SEXP_t *probe_obj_creat(const char *name, SEXP_t * attrs, ...);
00191
00198 SEXP_t *probe_obj_new(const char *name, SEXP_t * attrs);
00199
00206 SEXP_t *probe_obj_getent(const SEXP_t * obj, const char *name, uint32_t n);
00207
00215 SEXP_t *probe_obj_getentval(const SEXP_t * obj, const char *name, uint32_t n);
00216
00226 int probe_obj_getentvals(const SEXP_t * obj, const char *name, uint32_t n, SEXP_t ** res);
00227
00233 SEXP_t *probe_obj_getattrval(const SEXP_t * obj, const char *name);
00234
00240 bool probe_obj_attrexists(const SEXP_t * obj, const char *name);
00241
00247 int probe_obj_setstatus(SEXP_t * obj, oval_syschar_status_t status);
00248
00256 int probe_objent_setstatus(SEXP_t * obj, const char *name, uint32_t n, oval_syschar_status_t status);
00257
00262 char *probe_obj_getname(const SEXP_t * obj);
00263
00271 size_t probe_obj_getname_r(const SEXP_t * obj, char *buffer, size_t buflen);
00272
00273
00274
00275
00276
00277 SEXP_t *probe_cobj_new(oval_syschar_collection_flag_t flag, SEXP_t *msg_list, SEXP_t *item_list);
00278 int probe_cobj_add_msg(SEXP_t *cobj, const SEXP_t *msg);
00279 SEXP_t *probe_cobj_get_msgs(const SEXP_t *cobj);
00280 int probe_cobj_add_item(SEXP_t *cobj, const SEXP_t *item);
00281 SEXP_t *probe_cobj_get_items(const SEXP_t *cobj);
00282 void probe_cobj_set_flag(SEXP_t *cobj, oval_syschar_collection_flag_t flag);
00283 oval_syschar_collection_flag_t probe_cobj_get_flag(const SEXP_t *cobj);
00284 oval_syschar_collection_flag_t probe_cobj_combine_flags(oval_syschar_collection_flag_t f1,
00285 oval_syschar_collection_flag_t f2,
00286 oval_setobject_operation_t op);
00287 oval_syschar_collection_flag_t probe_cobj_compute_flag(SEXP_t *cobj);
00288
00289
00290
00291
00292
00298 SEXP_t *probe_msg_creat(oval_message_level_t level, char *message);
00299
00306 SEXP_t *probe_msg_creatf(oval_message_level_t level, const char *fmt, ...) __attribute__((format(printf, 2, 3), nonnull(2)));
00307
00308
00309
00310
00311
00320 SEXP_t *probe_ent_creat(const char *name, SEXP_t * attrs, SEXP_t * val, ...);
00321
00329 SEXP_t *probe_ent_creat1(const char *name, SEXP_t * attrs, SEXP_t * val);
00330
00338 SEXP_t *probe_ent_attr_add(SEXP_t * ent, const char *name, SEXP_t * val);
00339
00345 SEXP_t *probe_ent_getval(const SEXP_t * ent);
00346
00354 int probe_ent_getvals(const SEXP_t * ent, SEXP_t ** res);
00355
00361 SEXP_t *probe_ent_getattrval(const SEXP_t * ent, const char *name);
00362
00368 bool probe_ent_attrexists(const SEXP_t * ent, const char *name);
00369
00370 int probe_itement_setdatatype(SEXP_t *item, const char *ent_name, oval_datatype_t type);
00376 int probe_ent_setdatatype(SEXP_t * ent, oval_datatype_t type);
00377
00382 oval_datatype_t probe_ent_getdatatype(const SEXP_t * ent);
00383
00389 int probe_ent_setmask(SEXP_t * ent, bool mask);
00390
00395 bool probe_ent_getmask(const SEXP_t * ent);
00396
00402 int probe_ent_setstatus(SEXP_t * ent, oval_syschar_status_t status);
00403
00408 oval_syschar_status_t probe_ent_getstatus(const SEXP_t * ent);
00409
00414 char *probe_ent_getname(const SEXP_t * ent);
00415
00423 size_t probe_ent_getname_r(const SEXP_t * ent, char *buffer, size_t buflen);
00424
00429 void probe_free(SEXP_t * obj);
00430
00437 void probe_filebehaviors_canonicalize(SEXP_t **behaviors);
00438
00445 void probe_tfc54behaviors_canonicalize(SEXP_t **behaviors);
00446
00447 #define PROBE_EINVAL 1
00448 #define PROBE_ENOELM 2
00449 #define PROBE_ENOVAL 3
00450 #define PROBE_ENOATTR 4
00451 #define PROBE_EINIT 5
00452 #define PROBE_ENOMEM 6
00453 #define PROBE_EOPNOTSUPP 7
00454 #define PROBE_ERANGE 8
00455 #define PROBE_EDOM 9
00456 #define PROBE_EFAULT 10
00457 #define PROBE_EACCESS 11
00458 #define PROBE_ESETEVAL 12
00459 #define PROBE_ENOENT 13
00460 #define PROBE_ENOOBJ 14
00461 #define PROBE_ECONNABORTED 15
00462 #define PROBE_EFATAL 254
00463 #define PROBE_EUNKNOWN 255
00465 #define OVAL_STATUS_UNKNOWN SYSCHAR_STATUS_UNKNOWN
00466 #define OVAL_STATUS_ERROR SYSCHAR_STATUS_ERROR
00467 #define OVAL_STATUS_EXISTS SYSCHAR_STATUS_EXISTS
00468 #define OVAL_STATUS_DOESNOTEXIST SYSCHAR_STATUS_DOES_NOT_EXIST
00469 #define OVAL_STATUS_NOTCOLLECTED SYSCHAR_STATUS_NOT_COLLECTED
00470
00471 #define PROBECMD_STE_FETCH 1
00472 #define PROBECMD_OBJ_EVAL 2
00473 #define PROBECMD_RESET 3
00475 void *probe_init(void) __attribute__ ((unused));
00476 void probe_fini(void *) __attribute__ ((unused));
00477 int probe_main(SEXP_t *, SEXP_t *, void *, SEXP_t *) __attribute__ ((nonnull(1, 2)));
00478
00479 #define PROBE_VARREF_HANDLING 0
00480 #define PROBE_RESULT_CACHING 1
00481
00482 int probe_setoption(int option, ...);
00483
00484 bool probe_item_filtered(SEXP_t *item, SEXP_t *filters);
00485
00486 int probe_result_additem(SEXP_t *result, SEXP_t *item);
00487
00488 #endif