X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=execute.h;h=8275d636fef1bbe1e9290fe26277352d213d47bb;hp=737973dad90e8fe112e380bd11d4aa27fa1ce4da;hb=6326a423e7d3df2062bf29a4e9710aeecac89411;hpb=451a074fd589fd90aff91fcf89b2e599b20ae6a0 diff --git a/execute.h b/execute.h index 737973dad..8275d636f 100644 --- a/execute.h +++ b/execute.h @@ -33,11 +33,13 @@ typedef struct ExecContext ExecContext; #include #include +struct CGroupBonding; + #include "list.h" #include "util.h" /* Abstract namespace! */ -#define LOGGER_SOCKET "/org/freedesktop.org/systemd1/logger" +#define LOGGER_SOCKET "/org/freedesktop/systemd1/logger" typedef enum ExecOutput { EXEC_OUTPUT_CONSOLE, @@ -57,7 +59,8 @@ typedef enum ExecInput { struct ExecStatus { pid_t pid; - usec_t timestamp; + usec_t start_timestamp; + usec_t exit_timestamp; int code; /* as in siginfo_t::si_code */ int status; /* as in sigingo_t::si_status */ }; @@ -91,13 +94,13 @@ struct ExecContext { 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; @@ -137,16 +140,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(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); @@ -154,12 +168,14 @@ 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); void exec_context_dump(ExecContext *c, FILE* f, const char *prefix); void exec_status_fill(ExecStatus *s, pid_t pid, int code, int status); +void exec_status_dump(ExecStatus *s, FILE *f, const char *prefix); const char* exec_output_to_string(ExecOutput i); int exec_output_from_string(const char *s);