2
* lxc: linux Container library
4
* (C) Copyright IBM Corp. 2007, 2008
7
* Daniel Lezcano <dlezcano at fr.ibm.com>
9
* This library is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU Lesser General Public
11
* License as published by the Free Software Foundation; either
12
* version 2.1 of the License, or (at your option) any later version.
14
* This library is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
* Lesser General Public License for more details.
19
* You should have received a copy of the GNU Lesser General Public
20
* License along with this library; if not, write to the Free Software
21
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
29
#include <sys/types.h>
31
#include <sys/param.h>
38
fprintf(stderr, "%s <command>\n", basename(cmd));
39
fprintf(stderr, "\t -n <name> : name of the container\n");
40
fprintf(stderr, "\t [-f <confile>] : path of the configuration file\n");
44
int main(int argc, char *argv[])
46
char *name = NULL, *file = NULL;
48
char path[MAXPATHLEN];
53
struct lxc_conf lxc_conf;
55
while ((opt = getopt(argc, argv, "f:n:")) != -1) {
68
if (!name || !argv[optind] || !strlen(argv[optind]))
73
if (lxc_conf_init(&lxc_conf)) {
74
fprintf(stderr, "failed to initialize the configuration\n");
78
if (file && lxc_config_read(file, &lxc_conf)) {
79
fprintf(stderr, "invalid configuration file\n");
83
snprintf(path, MAXPATHLEN, LXCPATH "/%s", name);
84
if (access(path, R_OK)) {
85
if (lxc_create(name, &lxc_conf)) {
86
fprintf(stderr, "failed to create the container '%s'\n", name);
92
/* lxc-init --mount-procfs -- .... */
93
args = malloc((argc + 3)*sizeof(*args));
95
fprintf(stderr, "failed to allocate memory for '%s'\n", name);
100
args[nbargs++] = LXCLIBEXECDIR "/lxc-init";
101
args[nbargs++] = "--mount-procfs";
102
args[nbargs++] = "--";
104
for (opt = 0; opt < argc; opt++)
105
args[nbargs++] = argv[optind++];
107
ret = lxc_start(name, args);
109
fprintf(stderr, "%s\n", lxc_strerror(ret));
116
if (lxc_destroy(name)) {
117
fprintf(stderr, "failed to destroy '%s'\n", name);