s3:client: s/Undefined/SMB_SIGNING_DEFAULT/
[kai/samba.git] / source3 / include / vfs.h
index c86fad8ec4514389c570f6b5dbcab422b3dfa53d..4559b351bc6451a974a4ee7da6930c0d93b8e9d4 100644 (file)
@@ -6,17 +6,17 @@
    Copyright (C) Alexander Bokovoy                     2002-2005
    Copyright (C) Stefan (metze) Metzmacher             2003
    Copyright (C) Volker Lendecke                       2009
-   
+
    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/>.
 
                to split out the two possible uses. JRA. */
 /* Leave at 28 - not yet released. Add fdopendir. JRA. */
 /* Leave at 28 - not yet released. Rename open function to open_fn. - gd */
-#define SMB_VFS_INTERFACE_VERSION 28
-
-
-/* to bug old modules which are trying to compile with the old functions */
-
-#ifndef HAVE_STRUCT_VFSOPS /* vfsops struct on Tru64 has a vfs_init function pointer */
-#define vfs_init __ERROR_please_port_this_module_to_SMB_VFS_INTERFACE_VERSION_8_donot_use_vfs_init_anymore(void) { __ERROR_please_port_this_module_to_SMB_VFS_INTERFACE_VERSION_8_donot_use_vfs_init_anymore };
-#endif /* HAVE_STRUCT_VFSOPS */
-
-#define lp_parm_string __ERROR_please_port_lp_parm_string_to_lp_parm_const_string_or_lp_parm_talloc_string { \
-  __ERROR_please_port_lp_parm_string_to_lp_parm_const_string_or_lp_parm_talloc_string };
-#define lp_vfs_options __ERROR_please_donot_use_lp_vfs_options_anymore_use_lp_parm_xxxx_functions_instead { \
-  __ERROR_please_donot_use_lp_vfs_options_anymore_use_lp_parm_xxxx_functions_instead };
+/* Leave at 28 - not yet released. Make getwd function always return malloced memory. JRA. */
+/* Bump to version 29 - Samba 3.6.0 will ship with interface version 28. */
+/* Leave at 29 - not yet releases. Add fsctl. Richard Sharpe */
+/* Leave at 29 - not yet released. add SMB_VFS_GET_DFS_REFERRAL() - metze */
+#define SMB_VFS_INTERFACE_VERSION 29
 
 /*
     All intercepted VFS operations must be declared as static functions inside module source
@@ -166,6 +158,7 @@ struct ea_list;
 struct smb_file_time;
 struct blocking_lock_record;
 struct smb_filename;
+struct dfs_GetDFSReferral;
 
 #define VFS_FIND(__fn__) while (handle->fns->__fn__==NULL) { \
                                handle = handle->next; \
@@ -202,6 +195,13 @@ struct vfs_fn_pointers {
        int (*statvfs)(struct vfs_handle_struct *handle, const char *path, struct vfs_statvfs_struct *statbuf);
        uint32_t (*fs_capabilities)(struct vfs_handle_struct *handle, enum timestamp_set_resolution *p_ts_res);
 
+       /*
+        * Note: that "struct dfs_GetDFSReferral *r"
+        * needs to be a valid TALLOC_CTX
+        */
+       NTSTATUS (*get_dfs_referrals)(struct vfs_handle_struct *handle,
+                                     struct dfs_GetDFSReferral *r);
+
        /* Directory operations */
 
        SMB_STRUCT_DIR *(*opendir)(struct vfs_handle_struct *handle, const char *fname, const char *mask, uint32 attributes);
@@ -262,7 +262,7 @@ struct vfs_fn_pointers {
        int (*fchown)(struct vfs_handle_struct *handle, struct files_struct *fsp, uid_t uid, gid_t gid);
        int (*lchown)(struct vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid);
        int (*chdir)(struct vfs_handle_struct *handle, const char *path);
-       char *(*getwd)(struct vfs_handle_struct *handle, char *buf);
+       char *(*getwd)(struct vfs_handle_struct *handle);
        int (*ntimes)(struct vfs_handle_struct *handle,
                      const struct smb_filename *smb_fname,
                      struct smb_file_time *ft);
@@ -339,6 +339,17 @@ struct vfs_fn_pointers {
                                   TALLOC_CTX *mem_ctx,
                                   char **mapped_name);
 
+       NTSTATUS (*fsctl)(struct vfs_handle_struct *handle,
+                         struct files_struct *fsp,
+                         TALLOC_CTX *ctx,
+                         uint32_t function,
+                         uint16_t req_flags,
+                         const uint8_t *_in_data,
+                         uint32_t in_len,
+                         uint8_t **_out_data,
+                         uint32_t max_out_len,
+                         uint32_t *out_len); 
+
        /* NT ACL operations. */
 
        NTSTATUS (*fget_nt_acl)(struct vfs_handle_struct *handle,
@@ -534,6 +545,11 @@ int smb_vfs_call_statvfs(struct vfs_handle_struct *handle, const char *path,
                         struct vfs_statvfs_struct *statbuf);
 uint32_t smb_vfs_call_fs_capabilities(struct vfs_handle_struct *handle,
                        enum timestamp_set_resolution *p_ts_res);
+/*
+ * Note: that "struct dfs_GetDFSReferral *r" needs to be a valid TALLOC_CTX
+ */
+NTSTATUS smb_vfs_call_get_dfs_referrals(struct vfs_handle_struct *handle,
+                                       struct dfs_GetDFSReferral *r);
 SMB_STRUCT_DIR *smb_vfs_call_opendir(struct vfs_handle_struct *handle,
                                     const char *fname, const char *mask,
                                     uint32 attributes);
@@ -625,7 +641,7 @@ int smb_vfs_call_fchown(struct vfs_handle_struct *handle,
 int smb_vfs_call_lchown(struct vfs_handle_struct *handle, const char *path,
                        uid_t uid, gid_t gid);
 int smb_vfs_call_chdir(struct vfs_handle_struct *handle, const char *path);
-char *smb_vfs_call_getwd(struct vfs_handle_struct *handle, char *buf);
+char *smb_vfs_call_getwd(struct vfs_handle_struct *handle);
 int smb_vfs_call_ntimes(struct vfs_handle_struct *handle,
                        const struct smb_filename *smb_fname,
                        struct smb_file_time *ft);
@@ -702,6 +718,16 @@ NTSTATUS smb_vfs_call_translate_name(struct vfs_handle_struct *handle,
                                     enum vfs_translate_direction direction,
                                     TALLOC_CTX *mem_ctx,
                                     char **mapped_name);
+NTSTATUS smb_vfs_call_fsctl(struct vfs_handle_struct *handle,
+                           struct files_struct *fsp,
+                           TALLOC_CTX *ctx,
+                           uint32_t function,
+                           uint16_t req_flags,
+                           const uint8_t *_in_data,
+                           uint32_t in_len,
+                           uint8_t **_out_data,
+                           uint32_t max_out_len,
+                           uint32_t *out_len); 
 NTSTATUS smb_vfs_call_fget_nt_acl(struct vfs_handle_struct *handle,
                                  struct files_struct *fsp,
                                  uint32 security_info,