xref: /plan9/sys/src/cmd/aquarela/smb.h (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1*8ccd4a63SDavid du Colombier typedef struct SmbRawHeader {
2*8ccd4a63SDavid du Colombier 	uchar protocol[4];
3*8ccd4a63SDavid du Colombier 	uchar command;
4*8ccd4a63SDavid du Colombier //	union {
5*8ccd4a63SDavid du Colombier //		struct {
6*8ccd4a63SDavid du Colombier //			uchar errorclass;
7*8ccd4a63SDavid du Colombier //			uchar reserved;
8*8ccd4a63SDavid du Colombier //			uchar error[2];
9*8ccd4a63SDavid du Colombier //		} doserror;
10*8ccd4a63SDavid du Colombier 		uchar status[4];
11*8ccd4a63SDavid du Colombier //	};
12*8ccd4a63SDavid du Colombier 	uchar flags;
13*8ccd4a63SDavid du Colombier 	uchar flags2[2];
14*8ccd4a63SDavid du Colombier //	union {
15*8ccd4a63SDavid du Colombier 		uchar extra[12];
16*8ccd4a63SDavid du Colombier //		struct {
17*8ccd4a63SDavid du Colombier //			uchar pidhigh[2];
18*8ccd4a63SDavid du Colombier //			uchar securitysignature[8];
19*8ccd4a63SDavid du Colombier //		};
20*8ccd4a63SDavid du Colombier //	};
21*8ccd4a63SDavid du Colombier 	uchar tid[2];
22*8ccd4a63SDavid du Colombier 	uchar pid[2];
23*8ccd4a63SDavid du Colombier 	uchar uid[2];
24*8ccd4a63SDavid du Colombier 	uchar mid[2];
25*8ccd4a63SDavid du Colombier 	uchar wordcount;
26*8ccd4a63SDavid du Colombier 	uchar parameterwords[1];
27*8ccd4a63SDavid du Colombier } SmbRawHeader;
28*8ccd4a63SDavid du Colombier 
29*8ccd4a63SDavid du Colombier enum {
30*8ccd4a63SDavid du Colombier 	SmbHeaderFlagReserved = (3 << 1),
31*8ccd4a63SDavid du Colombier 	SmbHeaderFlagCaseless = (1 << 3),
32*8ccd4a63SDavid du Colombier 	SmbHeaderFlagServerIgnore = (1 << 4),
33*8ccd4a63SDavid du Colombier 	SMB_FLAGS_SERVER_TO_REDIR = (1 << 7),
34*8ccd4a63SDavid du Colombier };
35*8ccd4a63SDavid du Colombier 
36*8ccd4a63SDavid du Colombier enum {
37*8ccd4a63SDavid du Colombier 	SMB_FLAGS2_KNOWS_LONG_NAMES = (1 << 0),
38*8ccd4a63SDavid du Colombier 	SMB_FLAGS2_KNOWS_EAS = (1 << 1),
39*8ccd4a63SDavid du Colombier 	SMB_FLAGS2_SECURITY_SIGNATURE = (1 << 2),
40*8ccd4a63SDavid du Colombier 	SMB_FLAGS2_RESERVED1 = (1 << 3),
41*8ccd4a63SDavid du Colombier 	SMB_FLAGS2_IS_LONG_NAME = (1 << 6),
42*8ccd4a63SDavid du Colombier 	SMB_FLAGS2_EXT_SEC = (1 << 1),
43*8ccd4a63SDavid du Colombier 	SMB_FLAGS2_DFS = (1 << 12),
44*8ccd4a63SDavid du Colombier 	SMB_FLAGS2_PAGING_IO = (1 << 13),
45*8ccd4a63SDavid du Colombier 	SMB_FLAGS2_ERR_STATUS = (1 << 14),
46*8ccd4a63SDavid du Colombier 	SMB_FLAGS2_UNICODE = (1 << 15),
47*8ccd4a63SDavid du Colombier };
48*8ccd4a63SDavid du Colombier 
49*8ccd4a63SDavid du Colombier enum {
50*8ccd4a63SDavid du Colombier 	SMB_COM_CREATE_DIRECTORY = 0x00,
51*8ccd4a63SDavid du Colombier 	SMB_COM_DELETE_DIRECTORY = 0x01,
52*8ccd4a63SDavid du Colombier 	SMB_COM_OPEN = 0x02,
53*8ccd4a63SDavid du Colombier 	SMB_COM_CREATE = 0x03,
54*8ccd4a63SDavid du Colombier 	SMB_COM_CLOSE = 0x04,
55*8ccd4a63SDavid du Colombier 	SMB_COM_FLUSH = 0x05,
56*8ccd4a63SDavid du Colombier 	SMB_COM_DELETE = 0x06,
57*8ccd4a63SDavid du Colombier 	SMB_COM_RENAME = 0x07,
58*8ccd4a63SDavid du Colombier 	SMB_COM_QUERY_INFORMATION = 0x08,
59*8ccd4a63SDavid du Colombier 	SMB_COM_SET_INFORMATION = 0x09,
60*8ccd4a63SDavid du Colombier 	SMB_COM_READ = 0x0A,
61*8ccd4a63SDavid du Colombier 	SMB_COM_WRITE = 0x0B,
62*8ccd4a63SDavid du Colombier 	SMB_COM_LOCK_BYTE_RANGE = 0x0C,
63*8ccd4a63SDavid du Colombier 	SMB_COM_UNLOCK_BYTE_RANGE = 0x0D,
64*8ccd4a63SDavid du Colombier 	SMB_COM_CREATE_TEMPORARY = 0x0E,
65*8ccd4a63SDavid du Colombier 	SMB_COM_CREATE_NEW = 0x0F,
66*8ccd4a63SDavid du Colombier 	SMB_COM_CHECK_DIRECTORY = 0x10,
67*8ccd4a63SDavid du Colombier 	SMB_COM_PROCESS_EXIT = 0x11,
68*8ccd4a63SDavid du Colombier 	SMB_COM_SEEK = 0x12,
69*8ccd4a63SDavid du Colombier 	SMB_COM_LOCK_AND_READ = 0x13,
70*8ccd4a63SDavid du Colombier 	SMB_COM_WRITE_AND_UNLOCK = 0x14,
71*8ccd4a63SDavid du Colombier 	SMB_COM_READ_RAW = 0x1A,
72*8ccd4a63SDavid du Colombier 	SMB_COM_READ_MPX = 0x1B,
73*8ccd4a63SDavid du Colombier 	SMB_COM_READ_MPX_SECONDARY = 0x1C,
74*8ccd4a63SDavid du Colombier 	SMB_COM_WRITE_RAW = 0x1D,
75*8ccd4a63SDavid du Colombier 	SMB_COM_WRITE_MPX = 0x1E,
76*8ccd4a63SDavid du Colombier 	SMB_COM_WRITE_MPX_SECONDARY = 0x1F,
77*8ccd4a63SDavid du Colombier 	SMB_COM_WRITE_COMPLETE = 0x20,
78*8ccd4a63SDavid du Colombier 	SMB_COM_QUERY_SERVER = 0x21,
79*8ccd4a63SDavid du Colombier 	SMB_COM_SET_INFORMATION2 = 0x22,
80*8ccd4a63SDavid du Colombier 	SMB_COM_QUERY_INFORMATION2 = 0x23,
81*8ccd4a63SDavid du Colombier 	SMB_COM_LOCKING_ANDX = 0x24,
82*8ccd4a63SDavid du Colombier 	SMB_COM_TRANSACTION = 0x25,
83*8ccd4a63SDavid du Colombier 	SMB_COM_TRANSACTION_SECONDARY = 0x26,
84*8ccd4a63SDavid du Colombier 	SMB_COM_IOCTL = 0x27,
85*8ccd4a63SDavid du Colombier 	SMB_COM_IOCTL_SECONDARY = 0x28,
86*8ccd4a63SDavid du Colombier 	SMB_COM_COPY = 0x29,
87*8ccd4a63SDavid du Colombier 	SMB_COM_MOVE = 0x2A,
88*8ccd4a63SDavid du Colombier 	SMB_COM_ECHO = 0x2B,
89*8ccd4a63SDavid du Colombier 	SMB_COM_WRITE_AND_CLOSE = 0x2C,
90*8ccd4a63SDavid du Colombier 	SMB_COM_OPEN_ANDX = 0x2D,
91*8ccd4a63SDavid du Colombier 	SMB_COM_READ_ANDX = 0x2E,
92*8ccd4a63SDavid du Colombier 	SMB_COM_WRITE_ANDX = 0x2F,
93*8ccd4a63SDavid du Colombier 	SMB_COM_NEW_FILE_SIZE = 0x30,
94*8ccd4a63SDavid du Colombier 	SMB_COM_CLOSE_AND_TREE_DISC = 0x31,
95*8ccd4a63SDavid du Colombier 	SMB_COM_TRANSACTION2 = 0x32,
96*8ccd4a63SDavid du Colombier 	SMB_COM_TRANSACTION2_SECONDARY = 0x33,
97*8ccd4a63SDavid du Colombier 	SMB_COM_FIND_CLOSE2 = 0x34,
98*8ccd4a63SDavid du Colombier 	SMB_COM_FIND_NOTIFY_CLOSE = 0x35,
99*8ccd4a63SDavid du Colombier /* Used by Xenix/Unix 0x60 - 0x6E */,
100*8ccd4a63SDavid du Colombier 	SMB_COM_TREE_CONNECT = 0x70,
101*8ccd4a63SDavid du Colombier 	SMB_COM_TREE_DISCONNECT = 0x71,
102*8ccd4a63SDavid du Colombier 	SMB_COM_NEGOTIATE = 0x72,
103*8ccd4a63SDavid du Colombier 	SMB_COM_SESSION_SETUP_ANDX = 0x73,
104*8ccd4a63SDavid du Colombier 	SMB_COM_LOGOFF_ANDX = 0x74,
105*8ccd4a63SDavid du Colombier 	SMB_COM_TREE_CONNECT_ANDX = 0x75,
106*8ccd4a63SDavid du Colombier 	SMB_COM_QUERY_INFORMATION_DISK = 0x80,
107*8ccd4a63SDavid du Colombier 	SMB_COM_SEARCH = 0x81,
108*8ccd4a63SDavid du Colombier 	SMB_COM_FIND = 0x82,
109*8ccd4a63SDavid du Colombier 	SMB_COM_FIND_UNIQUE = 0x83,
110*8ccd4a63SDavid du Colombier 	SMB_COM_FIND_CLOSE = 0x84,
111*8ccd4a63SDavid du Colombier 	SMB_COM_NT_TRANSACT = 0xA0,
112*8ccd4a63SDavid du Colombier 	SMB_COM_NT_TRANSACT_SECONDARY = 0xA1,
113*8ccd4a63SDavid du Colombier 	SMB_COM_NT_CREATE_ANDX = 0xA2,
114*8ccd4a63SDavid du Colombier 	SMB_COM_NT_CANCEL = 0xA4,
115*8ccd4a63SDavid du Colombier 	SMB_COM_NT_RENAME = 0xA5,
116*8ccd4a63SDavid du Colombier 	SMB_COM_OPEN_PRINT_FILE = 0xC0,
117*8ccd4a63SDavid du Colombier 	SMB_COM_WRITE_PRINT_FILE = 0xC1,
118*8ccd4a63SDavid du Colombier 	SMB_COM_CLOSE_PRINT_FILE = 0xC2,
119*8ccd4a63SDavid du Colombier 	SMB_COM_GET_PRINT_QUEUE = 0xC3,
120*8ccd4a63SDavid du Colombier 	SMB_COM_READ_BULK = 0xD8,
121*8ccd4a63SDavid du Colombier 	SMB_COM_WRITE_BULK = 0xD9,
122*8ccd4a63SDavid du Colombier 	SMB_COM_NO_ANDX_COMMAND = 0xff,
123*8ccd4a63SDavid du Colombier };
124*8ccd4a63SDavid du Colombier 
125*8ccd4a63SDavid du Colombier enum {
126*8ccd4a63SDavid du Colombier 	SUCCESS = 0,
127*8ccd4a63SDavid du Colombier 	ERRDOS = 0x01,
128*8ccd4a63SDavid du Colombier 	ERRSRV = 0x02,
129*8ccd4a63SDavid du Colombier 	ERRHRD = 0x03,
130*8ccd4a63SDavid du Colombier 	ERRCMD = 0xff,
131*8ccd4a63SDavid du Colombier };
132*8ccd4a63SDavid du Colombier 
133*8ccd4a63SDavid du Colombier enum {
134*8ccd4a63SDavid du Colombier 	ERRbadfunc = 1,
135*8ccd4a63SDavid du Colombier 	ERRbadfile = 2,
136*8ccd4a63SDavid du Colombier 	ERRbadpath = 3,
137*8ccd4a63SDavid du Colombier 	ERRnofids = 4,
138*8ccd4a63SDavid du Colombier 	ERRnoaccess = 5,
139*8ccd4a63SDavid du Colombier 	ERRbadfid = 6,
140*8ccd4a63SDavid du Colombier 	ERRbadmcb = 7,
141*8ccd4a63SDavid du Colombier 	ERRnomem = 8,
142*8ccd4a63SDavid du Colombier 	ERRbadmem = 9,
143*8ccd4a63SDavid du Colombier 	ERRbadenv = 10,
144*8ccd4a63SDavid du Colombier 	ERRbadformat = 11,
145*8ccd4a63SDavid du Colombier 	ERRbadaccess = 12,
146*8ccd4a63SDavid du Colombier 	ERRbaddata  =13,
147*8ccd4a63SDavid du Colombier 	ERRbaddrive = 15,
148*8ccd4a63SDavid du Colombier 	ERRremcd = 16,
149*8ccd4a63SDavid du Colombier 	ERRdiffdevice = 17,
150*8ccd4a63SDavid du Colombier 	ERRnofiles = 18,
151*8ccd4a63SDavid du Colombier 	ERRbadshare = 32,
152*8ccd4a63SDavid du Colombier 	ERRlock = 33,
153*8ccd4a63SDavid du Colombier 	ERRunsup = 50,
154*8ccd4a63SDavid du Colombier 	ERRfilexists = 80,
155*8ccd4a63SDavid du Colombier 	ERRunknownlevel = 124,
156*8ccd4a63SDavid du Colombier 	ERRquota = 512,
157*8ccd4a63SDavid du Colombier 	ERRnotalink = 513,
158*8ccd4a63SDavid du Colombier };
159*8ccd4a63SDavid du Colombier 
160*8ccd4a63SDavid du Colombier enum {
161*8ccd4a63SDavid du Colombier 	ERRerror = 1,
162*8ccd4a63SDavid du Colombier 	ERRbadpw = 2,
163*8ccd4a63SDavid du Colombier 	ERRaccess = 4,
164*8ccd4a63SDavid du Colombier 	ERRinvtid = 5,
165*8ccd4a63SDavid du Colombier 	ERRsmbcmd = 64,
166*8ccd4a63SDavid du Colombier 	ERRtoomanyuids = 90,
167*8ccd4a63SDavid du Colombier 	ERRbaduid = 91,
168*8ccd4a63SDavid du Colombier 	ERRnosupport = 65535,
169*8ccd4a63SDavid du Colombier };
170*8ccd4a63SDavid du Colombier 
171*8ccd4a63SDavid du Colombier enum {
172*8ccd4a63SDavid du Colombier 	CAP_RAW_MODE = 0x0001,
173*8ccd4a63SDavid du Colombier 	CAP_MPX_MODE = 0x0002,
174*8ccd4a63SDavid du Colombier 	CAP_UNICODE = 0x0004,
175*8ccd4a63SDavid du Colombier 	CAP_LARGE_FILES =  0x0008,
176*8ccd4a63SDavid du Colombier 	CAP_NT_SMBS = 0x0010,
177*8ccd4a63SDavid du Colombier 	CAP_RPC_REMOTE_APIS = 0x0020,
178*8ccd4a63SDavid du Colombier 	CAP_STATUS32 = 0x0040,
179*8ccd4a63SDavid du Colombier 	CAP_LEVEL_II_OPLOCKS = 0x0080,
180*8ccd4a63SDavid du Colombier 	CAP_LOCK_AND_READ = 0x0100,
181*8ccd4a63SDavid du Colombier 	CAP_NT_FIND = 0x0200,
182*8ccd4a63SDavid du Colombier 	CAP_DFS = 0x1000,
183*8ccd4a63SDavid du Colombier 	CAP_INFOLEVEL_PASSTHRU = 0x2000,
184*8ccd4a63SDavid du Colombier 	CAP_W2K_SMBS = 0x2000,
185*8ccd4a63SDavid du Colombier 	CAP_LARGE_READX = 0x4000,
186*8ccd4a63SDavid du Colombier 	CAP_LARGE_WRITEX = 0x8000,
187*8ccd4a63SDavid du Colombier 	CAP_UNIX = 0x00800000,
188*8ccd4a63SDavid du Colombier 	CAP_BULK_TRANSFER = 0x20000000,
189*8ccd4a63SDavid du Colombier 	CAP_COMPRESSED_DATA = 0x40000000,
190*8ccd4a63SDavid du Colombier 	CAP_EXTENDED_SECURITY = 0x80000000
191*8ccd4a63SDavid du Colombier };
192*8ccd4a63SDavid du Colombier 
193*8ccd4a63SDavid du Colombier enum {
194*8ccd4a63SDavid du Colombier 	RapNetShareEnum = 0,
195*8ccd4a63SDavid du Colombier 	RapNetShareGetInfo = 1,
196*8ccd4a63SDavid du Colombier 	RapNetServerGetInfo = 13,
197*8ccd4a63SDavid du Colombier 	RapNetWkstaGetInfo = 63,
198*8ccd4a63SDavid du Colombier 	RapNetServerEnum2 = 104,
199*8ccd4a63SDavid du Colombier };
200*8ccd4a63SDavid du Colombier 
201*8ccd4a63SDavid du Colombier enum {
202*8ccd4a63SDavid du Colombier 	SMB_RAP_NERR_SUCCESS = 0,
203*8ccd4a63SDavid du Colombier 	SMB_RAP_ERROR_MORE_DATA = 234,
204*8ccd4a63SDavid du Colombier };
205*8ccd4a63SDavid du Colombier 
206*8ccd4a63SDavid du Colombier enum {
207*8ccd4a63SDavid du Colombier 	STYPE_DISKTREE,
208*8ccd4a63SDavid du Colombier 	STYPE_PRINTQ,
209*8ccd4a63SDavid du Colombier 	STYPE_DEVICE,
210*8ccd4a63SDavid du Colombier 	STYPE_IPC
211*8ccd4a63SDavid du Colombier };
212*8ccd4a63SDavid du Colombier 
213*8ccd4a63SDavid du Colombier enum {
214*8ccd4a63SDavid du Colombier 	SV_TYPE_WORKSTATION = 0x00000001,
215*8ccd4a63SDavid du Colombier 	SV_TYPE_SERVER = 0x00000002,
216*8ccd4a63SDavid du Colombier 	SV_TYPE_SQLSERVER = 0x00000004,
217*8ccd4a63SDavid du Colombier 	SV_TYPE_DOMAIN_CTRL = 0x00000008,
218*8ccd4a63SDavid du Colombier 	SV_TYPE_DOMAIN_BAKCTRL = 0x00000010,
219*8ccd4a63SDavid du Colombier 	SV_TYPE_TIME_SOURCE = 0x00000020,
220*8ccd4a63SDavid du Colombier 	SV_TYPE_AFP = 0x00000040,
221*8ccd4a63SDavid du Colombier 	SV_TYPE_NOVELL = 0x00000080,
222*8ccd4a63SDavid du Colombier 	SV_TYPE_DOMAIN_MEMBER = 0x00000100,
223*8ccd4a63SDavid du Colombier 	SV_TYPE_PRINTQ_SERVER = 0x00000200,
224*8ccd4a63SDavid du Colombier 	SV_TYPE_DIALIN_SERVER = 0x00000400,
225*8ccd4a63SDavid du Colombier 	SV_TYPE_SERVER_UNIX = 0x00000800,
226*8ccd4a63SDavid du Colombier 	SV_TYPE_NT = 0x00001000,
227*8ccd4a63SDavid du Colombier 	SV_TYPE_WFW = 0x00002000,
228*8ccd4a63SDavid du Colombier 	SV_TYPE_SERVER_MFPN = 0x00004000,
229*8ccd4a63SDavid du Colombier 	SV_TYPE_SERVER_NT = 0x00008000,
230*8ccd4a63SDavid du Colombier 	SV_TYPE_POTENTIAL_BROWSER = 0x00010000,
231*8ccd4a63SDavid du Colombier 	SV_TYPE_BACKUP_BROWSER = 0x00020000,
232*8ccd4a63SDavid du Colombier 	SV_TYPE_MASTER_BROWSER = 0x00040000,
233*8ccd4a63SDavid du Colombier 	SV_TYPE_DOMAIN_MASTER = 0x00080000,
234*8ccd4a63SDavid du Colombier 	SV_TYPE_SERVER_OSF = 0x00100000,
235*8ccd4a63SDavid du Colombier 	SV_TYPE_SERVER_VMS = 0x00200000,
236*8ccd4a63SDavid du Colombier 	SV_TYPE_WIN95_PLUS = 0x00400000,
237*8ccd4a63SDavid du Colombier 	SV_TYPE_DFS_SERVER = 0x00800000,
238*8ccd4a63SDavid du Colombier 	SV_TYPE_ALTERNATE_XPORT = 0x20000000,
239*8ccd4a63SDavid du Colombier 	SV_TYPE_LOCAL_LIST_ONLY = 0x40000000,
240*8ccd4a63SDavid du Colombier 	SV_TYPE_DOMAIN_ENUM = 0x80000000,
241*8ccd4a63SDavid du Colombier 	SV_TYPE_ALL = 0xFFFFFFFF,
242*8ccd4a63SDavid du Colombier };
243*8ccd4a63SDavid du Colombier 
244*8ccd4a63SDavid du Colombier enum {
245*8ccd4a63SDavid du Colombier 	SMB_TRANS2_OPEN = 0,
246*8ccd4a63SDavid du Colombier 	SMB_TRANS2_FIND_FIRST2 = 1,
247*8ccd4a63SDavid du Colombier 	SMB_TRANS2_FIND_NEXT2 = 2,
248*8ccd4a63SDavid du Colombier 	SMB_TRANS2_QUERY_FS_INFORMATION = 3,
249*8ccd4a63SDavid du Colombier 	SMB_TRANS2_SET_FS_INFORMATION = 4,
250*8ccd4a63SDavid du Colombier 	SMB_TRANS2_QUERY_PATH_INFORMATION = 5,
251*8ccd4a63SDavid du Colombier 	SMB_TRANS2_SET_PATH_INFORMATION = 6,
252*8ccd4a63SDavid du Colombier 	SMB_TRANS2_QUERY_FILE_INFORMATION = 7,
253*8ccd4a63SDavid du Colombier 	SMB_TRANS2_SET_FILE_INFORMATION = 8,
254*8ccd4a63SDavid du Colombier 	SMB_TRANS2_FSCTL = 9,
255*8ccd4a63SDavid du Colombier 	SMB_TRANS2_IOCTL2 = 0xA,
256*8ccd4a63SDavid du Colombier 	SMB_TRANS2_FIND_NOTIFY_FIRST = 0xB,
257*8ccd4a63SDavid du Colombier 	SMB_TRANS2_FIND_NOTIFY_NEXT = 0xC,
258*8ccd4a63SDavid du Colombier 	SMB_TRANS2_CREATE_DIRECTORY = 0xD,
259*8ccd4a63SDavid du Colombier 	SMB_TRANS2_SESSION_SETUP = 0xE,
260*8ccd4a63SDavid du Colombier 	SMB_TRANS2_GET_DFS_REFERRAL = 0x10,
261*8ccd4a63SDavid du Colombier 	SMB_TRANS2_REPORT_DFS_INCONSISTENCY = 0x11,
262*8ccd4a63SDavid du Colombier };
263*8ccd4a63SDavid du Colombier 
264*8ccd4a63SDavid du Colombier enum {
265*8ccd4a63SDavid du Colombier 	SMB_FIND_CLOSE = 1,
266*8ccd4a63SDavid du Colombier 	SMB_FIND_CLOSE_EOS = 2,
267*8ccd4a63SDavid du Colombier 	SMB_FIND_RETURN_RESUME_KEYS = 4,
268*8ccd4a63SDavid du Colombier 	SMB_FIND_CONTINUE = 8,
269*8ccd4a63SDavid du Colombier 	SMB_FIND_BACKUP = 16
270*8ccd4a63SDavid du Colombier };
271*8ccd4a63SDavid du Colombier 
272*8ccd4a63SDavid du Colombier enum {
273*8ccd4a63SDavid du Colombier 	SMB_INFO_STANDARD = 1,
274*8ccd4a63SDavid du Colombier 	SMB_FIND_FILE_BOTH_DIRECTORY_INFO = 0x104,
275*8ccd4a63SDavid du Colombier 	SMB_QUERY_FILE_BASIC_INFO = 0x101,
276*8ccd4a63SDavid du Colombier 	SMB_QUERY_FILE_STANDARD_INFO = 0x102,
277*8ccd4a63SDavid du Colombier 	SMB_QUERY_FILE_EA_INFO = 0x103,
278*8ccd4a63SDavid du Colombier 	SMB_QUERY_FILE_ALL_INFO = 0x107,
279*8ccd4a63SDavid du Colombier 	SMB_QUERY_FILE_STREAM_INFO = 0x109,
280*8ccd4a63SDavid du Colombier };
281*8ccd4a63SDavid du Colombier 
282*8ccd4a63SDavid du Colombier enum {
283*8ccd4a63SDavid du Colombier 	SMB_SET_FILE_BASIC_INFO = 0x101,
284*8ccd4a63SDavid du Colombier 	SMB_SET_FILE_DISPOSITION_INFO = 0x102,
285*8ccd4a63SDavid du Colombier 	SMB_SET_FILE_ALLOCATION_INFO = 0x103,
286*8ccd4a63SDavid du Colombier 	SMB_SET_FILE_END_OF_FILE_INFO = 0x104,
287*8ccd4a63SDavid du Colombier };
288*8ccd4a63SDavid du Colombier 
289*8ccd4a63SDavid du Colombier enum {
290*8ccd4a63SDavid du Colombier 	SMB_ATTR_READ_ONLY = (1 << 0),
291*8ccd4a63SDavid du Colombier 	SMB_ATTR_HIDDEN = (1 << 1),
292*8ccd4a63SDavid du Colombier 	SMB_ATTR_SYSTEM = (1 << 2),
293*8ccd4a63SDavid du Colombier 	SMB_ATTR_DIRECTORY = (1 << 4),
294*8ccd4a63SDavid du Colombier 	SMB_ATTR_ARCHIVE = (1 << 5),
295*8ccd4a63SDavid du Colombier 	SMB_ATTR_NORMAL = (1 << 7),
296*8ccd4a63SDavid du Colombier 	SMB_ATTR_COMPRESSED = 0x800,
297*8ccd4a63SDavid du Colombier 	SMB_ATTR_TEMPORARY = 0x100,
298*8ccd4a63SDavid du Colombier 	SMB_ATTR_WRITETHROUGH = 0x80000000,
299*8ccd4a63SDavid du Colombier 	SMB_ATTR_NO_BUFFERING = 0x20000000,
300*8ccd4a63SDavid du Colombier 	SMB_ATTR_RANDOM_ACCESS = 0x10000000,
301*8ccd4a63SDavid du Colombier };
302*8ccd4a63SDavid du Colombier 
303*8ccd4a63SDavid du Colombier enum {
304*8ccd4a63SDavid du Colombier 	SMB_OFUN_EXIST_SHIFT = 0,
305*8ccd4a63SDavid du Colombier 	SMB_OFUN_EXIST_MASK = 3,
306*8ccd4a63SDavid du Colombier 	SMB_OFUN_EXIST_FAIL = 0,
307*8ccd4a63SDavid du Colombier 	SMB_OFUN_EXIST_OPEN = 1,
308*8ccd4a63SDavid du Colombier 	SMB_OFUN_EXIST_TRUNCATE = 2,
309*8ccd4a63SDavid du Colombier 	SMB_OFUN_NOEXIST_CREATE = (1 << 4),
310*8ccd4a63SDavid du Colombier };
311*8ccd4a63SDavid du Colombier 
312*8ccd4a63SDavid du Colombier enum {
313*8ccd4a63SDavid du Colombier 	SMB_OPEN_FLAGS_ADDITIONAL = 1,
314*8ccd4a63SDavid du Colombier 	SMB_OPEN_FLAGS_OPLOCK = 2,
315*8ccd4a63SDavid du Colombier 	SMB_OPEN_FLAGS_OPBATCH = 4,
316*8ccd4a63SDavid du Colombier 	SMB_OPEN_MODE_ACCESS_SHIFT = 0,
317*8ccd4a63SDavid du Colombier 	SMB_OPEN_MODE_ACCESS_MASK = 7,
318*8ccd4a63SDavid du Colombier 	SMB_OPEN_MODE_SHARE_SHIFT = 4,
319*8ccd4a63SDavid du Colombier 	SMB_OPEN_MODE_SHARE_MASK = 7,
320*8ccd4a63SDavid du Colombier 	SMB_OPEN_MODE_SHARE_COMPATIBILITY  = 0,
321*8ccd4a63SDavid du Colombier 	SMB_OPEN_MODE_SHARE_EXCLUSIVE = 1,
322*8ccd4a63SDavid du Colombier 	SMB_OPEN_MODE_SHARE_DENY_WRITE = 2,
323*8ccd4a63SDavid du Colombier 	SMB_OPEN_MODE_SHARE_DENY_READOREXEC = 3,
324*8ccd4a63SDavid du Colombier 	SMB_OPEN_MODE_SHARE_DENY_NONE = 4,
325*8ccd4a63SDavid du Colombier 	SMB_OPEN_MODE_WRITE_THROUGH = (1 << 14),
326*8ccd4a63SDavid du Colombier };
327*8ccd4a63SDavid du Colombier 
328*8ccd4a63SDavid du Colombier enum {
329*8ccd4a63SDavid du Colombier 	SMB_INFO_ALLOCATION = 1,
330*8ccd4a63SDavid du Colombier 	SMB_INFO_VOLUME = 2,
331*8ccd4a63SDavid du Colombier 	SMB_QUERY_FS_VOLUME_INFO = 0x102,
332*8ccd4a63SDavid du Colombier 	SMB_QUERY_FS_SIZE_INFO = 0x103,
333*8ccd4a63SDavid du Colombier 	SMB_QUERY_FS_ATTRIBUTE_INFO = 0x105,
334*8ccd4a63SDavid du Colombier };
335*8ccd4a63SDavid du Colombier 
336*8ccd4a63SDavid du Colombier enum {
337*8ccd4a63SDavid du Colombier 	SMB_CD_SUPERCEDE = 0,
338*8ccd4a63SDavid du Colombier 	SMB_CD_OPEN = 1,
339*8ccd4a63SDavid du Colombier 	SMB_CD_CREATE = 2,
340*8ccd4a63SDavid du Colombier 	SMB_CD_OPEN_IF = 3,
341*8ccd4a63SDavid du Colombier 	SMB_CD_OVERWRITE = 4,
342*8ccd4a63SDavid du Colombier 	SMB_CD_OVERWRITE_IF = 5,
343*8ccd4a63SDavid du Colombier 	SMB_CD_MAX = 5,
344*8ccd4a63SDavid du Colombier };
345*8ccd4a63SDavid du Colombier 
346*8ccd4a63SDavid du Colombier enum {
347*8ccd4a63SDavid du Colombier 	SMB_DA_SPECIFIC_MASK = 0x0000ffff,
348*8ccd4a63SDavid du Colombier 	SMB_DA_SPECIFIC_READ_DATA = 0x00000001,
349*8ccd4a63SDavid du Colombier 	SMB_DA_SPECIFIC_WRITE_DATA = 0x00000002,
350*8ccd4a63SDavid du Colombier 	SMB_DA_SPECIFIC_APPEND_DATA = 0x00000004,
351*8ccd4a63SDavid du Colombier 	SMB_DA_SPECIFIC_READ_EA = 0x00000008,
352*8ccd4a63SDavid du Colombier 	SMB_DA_SPECIFIC_WRITE_EA = 0x00000010,
353*8ccd4a63SDavid du Colombier 	SMB_DA_SPECIFIC_EXECUTE = 0x00000020,
354*8ccd4a63SDavid du Colombier 	SMB_DA_SPECIFIC_DELETE_CHILD = 0x00000040,
355*8ccd4a63SDavid du Colombier 	SMB_DA_SPECIFIC_READ_ATTRIBUTES = 0x00000080,
356*8ccd4a63SDavid du Colombier 	SMB_DA_SPECIFIC_WRITE_ATTRIBUTES = 0x00000100,
357*8ccd4a63SDavid du Colombier 	SMB_DA_STANDARD_MASK = 0x00ff0000,
358*8ccd4a63SDavid du Colombier 	SMB_DA_STANDARD_DELETE_ACCESS = 0x00010000,
359*8ccd4a63SDavid du Colombier 	SMB_DA_STANDARD_READ_CONTROL_ACCESS = 0x00020000,
360*8ccd4a63SDavid du Colombier 	SMB_DA_STANDARD_WRITE_DAC_ACCESS = 0x00040000,
361*8ccd4a63SDavid du Colombier 	SMB_DA_STANDARD_WRITE_OWNER_ACCESS = 0x00080000,
362*8ccd4a63SDavid du Colombier 	SMB_DA_STANDARD_SYNCHRONIZE_ACCESS = 0x00100000,
363*8ccd4a63SDavid du Colombier 	SMB_DA_GENERIC_MASK = 0xf0000000,
364*8ccd4a63SDavid du Colombier 	SMB_DA_GENERIC_ALL_ACCESS = 0x10000000,
365*8ccd4a63SDavid du Colombier 	SMB_DA_GENERIC_EXECUTE_ACCESS = 0x20000000,
366*8ccd4a63SDavid du Colombier 	SMB_DA_GENERIC_WRITE_ACCESS = 0x40000000,
367*8ccd4a63SDavid du Colombier 	SMB_DA_GENERIC_READ_ACCESS = 0x80000000
368*8ccd4a63SDavid du Colombier };
369*8ccd4a63SDavid du Colombier 
370*8ccd4a63SDavid du Colombier enum {
371*8ccd4a63SDavid du Colombier 	SMB_SA_NO_SHARE = 0x00000000,
372*8ccd4a63SDavid du Colombier 	SMB_SA_SHARE_READ = 0x00000001,
373*8ccd4a63SDavid du Colombier 	SMB_SA_SHARE_WRITE = 0x00000002,
374*8ccd4a63SDavid du Colombier 	SMB_SA_SHARE_DELETE = 0x00000004,
375*8ccd4a63SDavid du Colombier };
376*8ccd4a63SDavid du Colombier 
377*8ccd4a63SDavid du Colombier enum {
378*8ccd4a63SDavid du Colombier 	SMB_CO_DIRECTORY = 0x00000001,
379*8ccd4a63SDavid du Colombier 	SMB_CO_WRITETHROUGH = 0x00000002,
380*8ccd4a63SDavid du Colombier 	SMB_CO_SEQUENTIAL_ONLY = 0x00000004,
381*8ccd4a63SDavid du Colombier 	SMB_CO_FILE = 0x00000040,
382*8ccd4a63SDavid du Colombier 	SMB_CO_NO_EA_KNOWLEDGE = 0x00000200,
383*8ccd4a63SDavid du Colombier 	SMB_CO_EIGHT_DOT_THREE_ONLY = 0x00000400,
384*8ccd4a63SDavid du Colombier 	SMB_CO_RANDOM_ACCESS = 0x00000800,
385*8ccd4a63SDavid du Colombier 	SMB_CO_DELETE_ON_CLOSE = 0x00001000,
386*8ccd4a63SDavid du Colombier };
387*8ccd4a63SDavid du Colombier 
388