X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fvserver.h;h=e0ca826c60bce9dfc4a5f8104cd38058fd03ddfe;hb=a6be71d3e49f0f633705ba5e4e08cc1cac811344;hp=20122c570265235ee38de5f8a703cbb550831b10;hpb=fc84d2d3d5179f3bbbcee0f7e8d8cb155239edfd;p=util-vserver.git diff --git a/lib/vserver.h b/lib/vserver.h index 20122c5..e0ca826 100644 --- a/lib/vserver.h +++ b/lib/vserver.h @@ -29,6 +29,7 @@ #include #include #include +#include #ifndef IS_DOXYGEN #if defined(__GNUC__) @@ -225,6 +226,7 @@ #define VC_VXSM_IDLE_TIME 0x0200 #define VC_VXSM_FORCE 0x0400 +#define VC_VXSM_MSEC 0x4000 #define VC_VXSM_V3_MASK 0x0173 @@ -258,6 +260,7 @@ // the VCI bit values #define VC_VCI_NO_DYNAMIC (1 << 0) #define VC_VCI_SPACES (1 << 10) +#define VC_VCI_NETV2 (1 << 11) // the device mapping flags @@ -267,6 +270,26 @@ #define VC_DATTR_REMAP 0x00000010 +// the process context migration flags +#define VC_VXM_SET_INIT 0x00000001 +#define VC_VXM_SET_REAPER 0x00000002 + + +// the network address flags +#define VC_NXA_TYPE_IPV4 0x0001 +#define VC_NXA_TYPE_IPV6 0x0002 + +#define VC_NXA_TYPE_NONE 0x0000 +#define VC_NXA_TYPE_ANY 0x00FF + +#define VC_NXA_TYPE_ADDR 0x0010 +#define VC_NXA_TYPE_MASK 0x0020 +#define VC_NXA_TYPE_RANGE 0x0040 + +#define VC_NXA_MOD_BCAST 0x0100 +#define VC_NXA_MOD_LBACK 0x0200 + + #ifndef CLONE_NEWNS # define CLONE_NEWNS 0x00020000 #endif @@ -387,14 +410,15 @@ extern "C" { * * \returns the xid of the created context, or VC_NOCTX on errors. \c errno * will be set appropriately. */ - xid_t vc_ctx_create(xid_t xid); + xid_t vc_ctx_create(xid_t xid, struct vc_ctx_flags *flags); /** \brief Moves the current process into the specified context. * \ingroup syscalls * - * \param xid The new context + * \param xid The new context + * \param flags The flags, see VC_VXM_* * \returns 0 on success, -1 on errors */ - int vc_ctx_migrate(xid_t xid); + int vc_ctx_migrate(xid_t xid, uint_least64_t flags); /** \brief Statistics about a context */ struct vc_ctx_stat { @@ -594,15 +618,25 @@ extern "C" { nid_t vc_get_task_nid(pid_t pid); int vc_get_nx_info(nid_t nid, struct vc_nx_info *) VC_ATTR_NONNULL((2)); - typedef enum { vcNET_IPV4=1, vcNET_IPV6=2, - vcNET_IPV4B=0x101, vcNET_IPV6B=0x102, - vcNET_ANY=~0 } vc_net_nx_type; - - struct vc_net_nx { - vc_net_nx_type type; - size_t count; - uint32_t ip[4]; - uint32_t mask[4]; + struct vc_net_addr { + uint16_t vna_type; + 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 vc_net_flags { @@ -613,8 +647,8 @@ extern "C" { nid_t vc_net_create(nid_t nid); int vc_net_migrate(nid_t nid); - int vc_net_add(nid_t nid, struct vc_net_nx const *info); - int vc_net_remove(nid_t nid, struct vc_net_nx const *info); + int vc_net_add(nid_t nid, struct vc_net_addr const *info); + int vc_net_remove(nid_t nid, struct vc_net_addr const *info); int vc_get_nflags(nid_t, struct vc_net_flags *); int vc_set_nflags(nid_t, struct vc_net_flags const *); @@ -633,6 +667,9 @@ extern "C" { int vc_set_iattr(char const *filename, xid_t xid, uint_least32_t flags, uint_least32_t mask) VC_ATTR_NONNULL((1)); + int vc_fset_iattr(int fd, xid_t xid, + uint_least32_t flags, uint_least32_t mask); + /** \brief Returns information about attributes and assigned context of a file. * \ingroup syscalls * @@ -662,6 +699,10 @@ extern "C" { int vc_get_iattr(char const *filename, xid_t * /*@null@*/ xid, uint_least32_t * /*@null@*/ flags, uint_least32_t * /*@null@*/ mask) VC_ATTR_NONNULL((1)); + + int vc_fget_iattr(int fd, xid_t * /*@null@*/ xid, + uint_least32_t * /*@null@*/ flags, + uint_least32_t * /*@null@*/ mask) VC_ATTR_NONNULL((4)); /** \brief Returns the context of \c filename * \ingroup syscalls @@ -738,6 +779,7 @@ extern "C" { }; int vc_set_sched(xid_t xid, struct vc_set_sched const *) VC_ATTR_NONNULL((2)); + int vc_get_sched(xid_t xid, struct vc_set_sched *) VC_ATTR_NONNULL((2)); struct vc_sched_info { int_least32_t cpu_id;