xrootd
XrdXrootdProtocol.hh
Go to the documentation of this file.
1 #ifndef __XROOTD_PROTOCOL_H__
2 #define __XROOTD_PROTOCOL_H__
3 /******************************************************************************/
4 /* */
5 /* X r d X r o o t d P r o t o c o l . h h */
6 /* */
7 /* (c) 2004 by the Board of Trustees of the Leland Stanford, Jr., University */
8 /* Produced by Andrew Hanushevsky for Stanford University under contract */
9 /* DE-AC02-76-SFO0515 with the Department of Energy */
10 /* */
11 /* This file is part of the XRootD software suite. */
12 /* */
13 /* XRootD is free software: you can redistribute it and/or modify it under */
14 /* the terms of the GNU Lesser General Public License as published by the */
15 /* Free Software Foundation, either version 3 of the License, or (at your */
16 /* option) any later version. */
17 /* */
18 /* XRootD is distributed in the hope that it will be useful, but WITHOUT */
19 /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
20 /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
21 /* License for more details. */
22 /* */
23 /* You should have received a copy of the GNU Lesser General Public License */
24 /* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
25 /* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
26 /* */
27 /* The copyright holder's institutional names and contributor's names may not */
28 /* be used to endorse or promote products derived from this software without */
29 /* specific prior written permission of the institution or contributor. */
30 /******************************************************************************/
31 
32 #include <stdlib.h>
33 #include <unistd.h>
34 #include <sys/types.h>
35 
36 #include "XrdSys/XrdSysError.hh"
37 #include "XrdSys/XrdSysPthread.hh"
39 #include "XrdSfs/XrdSfsDio.hh"
40 
41 #include "Xrd/XrdObject.hh"
42 #include "Xrd/XrdProtocol.hh"
46 #include "XProtocol/XProtocol.hh"
47 
48 /******************************************************************************/
49 /* D e f i n e s */
50 /******************************************************************************/
51 
52 #define ROOTD_PQ 2012
53 
54 #define XRD_LOGGEDIN 1
55 #define XRD_NEED_AUTH 2
56 #define XRD_ADMINUSER 4
57 #define XRD_BOUNDPATH 8
58 
59 #ifndef __GNUC__
60 #define __attribute__(x)
61 #endif
62 
63 /******************************************************************************/
64 /* x r d _ P r o t o c o l _ X R o o t d */
65 /******************************************************************************/
66 
67 class XrdNetSocket;
68 class XrdOucEnv;
69 class XrdOucErrInfo;
70 class XrdOucReqID;
71 class XrdOucStream;
72 class XrdOucTList;
73 class XrdOucTokenizer;
74 class XrdOucTrace;
75 class XrdSecProtect;
76 class XrdSecProtector;
77 class XrdSfsDirectory;
78 class XrdSfsFileSystem;
79 class XrdSecProtocol;
80 class XrdBuffer;
81 class XrdLink;
82 class XrdXrootdAioReq;
83 class XrdXrootdFile;
84 class XrdXrootdFileLock;
85 class XrdXrootdFileTable;
86 class XrdXrootdJob;
87 class XrdXrootdMonitor;
88 class XrdXrootdPio;
89 class XrdXrootdStats;
90 class XrdXrootdWVInfo;
91 class XrdXrootdXPath;
92 
93 class XrdXrootdProtocol : public XrdProtocol, public XrdSfsDio
94 {
95 friend class XrdXrootdAdmin;
96 friend class XrdXrootdAioReq;
97 public:
98 
99 static int Configure(char *parms, XrdProtocol_Config *pi);
100 
101  void DoIt() {(*this.*Resume)();}
102 
103  int do_WriteSpan();
104 
105  XrdProtocol *Match(XrdLink *lp);
106 
107  int Process(XrdLink *lp); // Sync: Job->Link.DoIt->Process
108 
109  int Process2();
110 
111  int ProcSig();
112 
113  void Recycle(XrdLink *lp, int consec, const char *reason);
114 
115  int SendFile(int fildes);
116 
117  int SendFile(XrdOucSFVec *sfvec, int sfvnum);
118 
119  void SetFD(int fildes);
120 
121  int Stats(char *buff, int blen, int do_sync=0);
122 
123 static int StatGen(struct stat &buf, char *xxBuff);
124 
125 // XrdXrootdProtocol operator =(const XrdXrootdProtocol &rhs) = delete;
129 
130 private:
131 
132 // Note that Route[] structure (below) must have RD_Num elements!
133 //
138 
139  int do_Admin();
140  int do_Auth();
141  int do_Bind();
142  int do_Chmod();
143  int do_CKsum(int canit);
144  int do_CKsum(char *algT, const char *Path, char *Opaque);
145  int do_Close();
146  int do_Dirlist();
147  int do_DirStat(XrdSfsDirectory *dp, char *pbuff, char *opaque);
148  int do_Endsess();
149  int do_Getfile();
150  int do_Login();
151  int do_Locate();
152  int do_Mkdir();
153  int do_Mv();
154  int do_Offload(int pathID, int isRead);
155  int do_OffloadIO();
156  int do_Open();
157  int do_Ping();
158  int do_Prepare(bool isQuery=false);
160  int do_Putfile();
161  int do_Qconf();
162  int do_Qfh();
163  int do_Qopaque(short);
164  int do_Qspace();
165  int do_Query();
166  int do_Qxattr();
167  int do_Read();
168  int do_ReadV();
169  int do_ReadAll(int asyncOK=1);
170  int do_ReadNone(int &retc, int &pathID);
171  int do_Rm();
172  int do_Rmdir();
173  int do_Set();
174  int do_Set_Mon(XrdOucTokenizer &setargs);
175  int do_Stat();
176  int do_Statx();
177  int do_Sync();
178  int do_Truncate();
179  int do_Write();
180  int do_WriteAll();
181  int do_WriteCont();
182  int do_WriteNone();
183  int do_WriteV();
184  int do_WriteVec();
185 
186  int aio_Error(const char *op, int ecode);
187  int aio_Read();
188  int aio_Write();
189  int aio_WriteAll();
190  int aio_WriteCont();
191 
192  void Assign(const XrdXrootdProtocol &rhs);
193 static int CheckSum(XrdOucStream *, char **, int);
194  void Cleanup();
195 static int Config(const char *fn);
196 static int ConfigSecurity(XrdOucEnv &xEnv, const char *cfn);
197  int fsError(int rc, char opc, XrdOucErrInfo &myError,
198  const char *Path, char *Cgi);
199  int fsOvrld(char opc, const char *Path, char *Cgi);
200  int fsRedirNoEnt(const char *eMsg, char *Cgi, int popt);
201  int getBuff(const int isRead, int Quantum);
202  int getData(const char *dtype, char *buff, int blen);
203  void logLogin(bool xauth=false);
204 static int mapMode(int mode);
205 static void PidFile();
206  void Reset();
207 static int rpCheck(char *fn, char **opaque);
208  int rpEmsg(const char *op, char *fn);
209  int vpEmsg(const char *op, char *fn);
210 static int Squash(char *);
211 static int xapath(XrdOucStream &Config);
212 static int xasync(XrdOucStream &Config);
213 static int xcksum(XrdOucStream &Config);
214 static int xdig(XrdOucStream &Config);
215 static int xexp(XrdOucStream &Config);
216 static int xexpdo(char *path, int popt=0);
217 static int xfsl(XrdOucStream &Config);
218 static int xfsL(XrdOucStream &Config, char *val, int lix);
219 static int xfso(XrdOucStream &Config);
220 static int xpidf(XrdOucStream &Config);
221 static int xprep(XrdOucStream &Config);
222 static int xlog(XrdOucStream &Config);
223 static int xmon(XrdOucStream &Config);
224 static int xred(XrdOucStream &Config);
225 static bool xred_php(char *val, char *hP[2], int rPort[2]);
226 static void xred_set(RD_func func, char *rHost[2], int rPort[2]);
227 static bool xred_xok(int func, char *rHost[2], int rPort[2]);
228 static int xsecl(XrdOucStream &Config);
229 static int xtrace(XrdOucStream &Config);
230 static int xlimit(XrdOucStream &Config);
231 
234 
235 protected:
236 
237  void MonAuth();
238  int SetSF(kXR_char *fhandle, bool seton=false);
239 
240 static XrdXrootdXPath RPList; // Redirected paths
241 static XrdXrootdXPath RQList; // Redirected paths for ENOENT
242 static XrdXrootdXPath XPList; // Exported paths
243 static XrdSfsFileSystem *osFS; // The filesystem
244 static XrdSfsFileSystem *digFS; // The filesystem (digFS)
245 static XrdSecService *CIA; // Authentication Server
246 static XrdSecProtector *DHS; // Protection Server
247 static XrdXrootdFileLock *Locker; // File lock handler
248 static XrdScheduler *Sched; // System scheduler
249 static XrdBuffManager *BPool; // Buffer manager
250 static XrdSysError eDest; // Error message handler
251 static const char *myInst;
252 static const char *TraceID;
253 static char *pidPath;
254 static int RQLxist; // Something is present in RQList
255 static int myPID;
256 static int myRole; // Role for kXR_protocol (>= 2.9.7)
257 static int myRolf; // Role for kXR_protocol (< 2.9.7)
258 
259 // Admin control area
260 //
262 
263 // Processing configuration values
264 //
265 static int hailWait;
266 static int readWait;
267 static int Port;
268 static int Window;
269 static int WANPort;
270 static int WANWindow;
271 static char *SecLib;
272 static char *FSLib[2];
273 static int FSLvn[2];
274 static char *digLib; // Normally zero for now
275 static char *digParm;
276 static char *Notify;
277 static const char *myCName;
278 static int myCNlen;
279 static char isRedir;
280 static char JobLCL;
281 static char JobCKCGI;
283 static char *JobCKT;
286 
287 // Static redirection
288 //
289 static struct RD_Table {char *Host[2];
290  unsigned short Port[2];
291  short RDSz[2];} Route[RD_Num];
292 static int OD_Stall;
293 static bool OD_Bypass;
294 static bool OD_Redir;
295 
296 // async configuration values
297 //
298 static int as_maxperlnk; // Max async requests per link
299 static int as_maxperreq; // Max async ops per request
300 static int as_maxpersrv; // Max async ops per server
301 static int as_miniosz; // Min async request size
302 static int as_minsfsz; // Min sendf request size
303 static int as_segsize; // Aio quantum (optimal)
304 static int as_maxstalls; // Maximum stalls we will tolerate
305 static int as_force; // aio to be forced
306 static int as_noaio; // aio is disabled
307 static int as_nosf; // sendfile is disabled
308 static int as_syncw; // writes to be synchronous
309 static int maxBuffsz; // Maximum buffer size we can have
310 static int maxTransz; // Maximum transfer size we can have
311 static const int maxRvecsz = 1024; // Maximum read vector size
312 static const int maxWvecsz = 1024; // Maximum writ vector size
313 
314 // Statistical area
315 //
317 int numReads; // Count for kXR_read
318 int numReadP; // Count for kXR_read pre-preads
319 int numReadV; // Count for kkR_readv
320 int numSegsV; // Count for kkR_readv segmens
321 int numWritV; // Count for kkR_write
322 int numSegsW; // Count for kkR_writev segmens
323 int numWrites; // Count
324 int numFiles; // Count
325 
326 int cumReads; // Count less numReads
327 int cumReadP; // Count less numReadP
328 int cumReadV; // Count less numReadV
329 int cumSegsV; // Count less numSegsV
330 int cumWritV; // Count less numWritV
331 int cumSegsW; // Count less numSegsW
332 int cumWrites; // Count less numWrites
333 long long totReadP; // Bytes
334 
335 // Data local to each protocol/link combination
336 //
343 int reserved; // In R5 clientPV will include clientRN
344 short rdType;
345 char Status;
346 unsigned char CapVer;
347 
348 // Authentication area
349 //
354 
355 ClientRequest sigReq2Ver; // Request to verify
356 SecurityRequest sigReq; // Signature request
357 char sigBuff[64]; // Signature payload SHA256 + blowfish
358 bool sigNeed; // Signature target present
359 bool sigHere; // Signature request present
360 bool sigRead; // Signature being read
361 bool sigWarn; // Once for unneeded signature
362 
363 // Buffer information, used to drive DoIt(), getData(), and (*Resume)()
364 //
366 char *myBuff;
367 int myBlen;
371 XrdXrootdWVInfo *wvInfo;
372 union {
373 long long myOffset;
374 long long myWVBytes;
375 int myEInfo[2];
376  };
379 
380 // Buffer resize control area
381 //
382 static int hcMax;
383  int hcPrev;
384  int hcNext;
385  int hcNow;
387 
388 // This area is used for parallel streams
389 //
390 static const int maxStreams = 16;
394 unsigned int mySID;
395 char isActive;
396 char isDead;
397 char isBound;
398 char isNOP;
399 
400 static const int maxPio = 4;
404 
405 short PathID;
406 char doWrite;
407 char doWriteC;
408 unsigned char rvSeq;
409 unsigned char wvSeq;
410 
411 // Track usage limts.
412 //
413 static bool PrepareAlt; // Use alternate prepare handling
414 static bool LimitError; // Indicates that hitting a limit should result in an error response.
415  // If false, when possible, silently ignore errors.
417 static int PrepareLimit;
418 
419 // Buffers to handle client requests
420 //
424 };
425 #endif
XrdXrootdProtocol::hcNext
int hcNext
Definition: XrdXrootdProtocol.hh:384
XrdXrootdJob
Definition: XrdXrootdJob.hh:51
XrdXrootdProtocol::RD_mv
Definition: XrdXrootdProtocol.hh:135
XrdXrootdProtocol::reserved
int reserved
Definition: XrdXrootdProtocol.hh:343
XrdSecInterface.hh
XrdXrootdProtocol::fsOvrld
int fsOvrld(char opc, const char *Path, char *Cgi)
XrdXrootdProtocol::Cleanup
void Cleanup()
XrdXrootdProtocol::argp
XrdBuffer * argp
Definition: XrdXrootdProtocol.hh:338
XrdXrootdProtocol::maxRvecsz
static const int maxRvecsz
Definition: XrdXrootdProtocol.hh:311
XrdXrootdProtocol::JobLCL
static char JobLCL
Definition: XrdXrootdProtocol.hh:280
XrdXrootdProtocol::hcNow
int hcNow
Definition: XrdXrootdProtocol.hh:385
XrdXrootdMonitor.hh
XrdXrootdProtocol::RD_open1
Definition: XrdXrootdProtocol.hh:137
XrdXrootdProtocol::cumWrites
int cumWrites
Definition: XrdXrootdProtocol.hh:332
XrdXrootdProtocol::cumSegsV
int cumSegsV
Definition: XrdXrootdProtocol.hh:329
XrdXrootdProtocol::ProcSig
int ProcSig()
XrdXrootdProtocol::DHS
static XrdSecProtector * DHS
Definition: XrdXrootdProtocol.hh:246
XrdXrootdProtocol::do_Qopaque
int do_Qopaque(short)
XrdXrootdProtocol::Link
XrdLink * Link
Definition: XrdXrootdProtocol.hh:337
XrdSysMutex
Definition: XrdSysPthread.hh:165
XrdXrootdProtocol::as_miniosz
static int as_miniosz
Definition: XrdXrootdProtocol.hh:301
XrdXrootdProtocol::Request
ClientRequest Request
Definition: XrdXrootdProtocol.hh:422
XrdXrootdProtocol::Protect
XrdSecProtect * Protect
Definition: XrdXrootdProtocol.hh:353
XrdXrootdProtocol::Monitor
XrdXrootdMonitor::User Monitor
Definition: XrdXrootdProtocol.hh:340
XrdXrootdProtocol::as_maxperreq
static int as_maxperreq
Definition: XrdXrootdProtocol.hh:299
XrdXrootdProtocol::RD_func
RD_func
Definition: XrdXrootdProtocol.hh:134
XrdXrootdProtocol::rdType
short rdType
Definition: XrdXrootdProtocol.hh:344
XrdXrootdProtocol::xfsL
static int xfsL(XrdOucStream &Config, char *val, int lix)
XrdXrootdProtocol::OD_Stall
static int OD_Stall
Definition: XrdXrootdProtocol.hh:292
XrdSysPthread.hh
XrdSfsFileSystem
Definition: XrdSfsInterface.hh:209
XrdXrootdProtocol::sigNeed
bool sigNeed
Definition: XrdXrootdProtocol.hh:358
XrdXrootdMonitor
Definition: XrdXrootdMonitor.hh:71
XrdXrootdProtocol::xsecl
static int xsecl(XrdOucStream &Config)
XrdXrootdProtocol::Locker
static XrdXrootdFileLock * Locker
Definition: XrdXrootdProtocol.hh:247
XrdXrootdProtocol::JobCKS
static XrdXrootdJob * JobCKS
Definition: XrdXrootdProtocol.hh:282
XrdXrootdProtocol::RQList
static XrdXrootdXPath RQList
Definition: XrdXrootdProtocol.hh:241
XrdXrootdProtocol::Stats
int Stats(char *buff, int blen, int do_sync=0)
ServerResponseBody_Protocol
Definition: XProtocol.hh:760
XrdXrootdProtocol::BPool
static XrdBuffManager * BPool
Definition: XrdXrootdProtocol.hh:249
XrdXrootdProtocol::myBuff
char * myBuff
Definition: XrdXrootdProtocol.hh:366
XrdXrootdProtocol::sigWarn
bool sigWarn
Definition: XrdXrootdProtocol.hh:361
XrdXrootdProtocol::hailWait
static int hailWait
Definition: XrdXrootdProtocol.hh:265
XrdObject.hh
XrdXrootdProtocol::do_DirStat
int do_DirStat(XrdSfsDirectory *dp, char *pbuff, char *opaque)
XrdXrootdProtocol::pioLast
XrdXrootdPio * pioLast
Definition: XrdXrootdProtocol.hh:402
XrdXrootdProtocol::hcMax
static int hcMax
Definition: XrdXrootdProtocol.hh:382
XrdObject< XrdXrootdProtocol >
XrdXrootdProtocol::JobCKT
static char * JobCKT
Definition: XrdXrootdProtocol.hh:283
XrdXrootdProtocol::RD_prepare
Definition: XrdXrootdProtocol.hh:135
XrdXrootdProtocol::do_Stat
int do_Stat()
XrdXrootdProtocol::xpidf
static int xpidf(XrdOucStream &Config)
XrdXrootdProtocol::PrepareAlt
static bool PrepareAlt
Definition: XrdXrootdProtocol.hh:413
XrdXrootdProtocol::OD_Redir
static bool OD_Redir
Definition: XrdXrootdProtocol.hh:294
XrdXrootdProtocol::do_Rmdir
int do_Rmdir()
XrdXrootdProtocol::isDead
char isDead
Definition: XrdXrootdProtocol.hh:396
XrdXrootdProtocol::Recycle
void Recycle(XrdLink *lp, int consec, const char *reason)
XrdBuffManager
Definition: XrdBuffer.hh:74
XrdXrootdProtocol::isBound
char isBound
Definition: XrdXrootdProtocol.hh:397
XrdXrootdProtocol::do_ReadAll
int do_ReadAll(int asyncOK=1)
XrdXrootdProtocol::PathID
short PathID
Definition: XrdXrootdProtocol.hh:405
XrdXrootdProtocol::wvInfo
XrdXrootdWVInfo * wvInfo
Definition: XrdXrootdProtocol.hh:371
XrdXrootdProtocol::Process
int Process(XrdLink *lp)
XrdXrootdXPath
Definition: XrdXrootdXPath.hh:42
XrdXrootdProtocol::Resume
int(XrdXrootdProtocol::* Resume)()
Definition: XrdXrootdProtocol.hh:369
XrdXrootdProtocol::RD_locate
Definition: XrdXrootdProtocol.hh:134
XrdXrootdProtocol::Notify
static char * Notify
Definition: XrdXrootdProtocol.hh:276
kXR_char
unsigned char kXR_char
Definition: XPtypes.hh:65
XrdXrootdProtocol::CapVer
unsigned char CapVer
Definition: XrdXrootdProtocol.hh:346
XrdXrootdProtocol::WANWindow
static int WANWindow
Definition: XrdXrootdProtocol.hh:270
XrdXrootdProtocol::do_Close
int do_Close()
XrdXrootdProtocol::getBuff
int getBuff(const int isRead, int Quantum)
XrdSecService
Definition: XrdSecInterface.hh:535
XrdXrootdProtocol::RD_ovld
Definition: XrdXrootdProtocol.hh:136
XrdXrootdProtocol::RD_prepstg
Definition: XrdXrootdProtocol.hh:135
XrdXrootdProtocol::clientPV
int clientPV
Definition: XrdXrootdProtocol.hh:341
XrdXrootdProtocol::Squash
static int Squash(char *)
XrdXrootdReqID
Definition: XrdXrootdReqID.hh:35
XrdProtocol_Config
Definition: XrdProtocol.hh:54
XrdXrootdProtocol::as_nosf
static int as_nosf
Definition: XrdXrootdProtocol.hh:307
XrdXrootdResponse
Definition: XrdXrootdResponse.hh:48
XrdXrootdProtocol::sigRead
bool sigRead
Definition: XrdXrootdProtocol.hh:360
XrdXrootdProtocol::Assign
void Assign(const XrdXrootdProtocol &rhs)
XrdXrootdProtocol::isNOP
char isNOP
Definition: XrdXrootdProtocol.hh:398
XrdXrootdProtocol::aio_Error
int aio_Error(const char *op, int ecode)
XrdXrootdProtocol::getData
int getData(const char *dtype, char *buff, int blen)
XrdXrootdProtocol::eDest
static XrdSysError eDest
Definition: XrdXrootdProtocol.hh:250
XrdXrootdProtocol::Port
static int Port
Definition: XrdXrootdProtocol.hh:267
XrdXrootdProtocol::MonAuth
void MonAuth()
XrdXrootdProtocol::maxBuffsz
static int maxBuffsz
Definition: XrdXrootdProtocol.hh:309
XrdXrootdProtocol::do_Locate
int do_Locate()
XrdXrootdProtocol::as_maxpersrv
static int as_maxpersrv
Definition: XrdXrootdProtocol.hh:300
XrdXrootdProtocol::myIOLen
int myIOLen
Definition: XrdXrootdProtocol.hh:377
XrdXrootdProtocol::clientRN
int clientRN
Definition: XrdXrootdProtocol.hh:342
XrdXrootdProtocol::ProtStack
static XrdObjectQ< XrdXrootdProtocol > ProtStack
Definition: XrdXrootdProtocol.hh:232
XrdXrootdProtocol::SetSF
int SetSF(kXR_char *fhandle, bool seton=false)
XrdXrootdProtocol::sigHere
bool sigHere
Definition: XrdXrootdProtocol.hh:359
XrdXrootdProtocol::AdminSock
static XrdNetSocket * AdminSock
Definition: XrdXrootdProtocol.hh:261
XrdXrootdProtocol::logLogin
void logLogin(bool xauth=false)
XrdXrootdProtocol::do_Offload
int do_Offload(int pathID, int isRead)
XrdXrootdStats
Definition: XrdXrootdStats.hh:39
XrdXrootdProtocol::xapath
static int xapath(XrdOucStream &Config)
XrdXrootdProtocol::xasync
static int xasync(XrdOucStream &Config)
XrdXrootdProtocol::xred_xok
static bool xred_xok(int func, char *rHost[2], int rPort[2])
XProtocol.hh
XrdXrootdProtocol::rvSeq
unsigned char rvSeq
Definition: XrdXrootdProtocol.hh:408
XrdXrootdPio
Definition: XrdXrootdPio.hh:38
XrdOucStream
Definition: XrdOucStream.hh:45
XrdXrootdProtocol::numWrites
int numWrites
Definition: XrdXrootdProtocol.hh:323
XrdXrootdProtocol::xlimit
static int xlimit(XrdOucStream &Config)
XrdXrootdProtocol::cumReadP
int cumReadP
Definition: XrdXrootdProtocol.hh:327
XrdXrootdProtocol::fsError
int fsError(int rc, char opc, XrdOucErrInfo &myError, const char *Path, char *Cgi)
XrdXrootdProtocol::RQLxist
static int RQLxist
Definition: XrdXrootdProtocol.hh:254
XrdXrootdProtocol::myBlast
int myBlast
Definition: XrdXrootdProtocol.hh:368
XrdXrootdAioReq::Quantum
static int Quantum
Definition: XrdXrootdAio.hh:146
XrdXrootdReqID.hh
XrdXrootdProtocol::RD_mkdir
Definition: XrdXrootdProtocol.hh:134
XrdXrootdProtocol::numReadV
int numReadV
Definition: XrdXrootdProtocol.hh:319
XrdXrootdProtocol::do_Endsess
int do_Endsess()
XrdXrootdProtocol::digParm
static char * digParm
Definition: XrdXrootdProtocol.hh:275
XrdXrootdProtocol::~XrdXrootdProtocol
~XrdXrootdProtocol()
Definition: XrdXrootdProtocol.hh:128
XrdXrootdProtocol::myPID
static int myPID
Definition: XrdXrootdProtocol.hh:255
XrdXrootdProtocol::numFiles
int numFiles
Definition: XrdXrootdProtocol.hh:324
XrdProtocol.hh
XrdXrootdProtocol::StatGen
static int StatGen(struct stat &buf, char *xxBuff)
XrdXrootdProtocol::ConfigSecurity
static int ConfigSecurity(XrdOucEnv &xEnv, const char *cfn)
XrdXrootdProtocol::myEInfo
int myEInfo[2]
Definition: XrdXrootdProtocol.hh:375
XrdXrootdProtocol::xprep
static int xprep(XrdOucStream &Config)
XrdXrootdFileTable
Definition: XrdXrootdFile.hh:148
XrdXrootdProtocol::TraceID
static const char * TraceID
Definition: XrdXrootdProtocol.hh:252
XrdXrootdProtocol::CIA
static XrdSecService * CIA
Definition: XrdXrootdProtocol.hh:245
XrdXrootdProtocol::sigBuff
char sigBuff[64]
Definition: XrdXrootdProtocol.hh:357
XrdXrootdProtocol::do_WriteCont
int do_WriteCont()
XrdXrootdProtocol::do_Truncate
int do_Truncate()
XrdXrootdProtocol::do_Write
int do_Write()
XrdXrootdProtocol::LimitError
static bool LimitError
Definition: XrdXrootdProtocol.hh:414
XrdXrootdProtocol::aio_Read
int aio_Read()
XrdXrootdProtocol::RPList
static XrdXrootdXPath RPList
Definition: XrdXrootdProtocol.hh:240
XrdXrootdProtocol::RD_open3
Definition: XrdXrootdProtocol.hh:137
XrdXrootdProtocol::do_Mv
int do_Mv()
XrdXrootdProtocol::AuthProt
XrdSecProtocol * AuthProt
Definition: XrdXrootdProtocol.hh:351
XrdXrootdProtocol::numSegsV
int numSegsV
Definition: XrdXrootdProtocol.hh:320
XrdXrootdProtocol::do_Qfh
int do_Qfh()
XrdXrootdProtocol::myRole
static int myRole
Definition: XrdXrootdProtocol.hh:256
XrdSfsDirectory
Definition: XrdSfsInterface.hh:994
XrdXrootdProtocol::myWVBytes
long long myWVBytes
Definition: XrdXrootdProtocol.hh:374
XrdXrootdProtocol::OD_Bypass
static bool OD_Bypass
Definition: XrdXrootdProtocol.hh:293
XrdXrootdProtocol::XrdXrootdProtocol
XrdXrootdProtocol()
XrdXrootdProtocol::sigReq
SecurityRequest sigReq
Definition: XrdXrootdProtocol.hh:356
XrdXrootdProtocol::aio_WriteAll
int aio_WriteAll()
XrdSysSemaphore
Definition: XrdSysPthread.hh:403
XrdObjectQ< XrdXrootdProtocol >
XrdXrootdProtocol::numReadP
int numReadP
Definition: XrdXrootdProtocol.hh:318
XrdXrootdProtocol::ReqID
XrdXrootdReqID ReqID
Definition: XrdXrootdProtocol.hh:421
XrdXrootdProtocol::do_Bind
int do_Bind()
XrdOucEnv
Definition: XrdOucEnv.hh:41
XrdXrootdProtocol::do_Auth
int do_Auth()
XrdXrootdProtocol::myInst
static const char * myInst
Definition: XrdXrootdProtocol.hh:251
XrdXrootdProtocol::xlog
static int xlog(XrdOucStream &Config)
ClientRequest
Definition: XProtocol.hh:623
XrdXrootdProtocol::vpEmsg
int vpEmsg(const char *op, char *fn)
XrdXrootdProtocol::do_Dirlist
int do_Dirlist()
XrdXrootdProtocol::RD_Table::Host
char * Host[2]
Definition: XrdXrootdProtocol.hh:289
XrdXrootdProtocol::do_Read
int do_Read()
XrdXrootdProtocol::do_Sync
int do_Sync()
XrdXrootdProtocol::readWait
static int readWait
Definition: XrdXrootdProtocol.hh:266
XrdXrootdProtocol::do_WriteAll
int do_WriteAll()
XrdXrootdProtocol::WANPort
static int WANPort
Definition: XrdXrootdProtocol.hh:269
XrdXrootdProtocol::FTab
XrdXrootdFileTable * FTab
Definition: XrdXrootdProtocol.hh:339
XrdXrootdProtocol::xexpdo
static int xexpdo(char *path, int popt=0)
XrdXrootdAioReq
Definition: XrdXrootdAio.hh:98
XrdXrootdProtocol::as_segsize
static int as_segsize
Definition: XrdXrootdProtocol.hh:303
XrdScheduler
Definition: XrdScheduler.hh:44
SecurityRequest
Definition: XProtocol.hh:657
XrdXrootdProtocol::maxPio
static const int maxPio
Definition: XrdXrootdProtocol.hh:400
XrdXrootdProtocol::xdig
static int xdig(XrdOucStream &Config)
XrdXrootdProtocol::cumWritV
int cumWritV
Definition: XrdXrootdProtocol.hh:330
XrdXrootdProtocol::do_Qspace
int do_Qspace()
XrdXrootdProtocol::myBlen
int myBlen
Definition: XrdXrootdProtocol.hh:367
XrdXrootdProtocol::do_Set
int do_Set()
XrdXrootdFileLock
Definition: XrdXrootdFileLock.hh:32
XrdXrootdProtocol::SI
static XrdXrootdStats * SI
Definition: XrdXrootdProtocol.hh:316
XrdXrootdProtocol::numSegsW
int numSegsW
Definition: XrdXrootdProtocol.hh:322
XrdXrootdProtocol::RD_rm
Definition: XrdXrootdProtocol.hh:135
XrdXrootdProtocol::do_Chmod
int do_Chmod()
XrdXrootdProtocol::maxTransz
static int maxTransz
Definition: XrdXrootdProtocol.hh:310
XrdXrootdProtocol::do_Putfile
int do_Putfile()
XrdXrootdProtocol::mySID
unsigned int mySID
Definition: XrdXrootdProtocol.hh:394
XrdXrootdProtocol::CheckSum
static int CheckSum(XrdOucStream *, char **, int)
XrdXrootdProtocol::RD_trunc
Definition: XrdXrootdProtocol.hh:136
XrdXrootdProtocol::do_ReadNone
int do_ReadNone(int &retc, int &pathID)
XrdXrootdProtocol::osFS
static XrdSfsFileSystem * osFS
Definition: XrdXrootdProtocol.hh:243
XrdXrootdProtocol::Config
static int Config(const char *fn)
XrdXrootdProtocol::xexp
static int xexp(XrdOucStream &Config)
XrdXrootdProtocol::digFS
static XrdSfsFileSystem * digFS
Definition: XrdXrootdProtocol.hh:244
XrdXrootdProtocol::do_Qxattr
int do_Qxattr()
XrdXrootdProtocol::RD_stat
Definition: XrdXrootdProtocol.hh:136
XrdXrootdProtocol::SetFD
void SetFD(int fildes)
XrdXrootdProtocol::as_minsfsz
static int as_minsfsz
Definition: XrdXrootdProtocol.hh:302
XrdSecProtect
Definition: XrdSecProtect.hh:55
XrdOucReqID
Definition: XrdOucReqID.hh:41
XrdXrootdProtocol::doWrite
char doWrite
Definition: XrdXrootdProtocol.hh:406
XrdNetSocket
Definition: XrdNetSocket.hh:47
XrdXrootdProtocol::as_maxstalls
static int as_maxstalls
Definition: XrdXrootdProtocol.hh:304
XrdXrootdProtocol::numReads
int numReads
Definition: XrdXrootdProtocol.hh:317
XrdXrootdProtocol::cumReads
int cumReads
Definition: XrdXrootdProtocol.hh:326
XrdXrootdResponse.hh
XrdXrootdProtocol::as_noaio
static int as_noaio
Definition: XrdXrootdProtocol.hh:306
XrdXrootdProtocol::operator=
XrdXrootdProtocol & operator=(const XrdXrootdProtocol &rhs)
XrdXrootdProtocol::do_Query
int do_Query()
XrdXrootdProtocol::do_Ping
int do_Ping()
XrdXrootdProtocol::PrepareLimit
static int PrepareLimit
Definition: XrdXrootdProtocol.hh:417
XrdXrootdProtocol::SecLib
static char * SecLib
Definition: XrdXrootdProtocol.hh:271
XrdSecProtector
Definition: XrdSecProtector.hh:72
XrdXrootdProtocol::do_WriteVec
int do_WriteVec()
XrdXrootdProtocol::xred
static int xred(XrdOucStream &Config)
XrdXrootdProtocol::do_Rm
int do_Rm()
XrdXrootdProtocol::XPList
static XrdXrootdXPath XPList
Definition: XrdXrootdProtocol.hh:242
XrdSecProtocol
Definition: XrdSecInterface.hh:130
XrdXrootdProtocol::do_OffloadIO
int do_OffloadIO()
XrdXrootdProtocol::do_Login
int do_Login()
XrdXrootdProtocol::reTry
XrdSysSemaphore * reTry
Definition: XrdXrootdProtocol.hh:392
XrdXrootdProtocol::xfso
static int xfso(XrdOucStream &Config)
XrdXrootdProtocol::cumReadV
int cumReadV
Definition: XrdXrootdProtocol.hh:328
XrdXrootdFile
Definition: XrdXrootdFile.hh:97
XrdXrootdProtocol::myCName
static const char * myCName
Definition: XrdXrootdProtocol.hh:277
XrdXrootdProtocol::Configure
static int Configure(char *parms, XrdProtocol_Config *pi)
XrdXrootdProtocol::Entity
XrdSecEntity Entity
Definition: XrdXrootdProtocol.hh:352
XrdXrootdProtocol::Route
static struct XrdXrootdProtocol::RD_Table Route[RD_Num]
XrdXrootdProtocol::aio_Write
int aio_Write()
XrdXrootdProtocol::xtrace
static int xtrace(XrdOucStream &Config)
XrdXrootdProtocol::do_Statx
int do_Statx()
XrdXrootdProtocol::myCNlen
static int myCNlen
Definition: XrdXrootdProtocol.hh:278
XrdXrootdProtocol::digLib
static char * digLib
Definition: XrdXrootdProtocol.hh:274
XrdXrootdProtocol::xcksum
static int xcksum(XrdOucStream &Config)
XrdXrootdProtocol::pioFirst
XrdXrootdPio * pioFirst
Definition: XrdXrootdProtocol.hh:401
XrdXrootdProtocol::JobCKCGI
static char JobCKCGI
Definition: XrdXrootdProtocol.hh:281
XrdXrootdProtocol::RD_rmdir
Definition: XrdXrootdProtocol.hh:135
XrdXrootdProtocol::do_Admin
int do_Admin()
XrdXrootdProtocol::do_Prepare
int do_Prepare(bool isQuery=false)
XrdXrootdProtocol::do_WriteSpan
int do_WriteSpan()
XrdXrootdProtocol::Client
XrdSecEntity * Client
Definition: XrdXrootdProtocol.hh:350
XrdXrootdProtocol::RD_Table::RDSz
short RDSz[2]
Definition: XrdXrootdProtocol.hh:291
XrdXrootdProtocol::isActive
char isActive
Definition: XrdXrootdProtocol.hh:395
XrdXrootdProtocol::FSLib
static char * FSLib[2]
Definition: XrdXrootdProtocol.hh:272
XrdXrootdProtocol::myFile
XrdXrootdFile * myFile
Definition: XrdXrootdProtocol.hh:370
XrdXrootdProtocol::Window
static int Window
Definition: XrdXrootdProtocol.hh:268
XrdProtocol
Definition: XrdProtocol.hh:116
XrdXrootdProtocol::rpEmsg
int rpEmsg(const char *op, char *fn)
XrdXrootdProtocol::xmon
static int xmon(XrdOucStream &Config)
XrdXrootdProtocol::PrepareCount
int PrepareCount
Definition: XrdXrootdProtocol.hh:416
XrdXrootdProtocol::hcPrev
int hcPrev
Definition: XrdXrootdProtocol.hh:383
XrdSfsDio
Definition: XrdSfsDio.hh:46
XrdXrootdProtocol::myRolf
static int myRolf
Definition: XrdXrootdProtocol.hh:257
XrdXrootdProtocol::do_Mkdir
int do_Mkdir()
XrdSecEntity
Definition: XrdSecEntity.hh:51
XrdXrootdProtocol::PidFile
static void PidFile()
XrdXrootdProtocol::Sched
static XrdScheduler * Sched
Definition: XrdXrootdProtocol.hh:248
XrdOucErrInfo
Definition: XrdOucErrInfo.hh:99
XrdBuffer
Definition: XrdBuffer.hh:41
XrdXrootdProtocol::do_WriteV
int do_WriteV()
XrdXrootdProtocol
Definition: XrdXrootdProtocol.hh:93
XrdXrootdProtocol::Stream
XrdXrootdProtocol * Stream[maxStreams]
Definition: XrdXrootdProtocol.hh:393
XrdXrootdProtocol::RD_Num
Definition: XrdXrootdProtocol.hh:137
stat
#define stat(a, b)
Definition: XrdPosix.hh:96
XrdXrootdProtocol::as_syncw
static int as_syncw
Definition: XrdXrootdProtocol.hh:308
XrdXrootdProtocol::xred_set
static void xred_set(RD_func func, char *rHost[2], int rPort[2])
XrdXrootdProtocol::do_CKsum
int do_CKsum(int canit)
XrdOucSFVec
Definition: XrdOucSFVec.hh:43
XrdXrootdProtocol::Status
char Status
Definition: XrdXrootdProtocol.hh:345
XrdXrootdProtocol::fsRedirNoEnt
int fsRedirNoEnt(const char *eMsg, char *Cgi, int popt)
XrdXrootdProtocol::Process2
int Process2()
XrdXrootdProtocol::RD_dirlist
Definition: XrdXrootdProtocol.hh:134
XrdOucTrace
Definition: XrdOucTrace.hh:35
XrdXrootdProtocol::halfBSize
int halfBSize
Definition: XrdXrootdProtocol.hh:386
XrdOucTokenizer
Definition: XrdOucTokenizer.hh:32
XrdXrootdProtocol::numWritV
int numWritV
Definition: XrdXrootdProtocol.hh:321
XrdXrootdProtocol::PrepID
static XrdOucReqID * PrepID
Definition: XrdXrootdProtocol.hh:285
XrdXrootdProtocol::xred_php
static bool xred_php(char *val, char *hP[2], int rPort[2])
XrdSysError
Definition: XrdSysError.hh:89
XrdXrootdProtocol::do_WriteNone
int do_WriteNone()
XrdSfsDio.hh
XrdXrootdProtocol::ProtLink
XrdObject< XrdXrootdProtocol > ProtLink
Definition: XrdXrootdProtocol.hh:233
XrdXrootdProtocol::RD_chmod
Definition: XrdXrootdProtocol.hh:134
XrdXrootdProtocol::do_ReadV
int do_ReadV()
XrdXrootdProtocol::Reset
void Reset()
XrdXrootdProtocol::aio_WriteCont
int aio_WriteCont()
XrdXrootdProtocol::pioFree
XrdXrootdPio * pioFree
Definition: XrdXrootdProtocol.hh:403
XrdXrootdProtocol::do_Set_Mon
int do_Set_Mon(XrdOucTokenizer &setargs)
XrdXrootdProtocol::isRedir
static char isRedir
Definition: XrdXrootdProtocol.hh:279
XrdXrootdProtocol::myAioReq
XrdXrootdAioReq * myAioReq
Definition: XrdXrootdProtocol.hh:365
XrdXrootdProtocol::do_Getfile
int do_Getfile()
XrdXrootdProtocol::Match
XrdProtocol * Match(XrdLink *lp)
XrdXrootdProtocol::rpCheck
static int rpCheck(char *fn, char **opaque)
XrdXrootdProtocol::myStalls
int myStalls
Definition: XrdXrootdProtocol.hh:378
XrdXrootdProtocol::DoIt
void DoIt()
Definition: XrdXrootdProtocol.hh:101
XrdXrootdMonitor::User
Definition: XrdXrootdMonitor.hh:131
XrdXrootdProtocol::maxWvecsz
static const int maxWvecsz
Definition: XrdXrootdProtocol.hh:312
XrdXrootdProtocol::myOffset
long long myOffset
Definition: XrdXrootdProtocol.hh:373
XrdXrootdProtocol::maxStreams
static const int maxStreams
Definition: XrdXrootdProtocol.hh:390
XrdXrootdProtocol::FSLvn
static int FSLvn[2]
Definition: XrdXrootdProtocol.hh:273
XrdXrootdProtocol::sigReq2Ver
ClientRequest sigReq2Ver
Definition: XrdXrootdProtocol.hh:355
XrdOucTList
Definition: XrdOucTList.hh:41
XrdXrootdProtocol::RD_open4
Definition: XrdXrootdProtocol.hh:137
XrdXrootdProtocol::RD_chksum
Definition: XrdXrootdProtocol.hh:134
XrdXrootdProtocol::mapMode
static int mapMode(int mode)
XrdXrootdProtocol::cumSegsW
int cumSegsW
Definition: XrdXrootdProtocol.hh:331
XrdXrootdProtocol::RD_Table
Definition: XrdXrootdProtocol.hh:289
XrdXrootdProtocol::Response
XrdXrootdResponse Response
Definition: XrdXrootdProtocol.hh:423
XrdXrootdProtocol::xfsl
static int xfsl(XrdOucStream &Config)
XrdXrootdProtocol::pidPath
static char * pidPath
Definition: XrdXrootdProtocol.hh:253
XrdXrootdProtocol::as_force
static int as_force
Definition: XrdXrootdProtocol.hh:305
XrdXrootdProtocol::do_Qconf
int do_Qconf()
XrdXrootdProtocol::RD_Table::Port
unsigned short Port[2]
Definition: XrdXrootdProtocol.hh:290
XrdXrootdProtocol::streamMutex
XrdSysMutex streamMutex
Definition: XrdXrootdProtocol.hh:391
XrdXrootdProtocol::SendFile
int SendFile(int fildes)
XrdXrootdProtocol::JobCKTLST
static XrdOucTList * JobCKTLST
Definition: XrdXrootdProtocol.hh:284
XrdXrootdProtocol::wvSeq
unsigned char wvSeq
Definition: XrdXrootdProtocol.hh:409
XrdXrootdProtocol::totReadP
long long totReadP
Definition: XrdXrootdProtocol.hh:333
XrdXrootdAdmin
Definition: XrdXrootdAdmin.hh:43
XrdSysError.hh
XrdXrootdProtocol::do_Open
int do_Open()
XrdXrootdProtocol::as_maxperlnk
static int as_maxperlnk
Definition: XrdXrootdProtocol.hh:298
XrdXrootdProtocol::RD_open2
Definition: XrdXrootdProtocol.hh:137
XrdXrootdProtocol::doWriteC
char doWriteC
Definition: XrdXrootdProtocol.hh:407
XrdXrootdProtocol::do_Protocol
int do_Protocol(ServerResponseBody_Protocol *rsp=0)