}
/*---------------------------------------------------------------------------*/
-extern int lxc_log_init(const char *file, int priority, const char *prefix)
+extern int lxc_log_init(const char *file, const char *priority,
+ const char *prefix)
{
- lxc_log_category_lxc.priority = priority;
+ int lxc_priority = LXC_LOG_PRIORITY_ERROR;
+
+ if (priority) {
+ lxc_priority = lxc_log_priority_to_int(priority);
+
+ if (lxc_priority == LXC_LOG_PRIORITY_NOTSET) {
+ ERROR("invalid log priority %s", priority);
+ return -1;
+ }
+ }
+
+ lxc_log_category_lxc.priority = lxc_priority;
if (prefix)
lxc_log_setprefix(prefix);
ERROR("%s - " format "\n", strerror(errno), ##__VA_ARGS__); \
} while (0)
+extern int lxc_log_init(const char *file, const char *priority,
+ const char *prefix);
#endif
{
fprintf(stderr, "%s <subsystem> [value]\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
{
int opt;
char *name = NULL, *subsystem = NULL, *value = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
int nbargs = 0;
- while ((opt = getopt(argc, argv, "n:")) != -1) {
+ while ((opt = getopt(argc, argv, "n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
nbargs++;
if (!name || (argc-optind) < 1)
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
if ((argc -optind) >= 1)
subsystem = argv[optind];
{
fprintf(stderr, "%s <statefile>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
{
int opt;
char *name = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
int stop = 0;
int nbargs = 0;
int ret = 1;
- while ((opt = getopt(argc, argv, "sn:")) != -1) {
+ while ((opt = getopt(argc, argv, "sn:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
case 's':
stop = 1;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
nbargs++;
if (!argv[1])
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return -1;
+
if (lxc_freeze(name))
return -1;
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
fprintf(stderr, "\t [-t <tty#>] : tty number\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
char *name = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
int opt;
int nbargs = 0;
int master = -1;
int err = LXC_ERROR_INTERNAL;
struct termios tios, oldtios;
- while ((opt = getopt(argc, argv, "t:n:")) != -1) {
+ while ((opt = getopt(argc, argv, "t:n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
case 't':
ttynum = atoi(optarg);
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
nbargs++;
if (!name)
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
/* Get current termios */
if (tcgetattr(0, &tios)) {
ERROR("failed to get current terminal settings : %s",
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
fprintf(stderr, "\t -f <confile> : path of the configuration file\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
const char *name = NULL, *file = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
struct lxc_conf lxc_conf;
int err, opt;
- while ((opt = getopt(argc, argv, "f:n:")) != -1) {
+ while ((opt = getopt(argc, argv, "f:n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
case 'f':
file = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
}
if (!name)
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
+ if (lxc_conf_init(&lxc_conf))
+ return 1;
if (file && lxc_config_read(file, &lxc_conf))
return 1;
{
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
char *name = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
int opt;
int nbargs = 0;
int err;
- while ((opt = getopt(argc, argv, "n:")) != -1) {
+ while ((opt = getopt(argc, argv, "n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
nbargs++;
if (!name)
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
err = lxc_destroy(name);
if (err)
return 1;
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
fprintf(stderr, "\t [-f <confile>] : path of the configuration file\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
- char *name = NULL, *file = NULL;
+ const char *name = NULL, *file = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
static char **args;
char path[MAXPATHLEN];
int opt;
int ret = 1;
struct lxc_conf lxc_conf;
- while ((opt = getopt(argc, argv, "f:n:")) != -1) {
+ while ((opt = getopt(argc, argv, "f:n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
case 'f':
file = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
nbargs++;
argc -= nbargs;
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ goto out;
+
if (lxc_conf_init(&lxc_conf))
goto out;
{
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
char *name = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
int opt;
int nbargs = 0;
- while ((opt = getopt(argc, argv, "n:")) != -1) {
+ while ((opt = getopt(argc, argv, "n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
nbargs++;
if (!name)
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
if (lxc_freeze(name))
return 1;
{
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
char *name = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
int opt, state, nbargs = 0;
- while ((opt = getopt(argc, argv, "n:")) != -1) {
+ while ((opt = getopt(argc, argv, "n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
nbargs++;
if (!name)
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
state = lxc_getstate(name);
if (state < 0)
return 1;
{
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container or regular expression\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
char *name = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
char *regexp;
struct lxc_msg msg;
regex_t preg;
int fd, opt;
- while ((opt = getopt(argc, argv, "n:")) != -1) {
+ while ((opt = getopt(argc, argv, "n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
}
if (!name)
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
regexp = malloc(strlen(name) + 3);
sprintf(regexp, "^%s$", name);
{
fprintf(stderr, "%s <statefile>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
char *name = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
int opt, nbargs = 0;
- while ((opt = getopt(argc, argv, "n:")) != -1) {
+ while ((opt = getopt(argc, argv, "n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
nbargs++;
if (!name)
usage(argv[0]);
- if (!argv[1])
+ if (!argv[optind])
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
if (lxc_restart(name, argv[1], 0)) {
ERROR("failed to restart %s", name);
return 1;
{
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
char *name = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
char **args;
int opt, err = LXC_ERROR_INTERNAL, nbargs = 0;
struct termios tios;
'\0',
};
- while ((opt = getopt(argc, argv, "n:")) != -1) {
+ while ((opt = getopt(argc, argv, "n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
nbargs++;
if (!name)
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
if (tcgetattr(0, &tios)) {
ERROR("failed to get current terminal settings : %s",
strerror(errno));
{
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
char *name = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
int opt, err, nbargs = 0;
- while ((opt = getopt(argc, argv, "n:")) != -1) {
+ while ((opt = getopt(argc, argv, "n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
nbargs++;
if (!name)
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
err = lxc_stop(name);
if (err) {
fprintf(stderr, "%s\n", lxc_strerror(err));
{
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
char *name = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
int opt, nbargs = 0;
- while ((opt = getopt(argc, argv, "n:")) != -1) {
+ while ((opt = getopt(argc, argv, "n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
nbargs++;
if (!name)
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
if (lxc_unfreeze(name))
return 1;
"\t MOUNT, PID, UTSNAME, IPC, USER, NETWORK\n");
fprintf(stderr, "\t -u <id> : new id to be set if -s USER is specified\n");
fprintf(stderr, "\t if -f or -s PID is specified, <command> is mandatory)\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int ret;
char *namespaces = NULL;
char **args;
+ const char *log_file = NULL, *log_priority = NULL;
long flags = 0;
uid_t uid = -1; /* valid only if (flags & CLONE_NEWUSER) */
pid_t pid;
- while ((opt = getopt(argc, argv, "fs:u:")) != -1) {
+ while ((opt = getopt(argc, argv, "fs:u:o:l:")) != -1) {
switch (opt) {
case 's':
namespaces = optarg;
case 'f':
hastofork = 1;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
}
args = &argv[optind];
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return 1;
+
ret = lxc_fill_namespace_flags(namespaces, &flags);
if (ret)
usage(argv[0]);
fprintf(stderr, "\t -n <name> : name of the container\n");
fprintf(stderr, "\t -s <states> : ORed states to wait for STOPPED, " \
"STARTING, RUNNING, STOPPING, ABORTING, FREEZING, FROZEN\n");
+ fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
+ fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
_exit(1);
}
int main(int argc, char *argv[])
{
char *name = NULL, *states = NULL;
+ const char *log_file = NULL, *log_priority = NULL;
struct lxc_msg msg;
int s[MAX_STATE] = { }, fd, opt;
- while ((opt = getopt(argc, argv, "s:n:")) != -1) {
+ while ((opt = getopt(argc, argv, "s:n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
case 's':
states = optarg;
break;
+ case 'o':
+ log_file = optarg;
+ break;
+ case 'l':
+ log_priority = optarg;
+ break;
}
}
if (!name || !states)
usage(argv[0]);
+ if (lxc_log_init(log_file, log_priority, basename(argv[0])))
+ return -1;
+
if (fillwaitedstates(states, s)) {
usage(argv[0]);
}