X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fvserver.h;h=0366b1aca8a3183fb744e4de2d6cfcbeba589a49;hb=07b288856c2bd2a163abe0eb830ab897ad2ad81a;hp=5a120ee9e1ead35ea874f7622c07ad95119b39d3;hpb=6c7dec67273e41c6e94c906c7864e451e4956e4a;p=util-vserver.git diff --git a/util-vserver/lib/vserver.h b/util-vserver/lib/vserver.h index 5a120ee..0366b1a 100644 --- a/util-vserver/lib/vserver.h +++ b/util-vserver/lib/vserver.h @@ -22,14 +22,15 @@ #include #include +#include #include /** the value which is returned in error-case (no ctx found) */ -#define VC_NOCTX ((ctx_t)(-1)) +#define VC_NOCTX ((xid_t)(-1)) /** the value which means a random (the next free) ctx */ -#define VC_RANDCTX ((ctx_t)(-1)) +#define VC_RANDCTX ((xid_t)(-1)) /** the value which means the current ctx */ -#define VC_SAMECTX ((ctx_t)(-2)) +#define VC_SAMECTX ((xid_t)(-2)) #define VC_LIM_INFINITY (~0ULL) #define VC_LIM_KEEP (~1ULL) @@ -94,6 +95,19 @@ #define VC_CAP_LEASE 28 #define VC_CAP_QUOTACTL 29 +#define VC_IMMUTABLE_FILE_FL 0x00000010l +#define VC_IMMUTABLE_LINK_FL 0x00008000l +#define VC_IMMUTABLE_ALL (VC_IMMUTABLE_LINK_FL|VC_IMMUTABLE_FILE_FL) + +#define VC_IATTR_XID 0x01000000 + +#define VC_IATTR_ADMIN 0x00000001 +#define VC_IATTR_WATCH 0x00000002 +#define VC_IATTR_HIDE 0x00000004 + +#define VC_IATTR_BARRIER 0x00010000 +#define VC_IATTR_IUNLINK 0x00020000 + #ifdef __cplusplus extern "C" { @@ -110,17 +124,16 @@ extern "C" { /** Puts current process into context , removes the given caps and * sets flags. * Special values for ctx are - * - -2 which means the current context (just for changing caps and flags) - * - -1 which means the next free context; this value can be used by - * ordinary users also */ - int vc_new_s_context(ctx_t ctx, unsigned int remove_cap, unsigned int flags); + * - VC_SAMECTX which means the current context (just for changing caps and flags) + * - VC_RANDCTX which means the next free context; this value can be used by + * ordinary users also + * See http://vserver.13thfloor.at/Stuff/Logic.txt for details */ + int vc_new_s_context(xid_t ctx, unsigned int remove_cap, unsigned int flags); /** Sets the ipv4root information. * \precondition: nb<16 */ int vc_set_ipv4root(uint32_t bcast, size_t nb, struct vc_ip_mask_pair const *ips); - int vc_chrootsafe(char const *dir); - /* rlimit related functions */ typedef uint64_t vc_limit_t; @@ -137,21 +150,64 @@ extern "C" { uint32_t hard; }; - int vc_get_rlimit(ctx_t ctx, int resource, struct vc_rlimit *lim); - int vc_set_rlimit(ctx_t ctx, int resource, struct vc_rlimit const *lim); - int vc_get_rlimit_mask(ctx_t ctx, struct vc_rlimit_mask *lim); + int vc_get_rlimit(xid_t ctx, int resource, struct vc_rlimit *lim); + int vc_set_rlimit(xid_t ctx, int resource, struct vc_rlimit const *lim); + int vc_get_rlimit_mask(xid_t ctx, struct vc_rlimit_mask *lim); + + + /** sends a signal to a context/pid + Special values for pid are: + * -1 which means every process in ctx except the init-process + * 0 which means every process in ctx inclusive the init-process */ + int vc_ctx_kill(xid_t ctx, pid_t pid, int sig); /** Returns the context of the given process. pid==0 means the current process. */ - ctx_t vc_X_getctx(pid_t pid); + xid_t vc_X_getctx(pid_t pid); /** Returns the pid of the 'init' process */ pid_t vc_X_getinitpid(pid_t pid); + int vc_set_iattr(dev_t dev, ino_t ino, xid_t xid, uint32_t flags, uint32_t mask); + int vc_get_iattr(dev_t dev, ino_t ino, xid_t * /*@null@*/ xid, + uint32_t * /*@null@*/ flags, uint32_t * /*@null@*/ mask); + + int vc_set_iattr_compat(char const *filename, + dev_t dev, ino_t ino, xid_t xid, + uint32_t flags, uint32_t mask); + + int vc_get_iattr_compat(char const *filename, + dev_t dev, ino_t ino, + xid_t * /*@null@*/ xid, + uint32_t * /*@null@*/ flags, + uint32_t * /*@inout@*/ mask); + + int vc_text2cap(char const *); char const * vc_cap2text(int); + inline static int vc_get_securecaps() { + return ( (1<