The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
This program is Free Software; you can redistribute it and/or
- modify it under the terms of version two of the GNU General Public
+ modify it under the terms of version three of the GNU Affero General Public
License as published by the Free Software Foundation and included
in the file LICENSE.
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
+ You should have received a copy of the GNU Affero General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
#endif /* HAVE_SUN_OS */
#endif /* HAVE_ACL */
-#if defined(HAVE_AFS_ACL)
-
-#include <afs/stds.h>
-#include <afs/afs.h>
-#include <afs/auth.h>
-#include <afs/venus.h>
-#include <afs/prs_fs.h>
-
-/**
- * External references to functions in the libsys library function not in current include files.
- */
-extern "C" {
-long pioctl(char *pathp, long opcode, struct ViceIoctl *blobp, int follow);
-}
-
-static bacl_exit_code afs_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
-{
- int error;
- struct ViceIoctl vip;
- char acl_text[BUFSIZ];
- berrno be;
-
- /**
- * AFS ACLs can only be set on a directory, so no need to try to
- * request them for anything other then that.
- */
- if (ff_pkt->type != FT_DIREND) {
- return bacl_exit_ok;
- }
-
- vip.in = NULL;
- vip.in_size = 0;
- vip.out = acl_text;
- vip.out_size = sizeof(acl_text);
- memset((caddr_t)acl_text, 0, sizeof(acl_text));
-
- if ((error = pioctl(jcr->last_fname, VIOCGETAL, &vip, 0)) < 0) {
- Mmsg2(jcr->errmsg, _("pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"),
- jcr->last_fname, be.bstrerror());
- Dmsg2(100, "pioctl VIOCGETAL error file=%s ERR=%s\n",
- jcr->last_fname, be.bstrerror());
- return bacl_exit_error;
- }
- jcr->acl_data->content_length = pm_strcpy(jcr->acl_data->content, acl_text);
- return send_acl_stream(jcr, STREAM_ACL_AFS_TEXT);
-}
-
-static bacl_exit_code afs_parse_acl_stream(JCR *jcr, int stream)
-{
- int error;
- struct ViceIoctl vip;
- berrno be;
-
- vip.in = jcr->acl_data->content;
- vip.in_size = jcr->acl_data->content_length;
- vip.out = NULL;
- vip.out_size = 0;
-
- if ((error = pioctl(jcr->last_fname, VIOCSETAL, &vip, 0)) < 0) {
- Mmsg2(jcr->errmsg, _("pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"),
- jcr->last_fname, be.bstrerror());
- Dmsg2(100, "pioctl VIOCSETAL error file=%s ERR=%s\n",
- jcr->last_fname, be.bstrerror());
-
- return bacl_exit_error;
- }
- return bacl_exit_ok;
-}
-#endif /* HAVE_AFS_ACL */
-
-/**
+/*
* Entry points when compiled with support for ACLs on a supported platform.
*/
*/
jcr->acl_data->flags = 0;
-#if defined(HAVE_AFS_ACL)
- /**
- * AFS is a non OS specific filesystem so see if this path is on an AFS filesystem
- * Set the BACL_FLAG_SAVE_AFS flag if it is. If not set the BACL_FLAG_SAVE_NATIVE flag.
- */
- if (fstype_equals(jcr->last_fname, "afs")) {
- jcr->acl_data->flags |= BACL_FLAG_SAVE_AFS;
- } else {
- jcr->acl_data->flags |= BACL_FLAG_SAVE_NATIVE;
- }
-#else
jcr->acl_data->flags |= BACL_FLAG_SAVE_NATIVE;
-#endif
/**
* Save that we started scanning a new filesystem.
jcr->acl_data->current_dev = ff_pkt->statp.st_dev;
}
-#if defined(HAVE_AFS_ACL)
- /**
- * See if the BACL_FLAG_SAVE_AFS flag is set which lets us know if we should
- * save AFS ACLs.
- */
- if (jcr->acl_data->flags & BACL_FLAG_SAVE_AFS) {
- return afs_build_acl_streams(jcr, ff_pkt);
- }
-#endif
#if defined(HAVE_ACL)
/**
* See if the BACL_FLAG_SAVE_NATIVE flag is set which lets us know if we should
unsigned int cnt;
switch (stream) {
-#if defined(HAVE_AFS_ACL)
- case STREAM_ACL_AFS_TEXT:
- return afs_parse_acl_stream(jcr, stream);
-#endif
#if defined(HAVE_ACL)
case STREAM_UNIX_ACCESS_ACL:
case STREAM_UNIX_DEFAULT_ACL: