X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fvserver.h;h=42b0e5ff7827ac8cdab855f72bd8743c3b0c20c6;hb=b3ff38bc5349de0f78d90bd461605876dd3f93da;hp=dcf2e6b9ff17031af0a03d88c58dcc90fa294a5c;hpb=c1d87edf6f39f9f0ea883b7715f0700cc41828d5;p=util-vserver.git diff --git a/util-vserver/lib/vserver.h b/util-vserver/lib/vserver.h index dcf2e6b..42b0e5f 100644 --- a/util-vserver/lib/vserver.h +++ b/util-vserver/lib/vserver.h @@ -33,14 +33,15 @@ #if defined(__GNUC__) # define VC_ATTR_UNUSED __attribute__((__unused__)) # define VC_ATTR_NORETURN __attribute__((__noreturn__)) -# if __GNUC__>3 || (__GNUC__==3 && __GNUC_MINOR__>=3) +# define VC_ATTR_CONST __attribute__((__const__)) +# if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30300 # define VC_ATTR_NONNULL(ARGS) __attribute__((__nonnull__ ARGS)) # define VC_ATTR_ALWAYSINLINE __attribute__((__always_inline__)) # else # define VC_ATTR_NONNULL(ARGS) # define VC_ATTR_ALWAYSINLINE # endif -# if __GNUC__>3 +# if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30303 # define VC_ATTR_PURE __attribute__((__pure__)) # else # define VC_ATTR_PURE @@ -51,6 +52,7 @@ # define VC_ATTR_NORETURN # define VC_ATTR_ALWAYSINLINE # define VC_ATTR_PURE +# define VC_ATTR_CONST #endif #endif // IS_DOXYGEN @@ -218,6 +220,14 @@ extern "C" { int vc_set_ipv4root(uint32_t bcast, size_t nb, struct vc_ip_mask_pair const *ips) VC_ATTR_NONNULL((3)); + /** \brief Returns the value of NB_IPV4ROOT. + * \ingroup helper + * + * This function returns the value of NB_IPV4ROOT which was used when the + * library was built, but \b not the value which is used by the currently + * running kernel. */ + size_t vc_get_nb_ipv4root() VC_ATTR_CONST VC_ATTR_PURE; + /** \brief Creates a context without starting it. * \ingroup syscalls * @@ -248,8 +258,7 @@ extern "C" { * modified by the vc_set_rlimit() operation. * * Else, the interpretation of the value depends on the corresponding - * resource; it might be bytes, pages, seconds or litres of beer. - */ + * resource; it might be bytes, pages, seconds or litres of beer. */ typedef uint_least64_t vc_limit_t; /** \brief The limits of a resources. @@ -347,6 +356,8 @@ extern "C" { int vc_get_vhi_name(xid_t xid, vc_uts_type type, char *val, size_t len) VC_ATTR_NONNULL((3)); + /** Returns true iff \a xid is a dynamic xid */ + bool vc_is_dynamic_xid(xid_t xid); int vc_enter_namespace(xid_t xid); int vc_set_namespace(); @@ -359,6 +370,7 @@ extern "C" { struct vc_ctx_caps { uint_least64_t bcaps; + uint_least64_t bmask; uint_least64_t ccaps; uint_least64_t cmask; }; @@ -400,7 +412,7 @@ extern "C" { int vc_text2cap(char const *); char const * vc_cap2text(unsigned int); - inline static uint_least32_t vc_get_securecaps() { + inline static uint_least32_t vc_get_insecurecaps() { return ( (1<