Nice *big* patch from metze.
[sfrench/samba-autobuild/.git] / source3 / include / smb.h
index c39ebed950f1e97f5ab94ebfd862ee474a48c069..da83aaff47f71e82da9fa62abbcafc3a9f87421d 100644 (file)
@@ -161,6 +161,8 @@ typedef uint16 smb_ucs2_t;
 typedef smb_ucs2_t wpstring[PSTRING_LEN];
 typedef smb_ucs2_t wfstring[FSTRING_LEN];
 
+/* This error code can go into the client smb_rw_error. */
+#define WRITE_ERROR 4
 
 #ifdef WORDS_BIGENDIAN
 #define UCS2_SHIFT 8
@@ -185,6 +187,17 @@ typedef smb_ucs2_t wfstring[FSTRING_LEN];
 #define PIPE_SPOOLSS  "\\PIPE\\spoolss"
 #define PIPE_NETDFS   "\\PIPE\\netdfs"
 
+#define PI_LSARPC              0
+#define PI_LSARPC_DS           1
+#define PI_SAMR                        2
+#define PI_NETLOGON            3
+#define PI_SRVSVC              4
+#define PI_WKSSVC              5
+#define PI_WINREG              6
+#define PI_SPOOLSS             7
+#define PI_NETDFS              8
+#define PI_MAX_PIPES           9
+
 /* 64 bit time (100usec) since ????? - cifs6.txt, section 3.5, page 30 */
 typedef struct nttime_info
 {
@@ -556,25 +569,59 @@ typedef struct {
 /*
  * bit flags representing initialized fields in SAM_ACCOUNT
  */
-#define FLAG_SAM_UNINIT                0x00000000
-#define FLAG_SAM_UID           0x00000001
-#define FLAG_SAM_GID           0x00000002
-#define FLAG_SAM_SMBHOME       0x00000004
-#define FLAG_SAM_PROFILE       0x00000008
-#define FLAG_SAM_DRIVE          0x00000010
-#define FLAG_SAM_LOGONSCRIPT   0x00000020
-#define FLAG_SAM_LOGONTIME     0x00000040
-#define FLAG_SAM_LOGOFFTIME    0x00000080
-#define FLAG_SAM_KICKOFFTIME   0x00000100
-#define FLAG_SAM_CANCHANGETIME 0x00000200
-#define FLAG_SAM_MUSTCHANGETIME        0x00000400
-#define FLAG_SAM_PLAINTEXT_PW   0x00000800
+enum pdb_elements {
+       PDB_UNINIT,
+       PDB_UID,
+       PDB_GID,
+       PDB_SMBHOME,
+       PDB_PROFILE,
+       PDB_DRIVE,
+       PDB_LOGONSCRIPT,
+       PDB_LOGONTIME,
+       PDB_LOGOFFTIME,
+       PDB_KICKOFFTIME,
+       PDB_CANCHANGETIME,
+       PDB_MUSTCHANGETIME,
+       PDB_PLAINTEXT_PW,
+       PDB_USERNAME,
+       PDB_FULLNAME,
+       PDB_DOMAIN,
+       PDB_NTUSERNAME,
+       PDB_HOURSLEN,
+       PDB_LOGONDIVS,
+       PDB_USERSID,
+       PDB_GROUPSID,
+       PDB_ACCTCTRL,
+       PDB_PASSLASTSET,
+       PDB_UNIXHOMEDIR,
+       PDB_ACCTDESC,
+       PDB_WORKSTATIONS,
+       PDB_UNKNOWNSTR,
+       PDB_MUNGEDDIAL,
+       PDB_HOURS,
+       PDB_UNKNOWN3,
+       PDB_UNKNOWN5,
+       PDB_UNKNOWN6,
+       PDB_LMPASSWD,
+       PDB_NTPASSWD,
+
+       /* this must be the last element */
+       PDB_COUNT,
+};
+
+enum pdb_value_state {
+       PDB_DEFAULT=0,
+       PDB_SET,
+       PDB_CHANGED
+};
 
 #define IS_SAM_UNIX_USER(x) \
-       ((pdb_get_init_flag(x) & FLAG_SAM_UID) \
-        && (pdb_get_init_flag(x) & FLAG_SAM_GID))
+       (( pdb_get_init_flags(x, PDB_UID) != PDB_DEFAULT ) \
+        && ( pdb_get_init_flags(x,PDB_GID) != PDB_DEFAULT ))
 
-#define IS_SAM_SET(x, flag)    ((x)->private.init_flag & (flag))
+#define IS_SAM_SET(x, flag)    (pdb_get_init_flags(x, flag) == PDB_SET)
+#define IS_SAM_CHANGED(x, flag)        (pdb_get_init_flags(x, flag) == PDB_CHANGED)
+#define IS_SAM_DEFAULT(x, flag)        (pdb_get_init_flags(x, flag) == PDB_DEFAULT)
                
 typedef struct sam_passwd
 {
@@ -586,8 +633,9 @@ typedef struct sam_passwd
 
        struct user_data {
                /* initiailization flags */
-               uint32 init_flag;
-               
+               struct bitmap *change_flags;
+               struct bitmap *set_flags;
+
                time_t logon_time;            /* logon time */
                time_t logoff_time;           /* logoff time */
                time_t kickoff_time;          /* kickoff time */
@@ -1046,23 +1094,14 @@ struct bitmap {
 #define DESIRED_ACCESS_PIPE 0x2019f
  
 /* Generic access masks & rights. */
-#define SPECIFIC_RIGHTS_MASK 0x00FFFFL
-#define STANDARD_RIGHTS_MASK 0xFF0000L
 #define DELETE_ACCESS        (1L<<16) /* 0x00010000 */
 #define READ_CONTROL_ACCESS  (1L<<17) /* 0x00020000 */
 #define WRITE_DAC_ACCESS     (1L<<18) /* 0x00040000 */
 #define WRITE_OWNER_ACCESS   (1L<<19) /* 0x00080000 */
 #define SYNCHRONIZE_ACCESS   (1L<<20) /* 0x00100000 */
 
-/* Combinations of standard masks. */
-#define STANDARD_RIGHTS_ALL_ACCESS (DELETE_ACCESS|READ_CONTROL_ACCESS|WRITE_DAC_ACCESS|WRITE_OWNER_ACCESS|SYNCHRONIZE_ACCESS) /* 0x001f0000 */
-#define STANDARD_RIGHTS_EXECUTE_ACCESS (READ_CONTROL_ACCESS) /* 0x00020000 */
-#define STANDARD_RIGHTS_READ_ACCESS (READ_CONTROL_ACCESS) /* 0x00200000 */
-#define STANDARD_RIGHTS_REQUIRED_ACCESS (DELETE_ACCESS|READ_CONTROL_ACCESS|WRITE_DAC_ACCESS|WRITE_OWNER_ACCESS) /* 0x000f0000 */
-#define STANDARD_RIGHTS_WRITE_ACCESS (READ_CONTROL_ACCESS) /* 0x00020000 */
-
-#define SYSTEM_SECURITY_ACCESS (1L<<24)                  /* 0x01000000 */
-#define MAXIMUM_ALLOWED_ACCESS (1L<<25)                  /* 0x02000000 */
+#define SYSTEM_SECURITY_ACCESS (1L<<24)           /* 0x01000000 */
+#define MAXIMUM_ALLOWED_ACCESS (1L<<25)           /* 0x02000000 */
 #define GENERIC_ALL_ACCESS     (1<<28)            /* 0x10000000 */
 #define GENERIC_EXECUTE_ACCESS (1<<29)            /* 0x20000000 */
 #define GENERIC_WRITE_ACCESS   (1<<30)            /* 0x40000000 */
@@ -1651,5 +1690,6 @@ typedef struct {
 /* Common popt structures */
 
 extern struct poptOption popt_common_debug[];
+extern struct poptOption popt_common_configfile[];
 
 #endif /* _SMB_H */