s3-smbd: Move smb_acl_t declaration to smb_acl.idl
authorAndrew Bartlett <abartlet@samba.org>
Sun, 12 Aug 2012 12:02:23 +0000 (22:02 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 15 Aug 2012 01:44:44 +0000 (11:44 +1000)
This will allow us to marshall this into and from an NDR blob on disk, which will
allow us to fake up ACL support during make test, and to test the NT ACL emulation
using python bindings via the VFS.

Andrew Bartlett

librpc/idl/smb_acl.idl [new file with mode: 0644]
librpc/idl/wscript_build
librpc/wscript_build
source3/include/smb_acls.h
source3/wscript_build

diff --git a/librpc/idl/smb_acl.idl b/librpc/idl/smb_acl.idl
new file mode 100644 (file)
index 0000000..9586958
--- /dev/null
@@ -0,0 +1,63 @@
+/* 
+   Unix SMB/CIFS implementation.
+   Portable SMB ACL interface
+   Copyright (C) Jeremy Allison 2000
+   Copyright (C) Andrew Bartlett 2012
+   
+   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 <http://www.gnu.org/licenses/>.
+*/
+
+
+/* Allow the smb_acl interface to be pushed into an NDR blob and read/written in python */
+[
+       pointer_default(unique)
+]
+interface smb_acl
+{
+
+       const int SMB_ACL_READ                          = 4;
+       const int SMB_ACL_WRITE                         = 2;
+       const int SMB_ACL_EXECUTE                       = 1;
+
+       /* Types of ACLs. */
+       typedef enum {
+               SMB_ACL_TAG_INVALID = 0,
+               SMB_ACL_USER        = 1,
+               SMB_ACL_USER_OBJ    = 2,
+               SMB_ACL_GROUP       = 3,
+               SMB_ACL_GROUP_OBJ   = 4,
+               SMB_ACL_OTHER       = 5,
+               SMB_ACL_MASK        = 6
+       } smb_acl_tag_t;
+       
+       typedef struct {
+               smb_acl_tag_t a_type;
+               mode_t a_perm;
+               uid_t uid;
+               gid_t gid;
+       } smb_acl_entry;
+       
+       typedef struct {
+               int     size;
+               int     count;
+               int     next;
+               smb_acl_entry *acl;
+       } smb_acl_t;
+       
+       const int SMB_ACL_FIRST_ENTRY           = 0;
+       const int SMB_ACL_NEXT_ENTRY            = 1;
+               
+       const int SMB_ACL_TYPE_ACCESS           = 0;
+       const int SMB_ACL_TYPE_DEFAULT          = 1;
+}
index 58d3181cb58eee04a5f16ac84036c5821ac73cc7..2dbf1a3f8392ea9646359fc6290bdfa070707f0b 100644 (file)
@@ -4,7 +4,7 @@ bld.SAMBA_PIDL_LIST('PIDL',
                     '''atsvc.idl auth.idl drsuapi.idl epmapper.idl initshutdown.idl
                        misc.idl ntlmssp.idl schannel.idl trkwks.idl
                        audiosrv.idl dfsblobs.idl dsbackup.idl eventlog.idl file_id.idl keysvc.idl
-                       msgsvc.idl ntsvcs.idl remact.idl security.idl unixinfo.idl wzcsvc.idl
+                       msgsvc.idl ntsvcs.idl remact.idl security.idl smb_acl.idl unixinfo.idl wzcsvc.idl
                        browser.idl dfs.idl dssetup.idl frsapi.idl krb5pac.idl
                        named_pipe_auth.idl orpc.idl rot.idl spoolss.idl w32time.idl xattr.idl
                        dbgidl.idl dnsserver.idl echo.idl frsrpc.idl lsa.idl nbt.idl dns.idl
index 1dd755eb3081bd80eac738a104fbdd36609e02a5..8dbbe2de05c349fee1e0a57228f3d5f3409367ab 100644 (file)
@@ -239,6 +239,11 @@ bld.SAMBA_SUBSYSTEM('NDR_SECURITY',
     header_path='gen_ndr'
     )
 
+bld.SAMBA_SUBSYSTEM('NDR_SMB_ACL',
+    source='gen_ndr/ndr_smb_acl.c',
+    deps='ndr',
+    )
+
 bld.SAMBA_SUBSYSTEM('NDR_SVCCTL',
     source='gen_ndr/ndr_svcctl.c ndr/ndr_svcctl.c',
     public_deps='ndr NDR_SECURITY'
index 4998e4b07d80336e5ab3a572344d0f646f5f12f0..2a47661ede76972eed0b610823f8e719e1f24fc5 100644 (file)
 #ifndef _SMB_ACLS_H
 #define _SMB_ACLS_H
 
+#include "librpc/gen_ndr/smb_acl.h"
+
 struct vfs_handle_struct;
 struct files_struct;
 
 typedef int                    SMB_ACL_TYPE_T;
 typedef mode_t                 *SMB_ACL_PERMSET_T;
 typedef mode_t                 SMB_ACL_PERM_T;
-#define SMB_ACL_READ                           4
-#define SMB_ACL_WRITE                          2
-#define SMB_ACL_EXECUTE                                1
-
-/* Types of ACLs. */
-enum smb_acl_tag_t {
-       SMB_ACL_TAG_INVALID=0,
-       SMB_ACL_USER=1,
-       SMB_ACL_USER_OBJ,
-       SMB_ACL_GROUP,
-       SMB_ACL_GROUP_OBJ,
-       SMB_ACL_OTHER,
-       SMB_ACL_MASK
-};
 
 typedef enum smb_acl_tag_t SMB_ACL_TAG_T;
-
-struct smb_acl_entry {
-       enum smb_acl_tag_t a_type;
-       SMB_ACL_PERM_T a_perm;
-       uid_t uid;
-       gid_t gid;
-};
-
-typedef struct smb_acl_t {
-       int     size;
-       int     count;
-       int     next;
-       struct smb_acl_entry *acl;
-} *SMB_ACL_T;
+typedef struct smb_acl_t *SMB_ACL_T;
 
 typedef struct smb_acl_entry   *SMB_ACL_ENTRY_T;
 
-#define SMB_ACL_FIRST_ENTRY                    0
-#define SMB_ACL_NEXT_ENTRY                     1
-
-#define SMB_ACL_TYPE_ACCESS                    0
-#define SMB_ACL_TYPE_DEFAULT           1
-
 /* The following definitions come from lib/sysacls.c  */
 
 int sys_acl_get_entry(SMB_ACL_T acl_d, int entry_id, SMB_ACL_ENTRY_T *entry_p);
index 9c6c5aa6b1d5a7bd2f627d467d32abb94b2fd7a4..2fc65550c9579af77675e563980189cad58f7fa8 100755 (executable)
@@ -932,6 +932,7 @@ bld.SAMBA3_LIBRARY('smbd_base',
                     NDR_SMBXSRV
                    LIBASYS
                     ccan-hash
+                    NDR_SMB_ACL
                     ''',
                     private_library=True,
                     vars=locals())