X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=execute.h;h=5099a82435595a6769d924dbcb2d7a725e9f7cfc;hp=51c2c0076085f50380a883755159b83d4dc306b1;hb=ee2b489421ce8b47c08fb42c598c5af47043a9f9;hpb=7d55e83536b296d452829d87a93c86f867859cba diff --git a/execute.h b/execute.h index 51c2c0076..5099a8243 100644 --- a/execute.h +++ b/execute.h @@ -3,6 +3,25 @@ #ifndef fooexecutehfoo #define fooexecutehfoo +/*** + This file is part of systemd. + + Copyright 2010 Lennart Poettering + + systemd 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. + + systemd 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 + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with systemd; If not, see . +***/ + typedef struct ExecStatus ExecStatus; typedef struct ExecCommand ExecCommand; typedef struct ExecContext ExecContext; @@ -14,11 +33,13 @@ typedef struct ExecContext ExecContext; #include #include +struct CGroupBonding; + #include "list.h" #include "util.h" /* Abstract namespace! */ -#define LOGGER_SOCKET "/systemd/logger" +#define LOGGER_SOCKET "/org/freedesktop/systemd1/logger" typedef enum ExecOutput { EXEC_OUTPUT_CONSOLE, @@ -70,12 +91,15 @@ struct ExecContext { bool cpu_affinity_set:1; bool timer_slack_ns_set:1; + bool cpu_sched_reset_on_fork; + bool non_blocking; + bool new_session; + ExecInput input; ExecOutput output; int syslog_priority; char *syslog_identifier; - /* FIXME: all privs related settings need to be enforced */ cap_t capabilities; int secure_bits; uint64_t capability_bounding_set_drop; @@ -115,16 +139,27 @@ typedef enum ExitStatus { EXIT_SIGNAL_MASK, EXIT_INPUT, EXIT_OUTPUT, - EXIT_CHROOT, + EXIT_CHROOT, /* 210 */ EXIT_PGID, EXIT_IOPRIO, EXIT_TIMERSLACK, EXIT_SECUREBITS, EXIT_SETSCHEDULER, - EXIT_CPUAFFINITY + EXIT_CPUAFFINITY, + EXIT_GROUP, + EXIT_USER, + EXIT_CAPABILITIES, + EXIT_CGROUP, /* 220 */ + EXIT_SETSID } ExitStatus; -int exec_spawn(const ExecCommand *command, const ExecContext *context, int *fds, unsigned n_fds, pid_t *ret); +int exec_spawn(const ExecCommand *command, + const ExecContext *context, + int *fds, unsigned n_fds, + bool apply_permissions, + bool apply_chroot, + struct CGroupBonding *cgroup_bondings, + pid_t *ret); void exec_command_free_list(ExecCommand *c); void exec_command_free_array(ExecCommand **c, unsigned n); @@ -132,6 +167,7 @@ void exec_command_free_array(ExecCommand **c, unsigned n); char *exec_command_line(ExecCommand *c); void exec_command_dump(ExecCommand *c, FILE *f, const char *prefix); void exec_command_dump_list(ExecCommand *c, FILE *f, const char *prefix); +void exec_command_append_list(ExecCommand **l, ExecCommand *e); void exec_context_init(ExecContext *c); void exec_context_done(ExecContext *c);