# define VC_ATTR_UNUSED __attribute__((__unused__))
# define VC_ATTR_NORETURN __attribute__((__noreturn__))
# define VC_ATTR_CONST __attribute__((__const__))
+# define VC_ATTR_DEPRECATED __attribute__((__deprecated__))
# if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30300
# define VC_ATTR_NONNULL(ARGS) __attribute__((__nonnull__ ARGS))
# define VC_ATTR_ALWAYSINLINE __attribute__((__always_inline__))
# define VC_ATTR_UNUSED
# define VC_ATTR_NORETURN
# define VC_ATTR_ALWAYSINLINE
+# define VC_ATTR_DEPRECATED
# define VC_ATTR_PURE
# define VC_ATTR_CONST
#endif
// the flags
#define VC_VXF_INFO_LOCK 0x00000001
-#define VC_VXF_INFO_NPROC 0x00000002
-#define VC_VXF_INFO_PRIVATE 0x00000004
-#define VC_VXF_INFO_INIT 0x00000008
+#define VC_VXF_INFO_NPROC 0x00000004
+#define VC_VXF_INFO_PRIVATE 0x00000008
+#define VC_VXF_INFO_INIT 0x00000010
-#define VC_VXF_INFO_HIDE 0x00000010
-#define VC_VXF_INFO_ULIMIT 0x00000020
-#define VC_VXF_INFO_NSPACE 0x00000040
+#define VC_VXF_INFO_HIDEINFO 0x00000020
+#define VC_VXF_INFO_ULIMIT 0x00000040
+#define VC_VXF_INFO_NAMESPACE 0x00000080
#define VC_VXF_SCHED_HARD 0x00000100
#define VC_VXF_SCHED_PRIO 0x00000200
#define VC_VXF_VIRT_MEM 0x00010000
#define VC_VXF_VIRT_UPTIME 0x00020000
+#define VC_VXF_VIRT_CPU 0x00040000
+
+#define VC_VXF_HIDE_MOUNT 0x01000000
+#define VC_VXF_HIDE_NETIF 0x02000000
#define VC_VXF_STATE_SETUP (1ULL<<32)
#define VC_VXF_STATE_INIT (1ULL<<33)
+// the ccapabilities
+#define VC_VXC_SET_UTSNAME 0x00000001
+#define VC_VXC_SET_RLIMIT 0x00000002
+
+#define VC_VXC_ICMP_PING 0x00000100
+
+#define VC_VXC_SECURE_MOUNT 0x00010000
+
/** \defgroup syscalls Syscall wrappers
* Functions which are calling the vserver syscall directly. */
*
* \returns the xid of the created context, or VC_NOCTX on errors. errno
* will be set appropriately. */
- xid_t vc_create_context(xid_t xid);
+ xid_t vc_ctx_create(xid_t xid);
/** \brief Moves the current process into the specified context.
* \ingroup syscalls
*
* \param xid The new context
* \returns 0 on success, -1 on errors */
- int vc_migrate_context(xid_t xid);
+ int vc_ctx_migrate(xid_t xid);
/* rlimit related functions */
size_t len;
};
- int vc_get_flags(xid_t xid, struct vc_ctx_flags *) VC_ATTR_NONNULL((2));
- int vc_set_flags(xid_t xid, struct vc_ctx_flags const *) VC_ATTR_NONNULL((2));
+ int vc_get_cflags(xid_t xid, struct vc_ctx_flags *) VC_ATTR_NONNULL((2));
+ int vc_set_cflags(xid_t xid, struct vc_ctx_flags const *) VC_ATTR_NONNULL((2));
int vc_get_ccaps(xid_t xid, struct vc_ctx_caps *);
int vc_set_ccaps(xid_t xid, struct vc_ctx_caps const *);
struct vc_err_listparser *err,
struct vc_ctx_caps *);
- int vc_list2flag(char const *, size_t len,
+ int vc_list2cflag(char const *, size_t len,
struct vc_err_listparser *err,
struct vc_ctx_flags *flags);
- uint_least64_t vc_text2flag(char const *, size_t len);
- char const * vc_loflag2text(uint_least64_t *);
+ uint_least64_t vc_text2cflag(char const *, size_t len);
+ char const * vc_locflag2text(uint_least64_t *);
- uint_least32_t vc_list2flag_compat(char const *, size_t len,
+ uint_least32_t vc_list2cflag_compat(char const *, size_t len,
struct vc_err_listparser *err);
- 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 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) |
- (1<<VC_CAP_SYS_MODULE) | (1<<VC_CAP_SYS_RAWIO) |
- (1<<VC_CAP_SYS_PACCT) | (1<<VC_CAP_SYS_ADMIN) |
- (1<<VC_CAP_SYS_BOOT) | (1<<VC_CAP_SYS_NICE) |
- (1<<VC_CAP_SYS_RESOURCE) | (1<<VC_CAP_SYS_TIME) |
- (1<<VC_CAP_MKNOD) | (1<<VC_CAP_QUOTACTL) );
- }
+ uint_least32_t vc_text2cflag_compat(char const *, size_t len);
+ char const * vc_hicflag2text_compat(uint_least32_t);
+
+ uint_least32_t vc_get_insecurecaps() VC_ATTR_CONST;
+ int vc_text2cap(char const *);
+ char const * vc_cap2text(unsigned int);
+
- inline static int vc_setfilecontext(char const *filename, xid_t xid) {
+ inline static int vc_setfilecontext(char const *filename, xid_t xid) {
return vc_set_iattr(filename, xid, 0, VC_IATTR_XID);
}
- inline static xid_t vc_getfilecontext(char const *filename) {
+ inline static xid_t vc_getfilecontext(char const *filename) {
xid_t res;
if (vc_get_iattr(filename, &res, 0,0)==-1) return VC_NOCTX;
return res;
typedef enum { vcFEATURE_VKILL, vcFEATURE_IATTR, vcFEATURE_RLIMIT,
vcFEATURE_COMPAT, vcFEATURE_MIGRATE, vcFEATURE_NAMESPACE,
- vcFEATURE_SCHED, vcFEATURE_VINFO, vcFEATURE_VHI }
+ vcFEATURE_SCHED, vcFEATURE_VINFO, vcFEATURE_VHI,
+ vcFEATURE_VSHELPER0, vcFEATURE_VSHELPER }
vcFeatureSet;
- bool vc_isSupported(vcFeatureSet);
+ bool vc_isSupported(vcFeatureSet) VC_ATTR_CONST;
bool vc_isSupportedString(char const *);
-
+
/* The management part */
#define VC_LIMIT_VSERVER_NAME_LEN 1024