Standardize License information
[openafs.git] / src / WINNT / afsd / smb3.h
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #ifndef __SMB3_H_ENV__
11 #define __SMB3_H_ENV__ 1
12
13 typedef struct smb_tran2Packet {
14         osi_queue_t q;                  /* queue of all packets */
15         int totalData;                  /* total # of expected data bytes */
16         int totalParms;                 /* total # of expected parm bytes */
17         int oldTotalParms;              /* initial estimate of parm bytes */
18         int curData;                    /* current # of received data bytes */
19         int curParms;                   /* current # of received parm bytes */
20         int maxReturnData;              /* max # of returned data bytes */
21         int maxReturnParms;             /* max # of returned parm bytes */
22         int opcode;                     /* subopcode we're handling */
23         long flags;                     /* flags */
24         smb_vc_t *vcp;                  /* virtual circuit we're dealing with */
25         unsigned short tid;             /* tid to match */
26         unsigned short mid;             /* mid to match */
27         unsigned short pid;             /* pid to remember */
28         unsigned short uid;             /* uid to remember */
29         unsigned short res[6];          /* contains PidHigh */
30         unsigned short *parmsp;         /* parms */
31         unsigned char *datap;           /* data bytes */
32 } smb_tran2Packet_t;
33
34 /* for flags field */
35 #define SMB_TRAN2PFLAG_ALLOC    1
36
37 typedef struct smb_tran2Dispatch {
38         long (*procp)(smb_vc_t *, smb_tran2Packet_t *, smb_packet_t *);
39         long flags;
40 } smb_tran2Dispatch_t;
41
42 typedef struct smb_tran2QFSInfo {
43         union {
44                 struct {
45                         long FSID;                      /* file system ID */
46                         long sectorsPerAllocUnit;
47                         long totalAllocUnits;           /* on the disk */
48                         long availAllocUnits;           /* free blocks */
49                         unsigned short bytesPerSector;  /* bytes per sector */
50                 } allocInfo;
51                 struct {
52                         long vsn;       /* volume serial number */
53                         char vnCount;   /* count of chars in label, incl null */
54                         char label[12]; /* pad out with nulls */
55                 } volumeInfo;
56                 struct {
57                         FILETIME vct;   /* volume creation time */
58                         long vsn;       /* volume serial number */
59                         long vnCount;   /* length of volume label in bytes */
60                         char res[2];    /* reserved */
61                         char label[10]; /* volume label */
62                 } FSvolumeInfo;
63                 struct {
64                         osi_hyper_t totalAllocUnits;    /* on the disk */
65                         osi_hyper_t availAllocUnits;    /* free blocks */
66                         long sectorsPerAllocUnit;
67                         long bytesPerSector;            /* bytes per sector */
68                 } FSsizeInfo;
69                 struct {
70                         long devType;   /* device type */
71                         long characteristics;
72                 } FSdeviceInfo;
73                 struct {
74                         long attributes;
75                         long maxCompLength;     /* max path component length */
76                         long FSnameLength;      /* length of file system name */
77                         char FSname[12];
78                 } FSattributeInfo;
79         } u;
80 } smb_tran2QFSInfo_t;
81
82 /* more than enough opcodes for today, anyway */
83 #define SMB_TRAN2_NOPCODES              20
84
85 extern smb_tran2Dispatch_t smb_tran2DispatchTable[SMB_TRAN2_NOPCODES];
86
87 extern long smb_ReceiveV3SessionSetupX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
88
89 extern long smb_ReceiveV3TreeConnectX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
90
91 extern long smb_ReceiveV3Tran2A(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
92
93 extern long smb_ReceiveTran2Open(smb_vc_t *vcp, smb_tran2Packet_t *p,
94         smb_packet_t *outp);
95
96 extern long smb_ReceiveTran2FindFirst(smb_vc_t *vcp, smb_tran2Packet_t *p,
97         smb_packet_t *outp);
98
99 extern long smb_ReceiveTran2SearchDir(smb_vc_t *vcp, smb_tran2Packet_t *p,
100         smb_packet_t *outp);
101
102 extern long smb_ReceiveTran2FindNext(smb_vc_t *vcp, smb_tran2Packet_t *p,
103         smb_packet_t *outp);
104
105 extern long smb_ReceiveTran2QFSInfo(smb_vc_t *vcp, smb_tran2Packet_t *p,
106         smb_packet_t *outp);
107
108 extern long smb_ReceiveTran2SetFSInfo(smb_vc_t *vcp, smb_tran2Packet_t *p,
109         smb_packet_t *outp);
110
111 extern long smb_ReceiveTran2QPathInfo(smb_vc_t *vcp, smb_tran2Packet_t *p,
112         smb_packet_t *outp);
113
114 extern long smb_ReceiveTran2SetPathInfo(smb_vc_t *vcp, smb_tran2Packet_t *p,
115         smb_packet_t *outp);
116
117 extern long smb_ReceiveTran2QFileInfo(smb_vc_t *vcp, smb_tran2Packet_t *p,
118         smb_packet_t *outp);
119
120 extern long smb_ReceiveTran2SetFileInfo(smb_vc_t *vcp, smb_tran2Packet_t *p,
121         smb_packet_t *outp);
122
123 extern long smb_ReceiveTran2FSCTL(smb_vc_t *vcp, smb_tran2Packet_t *p,
124         smb_packet_t *outp);
125
126 extern long smb_ReceiveTran2IOCTL(smb_vc_t *vcp, smb_tran2Packet_t *p,
127         smb_packet_t *outp);
128
129 extern long smb_ReceiveTran2FindNotifyFirst(smb_vc_t *vcp, smb_tran2Packet_t *p,
130         smb_packet_t *outp);
131
132 extern long smb_ReceiveTran2FindNotifyNext(smb_vc_t *vcp, smb_tran2Packet_t *p,
133         smb_packet_t *outp);
134
135 extern long smb_ReceiveTran2MKDir(smb_vc_t *vcp, smb_tran2Packet_t *p,
136         smb_packet_t *outp);
137
138 extern long smb_ReceiveV3FindClose(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
139
140 extern long smb_ReceiveV3FindNotifyClose(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
141
142 extern long smb_ReceiveV3UserLogoffX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
143
144 extern long smb_ReceiveV3OpenX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
145
146 extern long smb_ReceiveV3LockingX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
147
148 extern long smb_ReceiveV3GetAttributes(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
149
150 extern long smb_ReceiveV3ReadX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
151
152 extern long smb_ReceiveV3SetAttributes(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
153
154 extern long smb_ReceiveNTCreateX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
155
156 extern long smb_ReceiveNTTransact(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
157
158 extern void smb_NotifyChange(DWORD action, DWORD notifyFilter,
159         cm_scache_t *dscp, char *filename, char *otherFilename,
160         BOOL isDirectParent);
161
162 extern long smb_ReceiveNTCancel(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
163
164 extern int smb_V3MatchMask(char *namep, char *maskp, int flags);
165
166 extern void smb3_Init();
167
168 #endif /*  __SMB3_H_ENV__ */