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, const SEXP_t *item_list);
00278 SEXP_t *_probe_cobj_get_items(const SEXP_t *cobj);
00279 oval_syschar_collection_flag_t _probe_cobj_get_flag(const SEXP_t *cobj);
00280 oval_syschar_collection_flag_t _probe_cobj_combine_flags(oval_syschar_collection_flag_t f1,
00281 oval_syschar_collection_flag_t f2,
00282 oval_setobject_operation_t op);
00283
00284
00285
00286
00287
00296 SEXP_t *probe_ent_creat(const char *name, SEXP_t * attrs, SEXP_t * val, ...);
00297
00305 SEXP_t *probe_ent_creat1(const char *name, SEXP_t * attrs, SEXP_t * val);
00306
00314 SEXP_t *probe_ent_attr_add(SEXP_t * ent, const char *name, SEXP_t * val);
00315
00321 SEXP_t *probe_ent_getval(const SEXP_t * ent);
00322
00330 int probe_ent_getvals(const SEXP_t * ent, SEXP_t ** res);
00331
00337 SEXP_t *probe_ent_getattrval(const SEXP_t * ent, const char *name);
00338
00344 bool probe_ent_attrexists(const SEXP_t * ent, const char *name);
00345
00351 int probe_ent_setdatatype(SEXP_t * ent, oval_datatype_t type);
00352
00357 oval_datatype_t probe_ent_getdatatype(const SEXP_t * ent);
00358
00364 int probe_ent_setmask(SEXP_t * ent, bool mask);
00365
00370 bool probe_ent_getmask(const SEXP_t * ent);
00371
00377 int probe_ent_setstatus(SEXP_t * ent, oval_syschar_status_t status);
00378
00383 oval_syschar_status_t probe_ent_getstatus(const SEXP_t * ent);
00384
00389 char *probe_ent_getname(const SEXP_t * ent);
00390
00398 size_t probe_ent_getname_r(const SEXP_t * ent, char *buffer, size_t buflen);
00399
00404 void probe_free(SEXP_t * obj);
00405
00406 #define PROBE_EINVAL 1
00407 #define PROBE_ENOELM 2
00408 #define PROBE_ENOVAL 3
00409 #define PROBE_ENOATTR 4
00410 #define PROBE_EINIT 5
00411 #define PROBE_ENOMEM 6
00412 #define PROBE_EOPNOTSUPP 7
00413 #define PROBE_ERANGE 8
00414 #define PROBE_EDOM 9
00415 #define PROBE_EFAULT 10
00416 #define PROBE_EACCES 11
00417 #define PROBE_ESETEVAL 12
00418 #define PROBE_ENOENT 13
00419 #define PROBE_EFATAL 254
00420 #define PROBE_EUNKNOWN 255
00422 #define OVAL_STATUS_UNKNOWN SYSCHAR_STATUS_UNKNOWN
00423 #define OVAL_STATUS_ERROR SYSCHAR_STATUS_ERROR
00424 #define OVAL_STATUS_EXISTS SYSCHAR_STATUS_EXISTS
00425 #define OVAL_STATUS_DOESNOTEXIST SYSCHAR_STATUS_DOES_NOT_EXIST
00426 #define OVAL_STATUS_NOTCOLLECTED SYSCHAR_STATUS_NOT_COLLECTED
00427
00428 #define PROBECMD_STE_FETCH 1
00429 #define PROBECMD_OBJ_EVAL 2
00430 #define PROBECMD_RESET 3
00432 void *probe_init(void) __attribute__ ((unused));
00433 void probe_fini(void *) __attribute__ ((unused));
00434 SEXP_t *probe_main(SEXP_t *, int *, void *) __attribute__ ((nonnull(1, 2)));
00435
00436 #endif