00001
00025 #ifndef __LXC_ATTACH_OPTIONS_H
00026 #define __LXC_ATTACH_OPTIONS_H
00027
00028 #include <sys/types.h>
00029
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033
00037 typedef enum lxc_attach_env_policy_t {
00038 LXC_ATTACH_KEEP_ENV,
00039 LXC_ATTACH_CLEAR_ENV
00040 } lxc_attach_env_policy_t;
00041
00042 enum {
00043
00044 LXC_ATTACH_MOVE_TO_CGROUP = 0x00000001,
00045 LXC_ATTACH_DROP_CAPABILITIES = 0x00000002,
00046 LXC_ATTACH_SET_PERSONALITY = 0x00000004,
00047 LXC_ATTACH_LSM_EXEC = 0x00000008,
00048
00049
00050 LXC_ATTACH_REMOUNT_PROC_SYS = 0x00010000,
00051 LXC_ATTACH_LSM_NOW = 0x00020000,
00052
00053
00054
00055
00056
00057
00058 LXC_ATTACH_DEFAULT = 0x0000FFFF
00059 };
00060
00062 #define LXC_ATTACH_LSM (LXC_ATTACH_LSM_EXEC | LXC_ATTACH_LSM_NOW)
00063
00072 typedef int (*lxc_attach_exec_t)(void* payload);
00073
00077 typedef struct lxc_attach_options_t {
00079 int attach_flags;
00080
00082 int namespaces;
00083
00087 long personality;
00088
00093 char* initial_cwd;
00094
00100 uid_t uid;
00101
00107 gid_t gid;
00108
00110 lxc_attach_env_policy_t env_policy;
00111
00113 char** extra_env_vars;
00114
00118 char** extra_keep_env;
00119
00128 int stdin_fd;
00129 int stdout_fd;
00130 int stderr_fd;
00132 } lxc_attach_options_t;
00133
00135 #define LXC_ATTACH_OPTIONS_DEFAULT \
00136 { \
00137 LXC_ATTACH_DEFAULT, \
00138 -1, \
00139 -1, \
00140 NULL, \
00141 (uid_t)-1, \
00142 (gid_t)-1, \
00143 LXC_ATTACH_KEEP_ENV, \
00144 NULL, \
00145 NULL, \
00146 0, 1, 2 \
00147 }
00148
00152 typedef struct lxc_attach_command_t {
00153 char* program;
00154 char** argv;
00155 } lxc_attach_command_t;
00156
00164 extern int lxc_attach_run_command(void* payload);
00165
00173 extern int lxc_attach_run_shell(void* payload);
00174
00175 #ifdef __cplusplus
00176 }
00177 #endif
00178
00179 #endif