oval_probe_ext.h
/*
* Copyright 2010 Red Hat Inc., Durham, North Carolina.
* All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Authors:
* "Daniel Kopecek" <dkopecek@redhat.com>
*/
#ifndef OVAL_PROBE_EXT_H
#define OVAL_PROBE_EXT_H
#include <seap.h>
#include <pthread.h>
#include <stdbool.h>
#include "oval_probe_impl.h"
#include "oval_system_characteristics_impl.h"
#include "common/util.h"
typedef struct {
oval_subtype_t subtype;
int sd;
char *uri;
} oval_pd_t;
typedef struct {
oval_pd_t **memb;
size_t count;
SEAP_CTX_t *ctx;
} oval_pdtbl_t;
struct oval_pdsc {
oval_subtype_t type;
const char *name;
const char *file;
};
typedef struct oval_pdsc oval_pdsc_t;
struct oval_pext {
pthread_mutex_t lock;
bool do_init;
SEAP_CTX_t *sctx;
oval_pdsc_t *pdsc;
size_t pdsc_cnt;
oval_pdtbl_t *pdtbl;
char *probe_dir;
void *sess_ptr;
struct oval_syschar_model **model;
};
typedef struct oval_pext oval_pext_t;
oval_pext_t *oval_pext_new(void);
void oval_pext_free(oval_pext_t *pext);
int oval_probe_ext_init(oval_pext_t *pext);
int oval_probe_ext_eval(SEAP_CTX_t *ctx, oval_pd_t *pd, oval_pext_t *pext, struct oval_syschar *syschar, int flags);
int oval_probe_ext_reset(SEAP_CTX_t *ctx, oval_pd_t *pd, oval_pext_t *pext);
int oval_probe_ext_abort(SEAP_CTX_t *ctx, oval_pd_t *pd, oval_pext_t *pext);
int oval_probe_ext_handler(oval_subtype_t type, void *ptr, int act, ...);
int oval_probe_sys_handler(oval_subtype_t type, void *ptr, int act, ...);
extern const oval_pdsc_t OSCAP_GSYM(default_pdsc)[];
#endif /* OVAL_PROBE_EXT_H */