From: Enrico Scholz Date: Mon, 2 Feb 2004 18:32:53 +0000 (+0000) Subject: initial checkin X-Git-Tag: VERSION_0_10~812 X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6af2d02e6a06c12659579e787d4be369b00c0a48;p=util-vserver.git initial checkin git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@733 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- diff --git a/util-vserver/lib/syscall_getvhiname-olduts.hc b/util-vserver/lib/syscall_getvhiname-olduts.hc new file mode 100644 index 0000000..6130455 --- /dev/null +++ b/util-vserver/lib/syscall_getvhiname-olduts.hc @@ -0,0 +1,38 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +static inline ALWAYSINLINE int +vc_get_vhi_name_olduts(xid_t xid, vc_uts_type type, char *val, size_t len) +{ + if (xid!=VC_SAMECTX) { + errno = ESRCH; + return -1; + } + + switch (type) { + case vcVHI_NODENAME : return gethostname (val, len); + case vcVHI_DOMAINNAME : return getdomainname(val, len); + default : + errno = ENOENT; + return -1; + } +} diff --git a/util-vserver/lib/syscall_getvhiname-v13.hc b/util-vserver/lib/syscall_getvhiname-v13.hc new file mode 100644 index 0000000..0c48ae1 --- /dev/null +++ b/util-vserver/lib/syscall_getvhiname-v13.hc @@ -0,0 +1,38 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +static inline ALWAYSINLINE int +vc_get_vhi_name_v13(xid_t xid, vc_uts_type type, char *val, size_t len) +{ + struct vcmd_vx_vhi_name_v0 cmd; + int rc; + size_t l = sizeof(cmd.name); + + cmd.field = VHI_USER2KERNEL(type); + rc = vserver(VCMD_vx_get_vhi_name, CTX_USER2KERNEL(xid), &cmd); + ENSC_FIX_IOCTL(rc); + if (rc==-1) return -1; + + l = l>len ? len : l; + strncpy(val, cmd.name, l); + return 0; +} diff --git a/util-vserver/lib/syscall_getvhiname.c b/util-vserver/lib/syscall_getvhiname.c new file mode 100644 index 0000000..17f5cae --- /dev/null +++ b/util-vserver/lib/syscall_getvhiname.c @@ -0,0 +1,44 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "vserver.h" +#include "linuxvirtual.h" + +#if defined(VC_ENABLE_API_OLDUTS) && defined(VC_ENABLE_API_V13) +# define VC_MULTIVERSION_SYSCALL 1 +#endif +#include "vserver-internal.h" + +#ifdef VC_ENABLE_API_V13 +# include "syscall_getvhiname-v13.hc" +#endif + +#ifdef VC_ENABLE_API_OLDUTS +# include "syscall_getvhiname-olduts.hc" +#endif + +int +vc_get_vhi_name(xid_t xid, vc_uts_type type, char *val, size_t len) +{ + CALL_VC(CALL_VC_V13 (vc_get_vhi_name, xid, type, val, len), + CALL_VC_OLDUTS(vc_get_vhi_name, xid, type, val, len)); +} diff --git a/util-vserver/lib/syscall_setvhiname-olduts.hc b/util-vserver/lib/syscall_setvhiname-olduts.hc new file mode 100644 index 0000000..4dd6821 --- /dev/null +++ b/util-vserver/lib/syscall_setvhiname-olduts.hc @@ -0,0 +1,38 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +static inline ALWAYSINLINE int +vc_set_vhi_name_olduts(xid_t xid, vc_uts_type type, char const *val, size_t len) +{ + if (xid!=VC_SAMECTX) { + errno = ESRCH; + return -1; + } + + switch (type) { + case vcVHI_NODENAME : return sethostname (val, len); + case vcVHI_DOMAINNAME : return setdomainname(val, len); + default : + errno = ENOENT; + return -1; + } +} diff --git a/util-vserver/lib/syscall_setvhiname-v13.hc b/util-vserver/lib/syscall_setvhiname-v13.hc new file mode 100644 index 0000000..27947cd --- /dev/null +++ b/util-vserver/lib/syscall_setvhiname-v13.hc @@ -0,0 +1,41 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +static inline ALWAYSINLINE int +vc_set_vhi_name_v13(xid_t xid, vc_uts_type type, char const *val, size_t len) +{ + struct vcmd_vx_vhi_name_v0 cmd; + int rc; + + if (len>=sizeof(cmd.name)) { + errno = E2BIG; + return -1; + } + + cmd.field = VHI_USER2KERNEL(type); + strncpy(cmd.name, val, sizeof(cmd.name)); + + rc = vserver(VCMD_vx_set_vhi_name, CTX_USER2KERNEL(xid), &cmd); + ENSC_FIX_IOCTL(rc); + + return rc; +} diff --git a/util-vserver/lib/syscall_setvhiname.c b/util-vserver/lib/syscall_setvhiname.c new file mode 100644 index 0000000..f00f20b --- /dev/null +++ b/util-vserver/lib/syscall_setvhiname.c @@ -0,0 +1,46 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "vserver.h" +#include "linuxvirtual.h" + +#if defined(VC_ENABLE_API_OLDUTS) && defined(VC_ENABLE_API_V13) +# define VC_MULTIVERSION_SYSCALL 1 +#endif +#include "vserver-internal.h" + +#ifdef VC_ENABLE_API_V13 +# include "syscall_setvhiname-v13.hc" +#endif + +#ifdef VC_ENABLE_API_OLDUTS +# include "syscall_setvhiname-olduts.hc" +#endif + +int +vc_set_vhi_name(xid_t xid, vc_uts_type type, char const *val, size_t len) +{ + if (len==(size_t)(-1)) len=strlen(val); + + CALL_VC(CALL_VC_V13 (vc_set_vhi_name, xid, type, val, len), + CALL_VC_OLDUTS(vc_set_vhi_name, xid, type, val, len)); +}