#define VXC_SET_RLIMIT 0x00000002
#define VXC_RAW_ICMP 0x00000100
+#define VXC_SYSLOG 0x00001000
#define VXC_SECURE_MOUNT 0x00010000
#define VXC_SECURE_REMOUNT 0x00020000
#define VXC_QUOTA_CTL 0x00100000
-/* vshelper sync commands */
+/* context state changes */
-#define VS_CONTEXT_CREATED 1
-#define VS_CONTEXT_DESTROY 2
+enum {
+ VSC_STARTUP = 1,
+ VSC_SHUTDOWN,
+};
#ifdef __KERNEL__
pid_t vx_initpid; /* PID of fake init process */
spinlock_t vx_lock;
- wait_queue_head_t vx_exit; /* context exit waitqueue */
+ wait_queue_head_t vx_wait; /* context exit waitqueue */
struct _vx_limit limit; /* vserver limits */
struct _vx_sched sched; /* vserver scheduler */
extern int vx_migrate_task(struct task_struct *, struct vx_info *);
-extern long vs_context_state(struct vx_info *, unsigned int);
+extern long vs_state_change(struct vx_info *, unsigned int);
extern void free_vx_info(struct vx_info *);
void vx_update_load(struct vx_info *);
+int vx_uts_virt_handler(struct ctl_table *ctl, int write, xid_t xid,
+ void **datap, size_t *lenp);
+
+
int vx_do_syslog(int, char __user *, int);
#endif /* __KERNEL__ */
#define _VX_DLIMIT_H
#include "switch.h"
-#include <linux/spinlock.h>
#define CDLIM_UNSET (0ULL)
#define CDLIM_INFINITY (~0ULL)
#ifdef __KERNEL__
+#include <linux/spinlock.h>
+
struct super_block;
struct dl_info {
#ifdef __KERNEL__
+#ifdef CONFIG_COMPAT
+
struct vcmd_ctx_dlimit_base_v0_x32 {
- uint32_t __user name_ptr;
+ compat_uptr_t name_ptr;
uint32_t flags;
};
struct vcmd_ctx_dlimit_v0_x32 {
- uint32_t __user name_ptr;
+ compat_uptr_t name_ptr;
uint32_t space_used; /* used space in kbytes */
uint32_t space_total; /* maximum space in kbytes */
uint32_t inodes_used; /* used inodes */
uint32_t flags;
};
+#endif /* CONFIG_COMPAT */
+
#include <linux/compiler.h>
extern int vc_add_dlimit(uint32_t, void __user *);
extern int vc_set_dlimit(uint32_t, void __user *);
extern int vc_get_dlimit(uint32_t, void __user *);
+#ifdef CONFIG_COMPAT
+
+extern int vc_add_dlimit_x32(uint32_t, void __user *);
+extern int vc_rem_dlimit_x32(uint32_t, void __user *);
+
+extern int vc_set_dlimit_x32(uint32_t, void __user *);
+extern int vc_get_dlimit_x32(uint32_t, void __user *);
+
+#endif /* CONFIG_COMPAT */
+
#endif /* __KERNEL__ */
#endif /* _VX_DLIMIT_CMD_H */
#ifdef __KERNEL__
+#ifdef CONFIG_COMPAT
+
struct vcmd_ctx_iattr_v1_x32 {
- uint32_t __user name;
+ compat_uptr_t name_ptr;
uint32_t xid;
uint32_t flags;
uint32_t mask;
};
+#endif /* CONFIG_COMPAT */
+
#include <linux/compiler.h>
extern int vc_get_iattr_v0(uint32_t, void __user *);
extern int vc_get_iattr(uint32_t, void __user *);
extern int vc_set_iattr(uint32_t, void __user *);
+#ifdef CONFIG_COMPAT
+
+extern int vc_get_iattr_x32(uint32_t, void __user *);
+extern int vc_set_iattr_x32(uint32_t, void __user *);
+
+#endif /* CONFIG_COMPAT */
+
#endif /* __KERNEL__ */
#endif /* _VX_INODE_CMD_H */
#define VX_INFO_NAMESPACE 128 /* save private namespace */
-#define NB_S_CONTEXT 16
-
-#define NB_IPV4ROOT 16
-
-
#ifdef __KERNEL__
extern int vc_new_s_context(uint32_t, void __user *);
extern int vc_set_ipv4root(uint32_t, void __user *);
-#ifndef _VX_SIGNAL_H
-#define _VX_SIGNAL_H
+#ifndef _VX_SIGNAL_CMD_H
+#define _VX_SIGNAL_CMD_H
-#include "switch.h"
-
-/* context signalling */
+/* signalling vserver commands */
#define VCMD_ctx_kill VC_CMD(PROCTRL, 1, 0)
#define VCMD_wait_exit VC_CMD(EVENT, 99, 0)
extern int vc_wait_exit(uint32_t, void __user *);
#endif /* __KERNEL__ */
-#endif /* _VX_SIGNAL_H */
+#endif /* _VX_SIGNAL_CMD_H */
(((struct inode *)in)->i_sb && \
(((struct inode *)in)->i_sb->s_flags & MS_TAGXID)))
+#ifdef CONFIG_XID_TAG_NFSD
+#define XID_TAG_NFSD 1
+#else
+#define XID_TAG_NFSD 0
+#endif
+
#ifdef CONFIG_INOXID_NONE