]> git.proxmox.com Git - mirror_lxc.git/blobdiff - src/lxc/conf.h
use same ifndef/define format for all headers
[mirror_lxc.git] / src / lxc / conf.h
index f272c91c4f209e396846ec90a583f0b1089d7eb4..2cfcb7c35ccf97cd556809989613640c9a223020 100644 (file)
@@ -20,8 +20,8 @@
  * 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"
 
@@ -31,9 +31,8 @@
 #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;
@@ -45,6 +44,7 @@ enum {
        LXC_NET_MACVLAN,
        LXC_NET_PHYS,
        LXC_NET_VLAN,
+       LXC_NET_NONE,
        LXC_NET_MAXCONFTYPE,
 };
 
@@ -88,8 +88,8 @@ struct ifla_veth {
 };
 
 struct ifla_vlan {
-       uint   flags;
-       uint   fmask;
+       unsigned int   flags;
+       unsigned int   fmask;
        unsigned short   vid;
        unsigned short   pad;
 };
@@ -164,8 +164,6 @@ struct id_map {
        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
@@ -221,6 +219,7 @@ struct lxc_rootfs {
        char *path;
        char *mount;
        char *pivot;
+       char *options;
 };
 
 /*
@@ -241,9 +240,16 @@ enum {
        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 */
 };
 
 /*
@@ -302,14 +308,15 @@ struct lxc_conf {
 
        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
 
@@ -322,6 +329,11 @@ struct lxc_conf {
        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,
@@ -337,6 +349,7 @@ extern void lxc_conf_free(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);
@@ -352,25 +365,26 @@ extern int lxc_clear_config_caps(struct lxc_conf *c);
 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