check_engine_plugin.h
Go to the documentation of this file.
/*
* Copyright 2013 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
*
*/
#ifndef OPENSCAP_CHECK_ENGINE_PLUGIN_H_
#define OPENSCAP_CHECK_ENGINE_PLUGIN_H_
#include "xccdf_policy.h"
struct check_engine_plugin_def
{
int _reserved; // FIXME: version checking?
void *module_handle;
void *user_data;
// NB: path hint is the input file path, can be used for relative path resolution
// first arg: policy model to register with, second arg: path hint, third arg: user data
int (*register_fn)(struct xccdf_policy_model *, const char*, void**);
// first arg: policy model, second arg: user data
int (*cleanup_fn)(struct xccdf_policy_model *, void**);
// first arg: policy model, second arg: validate, third arg: path hint, fourth arg: user data
int (*export_results_fn)(struct xccdf_policy_model *, bool, const char*, void**);
// first arg: user data
const char *(*get_capabilities_fn)(void**);
};
struct check_engine_plugin_def *check_engine_plugin_load(const char* path);
void check_engine_plugin_unload(struct check_engine_plugin_def *plugin);
int check_engine_plugin_register(struct check_engine_plugin_def *plugin, struct xccdf_policy_model *model, const char *path_hint);
int check_engine_plugin_cleanup(struct check_engine_plugin_def *plugin, struct xccdf_policy_model *model);
int check_engine_plugin_export_results(struct check_engine_plugin_def *plugin, struct xccdf_policy_model *model, bool validate, const char *path_hint);
const char *check_engine_plugin_get_capabilities(struct check_engine_plugin_def *plugin);
typedef int (*check_engine_plugin_entry_fn) (struct check_engine_plugin_def*);
#define OPENSCAP_CHECK_ENGINE_PLUGIN_ENTRY OPENSCAP_CHECK_ENGINE_PLUGIN_ENTRY
const char * const *check_engine_plugin_get_known_plugins(void);
#endif