X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fsyscall.c;h=fc0896ee1ff599832fd870b219e9021aac4cf3e2;hb=6e313e14cae2621424e8564cb737df25afb2083b;hp=c4119228c3b4987cb5d7d7e4844b6429923e1d03;hpb=0603f2a759c2af1c8161f4bf625e5c33e6b133f8;p=util-vserver.git diff --git a/util-vserver/lib/syscall.c b/util-vserver/lib/syscall.c index c411922..fc0896e 100644 --- a/util-vserver/lib/syscall.c +++ b/util-vserver/lib/syscall.c @@ -36,79 +36,27 @@ #include #include - - -static int -checkCompatVersion() -{ - static int res=0; - static int v_errno; - - if (res==0) { - res = sys_virtual_context(VC_CMD(VERSION, 0, 0), VC_CAT_COMPAT, 0); - v_errno = errno; -#ifdef VC_ENABLE_API_LEGACY - if (res==-1 && errno==ENOSYS) res=0; -#endif - } - - errno = v_errno; - return res; -} +#if defined(VC_ENABLE_API_COMPAT) || defined(VC_ENABLE_API_LEGACY) int vc_new_s_context(ctx_t ctx, unsigned int remove_cap, unsigned int flags) { - switch (checkCompatVersion()) { -#ifdef VC_ENABLE_API_COMPAT - case 0x00010000 : - return vc_new_s_context_compat(ctx, remove_cap, flags); -#endif -#ifdef VC_ENABLE_API_LEGACY - case 0x0000000 : - return vc_new_s_context_legacy(ctx, remove_cap, flags); -#endif - case -1 : break; - default : errno = EINVAL; - } - - return -1; + CALL_VC(CALL_VC_COMPAT(vc_new_s_context, ctx, remove_cap, flags), + CALL_VC_LEGACY(vc_new_s_context, ctx, remove_cap, flags)); } int vc_set_ipv4root(uint32_t bcast, size_t nb, struct vc_ip_mask_pair const *ips) { - switch (checkCompatVersion()) { -#ifdef VC_ENABLE_API_COMPAT - case 0x00010000 : - return vc_set_ipv4root_compat(bcast, nb, ips); -#endif -#ifdef VC_ENABLE_API_LEGACY - case 0x0000000 : - return vc_set_ipv4root_legacy(bcast, nb, ips); -#endif - case -1 : break; - default : errno = EINVAL; - } - - return -1; + CALL_VC(CALL_VC_COMPAT(vc_set_ipv4root, bcast, nb, ips), + CALL_VC_LEGACY(vc_set_ipv4root, bcast, nb, ips)); } int vc_chrootsafe(char const *dir) { - switch (checkCompatVersion()) { -#ifdef VC_ENABLE_API_COMPAT - case 0x00010000 : - return vc_chrootsafe_compat(dir); -#endif -#ifdef VC_ENABLE_API_LEGACY - case 0x0000000 : - return vc_chrootsafe_legacy(dir); -#endif - case -1 : break; - default : errno = EINVAL; - } - - return -1; + CALL_VC(CALL_VC_COMPAT(vc_chrootsafe, dir), + CALL_VC_LEGACY(vc_chrootsafe, dir)); } + +#endif