summaryrefslogtreecommitdiff
path: root/source/include/client.h
blob: 495780cbaa5f59cffc1bd3f9f516becc1fbabf36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*
   Unix SMB/Netbios implementation.
   Version 1.9.
   SMB parameters and setup
   Copyright (C) Andrew Tridgell 1992-1998
   Copyright (C) Luke Kenneth Casson Leighton 1996-1998
   Copyright (C) Jeremy Allison 1998

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#ifndef _CLIENT_H
#define _CLIENT_H

/* the client asks for a smaller buffer to save ram and also to get more
   overlap on the wire. This size gives us a nice read/write size, which
   will be a multiple of the page size on almost any system */
#define CLI_BUFFER_SIZE (0x4400)

/*
 * These definitions depend on smb.h
 */

typedef struct file_info
{
  SMB_OFF_T size;
  int mode;
  uid_t uid;
  gid_t gid;
  /* these times are normally kept in GMT */
  time_t mtime;
  time_t atime;
  time_t ctime;
  pstring name;
} file_info;

struct print_job_info
{
	uint16 id;
	uint16 priority;
	size_t size;
	fstring user;
	fstring name;
	time_t t;
};

struct pwd_info
{
    BOOL null_pwd;
    BOOL cleartext;
    BOOL crypted;

    fstring password;

    uchar smb_lm_pwd[16];
    uchar smb_nt_pwd[16];

    uchar smb_lm_owf[24];
    uchar smb_nt_owf[24];
};

struct cli_state {
  int fd;
  uint16 cnum;
  uint16 pid;
  uint16 mid;
  uint16 vuid;
  int protocol;
  int sec_mode;
  int rap_error;
  int privilages;

  fstring eff_name;
  fstring desthost;
  fstring user_name;
  fstring domain;

  fstring share;
  fstring dev;
  struct nmb_name called;
  struct nmb_name calling;
  fstring full_dest_host_name;
  struct in_addr dest_ip;

  struct pwd_info pwd;
  unsigned char cryptkey[8];
  uint32 sesskey;
  int serverzone;
  uint32 servertime;
  int readbraw_supported;
  int writebraw_supported;
  int timeout;
  int max_xmit;
  int max_mux;
  char *outbuf;
  char *inbuf;
  int bufsize;
  int initialised;
  int win95;
  uint32 capabilities;
  /*
   * Only used in NT domain calls.
   */
  uint32 nt_error;                   /* NT RPC error code. */
  uint16 nt_pipe_fnum;               /* Pipe handle. */
  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. */
};

#endif /* _CLIENT_H */