* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef _conf_h
-#define _conf_h
+#ifndef __LXC_CONF_H
+#define __LXC_CONF_H
#include "config.h"
#include <sys/types.h>
#include <stdbool.h>
-#include <lxc/list.h>
-
-#include <lxc/start.h> /* for lxc_handler */
+#include "list.h"
+#include "start.h" /* for lxc_handler */
#if HAVE_SCMP_FILTER_CTX
typedef void * scmp_filter_ctx;
LXC_NET_MACVLAN,
LXC_NET_PHYS,
LXC_NET_VLAN,
+ LXC_NET_NONE,
LXC_NET_MAXCONFTYPE,
};
};
struct ifla_vlan {
- uint flags;
- uint fmask;
+ unsigned int flags;
+ unsigned int fmask;
unsigned short vid;
unsigned short pad;
};
unsigned long hostid, nsid, range;
};
-extern int lxc_free_idmap(struct lxc_list *idmap);
-
/*
* Defines a structure containing a pty information for
* virtualizing a tty
char *path;
char *mount;
char *pivot;
+ char *options;
};
/*
LXC_AUTO_CGROUP_FULL_RO = 0x040, /* /sys/fs/cgroup (full mount, read-only) */
LXC_AUTO_CGROUP_FULL_RW = 0x050, /* /sys/fs/cgroup (full mount, read-write) */
LXC_AUTO_CGROUP_FULL_MIXED = 0x060, /* /sys/fs/cgroup (full mount, parent r/o, own r/w) */
- LXC_AUTO_CGROUP_MASK = 0x070,
-
- LXC_AUTO_ALL_MASK = 0x07F, /* all known settings */
+ /* These are defined in such a way as to retain
+ * binary compatibility with earlier versions of
+ * this code. If the previous mask is applied,
+ * both of these will default back to the _MIXED
+ * variants, which is safe. */
+ LXC_AUTO_CGROUP_NOSPEC = 0x0B0, /* /sys/fs/cgroup (partial mount, r/w or mixed, depending on caps) */
+ LXC_AUTO_CGROUP_FULL_NOSPEC = 0x0E0, /* /sys/fs/cgroup (full mount, r/w or mixed, depending on caps) */
+ LXC_AUTO_CGROUP_MASK = 0x0F0,
+
+ LXC_AUTO_ALL_MASK = 0x0FF, /* all known settings */
};
/*
char *lsm_aa_profile;
char *lsm_se_context;
- int lsm_umount_proc;
+ int tmp_umount_proc;
char *seccomp; // filename with the seccomp rules
#if HAVE_SCMP_FILTER_CTX
scmp_filter_ctx *seccomp_ctx;
#endif
int maincmd_fd;
int autodev; // if 1, mount and fill a /dev at start
- int stopsignal; // signal used to stop container
+ int haltsignal; // signal used to halt container
+ int stopsignal; // signal used to hard stop container
int kmsg; // if 1, create /dev/kmsg symlink
char *rcfile; // Copy of the top level rcfile we read
int loglevel; // loglevel as specifed in config (if any)
int inherit_ns_fd[LXC_NS_MAX];
+
+ int start_auto;
+ int start_delay;
+ int start_order;
+ struct lxc_list groups;
};
int run_lxc_hooks(const char *name, char *hook, struct lxc_conf *conf,
extern int pin_rootfs(const char *rootfs);
+extern int lxc_requests_empty_network(struct lxc_handler *handler);
extern int lxc_create_network(struct lxc_handler *handler);
extern void lxc_delete_network(struct lxc_handler *handler);
extern int lxc_assign_network(struct lxc_list *networks, pid_t pid);
extern int lxc_clear_config_keepcaps(struct lxc_conf *c);
extern int lxc_clear_cgroups(struct lxc_conf *c, const char *key);
extern int lxc_clear_mount_entries(struct lxc_conf *c);
+extern int lxc_clear_automounts(struct lxc_conf *c);
extern int lxc_clear_hooks(struct lxc_conf *c, const char *key);
extern int lxc_clear_idmaps(struct lxc_conf *c);
+extern int lxc_clear_groups(struct lxc_conf *c);
/*
* Configure the container from inside
*/
struct cgroup_process_info;
-extern int lxc_setup(const char *name, struct lxc_conf *lxc_conf,
- const char *lxcpath,
- struct cgroup_process_info *cgroup_info,
- void *data);
+extern int lxc_setup(struct lxc_handler *handler);
-extern void lxc_rename_phys_nics_on_shutdown(struct lxc_conf *conf);
+extern void lxc_rename_phys_nics_on_shutdown(int netnsfd, struct lxc_conf *conf);
-extern uid_t get_mapped_rootid(struct lxc_conf *conf);
-extern int find_unmapped_nsuid(struct lxc_conf *conf);
-extern int mapped_hostid(int id, struct lxc_conf *conf);
+extern int find_unmapped_nsuid(struct lxc_conf *conf, enum idtype idtype);
+extern int mapped_hostid(unsigned id, struct lxc_conf *conf, enum idtype idtype);
extern int chown_mapped_root(char *path, struct lxc_conf *conf);
extern int ttys_shift_ids(struct lxc_conf *c);
extern int userns_exec_1(struct lxc_conf *conf, int (*fn)(void *), void *data);
+extern int parse_mntopts(const char *mntopts, unsigned long *mntflags,
+ char **mntdata);
+extern void tmp_proc_unmount(struct lxc_conf *lxc_conf);
#endif