00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef PROBE_H
00023 #define PROBE_H
00024
00025 #include <sys/types.h>
00026 #include <unistd.h>
00027 #include <stdint.h>
00028 #include <stddef.h>
00029 #include <stdarg.h>
00030 #include <pthread.h>
00031 #include <seap.h>
00032 #include "ncache.h"
00033 #include "rcache.h"
00034 #include "icache.h"
00035 #include "probe-common.h"
00036 #include "option.h"
00037 #include "common/util.h"
00038
00039 typedef struct {
00040 pthread_rwlock_t rwlock;
00041 uint32_t flags;
00042
00043 char *name;
00044 pid_t pid;
00045
00046 void *probe_arg;
00047 int probe_exitcode;
00048
00049 SEAP_CTX_t *SEAP_ctx;
00050 int sd;
00052 pthread_t th_input;
00053 pthread_t th_signal;
00054
00055 rbt_t *workers;
00056 uint32_t max_threads;
00057 uint32_t max_chdepth;
00058
00059 probe_rcache_t *rcache;
00060 probe_ncache_t *ncache;
00061 probe_icache_t *icache;
00063 probe_option_t *option;
00064 size_t optcnt;
00065 } probe_t;
00066
00067 struct probe_ctx {
00068 SEXP_t *probe_in;
00069 SEXP_t *probe_out;
00070 SEXP_t *filters;
00071 probe_icache_t *icache;
00072 };
00073
00074 typedef enum {
00075 PROBE_OFFLINE_NONE = 0x00,
00076 PROBE_OFFLINE_CHROOT = 0x01,
00077 PROBE_OFFLINE_RPMDB = 0x02,
00078 PROBE_OFFLINE_ALL = 0x0f
00079 } probe_offline_flags;
00080
00081 extern pthread_barrier_t OSCAP_GSYM(th_barrier);
00082 extern probe_offline_flags OSCAP_GSYM(offline_mode);
00083 extern probe_offline_flags OSCAP_GSYM(offline_mode_supported);
00084 extern int OSCAP_GSYM(offline_mode_cobjflag);
00085
00086 #endif