From 3490a6e27ae0ca5ebe33092aa08d6271e8ffd420 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Sun, 25 Nov 2018 12:07:26 +0100 Subject: [PATCH] nfs4acl_xattr: move some functions to a seperate file These functions will be called from another translation unit in a subsequent commit. Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- source3/modules/nfs4acl_xattr_util.c | 73 ++++++++++++++++++++++++++++ source3/modules/nfs4acl_xattr_util.h | 25 ++++++++++ source3/modules/nfs4acl_xattr_xdr.c | 35 +------------ source3/modules/wscript_build | 1 + 4 files changed, 100 insertions(+), 34 deletions(-) create mode 100644 source3/modules/nfs4acl_xattr_util.c create mode 100644 source3/modules/nfs4acl_xattr_util.h diff --git a/source3/modules/nfs4acl_xattr_util.c b/source3/modules/nfs4acl_xattr_util.c new file mode 100644 index 00000000000..8ea1e76ad17 --- /dev/null +++ b/source3/modules/nfs4acl_xattr_util.c @@ -0,0 +1,73 @@ +/* + * Copyright (C) Ralph Boehme 2018 + * + * 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; either version 3 of the License, or + * (at your option) any later version. + * + * 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, see . + * + */ + +#include "includes.h" +#include "smbd/proto.h" +#include "libcli/security/security_descriptor.h" + +#ifdef HAVE_RPC_XDR_H +/* uses TRUE and FALSE */ +#ifdef TRUE +#undef TRUE +#endif + +#ifdef FALSE +#undef FALSE +#endif +#endif + +#include "nfs4_acls.h" +#include "nfs41acl.h" +#include "nfs4acl_xattr_util.h" + +#undef DBGC_CLASS +#define DBGC_CLASS DBGC_VFS + +unsigned smb4acl_to_nfs4acl_flags(uint16_t smb4acl_flags) +{ + unsigned nfs4acl_flags = 0; + + if (smb4acl_flags & SEC_DESC_DACL_AUTO_INHERITED) { + nfs4acl_flags |= ACL4_AUTO_INHERIT; + } + if (smb4acl_flags & SEC_DESC_DACL_PROTECTED) { + nfs4acl_flags |= ACL4_PROTECTED; + } + if (smb4acl_flags & SEC_DESC_DACL_DEFAULTED) { + nfs4acl_flags |= ACL4_DEFAULTED; + } + + return nfs4acl_flags; +} + +uint16_t nfs4acl_to_smb4acl_flags(unsigned nfsacl41_flags) +{ + uint16_t smb4acl_flags = SEC_DESC_SELF_RELATIVE; + + if (nfsacl41_flags & ACL4_AUTO_INHERIT) { + smb4acl_flags |= SEC_DESC_DACL_AUTO_INHERITED; + } + if (nfsacl41_flags & ACL4_PROTECTED) { + smb4acl_flags |= SEC_DESC_DACL_PROTECTED; + } + if (nfsacl41_flags & ACL4_DEFAULTED) { + smb4acl_flags |= SEC_DESC_DACL_DEFAULTED; + } + + return smb4acl_flags; +} diff --git a/source3/modules/nfs4acl_xattr_util.h b/source3/modules/nfs4acl_xattr_util.h new file mode 100644 index 00000000000..2d2c6a158ba --- /dev/null +++ b/source3/modules/nfs4acl_xattr_util.h @@ -0,0 +1,25 @@ +/* + * Copyright (C) Ralph Boehme 2018 + * + * 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; either version 3 of the License, or + * (at your option) any later version. + * + * 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, see . + * + */ + +#ifndef _NFS4ACL_XATTR_UTIL_H_ +#define _NFS4ACL_XATTR_UTIL_H_ + +unsigned smb4acl_to_nfs4acl_flags(uint16_t smb4acl_flags); +uint16_t nfs4acl_to_smb4acl_flags(unsigned nfsacl41_flags); + +#endif /* _NFS4ACL_XATTR_UTIL_H_ */ diff --git a/source3/modules/nfs4acl_xattr_xdr.c b/source3/modules/nfs4acl_xattr_xdr.c index ebe990215fa..1db36e96769 100644 --- a/source3/modules/nfs4acl_xattr_xdr.c +++ b/source3/modules/nfs4acl_xattr_xdr.c @@ -39,6 +39,7 @@ #include #include "nfs41acl.h" #include "nfs4acl_xattr_xdr.h" +#include "nfs4acl_xattr_util.h" static unsigned nfs4acli_get_naces(nfsacl41i *nacl) { @@ -122,23 +123,6 @@ static nfsace4i *nfs4acli_get_ace(nfsacl41i *nacl, size_t n) return &nacl->na41_aces.na41_aces_val[n]; } -static unsigned smb4acl_to_nfs4acl_flags(uint16_t smb4acl_flags) -{ - unsigned nfs4acl_flags = 0; - - if (smb4acl_flags & SEC_DESC_DACL_AUTO_INHERITED) { - nfs4acl_flags |= ACL4_AUTO_INHERIT; - } - if (smb4acl_flags & SEC_DESC_DACL_PROTECTED) { - nfs4acl_flags |= ACL4_PROTECTED; - } - if (smb4acl_flags & SEC_DESC_DACL_DEFAULTED) { - nfs4acl_flags |= ACL4_DEFAULTED; - } - - return nfs4acl_flags; -} - static bool smb4acl_to_nfs4acli(vfs_handle_struct *handle, TALLOC_CTX *mem_ctx, struct SMB4ACL_T *smb4acl, @@ -255,23 +239,6 @@ NTSTATUS nfs4acl_smb4acl_to_xdr_blob(vfs_handle_struct *handle, return NT_STATUS_OK; } -static uint16_t nfs4acl_to_smb4acl_flags(unsigned nfsacl41_flags) -{ - uint16_t smb4acl_flags = SEC_DESC_SELF_RELATIVE; - - if (nfsacl41_flags & ACL4_AUTO_INHERIT) { - smb4acl_flags |= SEC_DESC_DACL_AUTO_INHERITED; - } - if (nfsacl41_flags & ACL4_PROTECTED) { - smb4acl_flags |= SEC_DESC_DACL_PROTECTED; - } - if (nfsacl41_flags & ACL4_DEFAULTED) { - smb4acl_flags |= SEC_DESC_DACL_DEFAULTED; - } - - return smb4acl_flags; -} - static NTSTATUS nfs4acl_xdr_blob_to_nfs4acli(struct vfs_handle_struct *handle, TALLOC_CTX *mem_ctx, DATA_BLOB *blob, diff --git a/source3/modules/wscript_build b/source3/modules/wscript_build index e67a0abe10c..5007d58241a 100644 --- a/source3/modules/wscript_build +++ b/source3/modules/wscript_build @@ -278,6 +278,7 @@ bld.SAMBA3_MODULE('vfs_nfs4acl_xattr', vfs_nfs4acl_xattr.c nfs4acl_xattr_ndr.c nfs4acl_xattr_xdr.c + nfs4acl_xattr_util.c ''', deps='NFS4_ACLS sunacl NDR_NFS4ACL VFS_NFS4_XDR', init_function='', -- 2.34.1