s3-passdb: move some passdb defines to passdb.h
[samba.git] / source3 / include / smb.h
index 5269c2348fc08faa9f468bc705942ce1925d0d98..94274354833af1a11c91cbc63648aca629a78fb2 100644 (file)
@@ -26,6 +26,8 @@
 #ifndef _SMB_H
 #define _SMB_H
 
+#include "libcli/smb/smb_common.h"
+
 /* logged when starting the various Samba daemons */
 #define COPYRIGHT_STARTUP_MESSAGE      "Copyright Andrew Tridgell and the Samba Team 1992-2011"
 
@@ -69,7 +71,8 @@
 #define SMB_SECONDARY_WAIT (60*1000)
 
 /* Debugging stuff */
-#include "debug.h"
+#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 {
@@ -143,9 +146,6 @@ typedef union unid_t {
 } unid_t;
 
 /* pipe string names */
-#define PIPE_LANMAN   "\\PIPE\\LANMAN"
-
-#define MAX_HOURS_LEN 32
 
 #ifndef MAXSUBAUTHS
 #define MAXSUBAUTHS 15 /* max sub authorities in a SID */
@@ -174,25 +174,9 @@ typedef union unid_t {
                                        |LOOKUP_NAME_WKN\
                                        |LOOKUP_NAME_DOMAIN)
 
-#include "librpc/gen_ndr/epmapper.h"
 #include "librpc/gen_ndr/dcerpc.h"
 #include "librpc/gen_ndr/security.h"
 
-struct lsa_dom_info {
-       bool valid;
-       struct dom_sid sid;
-       const char *name;
-       int num_idxs;
-       int *idxs;
-};
-
-struct lsa_name_info {
-       uint32 rid;
-       enum lsa_SidType type;
-       const char *name;
-       int dom_idx;
-};
-
 /*
  * The complete list of SIDS belonging to this user.
  * Created when a vuid is registered.
@@ -206,13 +190,6 @@ struct lsa_name_info {
 #define PRIMARY_USER_SID_INDEX 0
 #define PRIMARY_GROUP_SID_INDEX 1
 
-typedef struct unix_user_token {
-       uid_t uid;
-       gid_t gid;
-       size_t ngroups;
-       gid_t *groups;
-} UNIX_USER_TOKEN;
-
 typedef struct write_cache {
        SMB_OFF_T file_size;
        SMB_OFF_T offset;
@@ -379,7 +356,7 @@ struct client_address {
 };
 
 struct vuid_cache_entry {
-       struct auth_serversupplied_info *server_info;
+       struct auth_serversupplied_info *session_info;
        uint16_t vuid;
        bool read_only;
 };
@@ -480,7 +457,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 *server_info;
+       struct auth_serversupplied_info *session_info;
 
        /*
         * If the "force group" parameter is set, this is the primary gid that
@@ -524,7 +501,7 @@ typedef struct connection_struct {
 struct current_user {
        connection_struct *conn;
        uint16 vuid;
-       UNIX_USER_TOKEN ut;
+       struct security_unix_token ut;
        struct security_token *nt_user_token;
 };
 
@@ -595,46 +572,6 @@ typedef struct {
        fstring domain; /* domain that the client specified */
 } userdom_struct;
 
-/* Extra fields above "LPQ_PRINTING" are used to map extra NT status codes. */
-
-enum {
-       LPQ_QUEUED = 0,
-       LPQ_PAUSED,
-       LPQ_SPOOLING,
-       LPQ_PRINTING,
-       LPQ_ERROR,
-       LPQ_DELETING,
-       LPQ_OFFLINE,
-       LPQ_PAPEROUT,
-       LPQ_PRINTED,
-       LPQ_DELETED,
-       LPQ_BLOCKED,
-       LPQ_USER_INTERVENTION,
-
-       /* smbd is dooing the file spooling before passing control to spoolss */
-       PJOB_SMBD_SPOOLING
-};
-
-typedef struct _print_queue_struct {
-       int job;                /* normally the UNIX jobid -- see note in 
-                                  printing.c:traverse_fn_delete() */
-       int size;
-       int page_count;
-       int status;
-       int priority;
-       time_t time;
-       fstring fs_user;
-       fstring fs_file;
-} print_queue_struct;
-
-enum {LPSTAT_OK, LPSTAT_STOPPED, LPSTAT_ERROR};
-
-typedef struct {
-       fstring message;
-       int qcount;
-       int status;
-}  print_status_struct;
-
 /* used for server information: client, nameserv and ipc */
 struct server_info_struct {
        fstring name;
@@ -669,6 +606,8 @@ struct pending_message_list {
 
 #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;
@@ -726,12 +665,14 @@ Offset  Data                      length.
 #define OP_BREAK_MSG_FLAGS_OFFSET 66
 #define OP_BREAK_MSG_NAME_HASH_OFFSET 68
 
-#ifdef CLUSTER_SUPPORT
 #define OP_BREAK_MSG_VNN_OFFSET 72
 #define MSG_SMB_SHARE_MODE_ENTRY_SIZE 76
-#else
-#define MSG_SMB_SHARE_MODE_ENTRY_SIZE 72
-#endif
+
+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. */
@@ -740,8 +681,7 @@ struct share_mode_lock {
        struct file_id id;
        int num_share_modes;
        struct share_mode_entry *share_modes;
-       UNIX_USER_TOKEN *delete_token;
-       bool delete_on_close;
+       struct delete_token_list *delete_tokens;
        struct timespec old_write_time;
        struct timespec changed_write_time;
        bool fresh;
@@ -758,20 +698,23 @@ struct locking_data {
        union {
                struct {
                        int num_share_mode_entries;
-                       bool delete_on_close;
                        struct timespec old_write_time;
                        struct timespec changed_write_time;
-                       uint32 delete_token_size; /* Only valid if either of
-                                                    the two previous fields
-                                                    are True. */
+                       uint32 num_delete_token_entries;
                } s;
                struct share_mode_entry dummy; /* Needed for alignment. */
        } u;
        /* The following four entries are implicit
-          struct share_mode_entry modes[num_share_mode_entries];
-          char unix_token[delete_token_size] (divisible by 4).
-          char share_name[];
-          char file_name[];
+
+          (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[];
         */
 };
 
@@ -788,27 +731,6 @@ struct pipe_open_rec {
 #define NT_HASH_LEN 16
 #define LM_HASH_LEN 16
 
-/* Password history contants. */
-#define PW_HISTORY_SALT_LEN 16
-#define SALTED_MD5_HASH_LEN 16
-#define PW_HISTORY_ENTRY_LEN (PW_HISTORY_SALT_LEN+SALTED_MD5_HASH_LEN)
-#define MAX_PW_HISTORY_LEN 24
-
-/*
- * Flags for local user manipulation.
- */
-
-#define LOCAL_ADD_USER 0x1
-#define LOCAL_DELETE_USER 0x2
-#define LOCAL_DISABLE_USER 0x4
-#define LOCAL_ENABLE_USER 0x8
-#define LOCAL_TRUST_ACCOUNT 0x10
-#define LOCAL_SET_NO_PASSWORD 0x20
-#define LOCAL_SET_PASSWORD 0x40
-#define LOCAL_SET_LDAP_ADMIN_PW 0x80
-#define LOCAL_INTERDOM_ACCOUNT 0x100
-#define LOCAL_AM_ROOT 0x200  /* Act as root */
-
 /* key and data in the connections database - used in smbstatus and smbd */
 struct connections_key {
        struct server_id pid;
@@ -1394,21 +1316,6 @@ char *strdup(char *s);
 #define NEGOTIATE_SECURITY_SIGNATURES_ENABLED  0x04
 #define NEGOTIATE_SECURITY_SIGNATURES_REQUIRED 0x08
 
-/* NT Flags2 bits - cifs6.txt section 3.1.2 */
-   
-#define FLAGS2_LONG_PATH_COMPONENTS    0x0001
-#define FLAGS2_EXTENDED_ATTRIBUTES     0x0002
-#define FLAGS2_SMB_SECURITY_SIGNATURES 0x0004
-#define FLAGS2_UNKNOWN_BIT4            0x0010
-#define FLAGS2_IS_LONG_NAME            0x0040
-#define FLAGS2_EXTENDED_SECURITY       0x0800 
-#define FLAGS2_DFS_PATHNAMES           0x1000
-#define FLAGS2_READ_PERMIT_EXECUTE     0x2000
-#define FLAGS2_32_BIT_ERROR_CODES      0x4000 
-#define FLAGS2_UNICODE_STRINGS         0x8000
-
-#define FLAGS2_WIN2K_SIGNATURE         0xC852 /* Hack alert ! For now... JRA. */
-
 /* TCONX Flag (smb_vwv2). */
 #define TCONX_FLAG_EXTENDED_RESPONSE   0x8
 
@@ -1496,7 +1403,7 @@ enum ldap_passwd_sync_types {LDAP_PASSWD_SYNC_ON, LDAP_PASSWD_SYNC_OFF, LDAP_PAS
 /* Remote architectures we know about. */
 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_SAMBA, RA_CIFSFS, RA_WINXP64, RA_OSX};
 
 /* case handling */
 enum case_handling {CASE_LOWER,CASE_UPPER};
@@ -1711,7 +1618,7 @@ typedef struct user_struct {
                                 TDB key string */
        int homes_snum;
 
-       struct auth_serversupplied_info *server_info;
+       struct auth_serversupplied_info *session_info;
 
        struct auth_ntlmssp_state *auth_ntlmssp_state;
 } user_struct;
@@ -1723,14 +1630,6 @@ struct unix_error_map {
        NTSTATUS nt_error;
 };
 
-/*
- * Size of new password account encoding string.  This is enough space to
- * hold 11 ACB characters, plus the surrounding [] and a terminating null.
- * Do not change unless you are adding new ACB bits!
- */
-
-#define NEW_PW_FORMAT_SPACE_PADDED_LEN 14
-
 /*
    Do you want session setups at user level security with a invalid
    password to be rejected or allowed in as guest? WinNT rejects them
@@ -1777,9 +1676,6 @@ struct ip_service {
        unsigned port;
 };
 
-/* Special name type used to cause a _kerberos DNS lookup. */
-#define KDC_NAME_TYPE 0xDCDC
-
 struct ea_struct {
        uint8 flags;
        char *name;
@@ -1800,13 +1696,6 @@ struct ea_list {
 /* Prefix for xattrs storing streams. */
 #define SAMBA_XATTR_MARKER "user.SAMBA_STREAMS"
 
-#define UUID_SIZE 16
-
-#define UUID_FLAT_SIZE 16
-typedef struct uuid_flat {
-       uint8 info[UUID_FLAT_SIZE];
-} UUID_FLAT;
-
 /* map readonly options */
 enum mapreadonly_options {MAP_READONLY_NO, MAP_READONLY_YES, MAP_READONLY_PERMISSIONS};