s3:include: remove unused DEFAULT_TRUST_ACCOUNT_PASSWORD_LENGTH
[nivanova/samba-autobuild/.git] / source3 / include / smb.h
index a163e9e5cac5f3b2f235bc1f2f07b51d9fb5f03f..24a73e57a3d97a392e7b91da871196622e81dd2e 100644 (file)
 #include "libds/common/roles.h"
 
 /* logged when starting the various Samba daemons */
-#define COPYRIGHT_STARTUP_MESSAGE      "Copyright Andrew Tridgell and the Samba Team 1992-2013"
-
-
-#define BUFFER_SIZE (128*1024)
+#define COPYRIGHT_STARTUP_MESSAGE      "Copyright Andrew Tridgell and the Samba Team 1992-2017"
 
 #define SAFETY_MARGIN 1024
 #define LARGE_WRITEX_HDR_SIZE 65
+#define LARGE_WRITEX_BUFFER_SIZE (128*1024)
 
 #define NMB_PORT 137
 #define DGRAM_PORT 138
 
 #include "librpc/gen_ndr/security.h"
 
-struct idle_event;
 struct share_mode_entry;
 struct uuid;
 struct named_mutex;
@@ -144,7 +141,7 @@ struct notify_event;
 struct notify_change_request;
 struct sys_notify_backend;
 struct sys_notify_context {
-       struct event_context *ev;
+       struct tevent_context *ev;
        void *private_data;     /* For use by the system backend */
 };
 
@@ -154,6 +151,7 @@ struct sys_notify_context {
 /* Include VFS stuff */
 
 #include "smb_acls.h"
+#include "lib/readdir_attr.h"
 #include "vfs.h"
 
 struct current_user {
@@ -182,6 +180,9 @@ struct interface {
        struct sockaddr_storage ip;
        struct sockaddr_storage netmask;
        struct sockaddr_storage bcast;
+       uint32_t if_index;
+       uint64_t linkspeed;
+       uint32_t capability;
 };
 
 #define SHARE_MODE_FLAG_POSIX_OPEN     0x1
@@ -192,20 +193,20 @@ struct interface {
 
 Offset  Data                   length.
 0      struct server_id pid    4
-4      uint16 op_mid           8
-12     uint16 op_type          2
-14     uint32 access_mask      4
-18     uint32 share_access     4
-22     uint32 private_options  4
-26     uint32 time sec         4
-30     uint32 time usec        4
-34     uint64 dev              8 bytes
-42     uint64 inode            8 bytes
-50     uint64 extid            8 bytes
+4      uint16_t op_mid         8
+12     uint16_t op_type        2
+14     uint32_t access_mask    4
+18     uint32_t share_access   4
+22     uint32_t private_options        4
+26     uint32_t time sec               4
+30     uint32_t time usec      4
+34     uint64_t dev            8 bytes
+42     uint64_t inode          8 bytes
+50     uint64_t extid          8 bytes
 58     unsigned long file_id   4 bytes
-62     uint32 uid              4 bytes
-66     uint16 flags            2 bytes
-68     uint32 name_hash        4 bytes
+62     uint32_t uid            4 bytes
+66     uint16_t flags          2 bytes
+68     uint32_t name_hash      4 bytes
 72
 
 */
@@ -266,40 +267,6 @@ Offset  Data                       length.
 #define smb_vwv16      (smb_vwv+(16*2))
 #define smb_vwv17      (smb_vwv+(17*2))
 
-/* These are the trans subcommands */
-#define TRANSACT_SETNAMEDPIPEHANDLESTATE  0x01 
-#define TRANSACT_DCERPCCMD                0x26
-#define TRANSACT_WAITNAMEDPIPEHANDLESTATE 0x53
-
-/* These are the TRANS2 sub commands */
-#define TRANSACT2_OPEN                         0x00
-#define TRANSACT2_FINDFIRST                    0x01
-#define TRANSACT2_FINDNEXT                     0x02
-#define TRANSACT2_QFSINFO                      0x03
-#define TRANSACT2_SETFSINFO                    0x04
-#define TRANSACT2_QPATHINFO                    0x05
-#define TRANSACT2_SETPATHINFO                  0x06
-#define TRANSACT2_QFILEINFO                    0x07
-#define TRANSACT2_SETFILEINFO                  0x08
-#define TRANSACT2_FSCTL                                0x09
-#define TRANSACT2_IOCTL                                0x0A
-#define TRANSACT2_FINDNOTIFYFIRST              0x0B
-#define TRANSACT2_FINDNOTIFYNEXT               0x0C
-#define TRANSACT2_MKDIR                                0x0D
-#define TRANSACT2_SESSION_SETUP                        0x0E
-#define TRANSACT2_GET_DFS_REFERRAL             0x10
-#define TRANSACT2_REPORT_DFS_INCONSISTANCY     0x11
-
-/* These are the NT transact sub commands. */
-#define NT_TRANSACT_CREATE                1
-#define NT_TRANSACT_IOCTL                 2
-#define NT_TRANSACT_SET_SECURITY_DESC     3
-#define NT_TRANSACT_NOTIFY_CHANGE         4
-#define NT_TRANSACT_RENAME                5
-#define NT_TRANSACT_QUERY_SECURITY_DESC   6
-#define NT_TRANSACT_GET_USER_QUOTA       7
-#define NT_TRANSACT_SET_USER_QUOTA       8
-
 /* These are the NT transact_get_user_quota sub commands */
 #define TRANSACT_GET_USER_QUOTA_LIST_CONTINUE  0x0000
 #define TRANSACT_GET_USER_QUOTA_LIST_START     0x0100
@@ -435,51 +402,6 @@ Offset  Data                       length.
 #define OPEN_DIRECTORY 8
 #define EXTENDED_RESPONSE_REQUIRED 0x10
 
-/* ShareAccess field. */
-#define FILE_SHARE_NONE 0 /* Cannot be used in bitmask. */
-#define FILE_SHARE_READ 1
-#define FILE_SHARE_WRITE 2
-#define FILE_SHARE_DELETE 4
-
-/* Flags - combined with attributes. */
-#define FILE_FLAG_WRITE_THROUGH    0x80000000L
-#define FILE_FLAG_NO_BUFFERING     0x20000000L
-#define FILE_FLAG_RANDOM_ACCESS    0x10000000L
-#define FILE_FLAG_SEQUENTIAL_SCAN  0x08000000L
-#define FILE_FLAG_DELETE_ON_CLOSE  0x04000000L
-#define FILE_FLAG_BACKUP_SEMANTICS 0x02000000L
-#define FILE_FLAG_POSIX_SEMANTICS  0x01000000L
-
-/* CreateDisposition field. */
-#define FILE_SUPERSEDE 0               /* File exists overwrite/supersede. File not exist create. */
-#define FILE_OPEN 1                    /* File exists open. File not exist fail. */
-#define FILE_CREATE 2                  /* File exists fail. File not exist create. */
-#define FILE_OPEN_IF 3                 /* File exists open. File not exist create. */
-#define FILE_OVERWRITE 4               /* File exists overwrite. File not exist fail. */
-#define FILE_OVERWRITE_IF 5            /* File exists overwrite. File not exist create. */
-
-/* CreateOptions field. */
-#define FILE_DIRECTORY_FILE       0x0001
-#define FILE_WRITE_THROUGH        0x0002
-#define FILE_SEQUENTIAL_ONLY      0x0004
-#define FILE_NO_INTERMEDIATE_BUFFERING 0x0008
-#define FILE_SYNCHRONOUS_IO_ALERT      0x0010  /* may be ignored */
-#define FILE_SYNCHRONOUS_IO_NONALERT   0x0020  /* may be ignored */
-#define FILE_NON_DIRECTORY_FILE   0x0040
-#define FILE_CREATE_TREE_CONNECTION    0x0080  /* ignore, should be zero */
-#define FILE_COMPLETE_IF_OPLOCKED      0x0100  /* ignore, should be zero */
-#define FILE_NO_EA_KNOWLEDGE      0x0200
-#define FILE_EIGHT_DOT_THREE_ONLY 0x0400 /* aka OPEN_FOR_RECOVERY: ignore, should be zero */
-#define FILE_RANDOM_ACCESS        0x0800
-#define FILE_DELETE_ON_CLOSE      0x1000
-#define FILE_OPEN_BY_FILE_ID     0x2000
-#define FILE_OPEN_FOR_BACKUP_INTENT    0x4000
-#define FILE_NO_COMPRESSION       0x8000
-#define FILE_RESERVER_OPFILTER    0x00100000   /* ignore, should be zero */
-#define FILE_OPEN_REPARSE_POINT   0x00200000
-#define FILE_OPEN_NO_RECALL       0x00400000
-#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 /* ignore should be zero */
-
 #define NTCREATEX_OPTIONS_MUST_IGNORE_MASK      (0x008F0480)
 
 #define NTCREATEX_OPTIONS_INVALID_PARAM_MASK    (0xFF100030)
@@ -498,12 +420,6 @@ Offset  Data                       length.
 /* Private options for printer support */
 #define NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE 0x0008
 
-/* Responses when opening a file. */
-#define FILE_WAS_SUPERSEDED 0
-#define FILE_WAS_OPENED 1
-#define FILE_WAS_CREATED 2
-#define FILE_WAS_OVERWRITTEN 3
-
 /* Flag for NT transact rename call. */
 #define RENAME_REPLACE_IF_EXISTS 1
 
@@ -513,25 +429,6 @@ Offset  Data                       length.
 #define RENAME_FLAG_RENAME                   0x104
 #define RENAME_FLAG_COPY                     0x105
 
-/* Filesystem Attributes. */
-#define FILE_CASE_SENSITIVE_SEARCH      0x00000001
-#define FILE_CASE_PRESERVED_NAMES       0x00000002
-#define FILE_UNICODE_ON_DISK            0x00000004
-/* According to cifs9f, this is 4, not 8 */
-/* Acconding to testing, this actually sets the security attribute! */
-#define FILE_PERSISTENT_ACLS            0x00000008
-#define FILE_FILE_COMPRESSION           0x00000010
-#define FILE_VOLUME_QUOTAS              0x00000020
-#define FILE_SUPPORTS_SPARSE_FILES      0x00000040
-#define FILE_SUPPORTS_REPARSE_POINTS    0x00000080
-#define FILE_SUPPORTS_REMOTE_STORAGE    0x00000100
-#define FS_LFN_APIS                     0x00004000
-#define FILE_VOLUME_IS_COMPRESSED       0x00008000
-#define FILE_SUPPORTS_OBJECT_IDS        0x00010000
-#define FILE_SUPPORTS_ENCRYPTION        0x00020000
-#define FILE_NAMED_STREAMS              0x00040000
-#define FILE_READ_ONLY_VOLUME           0x00080000
-
 /* ChangeNotify flags. */
 #define FILE_NOTIFY_CHANGE_FILE_NAME   0x001
 #define FILE_NOTIFY_CHANGE_DIR_NAME    0x002
@@ -567,6 +464,17 @@ Offset  Data                       length.
 #define NOTIFY_ACTION_REMOVED_STREAM 7
 #define NOTIFY_ACTION_MODIFIED_STREAM 8
 
+/*
+ * Timestamp format used in "previous versions":
+ * This is the windows-level format of the @GMT- token.
+ * It is a fixed format not to be confused with the
+ * format for the POSIX-Level token of the shadow_copy2
+ * VFS module that can be configured via the "shadow:format"
+ * configuration option but defaults to the same format.
+ * See the shadow_copy2 module.
+ */
+#define GMT_NAME_LEN 24 /* length of a @GMT- name */
+#define GMT_FORMAT "@GMT-%Y.%m.%d-%H.%M.%S"
 
 /* where to find the base of the SMB packet proper */
 #define smb_base(buf) (((const char *)(buf))+4)
@@ -575,14 +483,6 @@ Offset  Data                       length.
    otherwise NT will not honour the announce packets */
 #define MAX_SERVER_STRING_LENGTH 48
 
-
-#define SMB_SUCCESS 0  /* The request was successful. */
-
-#ifdef WITH_DFS
-void dfs_unlogin(void);
-extern int dcelogin_atmost_once;
-#endif
-
 #ifdef NOSTRDUP
 char *strdup(char *s);
 #endif
@@ -602,10 +502,15 @@ char *strdup(char *s);
  *  Note: In the presence of NT4.X do not set above 4.9
  *        Setting this above 4.9 can have undesired side-effects.
  *        This may change again in Samba-3.0 after further testing. JHT
+ *
+ * Version 6.1 - For older smb server versions, MMC doesn't let offline
+ *               settings to be configured during share creation. Changing
+ *               it to 6.1 to mimic Win2K8R2.
+ *
  */
  
-#define SAMBA_MAJOR_NBT_ANNOUNCE_VERSION 0x04
-#define SAMBA_MINOR_NBT_ANNOUNCE_VERSION 0x09
+#define SAMBA_MAJOR_NBT_ANNOUNCE_VERSION 0x06
+#define SAMBA_MINOR_NBT_ANNOUNCE_VERSION 0x01
 
 /* Browser Election Values */
 #define BROWSER_ELECTION_VERSION       0x010f
@@ -620,7 +525,7 @@ http://msdn.microsoft.com/en-us/library/cc246334(PROT.13).aspx
 #define NO_SUBSTREAMS          0x2
 #define NO_REPARSETAG          0x4
 
-/* Remote architectures we know about. */
+/* Remote architectures we know about, keep in sync with remote_arch_strings */
 enum remote_arch_types {RA_UNKNOWN, RA_WFWG, RA_OS2, RA_WIN95, RA_WINNT,
                        RA_WIN2K, RA_WINXP, RA_WIN2K3, RA_VISTA,
                        RA_SAMBA, RA_CIFSFS, RA_WINXP64, RA_OSX};
@@ -667,22 +572,24 @@ enum remote_arch_types {RA_UNKNOWN, RA_WFWG, RA_OS2, RA_WIN95, RA_WINNT,
 #define EXCLUSIVE_OPLOCK               OPLOCK_EXCLUSIVE
 #define BATCH_OPLOCK                   OPLOCK_BATCH
 #define LEVEL_II_OPLOCK                OPLOCK_LEVEL_II
+#define LEASE_OPLOCK                   0x100
 
 /* The following are Samba-private. */
 #define INTERNAL_OPEN_ONLY             0x8
-#define FAKE_LEVEL_II_OPLOCK           0x10    /* Client requested no_oplock, but we have to
+/* #define FAKE_LEVEL_II_OPLOCK        0x10 */   /* Not used anymore */
+                               /* Client requested no_oplock, but we have to
                                 * inform potential level2 holders on
                                 * write. */
-#define DEFERRED_OPEN_ENTRY            0x20
+/* #define DEFERRED_OPEN_ENTRY                 0x20 */   /* Not used anymore */
 /* #define UNUSED_SHARE_MODE_ENTRY     0x40 */   /* Not used anymore */
-#define FORCE_OPLOCK_BREAK_TO_NONE     0x80
+/* #define FORCE_OPLOCK_BREAK_TO_NONE  0x80 */   /* Not used anymore */
 
 /* None of the following should ever appear in fsp->oplock_request. */
-#define SAMBA_PRIVATE_OPLOCK_MASK (INTERNAL_OPEN_ONLY|DEFERRED_OPEN_ENTRY|FORCE_OPLOCK_BREAK_TO_NONE)
+#define SAMBA_PRIVATE_OPLOCK_MASK (INTERNAL_OPEN_ONLY)
 
 #define EXCLUSIVE_OPLOCK_TYPE(lck) ((lck) & ((unsigned int)EXCLUSIVE_OPLOCK|(unsigned int)BATCH_OPLOCK))
 #define BATCH_OPLOCK_TYPE(lck) ((lck) & (unsigned int)BATCH_OPLOCK)
-#define LEVEL_II_OPLOCK_TYPE(lck) ((lck) & ((unsigned int)LEVEL_II_OPLOCK|(unsigned int)FAKE_LEVEL_II_OPLOCK))
+#define LEVEL_II_OPLOCK_TYPE(lck) ((lck) & (unsigned int)LEVEL_II_OPLOCK)
 
 /* kernel_oplock_message definition.
 
@@ -745,7 +652,8 @@ minimum length == 24.
 enum smbd_capability {
     KERNEL_OPLOCK_CAPABILITY,
     DMAPI_ACCESS_CAPABILITY,
-    LEASE_CAPABILITY
+    LEASE_CAPABILITY,
+    DAC_OVERRIDE_CAPABILITY
 };
 
 /*
@@ -824,12 +732,6 @@ struct node_status_extra {
 
 #define SAFE_NETBIOS_CHARS ". -_"
 
-/* The maximum length of a trust account password.
-   Used when we randomly create it, 15 char passwords
-   exceed NT4's max password length */
-
-#define DEFAULT_TRUST_ACCOUNT_PASSWORD_LENGTH 14
-
 #define PORT_NONE      0
 #ifndef LDAP_PORT
 #define LDAP_PORT      389
@@ -843,7 +745,7 @@ struct ip_service {
 };
 
 struct ea_struct {
-       uint8 flags;
+       uint8_t flags;
        char *name;
        DATA_BLOB value;
 };
@@ -887,9 +789,9 @@ enum file_close_type {NORMAL_CLOSE=0,SHUTDOWN_CLOSE,ERROR_CLOSE};
 #define SAMBA_EXTENDED_INFO_MAGIC 0x536d4261 /* "SmBa" */
 #define SAMBA_EXTENDED_INFO_VERSION_STRING_LENGTH 28
 struct smb_extended_info {
-       uint32 samba_magic;             /* Always SAMBA_EXTRA_INFO_MAGIC */
-       uint32 samba_version;           /* Major/Minor/Release/Revision */
-       uint32 samba_subversion;        /* Prerelease/RC/Vendor patch */
+       uint32_t samba_magic;           /* Always SAMBA_EXTRA_INFO_MAGIC */
+       uint32_t samba_version;         /* Major/Minor/Release/Revision */
+       uint32_t samba_subversion;      /* Prerelease/RC/Vendor patch */
        NTTIME samba_gitcommitdate;
        char   samba_version_string[SAMBA_EXTENDED_INFO_VERSION_STRING_LENGTH];
 };
@@ -899,15 +801,14 @@ struct smb_extended_info {
  */
 
 enum flush_reason_enum {
-    SEEK_FLUSH,
-    READ_FLUSH,
-    WRITE_FLUSH,
-    READRAW_FLUSH,
-    OPLOCK_RELEASE_FLUSH,
-    CLOSE_FLUSH,
-    SYNC_FLUSH,
-    SIZECHANGE_FLUSH,
-    /* NUM_FLUSH_REASONS must remain the last value in the enumeration. */
-    NUM_FLUSH_REASONS};
+    SAMBA_SEEK_FLUSH,
+    SAMBA_READ_FLUSH,
+    SAMBA_WRITE_FLUSH,
+    SAMBA_READRAW_FLUSH,
+    SAMBA_OPLOCK_RELEASE_FLUSH,
+    SAMBA_CLOSE_FLUSH,
+    SAMBA_SYNC_FLUSH,
+    SAMBA_SIZECHANGE_FLUSH,
+};
 
 #endif /* _SMB_H */