#define VC_CAP_LEASE 28
#define VC_CAP_AUDIT_WRITE 29
#define VC_CAP_AUDIT_CONTROL 30
+#define VC_CAP_SETFCAP 31
+#define VC_CAP_MAC_OVERRIDE 32
+#define VC_CAP_MAC_ADMIN 33
#define VC_IMMUTABLE_FILE_FL 0x0000010lu
#define VC_IMMUTABLE_LINK_FL 0x0008000lu
#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_VXC_ADMIN_MAPPER 0x00200000ull
#define VC_VXC_ADMIN_CLOOP 0x00400000ull
+#define VC_VXC_KTHREAD 0x01000000ull
+
// the scheduler flags
#define VC_VXSM_FILL_RATE 0x0001
#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_NEWIPC
# define CLONE_NEWIPC 0x08000000
#endif
-
+#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))
uint16_t vna_flags;
uint16_t vna_prefix;
uint16_t vna_parent;
- union {
- struct {
- struct in_addr ip;
- struct in_addr mask;
- } ipv4;
- struct {
- struct in6_addr ip;
- struct in6_addr mask;
- } ipv6;
- } u;
-#define vna_v4_ip u.ipv4.ip
-#define vna_v4_mask u.ipv4.mask
-#define vna_v6_ip u.ipv6.ip
-#define vna_v6_mask u.ipv6.mask
+ struct {
+ union {
+ struct in_addr v4;
+ struct in6_addr v6;
+ } ip;
+ union {
+ struct in_addr v4;
+ struct in6_addr v6;
+ } ip2;
+ union {
+ struct in_addr v4;
+ struct in6_addr v6;
+ } mask;
+ } s;
+#define vna_v4_ip s.ip.v4
+#define vna_v4_ip2 s.ip2.v4
+#define vna_v4_mask s.mask.v4
+#define vna_v6_ip s.ip.v6
+#define vna_v6_ip2 s.ip2.v6
+#define vna_v6_mask s.mask.v6
};
struct vc_net_flags {
char *val, size_t len) VC_ATTR_NONNULL((3));
/* 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_enter_namespace(xid_t xid, uint_least64_t mask, uint32_t index);
+ int vc_set_namespace(xid_t xid, uint_least64_t mask, uint32_t index);
+ 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 */
int vc_set_mapping(xid_t xid, const char *device, const char *target, uint32_t flags);
int vc_unset_mapping(xid_t xid, const char *device, const char *target, uint32_t flags);
+ int vc_get_badness(xid_t xid, int64_t *badness);
+ int vc_set_badness(xid_t xid, int64_t badness);
+
/** \brief Information about parsing errors
* \ingroup helper
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