#define VC_IATTR_ADMIN 0x00000001u
#define VC_IATTR_WATCH 0x00000002u
#define VC_IATTR_HIDE 0x00000004u
-#define VC_IATTR_FLAGS 0x00000007u
+#define VC_IATTR_WRITE 0x00000008u
+#define VC_IATTR_FLAGS 0x0000000fu
#define VC_IATTR_BARRIER 0x00010000u
#define VC_IATTR_IUNLINK 0x00020000u
#define VC_VXF_PROLIFIC (1ULL<<49)
#define VC_VXF_IGNEG_NICE (1ULL<<52)
+#define VC_VXF_IGNEG_IONICE (1ULL<<53)
// the ccapabilities
#define VC_NXF_SINGLE_IP 0x00000100ull
#define VC_NXF_LBACK_REMAP 0x00000200ull
+#define VC_NXF_LBACK_ALLOW 0x00000400ull
#define VC_NXF_HIDE_NETIF 0x02000000ull
#define VC_NXF_HIDE_LBACK 0x04000000ull
// the network capabilities
+#define VC_NXC_TUN_CREATE 0x00000001ull
+
#define VC_NXC_RAW_ICMP 0x00000100ull
#ifndef CLONE_NEWUSER
# define CLONE_NEWUSER 0x10000000
#endif
+#ifndef CLONE_NEWPID
+# define CLONE_NEWPID 0x20000000
+#endif
+#ifndef CLONE_NEWNET
+# define CLONE_NEWNET 0x40000000
+#endif
#define VC_BAD_PERSONALITY ((uint_least32_t)(-1))
/* namespace related functions */
int vc_enter_namespace(xid_t xid, uint_least64_t mask);
int vc_set_namespace(xid_t xid, uint_least64_t mask);
- int vc_cleanup_namespace();
- uint_least64_t vc_get_space_mask();
+ int vc_cleanup_namespace(void);
+ uint_least64_t vc_get_space_mask(void);
+ uint_least64_t vc_get_space_default(void);
/* disk limit related things */
vcFEATURE_COMPAT, vcFEATURE_MIGRATE, vcFEATURE_NAMESPACE,
vcFEATURE_SCHED, vcFEATURE_VINFO, vcFEATURE_VHI,
vcFEATURE_VSHELPER0, vcFEATURE_VSHELPER, vcFEATURE_VWAIT,
- vcFEATURE_VNET, vcFEATURE_VSTAT, vcFEATURE_PPTAG, }
+ vcFEATURE_VNET, vcFEATURE_VSTAT, vcFEATURE_PPTAG,
+ vcFEATURE_PIDSPACE, vcFEATURE_SPACES, vcFEATURE_PERSISTENT,
+ }
vcFeatureSet;
bool vc_isSupported(vcFeatureSet) VC_ATTR_CONST;
int vc_compareVserverById(char const *lhs, vcCfgStyle lhs_style,
char const *rhs, vcCfgStyle rhs_style);
+
+ void vc_exitLikeProcess(int pid, int ret) VC_ATTR_NORETURN;
#define vcSKEL_INTERFACES 1u
#define vcSKEL_PKGMGMT 2u