Line data Source code
1 : /* 2 : * Copyright (C) Ralph Boehme 2018 3 : * 4 : * This program is free software; you can redistribute it and/or modify 5 : * it under the terms of the GNU General Public License as published by 6 : * the Free Software Foundation; either version 3 of the License, or 7 : * (at your option) any later version. 8 : * 9 : * This program is distributed in the hope that it will be useful, 10 : * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 : * GNU General Public License for more details. 13 : * 14 : * You should have received a copy of the GNU General Public License 15 : * along with this program; if not, see <http://www.gnu.org/licenses/>. 16 : * 17 : */ 18 : 19 : #include "includes.h" 20 : #include "smbd/proto.h" 21 : #include "libcli/security/security_descriptor.h" 22 : 23 : #ifdef HAVE_RPC_XDR_H 24 : /* <rpc/xdr.h> uses TRUE and FALSE */ 25 : #ifdef TRUE 26 : #undef TRUE 27 : #endif 28 : 29 : #ifdef FALSE 30 : #undef FALSE 31 : #endif 32 : 33 : #include "nfs4_acls.h" 34 : #include "nfs41acl.h" 35 : #include "nfs4acl_xattr_util.h" 36 : 37 : #undef DBGC_CLASS 38 : #define DBGC_CLASS DBGC_VFS 39 : 40 1428 : unsigned smb4acl_to_nfs4acl_flags(uint16_t smb4acl_flags) 41 : { 42 1428 : unsigned nfs4acl_flags = 0; 43 : 44 1428 : if (smb4acl_flags & SEC_DESC_DACL_AUTO_INHERITED) { 45 228 : nfs4acl_flags |= ACL4_AUTO_INHERIT; 46 : } 47 1428 : if (smb4acl_flags & SEC_DESC_DACL_PROTECTED) { 48 476 : nfs4acl_flags |= ACL4_PROTECTED; 49 : } 50 1428 : if (smb4acl_flags & SEC_DESC_DACL_DEFAULTED) { 51 0 : nfs4acl_flags |= ACL4_DEFAULTED; 52 : } 53 : 54 1428 : return nfs4acl_flags; 55 : } 56 : 57 2504 : uint16_t nfs4acl_to_smb4acl_flags(unsigned nfsacl41_flags) 58 : { 59 2504 : uint16_t smb4acl_flags = SEC_DESC_SELF_RELATIVE; 60 : 61 2504 : if (nfsacl41_flags & ACL4_AUTO_INHERIT) { 62 296 : smb4acl_flags |= SEC_DESC_DACL_AUTO_INHERITED; 63 : } 64 2504 : if (nfsacl41_flags & ACL4_PROTECTED) { 65 588 : smb4acl_flags |= SEC_DESC_DACL_PROTECTED; 66 : } 67 2504 : if (nfsacl41_flags & ACL4_DEFAULTED) { 68 0 : smb4acl_flags |= SEC_DESC_DACL_DEFAULTED; 69 : } 70 : 71 2504 : return smb4acl_flags; 72 : } 73 : #endif /* HAVE_RPC_XDR_H */