xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 #include "XrdSfs/XrdSfsXioImpl.hh"
41 
42 #include "Xrd/XrdObject.hh"
43 #include "Xrd/XrdProtocol.hh"
47 #include "XProtocol/XProtocol.hh"
48 
49 /******************************************************************************/
50 /* D e f i n e s */
51 /******************************************************************************/
52 
53 #define ROOTD_PQ 2012
54 
55 #define XRD_LOGGEDIN 1
56 #define XRD_NEED_AUTH 2
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 XrdSfsFACtl;
79 class XrdSfsFileSystem;
80 class XrdSecProtocol;
81 class XrdBuffer;
82 class XrdLink;
83 class XrdTlsContext;
84 class XrdXrootdAioReq;
85 class XrdXrootdFile;
86 class XrdXrootdFileLock;
87 class XrdXrootdFileTable;
88 class XrdXrootdJob;
89 class XrdXrootdMonitor;
90 class XrdXrootdPio;
91 class XrdXrootdStats;
92 class XrdXrootdWVInfo;
93 class XrdXrootdXPath;
94 
95 class XrdXrootdProtocol : public XrdProtocol, public XrdSfsDio, public XrdSfsXio
96 {
97 friend class XrdXrootdAdmin;
98 friend class XrdXrootdAioReq;
99 public:
100 
101 static char *Buffer(XrdSfsXioHandle h, int *bsz); // XrdSfsXio
102 
103 XrdSfsXioHandle Claim(const char *buff, int datasz, int minasz=0);// XrdSfsXio
104 
105 static int Configure(char *parms, XrdProtocol_Config *pi);
106 
107  void DoIt() {(*this.*Resume)();}
108 
109  int do_WriteSpan();
110 
111  XrdProtocol *Match(XrdLink *lp);
112 
113  int Process(XrdLink *lp); // Sync: Job->Link.DoIt->Process
114 
115  int Process2();
116 
117  int ProcSig();
118 
119  void Recycle(XrdLink *lp, int consec, const char *reason);
120 
121 static void Reclaim(XrdSfsXioHandle h); // XrdSfsXio
122 
123  int SendFile(int fildes); // XrdSfsDio
124 
125  int SendFile(XrdOucSFVec *sfvec, int sfvnum); // XrdSfsDio
126 
127  void SetFD(int fildes); // XrdSfsDio
128 
129  int Stats(char *buff, int blen, int do_sync=0);
130 
131 XrdSfsXioHandle Swap(const char *buff, XrdSfsXioHandle h=0); // XrdSfsXio
132 
133  XrdXrootdProtocol operator =(const XrdXrootdProtocol &rhs) = delete;
136 
137 private:
138 
139 // Note that Route[] structure (below) must have RD_Num elements!
140 //
145 
146  int do_Auth();
147  int do_Bind();
148  int do_Chmod();
149  int do_CKsum(int canit);
150  int do_CKsum(char *algT, const char *Path, char *Opaque);
151  int do_Close();
152  int do_Dirlist();
153  int do_DirStat(XrdSfsDirectory *dp, char *pbuff, char *opaque);
154  int do_Endsess();
155  int do_FAttr();
156  int do_gpFile();
157  int do_Login();
158  int do_Locate();
159  int do_Mkdir();
160  int do_Mv();
161  int do_Offload(int pathID, bool isWrite, bool ispgio=false);
162  int do_OffloadIO();
163  int do_Open();
164  int do_PgRead();
165  int do_PgRIO();
166  int do_PgWrite();
167  int do_PgWIO();
168  int do_Ping();
169  int do_Prepare(bool isQuery=false);
170  int do_Protocol();
171  int do_Qconf();
172  int do_QconfCX(XrdOucTokenizer &qcargs, char *val);
173  int do_Qfh();
174  int do_Qopaque(short);
175  int do_Qspace();
176  int do_Query();
177  int do_Qxattr();
178  int do_Read();
179  int do_ReadV();
180  int do_ReadAll(int asyncOK=1);
181  int do_ReadNone(int &retc, int &pathID);
182  int do_Rm();
183  int do_Rmdir();
184  int do_Set();
185  int do_Set_Mon(XrdOucTokenizer &setargs);
186  int do_Stat();
187  int do_Statx();
188  int do_Sync();
189  int do_Truncate();
190  int do_Write();
191  int do_WriteAll();
192  int do_WriteCont();
193  int do_WriteNone();
194  int do_WriteV();
195  int do_WriteVec();
196 
197  int aio_Error(const char *op, int ecode);
198  int aio_Read();
199  int aio_Write();
200  int aio_WriteAll();
201  int aio_WriteCont();
202 
203  void Assign(const XrdXrootdProtocol &rhs);
204 static int CheckSum(XrdOucStream *, char **, int);
205  void Cleanup();
206 static int Config(const char *fn);
207 static int ConfigSecurity(XrdOucEnv &xEnv, const char *cfn);
208  int fsError(int rc, char opc, XrdOucErrInfo &myError,
209  const char *Path, char *Cgi);
210  int fsOvrld(char opc, const char *Path, char *Cgi);
211  int fsRedirNoEnt(const char *eMsg, char *Cgi, int popt);
212  int getBuff(const int isRead, int Quantum);
213  int getData(const char *dtype, char *buff, int blen);
214  int getPathID(bool isRead);
215  bool logLogin(bool xauth=false);
216 static int mapMode(int mode);
217  void Reset();
218 static int rpCheck(char *fn, char **opaque);
219  int rpEmsg(const char *op, char *fn);
220  int vpEmsg(const char *op, char *fn);
221 static int CheckTLS(const char *tlsProt);
222 static bool ConfigFS(XrdOucEnv &xEnv, const char *cfn);
223 static bool ConfigFS(const char *path, XrdOucEnv &xEnv, const char *cfn);
224 static void ConfigGStream(XrdOucEnv &myEnv, XrdOucEnv *urEnv);
225 static int Squash(char *);
226  int StatGen(struct stat &buf, char *xxBuff, int xxLen, bool xa=false);
227 static int xapath(XrdOucStream &Config);
228 static int xasync(XrdOucStream &Config);
229 static int xcksum(XrdOucStream &Config);
230 static int xdig(XrdOucStream &Config);
231 static int xexp(XrdOucStream &Config);
232 static int xexpdo(char *path, int popt=0);
233 static int xfsl(XrdOucStream &Config);
234 static int xfsL(XrdOucStream &Config, char *val, int lix);
235 static int xfso(XrdOucStream &Config);
236 static int xgpf(XrdOucStream &Config);
237 static int xprep(XrdOucStream &Config);
238 static int xlog(XrdOucStream &Config);
239 static int xmon(XrdOucStream &Config);
240 static int xred(XrdOucStream &Config);
241 static bool xred_php(char *val, char *hP[2], int rPort[2]);
242 static void xred_set(RD_func func, char *rHost[2], int rPort[2]);
243 static bool xred_xok(int func, char *rHost[2], int rPort[2]);
244 static int xsecl(XrdOucStream &Config);
245 static int xtls(XrdOucStream &Config);
246 static int xtlsr(XrdOucStream &Config);
247 static int xtrace(XrdOucStream &Config);
248 static int xlimit(XrdOucStream &Config);
249 
250  int ProcFAttr(char *faPath, char *faCgi, char *faArgs,
251  int faALen, int faCode, bool doAChk);
252  int XeqFADel(XrdSfsFACtl &ctl, char *faVars, int faVLen);
253  int XeqFAGet(XrdSfsFACtl &ctl, char *faVars, int faVLen);
254  int XeqFALsd(XrdSfsFACtl &ctl);
255  int XeqFALst(XrdSfsFACtl &ctl);
256  int XeqFASet(XrdSfsFACtl &ctl, char *faVars, int faVLen);
257 
260 
261 protected:
262 
263 static unsigned int getSID();
264 
265  void MonAuth();
266  int SetSF(kXR_char *fhandle, bool seton=false);
267 
268 static XrdXrootdXPath RPList; // Redirected paths
269 static XrdXrootdXPath RQList; // Redirected paths for ENOENT
270 static XrdXrootdXPath XPList; // Exported paths
271 static XrdSfsFileSystem *osFS; // The filesystem
272 static XrdSfsFileSystem *digFS; // The filesystem (digFS)
273 static XrdSecService *CIA; // Authentication Server
274 static XrdSecProtector *DHS; // Protection Server
275 static XrdTlsContext *tlsCtx; // Protection Server TLS available
276 static XrdXrootdFileLock *Locker; // File lock handler
277 static XrdScheduler *Sched; // System scheduler
278 static XrdBuffManager *BPool; // Buffer manager
279 static XrdSysError eDest; // Error message handler
280 static const char *myInst;
281 static const char *TraceID;
282 static int RQLxist; // Something is present in RQList
283 static int myPID;
284 static int myRole; // Role for kXR_protocol (>= 2.9.7)
285 static int myRolf; // Role for kXR_protocol (< 2.9.7)
286 
287 static gid_t myGID;
288 static uid_t myUID;
289 static int myGNLen;
290 static int myUNLen;
291 static const char *myGName;
292 static const char *myUName;
293 static time_t keepT;
294 
295 // Admin control area
296 //
298 
299 // Processing configuration values
300 //
301 static int hailWait;
302 static int readWait;
303 static int Port;
304 static int Window;
305 static int tlsPort;
306 static char *Notify;
307 static const char *myCName;
308 static int myCNlen;
309 static char isRedir;
310 static char JobLCL;
311 static char JobCKCGI;
313 static char *JobCKT;
316 static uint64_t fsFeatures;
317 
318 // Static redirection
319 //
320 static struct RD_Table {char *Host[2];
321  unsigned short Port[2];
322  short RDSz[2];} Route[RD_Num];
323 static int OD_Stall;
324 static bool OD_Bypass;
325 static bool OD_Redir;
326 
327 // Extended attributes
328 //
329 static int usxMaxNsz;
330 static int usxMaxVsz;
331 static char *usxParms;
332 
333 static const char Req_TLSData = 0x01;
334 static const char Req_TLSGPFile= 0x02;
335 static const char Req_TLSLogin = 0x04;
336 static const char Req_TLSSess = 0x08;
337 static const char Req_TLSTPC = 0x10;
338 
339 static char tlsCap; // TLS requirements for capable clients
340 static char tlsNot; // TLS requirements for incapable clients
341 
342 // async configuration values
343 //
344 static int as_maxperlnk; // Max async requests per link
345 static int as_maxperreq; // Max async ops per request
346 static int as_maxpersrv; // Max async ops per server
347 static int as_miniosz; // Min async request size
348 static int as_minsfsz; // Min sendf request size
349 static int as_segsize; // Aio quantum (optimal)
350 static int as_maxstalls; // Maximum stalls we will tolerate
351 static int as_force; // aio to be forced
352 static int as_noaio; // aio is disabled
353 static int as_nosf; // sendfile is disabled
354 static int as_syncw; // writes to be synchronous
355 static int maxBuffsz; // Maximum buffer size we can have
356 static int maxTransz; // Maximum transfer size we can have
357 static const int maxRvecsz = 1024; // Maximum read vector size
358 static const int maxWvecsz = 1024; // Maximum writ vector size
359 
360 // Statistical area
361 //
363 int numReads; // Count for kXR_read
364 int numReadP; // Count for kXR_read pre-preads
365 int numReadV; // Count for kkR_readv
366 int numSegsV; // Count for kkR_readv segmens
367 int numWritV; // Count for kkR_write
368 int numSegsW; // Count for kkR_writev segmens
369 int numWrites; // Count
370 int numFiles; // Count
371 
372 int cumReads; // Count less numReads
373 int cumReadP; // Count less numReadP
374 int cumReadV; // Count less numReadV
375 int cumSegsV; // Count less numSegsV
376 int cumWritV; // Count less numWritV
377 int cumSegsW; // Count less numSegsW
378 int cumWrites; // Count less numWrites
379 long long totReadP; // Bytes
380 
381 // Data local to each protocol/link combination
382 //
387 int clientPV; // Protocol version + capabilities
388 int clientRN; // Release as maj.min.patch (1 byte each).
390 short rdType;
391 char Status;
392 unsigned char CapVer;
393 
394 // Authentication area
395 //
400 char *AppName;
401 
402 ClientRequest sigReq2Ver; // Request to verify
403 SecurityRequest sigReq; // Signature request
404 char sigBuff[64]; // Signature payload SHA256 + blowfish
405 bool sigNeed; // Signature target present
406 bool sigHere; // Signature request present
407 bool sigRead; // Signature being read
408 bool sigWarn; // Once for unneeded signature
409 
410 // Buffer information, used to drive DoIt(), getData(), and (*Resume)()
411 //
413 char *myBuff;
414 int myBlen;
418 XrdXrootdWVInfo *wvInfo;
419 union {
420 long long myOffset;
421 long long myWVBytes;
422 int myEInfo[2];
423  };
426 
427 // Buffer resize control area
428 //
429 static int hcMax;
430  int hcPrev;
431  int hcNext;
432  int hcNow;
434 
435 // This area is used for parallel streams
436 //
437 static const int maxStreams = 16;
441 unsigned int mySID;
442 bool isActive;
443 bool isDead;
444 bool isBound;
445 bool isNOP;
446 
447 static const int maxPio = 4;
451 long long bytes2recv; // For write() to FS
452 long long bytes2send; // For read() from FS
453 
454 short PathID;
455 unsigned short myFlags;
456 bool doPgIO;
457 bool doWrite;
458 bool doWriteC;
459 unsigned char rvSeq;
460 unsigned char wvSeq;
461 
462 char doTLS; // TLS requuirements for client
463 bool ableTLS; // T->Client is able to use TLS
464 bool isTLS; // T->Client using TLS on control stream
465 
466 // Track usage limts.
467 //
468 static bool PrepareAlt; // Use alternate prepare handling
469 static bool LimitError; // Indicates that hitting a limit should result in an error response.
470  // If false, when possible, silently ignore errors.
472 static int PrepareLimit;
473 
474 // Buffers to handle client requests
475 //
479 };
480 #endif
int do_QconfCX(XrdOucTokenizer &qcargs, char *val)
static char JobLCL
Definition: XrdXrootdProtocol.hh:310
static int mapMode(int mode)
int cumSegsW
Definition: XrdXrootdProtocol.hh:377
static const char Req_TLSLogin
Definition: XrdXrootdProtocol.hh:335
unsigned char kXR_char
Definition: XPtypes.hh:65
static char tlsCap
Definition: XrdXrootdProtocol.hh:339
XrdXrootdResponse Response
Definition: XrdXrootdProtocol.hh:478
static int as_force
Definition: XrdXrootdProtocol.hh:351
int cumSegsV
Definition: XrdXrootdProtocol.hh:375
static int xfsl(XrdOucStream &Config)
XrdSysMutex streamMutex
Definition: XrdXrootdProtocol.hh:438
char * AppName
Definition: XrdXrootdProtocol.hh:400
static int as_miniosz
Definition: XrdXrootdProtocol.hh:347
long long totReadP
Definition: XrdXrootdProtocol.hh:379
int do_Qopaque(short)
static XrdOucTList * JobCKTLST
Definition: XrdXrootdProtocol.hh:314
XrdXrootdMonitor::User Monitor
Definition: XrdXrootdProtocol.hh:386
static int as_maxperlnk
Definition: XrdXrootdProtocol.hh:344
XrdSecProtect * Protect
Definition: XrdXrootdProtocol.hh:399
int hcNext
Definition: XrdXrootdProtocol.hh:431
static int as_maxperreq
Definition: XrdXrootdProtocol.hh:345
bool isActive
Definition: XrdXrootdProtocol.hh:442
Definition: XrdXrootdProtocol.hh:142
short rdType
Definition: XrdXrootdProtocol.hh:390
static int xfsL(XrdOucStream &Config, char *val, int lix)
bool sigNeed
Definition: XrdXrootdProtocol.hh:405
XrdBuffer * argp
Definition: XrdXrootdProtocol.hh:384
bool isDead
Definition: XrdXrootdProtocol.hh:443
int fsOvrld(char opc, const char *Path, char *Cgi)
static const int maxRvecsz
Definition: XrdXrootdProtocol.hh:357
XrdSfsXioHandle Swap(const char *buff, XrdSfsXioHandle h=0)
static int Quantum
Definition: XrdXrootdAio.hh:146
static XrdXrootdFileLock * Locker
Definition: XrdXrootdProtocol.hh:276
bool sigWarn
Definition: XrdXrootdProtocol.hh:408
static XrdXrootdXPath RQList
Definition: XrdXrootdProtocol.hh:269
static XrdBuffManager * BPool
Definition: XrdXrootdProtocol.hh:278
static const char Req_TLSSess
Definition: XrdXrootdProtocol.hh:336
char * myBuff
Definition: XrdXrootdProtocol.hh:413
int hcNow
Definition: XrdXrootdProtocol.hh:432
Definition: XrdXrootdProtocol.hh:144
int do_DirStat(XrdSfsDirectory *dp, char *pbuff, char *opaque)
int cumWrites
Definition: XrdXrootdProtocol.hh:378
static int hcMax
Definition: XrdXrootdProtocol.hh:429
Definition: XrdXrootdProtocol.hh:142
Definition: XrdXrootdProtocol.hh:141
static XrdSecProtector * DHS
Definition: XrdXrootdProtocol.hh:274
void Recycle(XrdLink *lp, int consec, const char *reason)
static bool OD_Redir
Definition: XrdXrootdProtocol.hh:325
Definition: XrdXrootdProtocol.hh:142
Definition: XrdXrootdProtocol.hh:320
XrdLink * Link
Definition: XrdXrootdProtocol.hh:383
ClientRequest Request
Definition: XrdXrootdProtocol.hh:477
Definition: XrdSecInterface.hh:551
int do_ReadAll(int asyncOK=1)
XrdXrootdWVInfo * wvInfo
Definition: XrdXrootdProtocol.hh:418
RD_func
Definition: XrdXrootdProtocol.hh:141
bool doPgIO
Definition: XrdXrootdProtocol.hh:456
bool doWriteC
Definition: XrdXrootdProtocol.hh:458
static char * Notify
Definition: XrdXrootdProtocol.hh:306
static int OD_Stall
Definition: XrdXrootdProtocol.hh:323
static int xtlsr(XrdOucStream &Config)
int clientPV
Definition: XrdXrootdProtocol.hh:387
int getBuff(const int isRead, int Quantum)
static int as_nosf
Definition: XrdXrootdProtocol.hh:353
XrdSfsXioHandle Claim(const char *buff, int datasz, int minasz=0)
static int xsecl(XrdOucStream &Config)
static XrdXrootdJob * JobCKS
Definition: XrdXrootdProtocol.hh:312
Definition: XrdOucSFVec.hh:43
Definition: XrdXrootdProtocol.hh:143
int Stats(char *buff, int blen, int do_sync=0)
bool isNOP
Definition: XrdXrootdProtocol.hh:445
int aio_Error(const char *op, int ecode)
Definition: XrdOucStream.hh:46
static int hailWait
Definition: XrdXrootdProtocol.hh:301
XrdXrootdPio * pioLast
Definition: XrdXrootdProtocol.hh:449
Definition: XrdSecInterface.hh:130
static char * JobCKT
Definition: XrdXrootdProtocol.hh:313
static int as_maxpersrv
Definition: XrdXrootdProtocol.hh:346
int myIOLen
Definition: XrdXrootdProtocol.hh:424
int SetSF(kXR_char *fhandle, bool seton=false)
static bool PrepareAlt
Definition: XrdXrootdProtocol.hh:468
static int xapath(XrdOucStream &Config)
short PathID
Definition: XrdXrootdProtocol.hh:454
int Process(XrdLink *lp)
static void Reclaim(XrdSfsXioHandle h)
unsigned char CapVer
Definition: XrdXrootdProtocol.hh:392
static int Squash(char *)
static uid_t myUID
Definition: XrdXrootdProtocol.hh:288
Definition: XrdProtocol.hh:124
int fsError(int rc, char opc, XrdOucErrInfo &myError, const char *Path, char *Cgi)
Definition: XrdNetSocket.hh:47
bool sigRead
Definition: XrdXrootdProtocol.hh:407
static int RQLxist
Definition: XrdXrootdProtocol.hh:282
int XeqFASet(XrdSfsFACtl &ctl, char *faVars, int faVLen)
int numReadV
Definition: XrdXrootdProtocol.hh:365
void Assign(const XrdXrootdProtocol &rhs)
static gid_t myGID
Definition: XrdXrootdProtocol.hh:287
static XrdSysError eDest
Definition: XrdXrootdProtocol.hh:279
int getData(const char *dtype, char *buff, int blen)
Definition: XrdXrootdProtocol.hh:95
static int maxBuffsz
Definition: XrdXrootdProtocol.hh:355
static int Port
Definition: XrdXrootdProtocol.hh:303
static int myPID
Definition: XrdXrootdProtocol.hh:283
int numFiles
Definition: XrdXrootdProtocol.hh:370
Definition: XrdSecProtect.hh:55
Definition: XrdOucReqID.hh:41
int clientRN
Definition: XrdXrootdProtocol.hh:388
~XrdXrootdProtocol()
Definition: XrdXrootdProtocol.hh:135
static XrdObjectQ< XrdXrootdProtocol > ProtStack
Definition: XrdXrootdProtocol.hh:258
Definition: XrdXrootdMonitor.hh:74
static int xtls(XrdOucStream &Config)
bool sigHere
Definition: XrdXrootdProtocol.hh:406
Definition: XrdXrootdPio.hh:38
static XrdNetSocket * AdminSock
Definition: XrdXrootdProtocol.hh:297
Definition: XrdBuffer.hh:71
Definition: XrdSfsFAttr.hh:72
static int xasync(XrdOucStream &Config)
static XrdSecService * CIA
Definition: XrdXrootdProtocol.hh:273
static bool xred_xok(int func, char *rHost[2], int rPort[2])
Definition: XrdOucTrace.hh:35
Definition: XrdSysError.hh:89
Definition: XrdXrootdProtocol.hh:141
unsigned char rvSeq
Definition: XrdXrootdProtocol.hh:459
int(XrdXrootdProtocol::* Resume)()
Definition: XrdXrootdProtocol.hh:416
int numWrites
Definition: XrdXrootdProtocol.hh:369
static int xlimit(XrdOucStream &Config)
int cumReadP
Definition: XrdXrootdProtocol.hh:373
int myBlast
Definition: XrdXrootdProtocol.hh:415
XrdSecProtocol * AuthProt
Definition: XrdXrootdProtocol.hh:397
Definition: XrdScheduler.hh:44
Definition: XrdSfsInterface.hh:238
long long myWVBytes
Definition: XrdXrootdProtocol.hh:421
static int myRole
Definition: XrdXrootdProtocol.hh:284
static int tlsPort
Definition: XrdXrootdProtocol.hh:305
Definition: XrdXrootdMonitor.hh:141
Definition: XrdXrootdFile.hh:97
Definition: XrdSysPthread.hh:165
SecurityRequest sigReq
Definition: XrdXrootdProtocol.hh:403
Definition: XrdXrootdProtocol.hh:143
bool ableTLS
Definition: XrdXrootdProtocol.hh:463
static int usxMaxVsz
Definition: XrdXrootdProtocol.hh:330
Definition: XrdXrootdFile.hh:147
Definition: XrdXrootdAdmin.hh:43
XrdXrootdReqID ReqID
Definition: XrdXrootdProtocol.hh:476
static int ConfigSecurity(XrdOucEnv &xEnv, const char *cfn)
int StatGen(struct stat &buf, char *xxBuff, int xxLen, bool xa=false)
static const char * TraceID
Definition: XrdXrootdProtocol.hh:281
int myEInfo[2]
Definition: XrdXrootdProtocol.hh:422
static int xprep(XrdOucStream &Config)
char sigBuff[64]
Definition: XrdXrootdProtocol.hh:404
int vpEmsg(const char *op, char *fn)
bool isTLS
Definition: XrdXrootdProtocol.hh:464
static bool LimitError
Definition: XrdXrootdProtocol.hh:469
Definition: XrdXrootdProtocol.hh:143
static int readWait
Definition: XrdXrootdProtocol.hh:302
static XrdXrootdXPath RPList
Definition: XrdXrootdProtocol.hh:268
static int as_segsize
Definition: XrdXrootdProtocol.hh:349
Definition: XrdXrootdAio.hh:98
bool isBound
Definition: XrdXrootdProtocol.hh:444
int numSegsV
Definition: XrdXrootdProtocol.hh:366
static bool OD_Bypass
Definition: XrdXrootdProtocol.hh:324
long long bytes2recv
Definition: XrdXrootdProtocol.hh:451
Definition: XrdOucErrInfo.hh:98
static char * Buffer(XrdSfsXioHandle h, int *bsz)
static int xdig(XrdOucStream &Config)
Definition: XrdSecProtector.hh:72
Definition: XProtocol.hh:822
Definition: XrdSysPthread.hh:403
int cumWritV
Definition: XrdXrootdProtocol.hh:376
int myBlen
Definition: XrdXrootdProtocol.hh:414
int numReadP
Definition: XrdXrootdProtocol.hh:364
Definition: XrdProtocol.hh:55
int numSegsW
Definition: XrdXrootdProtocol.hh:368
Definition: XrdOucEnv.hh:41
unsigned int mySID
Definition: XrdXrootdProtocol.hh:441
static int maxTransz
Definition: XrdXrootdProtocol.hh:356
static int xlog(XrdOucStream &Config)
static const char * myInst
Definition: XrdXrootdProtocol.hh:280
static int Config(const char *fn)
static int xexp(XrdOucStream &Config)
char doTLS
Definition: XrdXrootdProtocol.hh:462
static int as_minsfsz
Definition: XrdXrootdProtocol.hh:348
void SetFD(int fildes)
static unsigned int getSID()
static int xexpdo(char *path, int popt=0)
int cumReads
Definition: XrdXrootdProtocol.hh:372
int numReads
Definition: XrdXrootdProtocol.hh:363
XrdXrootdFileTable * FTab
Definition: XrdXrootdProtocol.hh:385
unsigned short Port[2]
Definition: XrdXrootdProtocol.hh:321
short RDSz[2]
Definition: XrdXrootdProtocol.hh:322
int ProcFAttr(char *faPath, char *faCgi, char *faArgs, int faALen, int faCode, bool doAChk)
static const int maxPio
Definition: XrdXrootdProtocol.hh:447
int XeqFALst(XrdSfsFACtl &ctl)
static int xred(XrdOucStream &Config)
Definition: XrdOucTList.hh:41
static XrdXrootdStats * SI
Definition: XrdXrootdProtocol.hh:362
static int CheckSum(XrdOucStream *, char **, int)
static int xfso(XrdOucStream &Config)
Definition: XrdXrootdProtocol.hh:144
static XrdSfsFileSystem * osFS
Definition: XrdXrootdProtocol.hh:271
unsigned short myFlags
Definition: XrdXrootdProtocol.hh:455
int do_ReadNone(int &retc, int &pathID)
static XrdSfsFileSystem * digFS
Definition: XrdXrootdProtocol.hh:272
Definition: XrdXrootdProtocol.hh:141
Definition: XrdXrootdReqID.hh:35
XrdSecEntity Entity
Definition: XrdXrootdProtocol.hh:398
static int myCNlen
Definition: XrdXrootdProtocol.hh:308
static int CheckTLS(const char *tlsProt)
static int as_maxstalls
Definition: XrdXrootdProtocol.hh:350
static int xgpf(XrdOucStream &Config)
static int myGNLen
Definition: XrdXrootdProtocol.hh:289
#define stat(a, b)
Definition: XrdPosix.hh:96
Definition: XrdXrootdProtocol.hh:142
static int as_noaio
Definition: XrdXrootdProtocol.hh:352
XrdSecEntity * Client
Definition: XrdXrootdProtocol.hh:396
Definition: XrdTlsContext.hh:36
static XrdXrootdXPath XPList
Definition: XrdXrootdProtocol.hh:270
static int PrepareLimit
Definition: XrdXrootdProtocol.hh:472
Definition: XrdXrootdResponse.hh:48
Definition: XrdXrootdProtocol.hh:142
static int Window
Definition: XrdXrootdProtocol.hh:304
int rpEmsg(const char *op, char *fn)
static int xmon(XrdOucStream &Config)
int PrepareCount
Definition: XrdXrootdProtocol.hh:471
int hcPrev
Definition: XrdXrootdProtocol.hh:430
int do_Offload(int pathID, bool isWrite, bool ispgio=false)
static int myRolf
Definition: XrdXrootdProtocol.hh:285
Definition: XrdXrootdStats.hh:39
XrdSysSemaphore * reTry
Definition: XrdXrootdProtocol.hh:439
int cumReadV
Definition: XrdXrootdProtocol.hh:374
Definition: XrdXrootdProtocol.hh:144
Definition: XrdXrootdXPath.hh:42
int getPathID(bool isRead)
static const char * myCName
Definition: XrdXrootdProtocol.hh:307
static struct XrdXrootdProtocol::RD_Table Route[RD_Num]
static int Configure(char *parms, XrdProtocol_Config *pi)
static int xtrace(XrdOucStream &Config)
static const char Req_TLSGPFile
Definition: XrdXrootdProtocol.hh:334
XrdXrootdProtocol * Stream[maxStreams]
Definition: XrdXrootdProtocol.hh:440
static int as_syncw
Definition: XrdXrootdProtocol.hh:354
static XrdTlsContext * tlsCtx
Definition: XrdXrootdProtocol.hh:275
char Status
Definition: XrdXrootdProtocol.hh:391
static int xcksum(XrdOucStream &Config)
XrdXrootdPio * pioFirst
Definition: XrdXrootdProtocol.hh:448
static char JobCKCGI
Definition: XrdXrootdProtocol.hh:311
int halfBSize
Definition: XrdXrootdProtocol.hh:433
int do_Prepare(bool isQuery=false)
static void ConfigGStream(XrdOucEnv &myEnv, XrdOucEnv *urEnv)
int numWritV
Definition: XrdXrootdProtocol.hh:367
static const char * myGName
Definition: XrdXrootdProtocol.hh:291
Definition: XrdOucTokenizer.hh:32
static bool xred_php(char *val, char *hP[2], int rPort[2])
static char * usxParms
Definition: XrdXrootdProtocol.hh:331
XrdObject< XrdXrootdProtocol > ProtLink
Definition: XrdXrootdProtocol.hh:259
XrdXrootdFile * myFile
Definition: XrdXrootdProtocol.hh:417
Definition: XrdSfsDio.hh:46
XrdXrootdPio * pioFree
Definition: XrdXrootdProtocol.hh:450
char * Host[2]
Definition: XrdXrootdProtocol.hh:320
bool logLogin(bool xauth=false)
Definition: XrdSecEntity.hh:63
Definition: XProtocol.hh:788
Definition: XrdXrootdProtocol.hh:144
static char isRedir
Definition: XrdXrootdProtocol.hh:309
static uint64_t fsFeatures
Definition: XrdXrootdProtocol.hh:316
Definition: XrdXrootdProtocol.hh:144
static XrdScheduler * Sched
Definition: XrdXrootdProtocol.hh:277
int myStalls
Definition: XrdXrootdProtocol.hh:425
XrdXrootdAioReq * myAioReq
Definition: XrdXrootdProtocol.hh:412
static bool ConfigFS(XrdOucEnv &xEnv, const char *cfn)
int XeqFAGet(XrdSfsFACtl &ctl, char *faVars, int faVLen)
static int rpCheck(char *fn, char **opaque)
long long myOffset
Definition: XrdXrootdProtocol.hh:420
void DoIt()
Definition: XrdXrootdProtocol.hh:107
static void xred_set(RD_func func, char *rHost[2], int rPort[2])
Definition: XrdXrootdJob.hh:51
static const int maxStreams
Definition: XrdXrootdProtocol.hh:437
int do_CKsum(int canit)
int fsRedirNoEnt(const char *eMsg, char *Cgi, int popt)
ClientRequest sigReq2Ver
Definition: XrdXrootdProtocol.hh:402
Definition: XrdXrootdFileLock.hh:32
static time_t keepT
Definition: XrdXrootdProtocol.hh:293
int XeqFALsd(XrdSfsFACtl &ctl)
static XrdOucReqID * PrepID
Definition: XrdXrootdProtocol.hh:315
static const char * myUName
Definition: XrdXrootdProtocol.hh:292
unsigned char wvSeq
Definition: XrdXrootdProtocol.hh:460
static const char Req_TLSTPC
Definition: XrdXrootdProtocol.hh:337
int SendFile(int fildes)
static const char Req_TLSData
Definition: XrdXrootdProtocol.hh:333
static char tlsNot
Definition: XrdXrootdProtocol.hh:340
int XeqFADel(XrdSfsFACtl &ctl, char *faVars, int faVLen)
int do_Set_Mon(XrdOucTokenizer &setargs)
XrdXrootdProtocol operator=(const XrdXrootdProtocol &rhs)=delete
int reserved
Definition: XrdXrootdProtocol.hh:389
class XrdBuffer * XrdSfsXioHandle
Definition: XrdSfsXio.hh:46
Definition: XrdXrootdProtocol.hh:141
long long bytes2send
Definition: XrdXrootdProtocol.hh:452
Definition: XrdXrootdProtocol.hh:141
Definition: XrdBuffer.hh:41
bool doWrite
Definition: XrdXrootdProtocol.hh:457
Definition: XrdSfsXio.hh:54
XrdProtocol * Match(XrdLink *lp)
static int usxMaxNsz
Definition: XrdXrootdProtocol.hh:329
static const int maxWvecsz
Definition: XrdXrootdProtocol.hh:358
static int myUNLen
Definition: XrdXrootdProtocol.hh:290