X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fissupported.c;h=685909451219e431e05d2c517d14b0395b74475a;hb=0af41ded5e696a012f94e0903d34ae331fe821e6;hp=30b6fb3432615a43308f6adb0478bea794aaf3ed;hpb=9c78378bebc1a9f3d400f422df8ede9efea57dea;p=util-vserver.git diff --git a/lib/issupported.c b/lib/issupported.c index 30b6fb3..6859094 100644 --- a/lib/issupported.c +++ b/lib/issupported.c @@ -26,8 +26,11 @@ bool vc_isSupported(vcFeatureSet feature) { - int ver = vc_get_version(); + int ver = vc_get_version(); + vc_vci_t conf = vc_get_vci(); + int linux_ver = vc_get_kernel(); if (ver==-1) return false; + if (conf==(vc_vci_t)-1) conf = 0; switch (feature) { case vcFEATURE_COMPAT : return true; @@ -43,6 +46,15 @@ vc_isSupported(vcFeatureSet feature) case vcFEATURE_VWAIT : return ver >= 0x00010025; case vcFEATURE_SCHED : return ver >= 0x00020000; // todo case vcFEATURE_VNET : return ver >= 0x00020001; + case vcFEATURE_PERSISTENT : return ver >= 0x00020002; + case vcFEATURE_VSTAT : return ver >= 0x00020103 && ver < 0x00020306; + case vcFEATURE_PPTAG : return conf & VC_VCI_PPTAG; + case vcFEATURE_SPACES : return conf & VC_VCI_SPACES; + case vcFEATURE_PIVOT_ROOT : return ver >= 0x00020304; + case vcFEATURE_PIDSPACE : return false; + case vcFEATURE_MEMCG : return ver >= 0x00020306 && conf & VC_VCI_MEMCG; + case vcFEATURE_DYNAMIC : return ver < 0x00020300 || !(conf & VC_VCI_NO_DYNAMIC); + case vcFEATURE_BME : return linux_ver < 0x0002061a; default : assert(false); }