Wrap the unix token info in a unix_user_token in auth_serversupplied_info
[kai/samba.git] / source3 / include / smb.h
index d52d8493d0f7ce9543fa364d223c162a1a159e29..7ae66f1cedbd7df59e596055490696c35e1adc8a 100644 (file)
@@ -189,6 +189,8 @@ typedef uint32 codepoint_t;
 #define PIPE_EPM      "\\PIPE\\epmapper"
 #define PIPE_SVCCTL   "\\PIPE\\svcctl"
 #define PIPE_EVENTLOG "\\PIPE\\eventlog"
+#define PIPE_EPMAPPER "\\PIPE\\epmapper"
+#define PIPE_DRSUAPI  "\\PIPE\\drsuapi"
 
 #define PIPE_NETLOGON_PLAIN "\\NETLOGON"
 
@@ -206,7 +208,9 @@ typedef uint32 codepoint_t;
 #define PI_SVCCTL              11
 #define PI_EVENTLOG            12
 #define PI_NTSVCS              13
-#define PI_MAX_PIPES           14
+#define PI_EPMAPPER            14
+#define PI_DRSUAPI             15
+#define PI_MAX_PIPES           16
 
 /* 64 bit time (100usec) since ????? - cifs6.txt, section 3.5, page 30 */
 typedef uint64_t NTTIME;
@@ -307,9 +311,12 @@ extern const DATA_BLOB data_blob_null;
 #include "librpc/gen_ndr/netlogon.h"
 #include "librpc/gen_ndr/samr.h"
 #include "librpc/gen_ndr/dssetup.h"
+#include "librpc/gen_ndr/epmapper.h"
 #include "librpc/gen_ndr/libnet_join.h"
 #include "librpc/gen_ndr/krb5pac.h"
 #include "librpc/gen_ndr/ntsvcs.h"
+#include "librpc/gen_ndr/nbt.h"
+#include "librpc/gen_ndr/drsuapi.h"
 
 struct lsa_dom_info {
        bool valid;
@@ -371,10 +378,10 @@ typedef struct nt_user_token {
        SE_PRIV privileges;
 } NT_USER_TOKEN;
 
-typedef struct _unix_token {
+typedef struct unix_user_token {
        uid_t uid;
        gid_t gid;
-       int ngroups;
+       size_t ngroups;
        gid_t *groups;
 } UNIX_USER_TOKEN;
 
@@ -507,7 +514,6 @@ typedef struct files_struct {
        bool print_file;
        bool modified;
        bool is_directory;
-       bool is_stat;
        bool aio_write_behind;
        bool lockdb_clean;
        bool initial_delete_on_close; /* Only set at NTCreateX if file was created. */
@@ -515,7 +521,7 @@ typedef struct files_struct {
        char *fsp_name;
 
        struct vfs_fsp_data *vfs_extension;
-       FAKE_FILE_HANDLE *fake_file_handle;
+       struct fake_file_handle *fake_file_handle;
 
        struct notify_change_buf *notify;
 
@@ -525,24 +531,15 @@ typedef struct files_struct {
 #include "ntquotas.h"
 #include "sysquotas.h"
 
-/*
- * Structure used to keep directory state information around.
- * Used in NT change-notify code.
- */
-
-typedef struct {
-       time_t modify_time;
-       time_t status_time;
-} dir_status_struct;
-
 struct vuid_cache_entry {
        uint16 vuid;
+       struct auth_serversupplied_info *server_info;
        bool read_only;
        bool admin_user;
 };
 
 struct vuid_cache {
-       unsigned int entries;
+       unsigned int next_entry;
        struct vuid_cache_entry array[VUID_CACHE_SIZE];
 };
 
@@ -616,11 +613,9 @@ struct share_iterator {
 
 typedef struct connection_struct {
        struct connection_struct *next, *prev;
-       TALLOC_CTX *mem_ctx; /* long-lived memory context for things hanging off this struct. */
        unsigned cnum; /* an index passed over the wire */
        struct share_params *params;
        bool force_user;
-       bool force_group;
        struct vuid_cache vuid_cache;
        struct dptr_struct *dirptr;
        bool printer;
@@ -635,20 +630,16 @@ typedef struct connection_struct {
        struct vfs_ops vfs_opaque;                      /* OPAQUE Filesystem operations */
        struct vfs_handle_struct *vfs_handles;          /* for the new plugins */
 
-       char *user; /* name of user who *opened* this connection */
-       uid_t uid; /* uid of user who *opened* this connection */
-       gid_t gid; /* gid of user who *opened* this connection */
+       /*
+        * 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;
+
        char client_address[INET6_ADDRSTRLEN]; /* String version of client IP address. */
 
        uint16 vuid; /* vuid of user who *opened* this connection, or UID_FIELD_INVALID */
 
-       /* following groups stuff added by ih */
-
-       /* This groups info is valid for the user that *opened* the connection */
-       size_t ngroups;
-       gid_t *groups;
-       NT_USER_TOKEN *nt_user_token;
-       
        time_t lastused;
        time_t lastused_count;
        bool used;
@@ -1718,7 +1709,8 @@ minimum length == 18.
 
 enum smbd_capability {
     KERNEL_OPLOCK_CAPABILITY,
-    DMAPI_ACCESS_CAPABILITY
+    DMAPI_ACCESS_CAPABILITY,
+    LEASE_CAPABILITY
 };
 
 /* if a kernel does support oplocks then a structure of the following
@@ -1778,24 +1770,6 @@ struct pending_auth_data {
 typedef struct user_struct {
        struct user_struct *next, *prev;
        uint16 vuid; /* Tag for this entry. */
-       uid_t uid; /* uid of a validated user */
-       gid_t gid; /* gid of a validated user */
-
-       userdom_struct user;
-       const char *homedir;
-       const char *unix_homedir;
-       const char *logon_script;
-       
-       bool guest;
-
-       /* following groups stuff added by ih */
-       /* This groups info is needed for when we become_user() for this uid */
-       int n_groups;
-       gid_t *groups;
-
-       NT_USER_TOKEN *nt_user_token;
-
-       DATA_BLOB session_key;
 
        char *session_keystr; /* used by utmp and pam session code.  
                                 TDB key string */