libcli/smb: move CAP_* defines to smb_constants.h
[bbaumbach/samba-autobuild/.git] / source3 / include / smb.h
index 94274354833af1a11c91cbc63648aca629a78fb2..b1d333cbb6d7c01f8f418f6599ff5fa4d493eb5d 100644 (file)
@@ -27,6 +27,7 @@
 #define _SMB_H
 
 #include "libcli/smb/smb_common.h"
+#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"
 /* how long to wait for secondary SMB packets (milli-seconds) */
 #define SMB_SECONDARY_WAIT (60*1000)
 
-/* Debugging stuff */
-#include "lib/util/debug.h"
-#include "lib/util/debug_s3.h"
-
-/* this defines the error codes that receive_smb can put in smb_read_error */
-enum smb_read_errors {
-       SMB_READ_OK = 0,
-       SMB_READ_TIMEOUT,
-       SMB_READ_EOF,
-       SMB_READ_ERROR,
-       SMB_WRITE_ERROR, /* This error code can go into the client smb_rw_error. */
-       SMB_READ_BAD_SIG,
-       SMB_NO_MEMORY,
-       SMB_DO_NOT_DO_TDIS, /* cli_close_connection() check for this when smbfs wants to keep tree connected */
-       SMB_READ_BAD_DECRYPT
-};
-
 #define DIR_STRUCT_SIZE 43
 
-/* these define the attribute byte as seen by DOS */
-#define aRONLY (1L<<0)         /* 0x01 */
-#define aHIDDEN (1L<<1)                /* 0x02 */
-#define aSYSTEM (1L<<2)                /* 0x04 */
-#define aVOLID (1L<<3)         /* 0x08 */
-#define aDIR (1L<<4)           /* 0x10 */
-#define aARCH (1L<<5)          /* 0x20 */
-
 /* deny modes */
 #define DENY_DOS 0
 #define DENY_ALL 1
@@ -153,28 +129,6 @@ typedef union unid_t {
 
 #define SID_MAX_SIZE ((size_t)(8+(MAXSUBAUTHS*4)))
 
-#define LOOKUP_NAME_NONE               0x00000000
-#define LOOKUP_NAME_ISOLATED             0x00000001  /* Look up unqualified names */
-#define LOOKUP_NAME_REMOTE               0x00000002  /* Ask others */
-#define LOOKUP_NAME_GROUP                0x00000004  /* (unused) This is a NASTY hack for 
-                                                       valid users = @foo where foo also
-                                                       exists in as user. */
-#define LOOKUP_NAME_NO_NSS              0x00000008  /* no NSS calls to avoid
-                                                       winbind recursions */
-#define LOOKUP_NAME_BUILTIN            0x00000010 /* builtin names */
-#define LOOKUP_NAME_WKN                        0x00000020 /* well known names */
-#define LOOKUP_NAME_DOMAIN             0x00000040 /* only lookup own domain */
-#define LOOKUP_NAME_LOCAL              (LOOKUP_NAME_ISOLATED\
-                                       |LOOKUP_NAME_BUILTIN\
-                                       |LOOKUP_NAME_WKN\
-                                       |LOOKUP_NAME_DOMAIN)
-#define LOOKUP_NAME_ALL                        (LOOKUP_NAME_ISOLATED\
-                                       |LOOKUP_NAME_REMOTE\
-                                       |LOOKUP_NAME_BUILTIN\
-                                       |LOOKUP_NAME_WKN\
-                                       |LOOKUP_NAME_DOMAIN)
-
-#include "librpc/gen_ndr/dcerpc.h"
 #include "librpc/gen_ndr/security.h"
 
 /*
@@ -350,13 +304,8 @@ typedef struct files_struct {
 #include "ntquotas.h"
 #include "sysquotas.h"
 
-struct client_address {
-       char addr[INET6_ADDRSTRLEN];
-       const char *name;
-};
-
 struct vuid_cache_entry {
-       struct auth_serversupplied_info *session_info;
+       struct auth_session_info *session_info;
        uint16_t vuid;
        bool read_only;
 };
@@ -430,10 +379,6 @@ struct share_params {
        int service;
 };
 
-struct share_iterator {
-       int next_id;
-};
-
 typedef struct connection_struct {
        struct connection_struct *next, *prev;
        struct smbd_server_connection *sconn; /* can be NULL */
@@ -444,6 +389,7 @@ typedef struct connection_struct {
        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 ? */
@@ -457,7 +403,7 @@ typedef struct connection_struct {
         * This represents the user information on this connection. Depending
         * on the vuid using this tid, this might change per SMB request.
         */
-       struct auth_serversupplied_info *session_info;
+       struct auth_session_info *session_info;
 
        /*
         * If the "force group" parameter is set, this is the primary gid that
@@ -718,16 +664,6 @@ struct locking_data {
         */
 };
 
-/* Used to store pipe open records for NetFileEnum() */
-
-struct pipe_open_rec {
-       struct server_id pid;
-       uid_t uid;
-       int pnum;
-       fstring name;
-};
-
-
 #define NT_HASH_LEN 16
 #define LM_HASH_LEN 16
 
@@ -756,91 +692,44 @@ struct connections_data {
        uint32 unused_compatitibility_field;
 };
 
-
-/* the following are used by loadparm for option lists */
-typedef enum {
-       P_BOOL,P_BOOLREV,P_CHAR,P_INTEGER,P_OCTAL,P_LIST,
-       P_STRING,P_USTRING,P_ENUM,P_SEP
-} parm_type;
-
-typedef enum {
-       P_LOCAL,P_GLOBAL,P_SEPARATOR,P_NONE
-} parm_class;
-
-struct enum_list {
-       int value;
-       const char *name;
-};
-
-struct parm_struct {
-       const char *label;
-       parm_type type;
-       parm_class p_class;
-       void *ptr;
-       bool (*special)(int snum, const char *, char **);
-       const struct enum_list *enum_list;
-       unsigned flags;
-       union {
-               bool bvalue;
-               int ivalue;
-               char *svalue;
-               char cvalue;
-               char **lvalue;
-       } def;
-};
-
-/* The following flags are used in SWAT */
-#define FLAG_BASIC     0x0001 /* Display only in BASIC view */
-#define FLAG_SHARE     0x0002 /* file sharing options */
-#define FLAG_PRINT     0x0004 /* printing options */
-#define FLAG_GLOBAL    0x0008 /* local options that should be globally settable in SWAT */
-#define FLAG_WIZARD    0x0010 /* Parameters that the wizard will operate on */
-#define FLAG_ADVANCED  0x0020 /* Parameters that will be visible in advanced view */
-#define FLAG_DEVELOPER         0x0040 /* No longer used */
-#define FLAG_DEPRECATED 0x1000 /* options that should no longer be used */
-#define FLAG_HIDE      0x2000 /* options that should be hidden in SWAT */
-#define FLAG_DOS_STRING 0x4000 /* convert from UNIX to DOS codepage when reading this string. */
-#define FLAG_META      0x8000 /* A meta directive - not a real parameter */
-#define FLAG_CMDLINE   0x10000 /* option has been overridden */
-
-struct bitmap {
-       uint32 *b;
-       unsigned int n;
-};
-
 /* offsets into message for common items */
-#define smb_com 8
-#define smb_rcls 9
-#define smb_reh 10
-#define smb_err 11
-#define smb_flg 13
-#define smb_flg2 14
-#define smb_pidhigh 16
-#define smb_ss_field 18
-#define smb_tid 28
-#define smb_pid 30
-#define smb_uid 32
-#define smb_mid 34
-#define smb_wct 36
-#define smb_vwv 37
-#define smb_vwv0 37
-#define smb_vwv1 39
-#define smb_vwv2 41
-#define smb_vwv3 43
-#define smb_vwv4 45
-#define smb_vwv5 47
-#define smb_vwv6 49
-#define smb_vwv7 51
-#define smb_vwv8 53
-#define smb_vwv9 55
-#define smb_vwv10 57
-#define smb_vwv11 59
-#define smb_vwv12 61
-#define smb_vwv13 63
-#define smb_vwv14 65
-#define smb_vwv15 67
-#define smb_vwv16 69
-#define smb_vwv17 71
+#define smb_com                (NBT_HDR_SIZE+HDR_COM)
+#define smb_rcls       (NBT_HDR_SIZE+HDR_RCLS)
+#define smb_reh                (NBT_HDR_SIZE+HDR_REH)
+#define smb_err                (NBT_HDR_SIZE+HDR_ERR)
+#define smb_flg                (NBT_HDR_SIZE+HDR_FLG)
+#define smb_flg2       (NBT_HDR_SIZE+HDR_FLG2)
+#define smb_pidhigh    (NBT_HDR_SIZE+HDR_PIDHIGH)
+#define smb_ss_field   (NBT_HDR_SIZE+HDR_SS_FIELD)
+#define smb_tid                (NBT_HDR_SIZE+HDR_TID)
+#define smb_pid                (NBT_HDR_SIZE+HDR_PID)
+#define smb_uid                (NBT_HDR_SIZE+HDR_UID)
+#define smb_mid                (NBT_HDR_SIZE+HDR_MID)
+#define smb_wct                (NBT_HDR_SIZE+HDR_WCT)
+#define smb_vwv                (NBT_HDR_SIZE+HDR_VWV)
+#define smb_vwv0       (smb_vwv+( 0*2))
+#define smb_vwv1       (smb_vwv+( 1*2))
+#define smb_vwv2       (smb_vwv+( 2*2))
+#define smb_vwv3       (smb_vwv+( 3*2))
+#define smb_vwv4       (smb_vwv+( 4*2))
+#define smb_vwv5       (smb_vwv+( 5*2))
+#define smb_vwv6       (smb_vwv+( 6*2))
+#define smb_vwv7       (smb_vwv+( 7*2))
+#define smb_vwv8       (smb_vwv+( 8*2))
+#define smb_vwv9       (smb_vwv+( 9*2))
+#define smb_vwv10      (smb_vwv+(10*2))
+#define smb_vwv11      (smb_vwv+(11*2))
+#define smb_vwv12      (smb_vwv+(12*2))
+#define smb_vwv13      (smb_vwv+(13*2))
+#define smb_vwv14      (smb_vwv+(14*2))
+#define smb_vwv15      (smb_vwv+(15*2))
+#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
@@ -924,7 +813,6 @@ struct bitmap {
 #define SMBffirst        0x82   /* find first */
 #define SMBfunique       0x83   /* find unique */
 #define SMBfclose        0x84   /* find close */
-#define SMBkeepalive     0x85   /* keepalive */
 #define SMBinvalid       0xFE   /* invalid command */
 
 /* Extended 2.0 protocol */
@@ -941,6 +829,9 @@ struct bitmap {
 #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
@@ -1120,26 +1011,6 @@ struct bitmap {
 #define FILE_SHARE_WRITE 2
 #define FILE_SHARE_DELETE 4
 
-/* FileAttributesField */
-#define FILE_ATTRIBUTE_READONLY                0x001L
-#define FILE_ATTRIBUTE_HIDDEN          0x002L
-#define FILE_ATTRIBUTE_SYSTEM          0x004L
-#define FILE_ATTRIBUTE_DIRECTORY       0x010L
-#define FILE_ATTRIBUTE_ARCHIVE         0x020L
-#define FILE_ATTRIBUTE_NORMAL          0x080L
-#define FILE_ATTRIBUTE_TEMPORARY       0x100L
-#define FILE_ATTRIBUTE_SPARSE          0x200L
-#define FILE_ATTRIBUTE_REPARSE_POINT    0x400L
-#define FILE_ATTRIBUTE_COMPRESSED      0x800L
-#define FILE_ATTRIBUTE_OFFLINE          0x1000L
-#define FILE_ATTRIBUTE_NONINDEXED      0x2000L
-#define FILE_ATTRIBUTE_ENCRYPTED        0x4000L
-#define SAMBA_ATTRIBUTES_MASK          (FILE_ATTRIBUTE_READONLY|\
-                                       FILE_ATTRIBUTE_HIDDEN|\
-                                       FILE_ATTRIBUTE_SYSTEM|\
-                                       FILE_ATTRIBUTE_DIRECTORY|\
-                                       FILE_ATTRIBUTE_ARCHIVE)
-
 /* Flags - combined with attributes. */
 #define FILE_FLAG_WRITE_THROUGH    0x80000000L
 #define FILE_FLAG_NO_BUFFERING     0x20000000L
@@ -1203,14 +1074,6 @@ struct bitmap {
 #define FILE_WAS_CREATED 2
 #define FILE_WAS_OVERWRITTEN 3
 
-/* File type flags */
-#define FILE_TYPE_DISK  0
-#define FILE_TYPE_BYTE_MODE_PIPE 1
-#define FILE_TYPE_MESSAGE_MODE_PIPE 2
-#define FILE_TYPE_PRINTER 3
-#define FILE_TYPE_COMM_DEVICE 4
-#define FILE_TYPE_UNKNOWN 0xFFFF
-
 /* Flag for NT transact rename call. */
 #define RENAME_REPLACE_IF_EXISTS 1
 
@@ -1268,7 +1131,7 @@ struct bitmap {
 
 
 /* where to find the base of the SMB packet proper */
-#define smb_base(buf) (((char *)(buf))+4)
+#define smb_base(buf) (((const char *)(buf))+4)
 
 /* we don't allow server strings to be longer than 48 characters as
    otherwise NT will not honour the announce packets */
@@ -1303,8 +1166,8 @@ char *strdup(char *s);
  *        This may change again in Samba-3.0 after further testing. JHT
  */
  
-#define DEFAULT_MAJOR_VERSION 0x04
-#define DEFAULT_MINOR_VERSION 0x09
+#define SAMBA_MAJOR_NBT_ANNOUNCE_VERSION 0x04
+#define SAMBA_MINOR_NBT_ANNOUNCE_VERSION 0x09
 
 /* Browser Election Values */
 #define BROWSER_ELECTION_VERSION       0x010f
@@ -1328,48 +1191,6 @@ 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_UNIX             0x800000 /* Capabilities for UNIX extensions. Created by HP. */
-#define CAP_EXTENDED_SECURITY 0x80000000
-
-/* protocol types. It assumes that higher protocols include lower protocols
-   as subsets */
-enum protocol_types {
-       PROTOCOL_NONE,
-       PROTOCOL_CORE,
-       PROTOCOL_COREPLUS,
-       PROTOCOL_LANMAN1,
-       PROTOCOL_LANMAN2,
-       PROTOCOL_NT1,
-       PROTOCOL_SMB2
-};
-
-/* security levels */
-enum security_types {SEC_SHARE,SEC_USER,SEC_SERVER,SEC_DOMAIN,SEC_ADS};
-
-/* server roles */
-enum server_types {
-       ROLE_STANDALONE,
-       ROLE_DOMAIN_MEMBER,
-       ROLE_DOMAIN_BDC,
-       ROLE_DOMAIN_PDC
-};
-
 /* printing types */
 enum printing_types {PRINT_BSD,PRINT_SYSV,PRINT_AIX,PRINT_HPUX,
                     PRINT_QNX,PRINT_PLP,PRINT_LPRNG,PRINT_SOFTQ,
@@ -1379,9 +1200,6 @@ enum printing_types {PRINT_BSD,PRINT_SYSV,PRINT_AIX,PRINT_HPUX,
 #endif /* DEVELOPER */
 };
 
-/* LDAP schema types */
-enum schema_types {SCHEMA_COMPAT, SCHEMA_AD, SCHEMA_SAMBA};
-
 /* LDAP SSL options */
 enum ldap_ssl_types {LDAP_SSL_OFF, LDAP_SSL_START_TLS};
 
@@ -1618,18 +1436,11 @@ typedef struct user_struct {
                                 TDB key string */
        int homes_snum;
 
-       struct auth_serversupplied_info *session_info;
+       struct auth_session_info *session_info;
 
        struct auth_ntlmssp_state *auth_ntlmssp_state;
 } user_struct;
 
-struct unix_error_map {
-       int unix_error;
-       int dos_class;
-       int dos_code;
-       NTSTATUS nt_error;
-};
-
 /*
    Do you want session setups at user level security with a invalid
    password to be rejected or allowed in as guest? WinNT rejects them
@@ -1746,6 +1557,7 @@ struct smb_file_time {
 #define UCF_ALWAYS_ALLOW_WCARD_LCOMP   0x00000002
 #define UCF_COND_ALLOW_WCARD_LCOMP     0x00000004
 #define UCF_POSIX_PATHNAMES            0x00000008
+#define UCF_UNIX_NAME_LOOKUP           0x00000010
 
 /*
  * smb_filename
@@ -1766,13 +1578,23 @@ struct child_pid {
 /* Used to keep track of deferred opens. */
 struct deferred_open_record;
 
-/* Client-side offline caching policy types */
-#define CSC_POLICY_MANUAL 0
-#define CSC_POLICY_DOCUMENTS 1
-#define CSC_POLICY_PROGRAMS 2
-#define CSC_POLICY_DISABLE 3
-
 /* 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};
+
 #endif /* _SMB_H */