diff -Nur vserver-0.22/capchroot.cc vserver-0.22-dsvr/capchroot.cc --- vserver-0.22/capchroot.cc 2002-09-11 03:33:12.000000000 +0100 +++ vserver-0.22-dsvr/capchroot.cc 2003-02-24 14:32:54.000000000 +0000 @@ -51,7 +51,7 @@ ,strerror(errno)); }else{ if (nochroot){ - call_new_s_context (-2,1< #include #include @@ -36,7 +37,7 @@ static int __NR_new_s_context; static int rev_s_context=0; -_syscall3(int, new_s_context, int, newctx, int, remove_cap, int, flags); +_syscall4(int, new_s_context, int, newctx, int, remove_cap, int, flags, char*, name); static void init() { @@ -75,13 +76,19 @@ } } -extern "C" int call_new_s_context(int newctx, int remove_cap, int flags) +#if defined( __cplusplus ) +extern "C" +#endif +int call_new_s_context(int newctx, int remove_cap, int flags, char* name) { init(); - return new_s_context(newctx,remove_cap,flags); + return new_s_context(newctx,remove_cap,flags,name); } -extern "C" int call_set_ipv4root (unsigned long ip[], int nb, unsigned long bcast) +#if defined( __cplusplus ) +extern "C" +#endif +int call_set_ipv4root (unsigned long ip[], int nb, unsigned long bcast) { init(); if (rev_ipv4root == 0){ @@ -102,4 +109,11 @@ } - +#if defined( __cplusplus ) +extern "C" +#endif +int kernel_has_ctx() +{ + init(); + return rev_ipv4root; +} diff -Nur vserver-0.22/vutil.p vserver-0.22-dsvr/vutil.p --- vserver-0.22/vutil.p 2002-06-30 20:37:59.000000000 +0100 +++ vserver-0.22-dsvr/vutil.p 2003-02-24 14:32:54.000000000 +0000 @@ -13,6 +13,6 @@ void vutil_loadallpkg (string&refserver, list&packages); int vutil_lstat (string path, struct stat&st); /* syscall.cc 30/06/2002 15.37.50 */ -extern "C" int call_new_s_context (int newctx, int remove_cap, int flags); +extern "C" int call_new_s_context (int newctx, int remove_cap, int flags, char* name); extern "C" int call_set_ipv4root (unsigned long ip[], int nb, unsigned long bcast);