s3:include: remove unused DEFAULT_TRUST_ACCOUNT_PASSWORD_LENGTH
[nivanova/samba-autobuild/.git] / source3 / include / smb.h
index 4a26a12ee88e20662b2a7dc282bb25214d9daaff..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-2011"
-
-
-#if defined(LARGE_SMB_OFF_T)
-#define BUFFER_SIZE (128*1024)
-#else /* no large readwrite possible */
-#define BUFFER_SIZE (0xFFFF)
-#endif
+#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
-#define SMB_PORT1 445
-#define SMB_PORT2 139
+#define NBT_SMB_PORT  139   /* Port for SMB over NBT transport (IETF STD#19). */
+#define TCP_SMB_PORT  445   /* Port for SMB over naked TCP transport.         */
 #define SMB_PORTS "445 139"
 
 #define Undefined (-1)
 #define OPENX_FILE_CREATE_IF_NOT_EXIST 0x10
 #define OPENX_FILE_FAIL_IF_NOT_EXIST 0
 
-typedef union unid_t {
-       uid_t uid;
-       gid_t gid;
-} unid_t;
-
 /* pipe string names */
 
 #ifndef MAXSUBAUTHS
@@ -131,44 +120,6 @@ typedef union unid_t {
 
 #include "librpc/gen_ndr/security.h"
 
-/*
- * The complete list of SIDS belonging to this user.
- * Created when a vuid is registered.
- * The definition of the user_sids array is as follows :
- *
- * token->user_sids[0] = primary user SID.
- * token->user_sids[1] = primary group SID.
- * token->user_sids[2..num_sids] = supplementary group SIDS.
- */
-
-#define PRIMARY_USER_SID_INDEX 0
-#define PRIMARY_GROUP_SID_INDEX 1
-
-typedef struct write_cache {
-       SMB_OFF_T file_size;
-       SMB_OFF_T offset;
-       size_t alloc_size;
-       size_t data_size;
-       char *data;
-} write_cache;
-
-struct fd_handle {
-       size_t ref_count;
-       int fd;
-       uint64_t position_information;
-       SMB_OFF_T pos;
-       uint32 private_options; /* NT Create options, but we only look at
-                                * NTCREATEX_OPTIONS_PRIVATE_DENY_DOS and
-                                * NTCREATEX_OPTIONS_PRIVATE_DENY_FCB and
-                                * NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE
-                                * for print files *only*, where
-                                * DELETE_ON_CLOSE is not stored in the share
-                                * mode database.
-                                */
-       unsigned long gen_id;
-};
-
-struct idle_event;
 struct share_mode_entry;
 struct uuid;
 struct named_mutex;
@@ -176,16 +127,6 @@ struct wb_context;
 struct rpc_cli_smbd_conn;
 struct fncall_context;
 
-struct vfs_fsp_data {
-    struct vfs_fsp_data *next;
-    struct vfs_handle_struct *owner;
-    void (*destroy)(void *p_data);
-    void *_dummy_;
-    /* NOTE: This structure contains four pointers so that we can guarantee
-     * that the end of the structure is always both 4-byte and 8-byte aligned.
-     */
-};
-
 /* the basic packet size, assuming no words or bytes */
 #define smb_size 39
 
@@ -195,318 +136,31 @@ struct notify_change {
 };
 
 struct notify_mid_map;
-struct notify_entry;
+struct notify_db_entry;
 struct notify_event;
 struct notify_change_request;
 struct sys_notify_backend;
 struct sys_notify_context {
-       struct event_context *ev;
-       struct connection_struct *conn;
+       struct tevent_context *ev;
        void *private_data;     /* For use by the system backend */
 };
 
-struct notify_change_buf {
-       /*
-        * If no requests are pending, changes are queued here. Simple array,
-        * we only append.
-        */
-
-       /*
-        * num_changes == -1 means that we have got a catch-all change, when
-        * asked we just return NT_STATUS_OK without specific changes.
-        */
-       int num_changes;
-       struct notify_change *changes;
-
-       /*
-        * If no changes are around requests are queued here. Using a linked
-        * list, because we have to append at the end and delete from the top.
-        */
-       struct notify_change_request *requests;
-};
-
-struct print_file_data {
-       char *svcname;
-       char *docname;
-       char *filename;
-       struct policy_handle handle;
-       uint32_t jobid;
-       uint16 rap_jobid;
-};
-
-typedef struct files_struct {
-       struct files_struct *next, *prev;
-       int fnum;
-       struct connection_struct *conn;
-       struct fd_handle *fh;
-       unsigned int num_smb_operations;
-       struct file_id file_id;
-       uint64_t initial_allocation_size; /* Faked up initial allocation on disk. */
-       mode_t mode;
-       uint16 file_pid;
-       uint16 vuid;
-       write_cache *wcp;
-       struct timeval open_time;
-       uint32 access_mask;             /* NTCreateX access bits (FILE_READ_DATA etc.) */
-       uint32 share_access;            /* NTCreateX share constants (FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE). */
-
-       bool update_write_time_triggered;
-       struct timed_event *update_write_time_event;
-       bool update_write_time_on_close;
-       struct timespec close_write_time;
-       bool write_time_forced;
-
-       int oplock_type;
-       int sent_oplock_break;
-       struct timed_event *oplock_timeout;
-       struct lock_struct last_lock_failure;
-       int current_lock_count; /* Count the number of outstanding locks and pending locks. */
-
-       struct share_mode_entry *pending_break_messages;
-       int num_pending_break_messages;
-
-       bool can_lock;
-       bool can_read;
-       bool can_write;
-       bool modified;
-       bool is_directory;
-       bool aio_write_behind;
-       bool lockdb_clean;
-       bool initial_delete_on_close; /* Only set at NTCreateX if file was created. */
-       bool delete_on_close;
-       bool posix_open;
-       bool is_sparse;
-       struct smb_filename *fsp_name;
-       uint32_t name_hash;             /* Jenkins hash of full pathname. */
-
-       struct vfs_fsp_data *vfs_extension;
-       struct fake_file_handle *fake_file_handle;
-
-       struct notify_change_buf *notify;
-
-       struct files_struct *base_fsp; /* placeholder for delete on close */
-
-       /*
-        * Read-only cached brlock record, thrown away when the
-        * brlock.tdb seqnum changes. This avoids fetching data from
-        * the brlock.tdb on every read/write call.
-        */
-       int brlock_seqnum;
-       struct byte_range_lock *brlock_rec;
-
-       struct dptr_struct *dptr;
-
-       /* if not NULL, means this is a print file */
-       struct print_file_data *print_file;
-
-} files_struct;
-
 #include "ntquotas.h"
 #include "sysquotas.h"
 
-struct vuid_cache_entry {
-       struct auth_session_info *session_info;
-       uint16_t vuid;
-       bool read_only;
-};
-
-struct vuid_cache {
-       unsigned int next_entry;
-       struct vuid_cache_entry array[VUID_CACHE_SIZE];
-};
-
-typedef struct {
-       char *name;
-       bool is_wild;
-} name_compare_entry;
-
-struct trans_state {
-       struct trans_state *next, *prev;
-       uint16 vuid;
-       uint64_t mid;
-
-       uint32 max_param_return;
-       uint32 max_data_return;
-       uint32 max_setup_return;
-
-       uint8 cmd;              /* SMBtrans or SMBtrans2 */
-
-       char *name;             /* for trans requests */
-       uint16 call;            /* for trans2 and nttrans requests */
-
-       bool close_on_completion;
-       bool one_way;
-
-       unsigned int setup_count;
-       uint16 *setup;
-
-       size_t received_data;
-       size_t received_param;
-
-       size_t total_param;
-       char *param;
-
-       size_t total_data;
-       char *data;
-};
-
-/*
- * Info about an alternate data stream
- */
-
-struct stream_struct {
-       SMB_OFF_T size;
-       SMB_OFF_T alloc_size;
-       char *name;
-};
-
 /* Include VFS stuff */
 
 #include "smb_acls.h"
+#include "lib/readdir_attr.h"
 #include "vfs.h"
 
-struct dfree_cached_info {
-       time_t last_dfree_time;
-       uint64_t dfree_ret;
-       uint64_t bsize;
-       uint64_t dfree;
-       uint64_t dsize;
-};
-
-struct dptr_struct;
-
-struct share_params {
-       int service;
-};
-
-typedef struct connection_struct {
-       struct connection_struct *next, *prev;
-       struct smbd_server_connection *sconn; /* can be NULL */
-       unsigned cnum; /* an index passed over the wire */
-       struct share_params *params;
-       bool force_user;
-       struct vuid_cache vuid_cache;
-       bool printer;
-       bool ipc;
-       bool read_only; /* Attributes for the current user of the share. */
-       uint32_t share_access;
-       /* Does this filesystem honor
-          sub second timestamps on files
-          and directories when setting time ? */
-       enum timestamp_set_resolution ts_res;
-       char *connectpath;
-       char *origpath;
-
-       struct vfs_handle_struct *vfs_handles;          /* for the new plugins */
-
-       /*
-        * This represents the user information on this connection. Depending
-        * on the vuid using this tid, this might change per SMB request.
-        */
-       struct auth_session_info *session_info;
-
-       /*
-        * If the "force group" parameter is set, this is the primary gid that
-        * may be used in the users token, depending on the vuid using this tid.
-        */
-       gid_t force_group_gid;
-
-       uint16 vuid; /* vuid of user who *opened* this connection, or UID_FIELD_INVALID */
-
-       time_t lastused;
-       time_t lastused_count;
-       bool used;
-       int num_files_open;
-       unsigned int num_smb_operations; /* Count of smb operations on this tree. */
-       int encrypt_level;
-       bool encrypted_tid;
-
-       /* Semantics requested by the client or forced by the server config. */
-       bool case_sensitive;
-       bool case_preserve;
-       bool short_case_preserve;
-
-       /* Semantics provided by the underlying filesystem. */
-       int fs_capabilities;
-       /* Device number of the directory of the share mount.
-          Used to ensure unique FileIndex returns. */
-       SMB_DEV_T base_share_dev;
-
-       name_compare_entry *hide_list; /* Per-share list of files to return as hidden. */
-       name_compare_entry *veto_list; /* Per-share list of files to veto (never show). */
-       name_compare_entry *veto_oplock_list; /* Per-share list of files to refuse oplocks on. */       
-       name_compare_entry *aio_write_behind_list; /* Per-share list of files to use aio write behind on. */       
-       struct dfree_cached_info *dfree_info;
-       struct trans_state *pending_trans;
-       struct notify_context *notify_ctx;
-
-       struct rpc_pipe_client *spoolss_pipe;
-
-} connection_struct;
-
 struct current_user {
-       connection_struct *conn;
-       uint16 vuid;
+       struct connection_struct *conn;
+       uint64_t vuid; /* SMB2 compat */
        struct security_unix_token ut;
        struct security_token *nt_user_token;
 };
 
-struct smbd_smb2_request;
-
-struct smb_request {
-       uint8_t cmd;
-       uint16 flags2;
-       uint16 smbpid;
-       uint64_t mid; /* For compatibility with SMB2. */
-       uint32_t seqnum;
-       uint16 vuid;
-       uint16 tid;
-       uint8  wct;
-       uint16_t *vwv;
-       uint16_t buflen;
-       const uint8_t *buf;
-       const uint8 *inbuf;
-
-       /*
-        * Async handling in the main smb processing loop is directed by
-        * outbuf: reply_xxx routines indicate sync behaviour by putting their
-        * reply into "outbuf". If they leave it as NULL, they take of it
-        * themselves, possibly later.
-        *
-        * If async handling is wanted, the reply_xxx routine must make sure
-        * that it talloc_move()s the smb_req somewhere else.
-        */
-       uint8 *outbuf;
-
-       size_t unread_bytes;
-       bool encrypted;
-       connection_struct *conn;
-       struct smbd_server_connection *sconn;
-       struct smb_perfcount_data pcd;
-
-       /*
-        * Chained request handling
-        */
-       struct files_struct *chain_fsp;
-
-       /*
-        * Here we collect the outbufs from the chain handlers
-        */
-       uint8_t *chain_outbuf;
-
-       /*
-        * state information for async smb handling
-        */
-       void *async_priv;
-
-       bool done;
-
-       /*
-        * Back pointer to smb2 request.
-        */
-       struct smbd_smb2_request *smb2req;
-};
-
 /* Defines for the sent_oplock_break field above. */
 #define NO_BREAK_SENT 0
 #define BREAK_TO_NONE_SENT 1
@@ -518,15 +172,6 @@ typedef struct {
        fstring domain; /* domain that the client specified */
 } userdom_struct;
 
-/* used for server information: client, nameserv and ipc */
-struct server_info_struct {
-       fstring name;
-       uint32 type;
-       fstring comment;
-       fstring domain; /* used ONLY in ipc.c NOT namework.c */
-       bool server_added; /* used ONLY in ipc.c NOT namework.c */
-};
-
 /* used for network interfaces */
 struct interface {
        struct interface *next, *prev;
@@ -535,62 +180,33 @@ struct interface {
        struct sockaddr_storage ip;
        struct sockaddr_storage netmask;
        struct sockaddr_storage bcast;
-};
-
-/* Internal message queue for deferred opens. */
-struct pending_message_list {
-       struct pending_message_list *next, *prev;
-       struct timeval request_time; /* When was this first issued? */
-       struct timed_event *te;
-       struct smb_perfcount_data pcd;
-       uint32_t seqnum;
-       bool encrypted;
-       bool processed;
-       DATA_BLOB buf;
-       DATA_BLOB private_data;
+       uint32_t if_index;
+       uint64_t linkspeed;
+       uint32_t capability;
 };
 
 #define SHARE_MODE_FLAG_POSIX_OPEN     0x1
 
 #include "librpc/gen_ndr/server_id.h"
 
-/* struct returned by get_share_modes */
-struct share_mode_entry {
-       struct server_id pid;
-       uint64_t op_mid;        /* For compatibility with SMB2 opens. */
-       uint16 op_type;
-       uint32 access_mask;             /* NTCreateX access bits (FILE_READ_DATA etc.) */
-       uint32 share_access;            /* NTCreateX share constants (FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE). */
-       uint32 private_options; /* NT Create options, but we only look at
-                                * NTCREATEX_OPTIONS_PRIVATE_DENY_DOS and
-                                * NTCREATEX_OPTIONS_PRIVATE_DENY_FCB for
-                                * smbstatus and swat */
-       struct timeval time;
-       struct file_id id;
-       unsigned long share_file_id;
-       uint32 uid;             /* uid of file opener. */
-       uint16 flags;           /* See SHARE_MODE_XX above. */
-       uint32_t name_hash;             /* Jenkins hash of full pathname. */
-};
-
 /* oplock break message definition - linearization of share_mode_entry.
 
 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
 
 */
@@ -614,111 +230,9 @@ Offset  Data                      length.
 #define OP_BREAK_MSG_VNN_OFFSET 72
 #define MSG_SMB_SHARE_MODE_ENTRY_SIZE 76
 
-struct delete_token_list {
-       struct delete_token_list *next, *prev;
-       uint32_t name_hash;
-       struct security_unix_token *delete_token;
-};
-
-struct share_mode_lock {
-       const char *servicepath; /* canonicalized. */
-       const char *base_name;
-       const char *stream_name;
-       struct file_id id;
-       int num_share_modes;
-       struct share_mode_entry *share_modes;
-       struct delete_token_list *delete_tokens;
-       struct timespec old_write_time;
-       struct timespec changed_write_time;
-       bool fresh;
-       bool modified;
-       struct db_record *record;
-};
-
-/*
- * Internal structure of locking.tdb share mode db.
- * Used by locking.c and libsmbsharemodes.c
- */
-
-struct locking_data {
-       union {
-               struct {
-                       int num_share_mode_entries;
-                       struct timespec old_write_time;
-                       struct timespec changed_write_time;
-                       uint32 num_delete_token_entries;
-               } s;
-               struct share_mode_entry dummy; /* Needed for alignment. */
-       } u;
-       /* The following four entries are implicit
-
-          (1) struct share_mode_entry modes[num_share_mode_entries];
-
-          (2) A num_delete_token_entries of structs {
-               uint32_t len_delete_token;
-               char unix_token[len_delete_token] (divisible by 4).
-          };
-
-          (3) char share_name[];
-          (4) char file_name[];
-        */
-};
-
 #define NT_HASH_LEN 16
 #define LM_HASH_LEN 16
 
-/* key and data in the connections database - used in smbstatus and smbd */
-struct connections_key {
-       struct server_id pid;
-       int cnum;
-       fstring name;
-};
-
-struct connections_data {
-       int magic;
-       struct server_id pid;
-       int cnum;
-       uid_t uid;
-       gid_t gid;
-       char servicename[FSTRING_LEN];
-       char addr[24];
-       char machine[FSTRING_LEN];
-       time_t start;
-
-       /*
-        * This field used to hold the msg_flags. For compatibility reasons,
-        * keep the data structure in the tdb file the same.
-        */
-       uint32 unused_compatitibility_field;
-};
-
-#define SMB_MAGIC 0x424D53FF /* 0xFF 'S' 'M' 'B' */
-
-/* the basic packet size, assuming no words or bytes. Does not include the NBT header */
-#define MIN_SMB_SIZE 35
-
-/* when using NBT encapsulation every packet has a 4 byte header */
-#define NBT_HDR_SIZE 4
-
-/* offsets into message header for common items - NOTE: These have
-   changed from being offsets from the base of the NBT packet to the base of the SMB packet.
-   this has reduced all these values by 4
-*/
-#define HDR_COM 4
-#define HDR_RCLS 5
-#define HDR_REH 6
-#define HDR_ERR 7
-#define HDR_FLG 9
-#define HDR_FLG2 10
-#define HDR_PIDHIGH 12
-#define HDR_SS_FIELD 14
-#define HDR_TID 24
-#define HDR_PID 26
-#define HDR_UID 28
-#define HDR_MID 30
-#define HDR_WCT 32
-#define HDR_VWV 33
-
 /* offsets into message for common items */
 #define smb_com                (NBT_HDR_SIZE+HDR_COM)
 #define smb_rcls       (NBT_HDR_SIZE+HDR_RCLS)
@@ -753,146 +267,6 @@ struct connections_data {
 #define smb_vwv16      (smb_vwv+(16*2))
 #define smb_vwv17      (smb_vwv+(17*2))
 
-/* types of buffers in core SMB protocol */
-#define SMB_DATA_BLOCK 0x1
-#define SMB_ASCII4     0x4
-
-
-/* flag defines. CIFS spec 3.1.1 */
-#define FLAG_SUPPORT_LOCKREAD       0x01
-#define FLAG_CLIENT_BUF_AVAIL       0x02
-#define FLAG_RESERVED               0x04
-#define FLAG_CASELESS_PATHNAMES     0x08
-#define FLAG_CANONICAL_PATHNAMES    0x10
-#define FLAG_REQUEST_OPLOCK         0x20
-#define FLAG_REQUEST_BATCH_OPLOCK   0x40
-#define FLAG_REPLY                  0x80
-
-/* the complete */
-#define SMBmkdir      0x00   /* create directory */
-#define SMBrmdir      0x01   /* delete directory */
-#define SMBopen       0x02   /* open file */
-#define SMBcreate     0x03   /* create file */
-#define SMBclose      0x04   /* close file */
-#define SMBflush      0x05   /* flush file */
-#define SMBunlink     0x06   /* delete file */
-#define SMBmv         0x07   /* rename file */
-#define SMBgetatr     0x08   /* get file attributes */
-#define SMBsetatr     0x09   /* set file attributes */
-#define SMBread       0x0A   /* read from file */
-#define SMBwrite      0x0B   /* write to file */
-#define SMBlock       0x0C   /* lock byte range */
-#define SMBunlock     0x0D   /* unlock byte range */
-#define SMBctemp      0x0E   /* create temporary file */
-#define SMBmknew      0x0F   /* make new file */
-#define SMBcheckpath  0x10   /* check directory path */
-#define SMBexit       0x11   /* process exit */
-#define SMBlseek      0x12   /* seek */
-#define SMBtcon       0x70   /* tree connect */
-#define SMBtconX      0x75   /* tree connect and X*/
-#define SMBtdis       0x71   /* tree disconnect */
-#define SMBnegprot    0x72   /* negotiate protocol */
-#define SMBdskattr    0x80   /* get disk attributes */
-#define SMBsearch     0x81   /* search directory */
-#define SMBsplopen    0xC0   /* open print spool file */
-#define SMBsplwr      0xC1   /* write to print spool file */
-#define SMBsplclose   0xC2   /* close print spool file */
-#define SMBsplretq    0xC3   /* return print queue */
-#define SMBsends      0xD0   /* send single block message */
-#define SMBsendb      0xD1   /* send broadcast message */
-#define SMBfwdname    0xD2   /* forward user name */
-#define SMBcancelf    0xD3   /* cancel forward */
-#define SMBgetmac     0xD4   /* get machine name */
-#define SMBsendstrt   0xD5   /* send start of multi-block message */
-#define SMBsendend    0xD6   /* send end of multi-block message */
-#define SMBsendtxt    0xD7   /* send text of multi-block message */
-
-/* Core+ protocol */
-#define SMBlockread      0x13   /* Lock a range and read */
-#define SMBwriteunlock 0x14 /* Unlock a range then write */
-#define SMBreadbraw   0x1a  /* read a block of data with no smb header */
-#define SMBwritebraw  0x1d  /* write a block of data with no smb header */
-#define SMBwritec     0x20  /* secondary write request */
-#define SMBwriteclose 0x2c  /* write a file then close it */
-
-/* dos extended protocol */
-#define SMBreadBraw      0x1A   /* read block raw */
-#define SMBreadBmpx      0x1B   /* read block multiplexed */
-#define SMBreadBs        0x1C   /* read block (secondary response) */
-#define SMBwriteBraw     0x1D   /* write block raw */
-#define SMBwriteBmpx     0x1E   /* write block multiplexed */
-#define SMBwriteBs       0x1F   /* write block (secondary request) */
-#define SMBwriteC        0x20   /* write complete response */
-#define SMBsetattrE      0x22   /* set file attributes expanded */
-#define SMBgetattrE      0x23   /* get file attributes expanded */
-#define SMBlockingX      0x24   /* lock/unlock byte ranges and X */
-#define SMBtrans         0x25   /* transaction - name, bytes in/out */
-#define SMBtranss        0x26   /* transaction (secondary request/response) */
-#define SMBioctl         0x27   /* IOCTL */
-#define SMBioctls        0x28   /* IOCTL  (secondary request/response) */
-#define SMBcopy          0x29   /* copy */
-#define SMBmove          0x2A   /* move */
-#define SMBecho          0x2B   /* echo */
-#define SMBopenX         0x2D   /* open and X */
-#define SMBreadX         0x2E   /* read and X */
-#define SMBwriteX        0x2F   /* write and X */
-#define SMBsesssetupX    0x73   /* Session Set Up & X (including User Logon) */
-#define SMBffirst        0x82   /* find first */
-#define SMBfunique       0x83   /* find unique */
-#define SMBfclose        0x84   /* find close */
-#define SMBinvalid       0xFE   /* invalid command */
-
-/* Extended 2.0 protocol */
-#define SMBtrans2        0x32   /* TRANS2 protocol set */
-#define SMBtranss2       0x33   /* TRANS2 protocol set, secondary command */
-#define SMBfindclose     0x34   /* Terminate a TRANSACT2_FINDFIRST */
-#define SMBfindnclose    0x35   /* Terminate a TRANSACT2_FINDNOTIFYFIRST */
-#define SMBulogoffX      0x74   /* user logoff */
-
-/* NT SMB extensions. */
-#define SMBnttrans       0xA0   /* NT transact */
-#define SMBnttranss      0xA1   /* NT transact secondary */
-#define SMBntcreateX     0xA2   /* NT create and X */
-#define SMBntcancel      0xA4   /* NT cancel */
-#define SMBntrename      0xA5   /* NT rename */
-
-/* used to indicate end of chain */
-#define SMB_CHAIN_NONE   0xFF
-
-/* 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
@@ -986,10 +360,6 @@ struct connections_data {
 #define smb_ntcreate_ImpersonationLevel (smb_vwv0 + 43)
 #define smb_ntcreate_SecurityFlags (smb_vwv0 + 47)
 
-/* this is used on a TConX. I'm not sure the name is very helpful though */
-#define SMB_SUPPORT_SEARCH_BITS        0x0001
-#define SMB_SHARE_IN_DFS               0x0002
-
 /* Named pipe write mode flags. Used in writeX calls. */
 #define PIPE_RAW_MODE 0x4
 #define PIPE_START_MESSAGE 0x8
@@ -1032,51 +402,6 @@ struct connections_data {
 #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)
@@ -1095,12 +420,6 @@ struct connections_data {
 /* 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
 
@@ -1110,25 +429,6 @@ struct connections_data {
 #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
@@ -1146,6 +446,14 @@ struct connections_data {
 #define FILE_NOTIFY_CHANGE_NAME \
        (FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_DIR_NAME)
 
+#define FILE_NOTIFY_CHANGE_ALL \
+       (FILE_NOTIFY_CHANGE_FILE_NAME   | FILE_NOTIFY_CHANGE_DIR_NAME | \
+        FILE_NOTIFY_CHANGE_ATTRIBUTES  | FILE_NOTIFY_CHANGE_SIZE | \
+        FILE_NOTIFY_CHANGE_LAST_WRITE  | FILE_NOTIFY_CHANGE_LAST_ACCESS | \
+        FILE_NOTIFY_CHANGE_CREATION    | FILE_NOTIFY_CHANGE_EA | \
+        FILE_NOTIFY_CHANGE_SECURITY    | FILE_NOTIFY_CHANGE_STREAM_NAME | \
+        FILE_NOTIFY_CHANGE_STREAM_SIZE | FILE_NOTIFY_CHANGE_STREAM_WRITE)
+
 /* change notify action results */
 #define NOTIFY_ACTION_ADDED 1
 #define NOTIFY_ACTION_REMOVED 2
@@ -1156,6 +464,17 @@ struct connections_data {
 #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)
@@ -1164,14 +483,6 @@ struct connections_data {
    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
@@ -1191,24 +502,20 @@ 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
 #define BROWSER_CONSTANT       0xaa55
 
-/* Sercurity mode bits. */
-#define NEGOTIATE_SECURITY_USER_LEVEL          0x01
-#define NEGOTIATE_SECURITY_CHALLENGE_RESPONSE  0x02
-#define NEGOTIATE_SECURITY_SIGNATURES_ENABLED  0x04
-#define NEGOTIATE_SECURITY_SIGNATURES_REQUIRED 0x08
-
-/* TCONX Flag (smb_vwv2). */
-#define TCONX_FLAG_EXTENDED_RESPONSE   0x8
-
 /* File Status Flags. See:
 
 http://msdn.microsoft.com/en-us/library/cc246334(PROT.13).aspx
@@ -1218,97 +525,23 @@ http://msdn.microsoft.com/en-us/library/cc246334(PROT.13).aspx
 #define NO_SUBSTREAMS          0x2
 #define NO_REPARSETAG          0x4
 
-/* Capabilities.  see ftp.microsoft.com/developr/drg/cifs/cifs/cifs4.txt */
-
-#define CAP_RAW_MODE         0x0001
-#define CAP_MPX_MODE         0x0002
-#define CAP_UNICODE          0x0004
-#define CAP_LARGE_FILES      0x0008
-#define CAP_NT_SMBS          0x0010
-#define CAP_RPC_REMOTE_APIS  0x0020
-#define CAP_STATUS32         0x0040
-#define CAP_LEVEL_II_OPLOCKS 0x0080
-#define CAP_LOCK_AND_READ    0x0100
-#define CAP_NT_FIND          0x0200
-#define CAP_DFS              0x1000
-#define CAP_W2K_SMBS         0x2000
-#define CAP_LARGE_READX      0x4000
-#define CAP_LARGE_WRITEX     0x8000
-#define CAP_LWIO             0x10000
-#define CAP_UNIX             0x800000 /* Capabilities for UNIX extensions. Created by HP. */
-#define CAP_DYNAMIC_REAUTH    0x20000000
-#define CAP_EXTENDED_SECURITY 0x80000000
-
-#define SMB_CAP_BOTH_MASK ( \
-       CAP_UNICODE | \
-       CAP_NT_SMBS | \
-       CAP_STATUS32 | \
-       CAP_LEVEL_II_OPLOCKS | \
-       CAP_EXTENDED_SECURITY | \
-       0)
-#define SMB_CAP_SERVER_MASK ( \
-       CAP_RAW_MODE | \
-       CAP_MPX_MODE | \
-       CAP_LARGE_FILES | \
-       CAP_RPC_REMOTE_APIS | \
-       CAP_LOCK_AND_READ | \
-       CAP_NT_FIND | \
-       CAP_DFS | \
-       CAP_W2K_SMBS | \
-       CAP_LARGE_READX | \
-       CAP_LARGE_WRITEX | \
-       CAP_LWIO | \
-       CAP_UNIX | \
-       0)
-#define SMB_CAP_CLIENT_MASK ( \
-       CAP_DYNAMIC_REAUTH | \
-       0)
-
-/* printing types */
-enum printing_types {PRINT_BSD,PRINT_SYSV,PRINT_AIX,PRINT_HPUX,
-                    PRINT_QNX,PRINT_PLP,PRINT_LPRNG,PRINT_SOFTQ,
-                    PRINT_CUPS,PRINT_LPRNT,PRINT_LPROS2,PRINT_IPRINT
-#if defined(DEVELOPER) || defined(ENABLE_BUILD_FARM_HACKS)
-,PRINT_TEST,PRINT_VLP
-#endif /* DEVELOPER */
-};
-
-/* LDAP SSL options */
-enum ldap_ssl_types {LDAP_SSL_OFF, LDAP_SSL_START_TLS};
-
-/* LDAP PASSWD SYNC methods */
-enum ldap_passwd_sync_types {LDAP_PASSWD_SYNC_ON, LDAP_PASSWD_SYNC_OFF, LDAP_PASSWD_SYNC_ONLY};
-
-/*
- * This should be under the HAVE_KRB5 flag but since they're used
- * in lp_kerberos_method(), they ned to be always available
- * If you add any entries to KERBEROS_VERIFY defines, please modify USE.*KEYTAB macros
- * so they remain accurate.
- */
-
-#define KERBEROS_VERIFY_SECRETS 0
-#define KERBEROS_VERIFY_SYSTEM_KEYTAB 1
-#define KERBEROS_VERIFY_DEDICATED_KEYTAB 2
-#define KERBEROS_VERIFY_SECRETS_AND_KEYTAB 3
-
-/* 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};
 
-/* case handling */
-enum case_handling {CASE_LOWER,CASE_UPPER};
-
-/* ACL compatibility */
-enum acl_compatibility {ACL_COMPAT_AUTO, ACL_COMPAT_WINNT, ACL_COMPAT_WIN2K};
 /*
- * Global value meaing that the smb_uid field should be
+ * Global value meaning that the smb_uid field should be
  * ingored (in share level security and protocol level == CORE)
  */
 
 #define UID_FIELD_INVALID 0
 #define VUID_OFFSET 100 /* Amount to bias returned vuid numbers */
 
+#define TID_FIELD_INVALID 0
+
+#define FNUM_FIELD_INVALID 0
+
 /* 
  * Size of buffer to use when moving files across filesystems. 
  */
@@ -1330,38 +563,33 @@ enum acl_compatibility {ACL_COMPAT_AUTO, ACL_COMPAT_WINNT, ACL_COMPAT_WIN2K};
  */
 #define EXTENDED_OPLOCK_REQUEST(inbuf) ((SVAL(inbuf,smb_vwv2)&((1<<1)|(1<<2)))>>1)
 
-/* Lock types. */
-#define LOCKING_ANDX_SHARED_LOCK 0x1
-#define LOCKING_ANDX_OPLOCK_RELEASE 0x2
-#define LOCKING_ANDX_CHANGE_LOCKTYPE 0x4
-#define LOCKING_ANDX_CANCEL_LOCK 0x8
-#define LOCKING_ANDX_LARGE_FILES 0x10
-
 /*
  * Bits we test with.
  * Note these must fit into 16-bits.
  */
 
-#define NO_OPLOCK                      0x0
-#define EXCLUSIVE_OPLOCK               0x1
-#define BATCH_OPLOCK                   0x2
-#define LEVEL_II_OPLOCK                0x4
+#define NO_OPLOCK                      OPLOCK_NONE
+#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 UNUSED_SHARE_MODE_ENTRY        0x40
-#define FORCE_OPLOCK_BREAK_TO_NONE     0x80
+/* #define DEFERRED_OPEN_ENTRY                 0x20 */   /* Not used anymore */
+/* #define UNUSED_SHARE_MODE_ENTRY     0x40 */   /* Not used anymore */
+/* #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|UNUSED_SHARE_MODE_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.
 
@@ -1424,7 +652,8 @@ minimum length == 24.
 enum smbd_capability {
     KERNEL_OPLOCK_CAPABILITY,
     DMAPI_ACCESS_CAPABILITY,
-    LEASE_CAPABILITY
+    LEASE_CAPABILITY,
+    DAC_OVERRIDE_CAPABILITY
 };
 
 /*
@@ -1501,53 +730,8 @@ struct node_status_extra {
        /* There really is more here ... */ 
 };
 
-typedef struct user_struct {
-       struct user_struct *next, *prev;
-       uint16 vuid; /* Tag for this entry. */
-
-       char *session_keystr; /* used by utmp and pam session code.  
-                                TDB key string */
-       int homes_snum;
-
-       struct auth_session_info *session_info;
-
-       struct auth_ntlmssp_state *auth_ntlmssp_state;
-} user_struct;
-
-/*
-   Do you want session setups at user level security with a invalid
-   password to be rejected or allowed in as guest? WinNT rejects them
-   but it can be a pain as it means "net view" needs to use a password
-
-   You have 3 choices in the setting of map_to_guest:
-
-   "NEVER_MAP_TO_GUEST" means session setups with an invalid password
-   are rejected. This is the default.
-
-   "MAP_TO_GUEST_ON_BAD_USER" means session setups with an invalid password
-   are rejected, unless the username does not exist, in which case it
-   is treated as a guest login
-
-   "MAP_TO_GUEST_ON_BAD_PASSWORD" means session setups with an invalid password
-   are treated as a guest login
-
-   Note that map_to_guest only has an effect in user or server
-   level security.
-*/
-
-#define NEVER_MAP_TO_GUEST             0
-#define MAP_TO_GUEST_ON_BAD_USER       1
-#define MAP_TO_GUEST_ON_BAD_PASSWORD   2
-#define MAP_TO_GUEST_ON_BAD_UID        3
-
 #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
@@ -1561,7 +745,7 @@ struct ip_service {
 };
 
 struct ea_struct {
-       uint8 flags;
+       uint8_t flags;
        char *name;
        DATA_BLOB value;
 };
@@ -1580,9 +764,6 @@ struct ea_list {
 /* Prefix for xattrs storing streams. */
 #define SAMBA_XATTR_MARKER "user.SAMBA_STREAMS"
 
-/* map readonly options */
-enum mapreadonly_options {MAP_READONLY_NO, MAP_READONLY_YES, MAP_READONLY_PERMISSIONS};
-
 /* usershare error codes. */
 enum usershare_err {
                USERSHARE_OK=0,
@@ -1608,65 +789,26 @@ 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];
 };
 
-/* time info */
-struct smb_file_time {
-       struct timespec mtime;
-       struct timespec atime;
-       struct timespec ctime;
-       struct timespec create_time;
-};
-
-/*
- * unix_convert_flags
- */
-#define UCF_SAVE_LCOMP                 0x00000001
-#define UCF_ALWAYS_ALLOW_WCARD_LCOMP   0x00000002
-#define UCF_COND_ALLOW_WCARD_LCOMP     0x00000004
-#define UCF_POSIX_PATHNAMES            0x00000008
-
-/*
- * smb_filename
- */
-struct smb_filename {
-       char *base_name;
-       char *stream_name;
-       char *original_lcomp;
-       SMB_STRUCT_STAT st;
-};
-
-/* struct for maintaining the child processes that get spawned from smbd */
-struct child_pid {
-       struct child_pid *prev, *next;
-       pid_t pid;
-};
-
-/* Used to keep track of deferred opens. */
-struct deferred_open_record;
-
-/* Used inside aio code. */
-struct aio_extra;
-
 /*
  * Reasons for cache flush.
  */
 
 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 */