diff options
Diffstat (limited to 'source/include/client.h')
-rw-r--r-- | source/include/client.h | 58 |
1 files changed, 26 insertions, 32 deletions
diff --git a/source/include/client.h b/source/include/client.h index e9d40c3b7c9..df52e227f0c 100644 --- a/source/include/client.h +++ b/source/include/client.h @@ -57,25 +57,39 @@ struct print_job_info time_t t; }; +struct cli_pipe_auth_data { + enum pipe_auth_type auth_type; /* switch for the union below. Defined in ntdomain.h */ + enum pipe_auth_level auth_level; /* defined in ntdomain.h */ + union { + struct schannel_auth_struct *schannel_auth; + NTLMSSP_STATE *ntlmssp_state; + struct kerberos_auth_struct *kerberos_auth; + } a_u; + void (*cli_auth_data_free_func)(struct cli_pipe_auth_data *); +}; + struct rpc_pipe_client { + struct rpc_pipe_client *prev, *next; + TALLOC_CTX *mem_ctx; struct cli_state *cli; int pipe_idx; + const char *pipe_name; uint16 fnum; - int pipe_auth_flags; - - NTLMSSP_STATE *ntlmssp_pipe_state; - const char *user_name; const char *domain; + const char *user_name; struct pwd_info pwd; - struct netsec_auth_struct auth_info; - uint16 max_xmit_frag; uint16 max_recv_frag; + + struct cli_pipe_auth_data auth; + + /* The following is only non-null on a netlogon pipe. */ + struct dcinfo *dc; }; struct cli_state { @@ -92,8 +106,11 @@ struct cli_state { int privileges; fstring desthost; - fstring user_name; + + /* The credentials used to open the cli_state connection. */ fstring domain; + fstring user_name; + struct pwd_info pwd; /* * The following strings are the @@ -111,7 +128,6 @@ struct cli_state { fstring full_dest_host_name; struct in_addr dest_ip; - struct pwd_info pwd; DATA_BLOB secblob; /* cryptkey or negTokenInit */ uint32 sesskey; int serverzone; @@ -137,27 +153,8 @@ struct cli_state { any per-pipe authenticaion */ DATA_BLOB user_session_key; - /* - * Only used in NT domain calls. - */ - - int pipe_idx; /* Index (into list of known pipes) - of the pipe we're talking to, - if any */ - - struct rpc_pipe_client pipes[PI_MAX_PIPES]; - - /* Secure pipe parameters */ - int pipe_auth_flags; - - struct rpc_pipe_client netlogon_pipe; /* The "first" pipe to get - the session key for the - schannel. */ - unsigned char sess_key[16]; /* Current session key. */ - DOM_CRED clnt_cred; /* Client credential. */ - fstring mach_acct; /* MYNAME$. */ - fstring srv_name_slash; /* \\remote server. */ - fstring clnt_name_slash; /* \\local client. */ + /* The list of pipes currently open on this connection. */ + struct rpc_pipe_client *pipe_list; BOOL use_kerberos; BOOL fallback_after_kerberos; @@ -175,9 +172,6 @@ struct cli_state { /* was this structure allocated by cli_initialise? If so, then free in cli_shutdown() */ BOOL allocated; - - /* Name of the pipe we're talking to, if any */ - fstring pipe_name; }; #define CLI_FULL_CONNECTION_DONT_SPNEGO 0x0001 |