Switch branches/tags vzctl-4.5.1 vzctl-4.5.1-20130928-funtoo vzctl-4.5.1-20130923-funtoo vzctl-4.5 vzctl-4.4 vzctl-4.3.1 vzctl-4.3.1-funtoo vzctl-4.3 vzctl-4.2 vzctl-4.1.2 vzctl-4.1.1 vzctl-4.1 vzctl-4.0 vzctl-3.3 vzctl-3.3-r3-funtoo vzctl-3.3-r2-funtoo vzctl-3.3-r1-funtoo vzctl-3.2.1 vzctl-3.2 vzctl-3.1 vzctl- vzctl- vzctl- vzctl-3.0.30 vzctl- vzctl- vzctl- vzctl-3.0.29 vzctl- vzctl- vzctl- vzctl-3.0.28 vzctl-3.0.27 vzctl-3.0.27-r1-funtoo vzctl-3.0.27-funtoo vzctl- vzctl- vzctl- vzctl- vzctl-3.0.26 vzctl- vzctl- vzctl- vzctl-3.0.25 vzctl-3.0.25-r3-funtoo vzctl-3.0.25-r2-funtoo vzctl-3.0.25-r1-funtoo vzctl-3.0.25-funtoo vzctl- vzctl- vzctl-3.0.24 vzctl-3.0.24-r4-funtoo vzctl- vzctl- vzctl-3.0.23 vzctl-3.0.22 vzctl-3.0.21 vzctl-3.0.20 vzctl-3.0.19 vzctl-3.0.19-1 vzctl-3.0.18 vzctl-3.0.17 vzctl-3.0.17-1 vzctl-3.0.16 vzctl-3.0.15 vzctl-3.0.14 vzctl-3.0.13-1 vzctl-3.0.12-1 vzctl-3.0.11 vzctl-3.0.11-3 vzctl-3.0.11-2 vzctl-3.0.10 vzctl-3.0.9-1 vzctl-3.0.0-8 vzctl-3.0.0-7 vzctl-3.0.0-6 vzctl-3.0.0-5 master-4.5.1 master-4.1.2 master-4.1.1 master- master- master- master- master- master- master- master- 3.0.25-r2-funtoo
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
94 lines (81 sloc) 2.73 KB
* Copyright (C) 2000-2008, Parallels, Inc. All rights reserved.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#ifndef _MODULES_H_
#define _MODULES_H_
#include "types.h"
#include "res.h"
#define TYPE_CMD 0
#define TYPE_CONF 1
#define MOD_DIR PKGLIBDIR "/modules/"
#define MOD_INFO_SYM "vz_get_mod_info"
#define MOD_IDBITS 16
#define MOD2ID(id) (id << MOD_IDBITS)
#define MOD_PARAM2ID(m_id, p_id) \
(MOD2ID(m_id) | (0xffff & p_id))
#define PARAM2MOD(x) (x >> MOD_IDBITS)
#define GET_MOD_INFO(name) \
struct mod_info *vz_get_mod_info() \
{ \
return &name; \
typedef struct {
void *cfg;
void *opt;
} data_param;
struct mod_info {
void *handle;
char **actions;
int id;
char *desc;
data_param *(*alloc_data)(void);
int (*init)(data_param *data);
int (*parse_cfg)(envid_t veid, data_param *data, const char *name,
const char *rval);
int (*parse_opt)(envid_t veid, data_param *data, int opt,
const char *rval);
int (*store)(data_param *data, list_head_t *conf_head);
int (*setup)(vps_handler *h, envid_t veid, data_param *data,
int vps_state, int skip, vps_param *param);
int (*cleanup)(vps_handler *h, envid_t veid, data_param *data,
vps_param *param);
void (*free_data)(data_param *data);
struct option *(*get_opt)(data_param *data, const char *action);
const char *(*get_usage)();
struct mod {
char *fname;
data_param *data;
struct mod_info *mod_info;
struct mod_action {
int mod_count;
char *action;
struct mod *mod_list;
struct option *mod_make_opt(struct option *opt, struct mod_action *action,
const char *name);
int mod_save_config(struct mod_action *action, list_head_t *conf);
int mod_parse(envid_t veid, struct mod_action *action, const char *name,
int opt, const char *rval);
int mod_setup(vps_handler *h, envid_t veid, int vps_state, skipFlags skip,
struct mod_action *action, vps_param *param);
int mod_cleanup(vps_handler *h, envid_t veid, struct mod_action *action,
vps_param *param);
int is_mod_action(struct mod_info *info, const char *name);
void mod_print_usage(struct mod_action *action);
#endif /* _MODULES_H_ */