#define VC_IATTR_ADMIN 0x00000001
#define VC_IATTR_WATCH 0x00000002
#define VC_IATTR_HIDE 0x00000004
+#define VC_IATTR_FLAGS 0x00000007
#define VC_IATTR_BARRIER 0x00010000
#define VC_IATTR_IUNLINK 0x00020000
-
+#define VC_IATTR_IMMUTABLE 0x00040000
#ifdef __cplusplus
extern "C" {
/** Sets the ipv4root information.
* \precondition: nb<16 */
int vc_set_ipv4root(uint32_t bcast, size_t nb, struct vc_ip_mask_pair const *ips);
-
- /* rlimit related functions */
- typedef uint64_t vc_limit_t;
xid_t vc_create_context(xid_t xid);
int vc_migrate_context(xid_t xid);
+ /* rlimit related functions */
+ typedef uint_least64_t vc_limit_t;
+
struct vc_rlimit {
- vc_limit_t min;
- vc_limit_t soft;
- vc_limit_t hard;
+ vc_limit_t min;
+ vc_limit_t soft;
+ vc_limit_t hard;
};
struct vc_rlimit_mask {
- uint32_t min;
- uint32_t soft;
- uint32_t hard;
+ uint_least32_t min;
+ uint_least32_t soft;
+ uint_least32_t hard;
};
int vc_get_rlimit(xid_t ctx, int resource, struct vc_rlimit *lim);
- int vc_set_iattr(char const *filename, xid_t xid, uint32_t flags, uint32_t mask);
+ int vc_set_iattr(char const *filename, xid_t xid,
+ uint_least32_t flags, uint_least32_t mask);
int vc_get_iattr(char const *filename, xid_t * /*@null@*/ xid,
- uint32_t * /*@null@*/ flags, uint32_t * /*@null@*/ mask);
+ uint_least32_t * /*@null@*/ flags,
+ uint_least32_t * /*@null@*/ mask);
struct vc_vx_info {
xid_t xid;
int vc_enter_namespace(xid_t xid);
-
+ int vc_set_namespace();
+ int vc_cleanup_namespace();
struct vc_ctx_flags {
- uint64_t flagword;
- uint64_t mask;
+ uint_least64_t flagword;
+ uint_least64_t mask;
};
- int vc_get_flags(xid_t xid, struct vc_ctx_flags *);
- int vc_set_flags(xid_t xid, struct vc_ctx_flags const *);
+ int vc_get_flags(xid_t xid, struct vc_ctx_flags *);
+ int vc_set_flags(xid_t xid, struct vc_ctx_flags const *);
- uint32_t vc_textlist2flag(char const *, size_t len,
- char const **err_ptr, size_t *err_len);
- uint32_t vc_text2flag(char const *, size_t len);
- char const * vc_hiflag2text(unsigned int);
+ int vc_list2flag(char const *, size_t len,
+ char const **err_ptr, size_t *err_len,
+ uint_least64_t *flag,
+ uint_least64_t *mask);
+ uint_least64_t vc_text2flag(char const *, size_t len);
+ char const * vc_hiflag2text(uint_least64_t);
+
+ uint_least32_t vc_list2flag_compat(char const *, size_t len,
+ char const **err_ptr, size_t *err_len);
+ uint_least32_t vc_text2flag_compat(char const *, size_t len);
+ char const * vc_hiflag2text_compat(uint_least32_t);
int vc_text2cap(char const *);
char const * vc_cap2text(unsigned int);
- inline static int vc_get_securecaps() {
+ inline static uint_least32_t vc_get_securecaps() {
return ( (1<<VC_CAP_LINUX_IMMUTABLE) | (1<<VC_CAP_NET_BROADCAST) |
(1<<VC_CAP_NET_ADMIN) | (1<<VC_CAP_NET_RAW) |
(1<<VC_CAP_IPC_LOCK) | (1<<VC_CAP_IPC_OWNER) |
if (vc_get_iattr(filename, &res, 0,0)==-1) return VC_NOCTX;
return res;
}
+
+
+ struct vc_set_sched {
+ int32_t fill_rate;
+ int32_t period;
+ int32_t fill_level;
+ int32_t bucket_size;
+ };
+
+ int vc_set_sched(xid_t xid, struct vc_set_sched const *);
+
+ typedef enum { vcFEATURE_VKILL, vcFEATURE_IATTR, vcFEATURE_RLIMIT,
+ vcFEATURE_COMPAT, vcFEATURE_MIGRATE, vcFEATURE_NAMESPACE,
+ vcFEATURE_SCHED, vcFEATURE_VINFO, vcFEATURE_VHI }
+ vcFeatureSet;
+
+ bool vc_isSupported(vcFeatureSet);
+ bool vc_isSupportedString(char const *);
/* The management part */