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 <cstdlib>
33#include <unistd.h>
34#include <sys/types.h>
35
36#include "XrdNet/XrdNetPMark.hh"
37#include "XrdSys/XrdSysError.hh"
41#include "XrdSfs/XrdSfsDio.hh"
43
44#include "Xrd/XrdObject.hh"
45#include "Xrd/XrdProtocol.hh"
50
51/******************************************************************************/
52/* D e f i n e s */
53/******************************************************************************/
54
55#define ROOTD_PQ 2012
56
57#define XRD_LOGGEDIN 1
58#define XRD_NEED_AUTH 2
59#define XRD_BOUNDPATH 8
60
61#ifndef __GNUC__
62#define __attribute__(x)
63#endif
64
65/******************************************************************************/
66/* x r d _ P r o t o c o l _ X R o o t d */
67/******************************************************************************/
68
69class XrdNetSocket;
70class XrdOucEnv;
71class XrdOucErrInfo;
72class XrdOucReqID;
73class XrdOucStream;
74class XrdOucTList;
75class XrdOucTokenizer;
76class XrdSecProtect;
77class XrdSecProtector;
78class XrdSfsDirectory;
79class XrdSfsFACtl;
81class XrdSecProtocol;
82class XrdBuffer;
83class XrdLink;
84class XrdTlsContext;
85class XrdXrootdFile;
88class XrdXrootdJob;
90class XrdXrootdPgwCtl;
91class XrdXrootdPio;
92class XrdXrootdStats;
93class XrdXrootdWVInfo;
94class XrdXrootdXPath;
95
96/******************************************************************************/
97/* N a m e s p a c e X r d X r o o t d */
98/******************************************************************************/
99
100namespace XrdXrootd
101{
102/******************************************************************************/
103/* g d C a l l B a c k */
104/******************************************************************************/
105
106class gdCallBack // Used for new style getData() with callback
107{
108public:
109
110// Called when getData with a buffer successfully completed with a suspension.
111// A direct return is made if there was no suspension. Return values and action:
112// >1 If getData with a buffer was called while in the callback, the operation
113// is performed with a subsequent callback. Otherwise, a fatal error results.
114// =0 Variable discard holds the number of bytes to be discarded from the
115// from the socket (default 0). Return is made to link-level.
116// <0 Considered a fatal link error.
117//
118virtual int gdDone() = 0;
119
120// Called when a fatal link error occurs during reading.
121//
122virtual void gdFail() {} // Called when a link failure occurs
123
125virtual ~gdCallBack() {}
126};
127
128/******************************************************************************/
129/* I O P a r m s */
130/******************************************************************************/
131
133{
135union {
136long long Offset;
137long long WVBytes;
138int EInfo[2];
139 };
141unsigned short Flags;
143char Mode;
144static const int useBasic = 0;
145static const int useMMap = 1;
146static const int useSF = 2;
147};
148}
149
150/******************************************************************************/
151/* C l a s s X r d X r o o t d P r o t o c o l */
152/******************************************************************************/
153
155 public XrdSfsDio, public XrdSfsXio
156{
157friend class XrdXrootdAdmin;
158public:
159
160 void aioUpdate(int val) {srvrAioOps += val;}
161
162 void aioUpdReq(int val) {linkAioReq += val;}
163
164static char *Buffer(XrdSfsXioHandle h, int *bsz); // XrdSfsXio
165
166XrdSfsXioHandle Claim(const char *buff, int datasz, int minasz=0) override;// XrdSfsXio
167
168static int Configure(char *parms, XrdProtocol_Config *pi);
169
170 void DoIt() override {(*this.*Resume)();}
171
173
174 int getData(gdCallBack *gdcbP, const char *dtype,
175 char *buff, int blen);
176
177 int getData(gdCallBack *gdcbP, const char *dtype,
178 struct iovec *iov, int iovn);
179
180 int getDump(const char *dtype, int dlen);
181
182 int getPathID() {return PathID;}
183
184 XrdProtocol *Match(XrdLink *lp) override;
185
186 int Process(XrdLink *lp) override; // Sync: Job->Link.DoIt->Process
187
188 int Process2();
189
190 int ProcSig();
191
192 void Recycle(XrdLink *lp, int consec, const char *reason) override;
193
194static void Reclaim(XrdSfsXioHandle h); // XrdSfsXio
195
196 int SendFile(int fildes) override; // XrdSfsDio
197
198 int SendFile(XrdOucSFVec *sfvec, int sfvnum) override; // XrdSfsDio
199
200 void SetFD(int fildes) override; // XrdSfsDio
201
202 int Stats(char *buff, int blen, int do_sync=0) override;
203
204 void StreamNOP();
205
206XrdSfsXioHandle Swap(const char *buff, XrdSfsXioHandle h=0) override; // XrdSfsXio
207
208XrdXrootdProtocol *VerifyStream(int &rc, int pID, bool lok=true);
209
213
214static const int maxStreams = 16;
215
216// async configuration values (referenced outside this class)
217//
218static int as_maxperlnk; // Max async requests per link
219static int as_maxperreq; // Max async ops per request
220static int as_maxpersrv; // Max async ops per server
221static int as_miniosz; // Min async request size
222static int as_minsfsz; // Min sendf request size
223static int as_seghalf;
224static int as_segsize; // Aio quantum (optimal)
225static int as_maxstalls; // Maximum stalls we will tolerate
226static short as_okstutter; // Allowable stutters per transfer unit
227static short as_timeout; // request timeout (usually < stream timeout)
228static bool as_force; // aio to be forced
229static bool as_aioOK; // aio is enabled
230static bool as_nosf; // sendfile is disabled
231static bool as_syncw; // writes to be synchronous
232
233private:
234
235// Note that Route[] structure (below) must have RD_Num elements!
236//
241
242 int do_Auth();
243 int do_Bind();
246 int do_Chmod();
247 int do_CKsum(int canit);
248 int do_CKsum(char *algT, const char *Path, char *Opaque);
249 int do_Close();
251 int do_DirStat(XrdSfsDirectory *dp, char *pbuff, char *opaque);
253 int do_FAttr();
255 int do_Login();
257 int do_Mkdir();
258 int do_Mv();
259 int do_Offload(int (XrdXrootdProtocol::*Invoke)(), int pathID);
261 int do_Open();
262 bool do_PgClose(XrdXrootdFile *fP, int &rc);
264 int do_PgRIO();
266 bool do_PgWAIO(int &rc);
267 int do_PgWIO();
268 int do_PgWIO(bool isFresh);
269 bool do_PgWIORetry(int &rc);
271 int do_Ping();
272 int do_Prepare(bool isQuery=false);
274 int do_Qconf();
275 int do_QconfCX(XrdOucTokenizer &qcargs, char *val);
276 int do_Qfh();
277 int do_Qopaque(short);
279 int do_Query();
281 int do_Read();
282 int do_ReadV();
284 int do_ReadNone(int &retc, int &pathID);
285 int do_Rm();
286 int do_Rmdir();
287 int do_Set();
289 int do_Stat();
290 int do_Statx();
291 int do_Sync();
293 int do_Write();
299 const char *emsg=0);
303
304 int gdDone() override {return do_PgWIO(false);}
305
306 void Assign(const XrdXrootdProtocol &rhs);
307static int CheckSum(XrdOucStream *, char **, int);
308 void Cleanup();
309static int Config(const char *fn);
310static bool ConfigMon(XrdProtocol_Config *pi, XrdOucEnv &xrootdEnv);
311static int ConfigSecurity(XrdOucEnv &xEnv, const char *cfn);
312 int fsError(int rc, char opc, XrdOucErrInfo &myError,
313 const char *Path, char *Cgi);
314 int fsOvrld(char opc, const char *Path, char *Cgi);
315 int fsRedirNoEnt(const char *eMsg, char *Cgi, int popt);
316 int getBuff(const int isRead, int Quantum);
317 char *getCksType(char *opaque, char *cspec=0, int cslen=0);
318 int getData(const char *dtype, char *buff, int blen);
322 bool logLogin(bool xauth=false);
323static int mapMode(int mode);
324 void Reset();
325static int rpCheck(char *fn, char **opaque);
326 int rpEmsg(const char *op, char *fn);
327 int vpEmsg(const char *op, char *fn);
328static int CheckTLS(const char *tlsProt);
329static bool ConfigFS(XrdOucEnv &xEnv, const char *cfn);
330static bool ConfigFS(const char *path, XrdOucEnv &xEnv, const char *cfn);
331static bool ConfigGStream(XrdOucEnv &myEnv, XrdOucEnv *urEnv);
332static int Squash(char *);
333 int StatGen(struct stat &buf, char *xxBuff, int xxLen, bool xa=false);
340static int xexpdo(char *path, int popt=0);
342static int xfsL(XrdOucStream &Config, char *val, int lix);
348static char *xmondest(const char *what, char *val);
350static bool xmongsend(XrdOucStream &Config, char *val, char *&dest,
351 int &opt, int &fmt, int &hdr);
353static int xred_clnt(XrdOucStream &Config, char *hP[2], int rPort[2]);
354static bool xred_php(char *val, char *hP[2], int rPort[2], const char *what,
355 bool optport=false);
356static void xred_set(RD_func func, char *rHost[2], int rPort[2]);
357static bool xred_xok(int func, char *rHost[2], int rPort[2]);
363
364 int ProcFAttr(char *faPath, char *faCgi, char *faArgs,
365 int faALen, int faCode, bool doAChk);
366 int XeqFADel(XrdSfsFACtl &ctl, char *faVars, int faVLen);
367 int XeqFAGet(XrdSfsFACtl &ctl, char *faVars, int faVLen);
370 int XeqFASet(XrdSfsFACtl &ctl, char *faVars, int faVLen);
371
374
375protected:
376
377static unsigned int getSID();
378
379 void MonAuth();
380 int SetSF(kXR_char *fhandle, bool seton=false);
381
382static XrdXrootdXPath RPList; // Redirected paths
383static XrdXrootdXPath RQList; // Redirected paths for ENOENT
384static XrdXrootdXPath XPList; // Exported paths
385static XrdSfsFileSystem *osFS; // The filesystem
386static XrdSfsFileSystem *digFS; // The filesystem (digFS)
387static XrdSecService *CIA; // Authentication Server
388static XrdSecProtector *DHS; // Protection Server
389static XrdTlsContext *tlsCtx; // Protection Server TLS available
390static XrdXrootdFileLock *Locker; // File lock handler
391static XrdScheduler *Sched; // System scheduler
392static XrdBuffManager *BPool; // Buffer manager
393static XrdSysError &eDest; // Error message handler
394static XrdNetPMark *PMark; // Packet marking API
395static const char *myInst;
396static const char *TraceID;
397static int RQLxist; // Something is present in RQList
398static int myPID;
399static int myRole; // Role for kXR_protocol (>= 2.9.7)
400static int myRolf; // Role for kXR_protocol (< 2.9.7)
401
402static gid_t myGID;
403static uid_t myUID;
404static int myGNLen;
405static int myUNLen;
406static const char *myGName;
407static const char *myUName;
408static time_t keepT;
409
410// Admin control area
411//
413
414// Processing configuration values
415//
416static int hailWait;
417static int readWait;
418static int Port;
419static int Window;
420static int tlsPort;
421static char *Notify;
422static const char *myCName;
423static int myCNlen;
424static char isRedir;
425static char JobLCL;
426static char JobCKCGI;
428static char *JobCKT;
431static uint64_t fsFeatures;
432
433// Static redirection
434//
435static struct RD_Table {char *Host[2];
436 unsigned short Port[2];
437 short RDSz[2];} Route[RD_Num];
438
439static struct RC_Table {char *Domain[4];
440 short DomCnt;
441 bool pvtIP;
443
444static int OD_Stall;
445static bool OD_Bypass;
446static bool OD_Redir;
447
448static bool CL_Redir;
449
450static bool isProxy;
451
452// Extended attributes
453//
454static int usxMaxNsz;
455static int usxMaxVsz;
456static char *usxParms;
457
458// TLS configuration
459//
460static const char Req_TLSData = 0x01;
461static const char Req_TLSGPFile= 0x02;
462static const char Req_TLSLogin = 0x04;
463static const char Req_TLSSess = 0x08;
464static const char Req_TLSTPC = 0x10;
465
466static char tlsCap; // TLS requirements for capable clients
467static char tlsNot; // TLS requirements for incapable clients
468
469// Buffer configuration
470//
471static int maxBuffsz; // Maximum buffer size we can have
472static int maxTransz; // Maximum transfer size we can have
473
474// Statistical area
475//
477int numReads; // Count for kXR_read
478int numReadP; // Count for kXR_read pre-preads
479int numReadV; // Count for kkR_readv
480int numSegsV; // Count for kkR_readv segmens
481int numWritV; // Count for kkR_write
482int numSegsW; // Count for kkR_writev segmens
483int numWrites; // Count
484int numFiles; // Count
485
486int cumReads; // Count less numReads
487int cumReadP; // Count less numReadP
488int cumReadV; // Count less numReadV
489int cumSegsV; // Count less numSegsV
490int cumWritV; // Count less numWritV
491int cumSegsW; // Count less numSegsW
492int cumWrites; // Count less numWrites
493int myStalls; // Number of stalls
494long long totReadP; // Bytes
495
496// Data local to each protocol/link combination
497//
503int clientPV; // Protocol version + capabilities
504int clientRN; // Release as maj.min.patch (1 byte each).
505bool pmDone; // Packet marking has been enabled
506char reserved[3];
507short rdType;
509unsigned char CapVer;
510
511// Authentication area
512//
518
519// Request signing area
520//
521ClientRequest sigReq2Ver; // Request to verify
522SecurityRequest sigReq; // Signature request
523char sigBuff[64]; // Signature payload SHA256 + blowfish
524bool sigNeed; // Signature target present
525bool sigHere; // Signature request present
526bool sigRead; // Signature being read
527bool sigWarn; // Once for unneeded signature
528
529// Async I/O area, these need to be atomic
530//
531RAtomic_int linkAioReq; // Aio requests inflight for link
532static RAtomic_int srvrAioOps; // Aio operations inflight for server
533
534// Buffer information, used to drive getData(), and (*Resume)()
535//
537char *myBuff;
540
542{
545union {int iovAdj;
548 };
549bool useCB;
551unsigned char stalls;
553union {struct iovec *iovVec;
554 char *Buffer;
555 };
556const char *ioDType;
558
559static const int inNone = 0;
560static const int inCallBk = 1;
561static const int inData = 2;
562static const int inDataIov = 3;
563static const int inDump = 4;
564
565static const int Active = 1; // linkWait: thread is waiting for link
566static const int Terminate = 3; // linkWait: thread should immediately exit
567
569
571int (XrdXrootdProtocol::*ResumePio)(); //Used by Offload
574
575// Buffer resize control area
576//
577static int hcMax;
580 int hcNow;
582
583// This area is used for parallel streams
584//
585XrdSysMutex unbindMutex; // If locked always before streamMutex
590unsigned int mySID;
593bool isNOP;
595
596static const int maxPio = 4;
600
601short PathID; // Path for this protocol object
602bool newPio; // True when initially scheduled
603unsigned char rvSeq;
604unsigned char wvSeq;
605
606char doTLS; // TLS requirements for client
607bool ableTLS; // T->Client is able to use TLS
608bool isTLS; // T->Client using TLS on control stream
609
610// Track usage limts.
611//
612static bool PrepareAlt; // Use alternate prepare handling
613static bool LimitError; // Indicates that hitting a limit should result in an error response.
614 // If false, when possible, silently ignore errors.
616static int PrepareLimit;
617
618// Buffers to handle client requests
619//
623};
624#endif
XErrorCode
Definition: XProtocol.hh:987
@ kXR_noErrorYet
Definition: XProtocol.hh:1024
unsigned char kXR_char
Definition: XPtypes.hh:65
#define stat(a, b)
Definition: XrdPosix.hh:96
class XrdBuffer * XrdSfsXioHandle
Definition: XrdSfsXio.hh:46
Definition: XrdBuffer.hh:72
Definition: XrdBuffer.hh:42
Definition: XrdNetPMark.hh:41
Definition: XrdNetPMark.hh:37
Definition: XrdNetSocket.hh:48
Definition: XrdOucEnv.hh:42
Definition: XrdOucErrInfo.hh:101
Definition: XrdOucReqID.hh:42
Definition: XrdOucStream.hh:47
Definition: XrdOucTList.hh:42
Definition: XrdOucTokenizer.hh:33
Definition: XrdProtocol.hh:56
Definition: XrdProtocol.hh:125
Definition: XrdScheduler.hh:46
Definition: XrdSecEntity.hh:64
Definition: XrdSecProtect.hh:56
Definition: XrdSecProtector.hh:73
Definition: XrdSecInterface.hh:131
Definition: XrdSecInterface.hh:554
Definition: XrdSfsDio.hh:47
Definition: XrdSfsInterface.hh:239
Definition: XrdSfsInterface.hh:841
Definition: XrdSfsXio.hh:55
Definition: XrdSysPthread.hh:300
Definition: XrdSysError.hh:90
Definition: XrdSysPthread.hh:165
Definition: XrdSysPthread.hh:494
Definition: XrdTlsContext.hh:37
Definition: XrdXrootdAdmin.hh:44
Definition: XrdXrootdFileLock.hh:33
Definition: XrdXrootdFile.hh:162
Definition: XrdXrootdFile.hh:101
Definition: XrdXrootdJob.hh:52
Definition: XrdXrootdMonitor.hh:171
Definition: XrdXrootdMonitor.hh:77
Definition: XrdXrootdPgwCtl.hh:42
Definition: XrdXrootdPio.hh:40
Definition: XrdXrootdProtocol.hh:156
int SendFile(int fildes) override
XrdSecEntity Entity
Definition: XrdXrootdProtocol.hh:515
int cumWrites
Definition: XrdXrootdProtocol.hh:492
int do_PgWIO(bool isFresh)
static XrdNetSocket * AdminSock
Definition: XrdXrootdProtocol.hh:412
static bool OD_Redir
Definition: XrdXrootdProtocol.hh:446
XrdXrootdProtocol * VerifyStream(int &rc, int pID, bool lok=true)
bool isActive
Definition: XrdXrootdProtocol.hh:591
int SetSF(kXR_char *fhandle, bool seton=false)
XrdSecProtect * Protect
Definition: XrdXrootdProtocol.hh:516
int ProcFAttr(char *faPath, char *faCgi, char *faArgs, int faALen, int faCode, bool doAChk)
static int xexp(XrdOucStream &Config)
static XrdBuffManager * BPool
Definition: XrdXrootdProtocol.hh:392
static int xprep(XrdOucStream &Config)
int getData(gdCallBack *gdcbP, const char *dtype, struct iovec *iov, int iovn)
bool isLinkWT
Definition: XrdXrootdProtocol.hh:592
static XrdSfsFileSystem * osFS
Definition: XrdXrootdProtocol.hh:385
XrdNetPMark::Handle * pmHandle
Definition: XrdXrootdProtocol.hh:502
int getBuff(const int isRead, int Quantum)
int getData(const char *dtype, char *buff, int blen)
int numFiles
Definition: XrdXrootdProtocol.hh:484
int fsRedirNoEnt(const char *eMsg, char *Cgi, int popt)
static int xlimit(XrdOucStream &Config)
XrdSysMutex unbindMutex
Definition: XrdXrootdProtocol.hh:585
static XrdNetPMark * PMark
Definition: XrdXrootdProtocol.hh:394
int do_CKsum(int canit)
bool do_PgWAIO(int &rc)
XrdXrootdProtocol * Stream[maxStreams]
Definition: XrdXrootdProtocol.hh:589
XrdXrootd::IOParms IO
Definition: XrdXrootdProtocol.hh:573
char * AppName
Definition: XrdXrootdProtocol.hh:517
static int as_maxpersrv
Definition: XrdXrootdProtocol.hh:220
static short as_okstutter
Definition: XrdXrootdProtocol.hh:226
static XrdXrootdXPath RPList
Definition: XrdXrootdProtocol.hh:382
static int usxMaxNsz
Definition: XrdXrootdProtocol.hh:454
int numReadP
Definition: XrdXrootdProtocol.hh:478
int myBlast
Definition: XrdXrootdProtocol.hh:539
unsigned char rvSeq
Definition: XrdXrootdProtocol.hh:603
XrdSecEntity * Client
Definition: XrdXrootdProtocol.hh:513
static int as_miniosz
Definition: XrdXrootdProtocol.hh:221
static const char Req_TLSGPFile
Definition: XrdXrootdProtocol.hh:461
XrdProtocol * Match(XrdLink *lp) override
static int Port
Definition: XrdXrootdProtocol.hh:418
bool ableTLS
Definition: XrdXrootdProtocol.hh:607
static XrdSecProtector * DHS
Definition: XrdXrootdProtocol.hh:388
int XeqFAGet(XrdSfsFACtl &ctl, char *faVars, int faVLen)
static bool as_aioOK
Definition: XrdXrootdProtocol.hh:229
static bool ConfigFS(XrdOucEnv &xEnv, const char *cfn)
static int xbif(XrdOucStream &Config)
static int xapath(XrdOucStream &Config)
bool pmDone
Definition: XrdXrootdProtocol.hh:505
static int RQLxist
Definition: XrdXrootdProtocol.hh:397
static char * Notify
Definition: XrdXrootdProtocol.hh:421
int XeqFADel(XrdSfsFACtl &ctl, char *faVars, int faVLen)
int do_Offload(int(XrdXrootdProtocol::*Invoke)(), int pathID)
ClientRequest Request
Definition: XrdXrootdProtocol.hh:621
static int mapMode(int mode)
struct XrdXrootdProtocol::GetDataCtl gdCtl
static bool ConfigMon(XrdProtocol_Config *pi, XrdOucEnv &xrootdEnv)
ClientRequest sigReq2Ver
Definition: XrdXrootdProtocol.hh:521
long long totReadP
Definition: XrdXrootdProtocol.hh:494
static uid_t myUID
Definition: XrdXrootdProtocol.hh:403
void aioUpdate(int val)
Definition: XrdXrootdProtocol.hh:160
static XrdOucReqID * PrepID
Definition: XrdXrootdProtocol.hh:430
static bool OD_Bypass
Definition: XrdXrootdProtocol.hh:445
char * myBuff
Definition: XrdXrootdProtocol.hh:537
int do_QconfCX(XrdOucTokenizer &qcargs, char *val)
static int hcMax
Definition: XrdXrootdProtocol.hh:577
static int xsecl(XrdOucStream &Config)
void SetFD(int fildes) override
int XeqFALst(XrdSfsFACtl &ctl)
static const char Req_TLSSess
Definition: XrdXrootdProtocol.hh:463
XrdXrootdWVInfo * wvInfo
Definition: XrdXrootdProtocol.hh:570
int cumReads
Definition: XrdXrootdProtocol.hh:486
static int xfsL(XrdOucStream &Config, char *val, int lix)
XrdXrootdPgwCtl * pgwCtl
Definition: XrdXrootdProtocol.hh:536
static bool CL_Redir
Definition: XrdXrootdProtocol.hh:448
XrdSysSemaphore * reTry
Definition: XrdXrootdProtocol.hh:587
XrdXrootdFileTable * FTab
Definition: XrdXrootdProtocol.hh:500
static int readWait
Definition: XrdXrootdProtocol.hh:417
static int rpCheck(char *fn, char **opaque)
int numWritV
Definition: XrdXrootdProtocol.hh:481
static void xred_set(RD_func func, char *rHost[2], int rPort[2])
void aioUpdReq(int val)
Definition: XrdXrootdProtocol.hh:162
static gid_t myGID
Definition: XrdXrootdProtocol.hh:402
static const char * myGName
Definition: XrdXrootdProtocol.hh:406
static XrdSfsFileSystem * digFS
Definition: XrdXrootdProtocol.hh:386
static XrdSecService * CIA
Definition: XrdXrootdProtocol.hh:387
static int xexpdo(char *path, int popt=0)
bool newPio
Definition: XrdXrootdProtocol.hh:602
static int as_maxperreq
Definition: XrdXrootdProtocol.hh:219
XrdSecProtocol * AuthProt
Definition: XrdXrootdProtocol.hh:514
static int myRole
Definition: XrdXrootdProtocol.hh:399
static int myGNLen
Definition: XrdXrootdProtocol.hh:404
static int CheckTLS(const char *tlsProt)
int getData(gdCallBack *gdcbP, const char *dtype, char *buff, int blen)
XrdSfsXioHandle Claim(const char *buff, int datasz, int minasz=0) override
XrdXrootdMonitor::User Monitor
Definition: XrdXrootdProtocol.hh:501
static char tlsNot
Definition: XrdXrootdProtocol.hh:467
int myStalls
Definition: XrdXrootdProtocol.hh:493
int clientPV
Definition: XrdXrootdProtocol.hh:503
static bool isProxy
Definition: XrdXrootdProtocol.hh:450
int XeqFALsd(XrdSfsFACtl &ctl)
static unsigned int getSID()
bool isNOP
Definition: XrdXrootdProtocol.hh:593
static int as_segsize
Definition: XrdXrootdProtocol.hh:224
static XrdSysError & eDest
Definition: XrdXrootdProtocol.hh:393
XrdXrootdPio * pioFree
Definition: XrdXrootdProtocol.hh:599
int PrepareCount
Definition: XrdXrootdProtocol.hh:615
static int myCNlen
Definition: XrdXrootdProtocol.hh:423
static const char Req_TLSData
Definition: XrdXrootdProtocol.hh:460
static int xfso(XrdOucStream &Config)
static bool as_syncw
Definition: XrdXrootdProtocol.hh:231
int StatGen(struct stat &buf, char *xxBuff, int xxLen, bool xa=false)
unsigned char wvSeq
Definition: XrdXrootdProtocol.hh:604
unsigned int mySID
Definition: XrdXrootdProtocol.hh:590
static int maxBuffsz
Definition: XrdXrootdProtocol.hh:471
static int xgpf(XrdOucStream &Config)
XrdSfsXioHandle Swap(const char *buff, XrdSfsXioHandle h=0) override
char reserved[3]
Definition: XrdXrootdProtocol.hh:506
int getPathID()
Definition: XrdXrootdProtocol.hh:182
bool do_PgWIOSetup(XrdXrootdPgwCtl *pgwCtl)
XrdLink * Link
Definition: XrdXrootdProtocol.hh:498
int numReadV
Definition: XrdXrootdProtocol.hh:479
static const char * TraceID
Definition: XrdXrootdProtocol.hh:396
static const int maxPio
Definition: XrdXrootdProtocol.hh:596
int numSegsW
Definition: XrdXrootdProtocol.hh:482
SecurityRequest sigReq
Definition: XrdXrootdProtocol.hh:522
static int xtrace(XrdOucStream &Config)
int(XrdXrootdProtocol::* Resume)()
Definition: XrdXrootdProtocol.hh:572
int do_ReadNone(int &retc, int &pathID)
static short as_timeout
Definition: XrdXrootdProtocol.hh:227
static int xlog(XrdOucStream &Config)
static XrdXrootdJob * JobCKS
Definition: XrdXrootdProtocol.hh:427
static int xfsl(XrdOucStream &Config)
static int xdig(XrdOucStream &Config)
bool sigWarn
Definition: XrdXrootdProtocol.hh:527
int cumSegsW
Definition: XrdXrootdProtocol.hh:491
int cumReadP
Definition: XrdXrootdProtocol.hh:487
static int myUNLen
Definition: XrdXrootdProtocol.hh:405
static int myPID
Definition: XrdXrootdProtocol.hh:398
static bool xred_php(char *val, char *hP[2], int rPort[2], const char *what, bool optport=false)
static const char Req_TLSTPC
Definition: XrdXrootdProtocol.hh:464
static int as_maxstalls
Definition: XrdXrootdProtocol.hh:225
int SendFile(XrdOucSFVec *sfvec, int sfvnum) override
short PathID
Definition: XrdXrootdProtocol.hh:601
XrdSysMutex streamMutex
Definition: XrdXrootdProtocol.hh:586
XrdXrootdPio * pioLast
Definition: XrdXrootdProtocol.hh:598
bool do_PgClose(XrdXrootdFile *fP, int &rc)
int do_WriteNone(int pathid, XErrorCode ec=kXR_noErrorYet, const char *emsg=0)
static char tlsCap
Definition: XrdXrootdProtocol.hh:466
int fsOvrld(char opc, const char *Path, char *Cgi)
static bool PrepareAlt
Definition: XrdXrootdProtocol.hh:612
static XrdXrootdXPath XPList
Definition: XrdXrootdProtocol.hh:384
static int as_maxperlnk
Definition: XrdXrootdProtocol.hh:218
int do_Qopaque(short)
bool isTLS
Definition: XrdXrootdProtocol.hh:608
static struct XrdXrootdProtocol::RC_Table RouteClient
static const char * myUName
Definition: XrdXrootdProtocol.hh:407
static bool xmongsend(XrdOucStream &Config, char *val, char *&dest, int &opt, int &fmt, int &hdr)
int Process(XrdLink *lp) override
XrdObject< XrdXrootdProtocol > ProtLink
Definition: XrdXrootdProtocol.hh:373
int clientRN
Definition: XrdXrootdProtocol.hh:504
void Recycle(XrdLink *lp, int consec, const char *reason) override
int do_CKsum(char *algT, const char *Path, char *Opaque)
int cumWritV
Definition: XrdXrootdProtocol.hh:490
static bool xred_xok(int func, char *rHost[2], int rPort[2])
static char * Buffer(XrdSfsXioHandle h, int *bsz)
char * getCksType(char *opaque, char *cspec=0, int cslen=0)
int do_Set_Mon(XrdOucTokenizer &setargs)
int cumReadV
Definition: XrdXrootdProtocol.hh:488
static int xasync(XrdOucStream &Config)
int gdDone() override
Definition: XrdXrootdProtocol.hh:304
static int xmongs(XrdOucStream &Config)
unsigned char CapVer
Definition: XrdXrootdProtocol.hh:509
static XrdOucTList * JobCKTLST
Definition: XrdXrootdProtocol.hh:429
static int tlsPort
Definition: XrdXrootdProtocol.hh:420
void Assign(const XrdXrootdProtocol &rhs)
static char isRedir
Definition: XrdXrootdProtocol.hh:424
int cumSegsV
Definition: XrdXrootdProtocol.hh:489
static int ConfigSecurity(XrdOucEnv &xEnv, const char *cfn)
static int OD_Stall
Definition: XrdXrootdProtocol.hh:444
static int PrepareLimit
Definition: XrdXrootdProtocol.hh:616
static const char Req_TLSLogin
Definition: XrdXrootdProtocol.hh:462
char Status
Definition: XrdXrootdProtocol.hh:508
XrdXrootdResponse Response
Definition: XrdXrootdProtocol.hh:622
int(XrdXrootdProtocol::* ResumePio)()
Definition: XrdXrootdProtocol.hh:571
int do_DirStat(XrdSfsDirectory *dp, char *pbuff, char *opaque)
int do_Prepare(bool isQuery=false)
static char JobLCL
Definition: XrdXrootdProtocol.hh:425
int hcNow
Definition: XrdXrootdProtocol.hh:580
static int xred(XrdOucStream &Config)
void DoIt() override
Definition: XrdXrootdProtocol.hh:170
static bool ConfigFS(const char *path, XrdOucEnv &xEnv, const char *cfn)
static char JobCKCGI
Definition: XrdXrootdProtocol.hh:426
static char * usxParms
Definition: XrdXrootdProtocol.hh:456
static const char * myCName
Definition: XrdXrootdProtocol.hh:422
static time_t keepT
Definition: XrdXrootdProtocol.hh:408
static char * JobCKT
Definition: XrdXrootdProtocol.hh:428
static int xcksum(XrdOucStream &Config)
static bool ConfigGStream(XrdOucEnv &myEnv, XrdOucEnv *urEnv)
int numSegsV
Definition: XrdXrootdProtocol.hh:480
static int xred_clnt(XrdOucStream &Config, char *hP[2], int rPort[2])
static int Config(const char *fn)
int XeqFASet(XrdSfsFACtl &ctl, char *faVars, int faVLen)
int Stats(char *buff, int blen, int do_sync=0) override
XrdBuffer * argp
Definition: XrdXrootdProtocol.hh:499
static XrdXrootdStats * SI
Definition: XrdXrootdProtocol.hh:476
static const int maxStreams
Definition: XrdXrootdProtocol.hh:214
~XrdXrootdProtocol()
Definition: XrdXrootdProtocol.hh:212
int getDump(const char *dtype, int dlen)
static int as_seghalf
Definition: XrdXrootdProtocol.hh:223
int hcNext
Definition: XrdXrootdProtocol.hh:579
bool logLogin(bool xauth=false)
int numWrites
Definition: XrdXrootdProtocol.hh:483
static int CheckSum(XrdOucStream *, char **, int)
static int myRolf
Definition: XrdXrootdProtocol.hh:400
static XrdXrootdXPath RQList
Definition: XrdXrootdProtocol.hh:383
static int xmon(XrdOucStream &Config)
static void Reclaim(XrdSfsXioHandle h)
static int as_minsfsz
Definition: XrdXrootdProtocol.hh:222
static bool as_nosf
Definition: XrdXrootdProtocol.hh:230
static const char * myInst
Definition: XrdXrootdProtocol.hh:395
static RAtomic_int srvrAioOps
Definition: XrdXrootdProtocol.hh:532
bool do_PgWIORetry(int &rc)
bool sigRead
Definition: XrdXrootdProtocol.hh:526
int myBlen
Definition: XrdXrootdProtocol.hh:538
static int Configure(char *parms, XrdProtocol_Config *pi)
static char * xmondest(const char *what, char *val)
RD_func
Definition: XrdXrootdProtocol.hh:237
@ RD_chmod
Definition: XrdXrootdProtocol.hh:237
@ RD_open1
Definition: XrdXrootdProtocol.hh:240
@ RD_dirlist
Definition: XrdXrootdProtocol.hh:237
@ RD_rm
Definition: XrdXrootdProtocol.hh:238
@ RD_trunc
Definition: XrdXrootdProtocol.hh:239
@ RD_prepare
Definition: XrdXrootdProtocol.hh:238
@ RD_open2
Definition: XrdXrootdProtocol.hh:240
@ RD_open4
Definition: XrdXrootdProtocol.hh:240
@ RD_mkdir
Definition: XrdXrootdProtocol.hh:237
@ RD_rmdir
Definition: XrdXrootdProtocol.hh:238
@ RD_chksum
Definition: XrdXrootdProtocol.hh:237
@ RD_locate
Definition: XrdXrootdProtocol.hh:237
@ RD_stat
Definition: XrdXrootdProtocol.hh:239
@ RD_open3
Definition: XrdXrootdProtocol.hh:240
@ RD_mv
Definition: XrdXrootdProtocol.hh:238
@ RD_Num
Definition: XrdXrootdProtocol.hh:240
@ RD_client
Definition: XrdXrootdProtocol.hh:239
@ RD_prepstg
Definition: XrdXrootdProtocol.hh:238
@ RD_ovld
Definition: XrdXrootdProtocol.hh:239
static uint64_t fsFeatures
Definition: XrdXrootdProtocol.hh:431
static int Squash(char *)
char sigBuff[64]
Definition: XrdXrootdProtocol.hh:523
static int usxMaxVsz
Definition: XrdXrootdProtocol.hh:455
int numReads
Definition: XrdXrootdProtocol.hh:477
XrdXrootdReqID ReqID
Definition: XrdXrootdProtocol.hh:620
static XrdTlsContext * tlsCtx
Definition: XrdXrootdProtocol.hh:389
int hcPrev
Definition: XrdXrootdProtocol.hh:578
bool sigNeed
Definition: XrdXrootdProtocol.hh:524
static int xtls(XrdOucStream &Config)
short rdType
Definition: XrdXrootdProtocol.hh:507
int fsError(int rc, char opc, XrdOucErrInfo &myError, const char *Path, char *Cgi)
int halfBSize
Definition: XrdXrootdProtocol.hh:581
char doTLS
Definition: XrdXrootdProtocol.hh:606
static int Window
Definition: XrdXrootdProtocol.hh:419
static XrdScheduler * Sched
Definition: XrdXrootdProtocol.hh:391
static int hailWait
Definition: XrdXrootdProtocol.hh:416
int vpEmsg(const char *op, char *fn)
static int xtlsr(XrdOucStream &Config)
static XrdObjectQ< XrdXrootdProtocol > ProtStack
Definition: XrdXrootdProtocol.hh:372
XrdXrootdPio * pioFirst
Definition: XrdXrootdProtocol.hh:597
RAtomic_int linkAioReq
Definition: XrdXrootdProtocol.hh:531
bool sigHere
Definition: XrdXrootdProtocol.hh:525
static bool as_force
Definition: XrdXrootdProtocol.hh:228
XrdSysCondVar2 * endNote
Definition: XrdXrootdProtocol.hh:588
static struct XrdXrootdProtocol::RD_Table Route[RD_Num]
bool isDead
Definition: XrdXrootdProtocol.hh:594
static bool LimitError
Definition: XrdXrootdProtocol.hh:613
XrdXrootdProtocol operator=(const XrdXrootdProtocol &rhs)=delete
static int maxTransz
Definition: XrdXrootdProtocol.hh:472
int rpEmsg(const char *op, char *fn)
static XrdXrootdFileLock * Locker
Definition: XrdXrootdProtocol.hh:390
Definition: XrdXrootdReqID.hh:36
Definition: XrdXrootdResponse.hh:49
Definition: XrdXrootdStats.hh:40
Definition: XrdXrootdXPath.hh:43
Definition: XrdXrootdProtocol.hh:107
virtual void gdFail()
Definition: XrdXrootdProtocol.hh:122
virtual ~gdCallBack()
Definition: XrdXrootdProtocol.hh:125
virtual int gdDone()=0
gdCallBack()
Definition: XrdXrootdProtocol.hh:124
Definition: XrdXrootdBridge.hh:55
Definition: XrdOucSFVec.hh:43
Definition: XrdSfsFAttr.hh:73
Definition: XrdXrootdProtocol.hh:542
XrdXrootd::gdCallBack * CallBack
Definition: XrdXrootdProtocol.hh:557
static const int Active
Definition: XrdXrootdProtocol.hh:565
char * Buffer
Definition: XrdXrootdProtocol.hh:554
const char * ioDType
Definition: XrdXrootdProtocol.hh:556
int DumpLen
Definition: XrdXrootdProtocol.hh:547
static const int Terminate
Definition: XrdXrootdProtocol.hh:566
int iovNow
Definition: XrdXrootdProtocol.hh:544
unsigned char stalls
Definition: XrdXrootdProtocol.hh:551
struct iovec * iovVec
Definition: XrdXrootdProtocol.hh:553
static const int inDump
Definition: XrdXrootdProtocol.hh:563
RAtomic_uchar linkWait
Definition: XrdXrootdProtocol.hh:552
int iovAdj
Definition: XrdXrootdProtocol.hh:545
static const int inData
Definition: XrdXrootdProtocol.hh:561
char Status
Definition: XrdXrootdProtocol.hh:550
bool useCB
Definition: XrdXrootdProtocol.hh:549
int BuffLen
Definition: XrdXrootdProtocol.hh:546
static const int inCallBk
Definition: XrdXrootdProtocol.hh:560
static const int inNone
Definition: XrdXrootdProtocol.hh:559
int iovNum
Definition: XrdXrootdProtocol.hh:543
static const int inDataIov
Definition: XrdXrootdProtocol.hh:562
Definition: XrdXrootdProtocol.hh:439
char * Domain[4]
Definition: XrdXrootdProtocol.hh:439
bool pvtIP
Definition: XrdXrootdProtocol.hh:441
bool lclDom
Definition: XrdXrootdProtocol.hh:442
short DomCnt
Definition: XrdXrootdProtocol.hh:440
Definition: XrdXrootdProtocol.hh:435
unsigned short Port[2]
Definition: XrdXrootdProtocol.hh:436
short RDSz[2]
Definition: XrdXrootdProtocol.hh:437
char * Host[2]
Definition: XrdXrootdProtocol.hh:435
Definition: XrdXrootdWVInfo.hh:35
Definition: XrdXrootdProtocol.hh:133
static const int useSF
Definition: XrdXrootdProtocol.hh:146
int EInfo[2]
Definition: XrdXrootdProtocol.hh:138
char reserved
Definition: XrdXrootdProtocol.hh:142
static const int useBasic
Definition: XrdXrootdProtocol.hh:144
XrdXrootdFile * File
Definition: XrdXrootdProtocol.hh:134
long long Offset
Definition: XrdXrootdProtocol.hh:136
unsigned short Flags
Definition: XrdXrootdProtocol.hh:141
long long WVBytes
Definition: XrdXrootdProtocol.hh:137
char Mode
Definition: XrdXrootdProtocol.hh:143
int IOLen
Definition: XrdXrootdProtocol.hh:140
static const int useMMap
Definition: XrdXrootdProtocol.hh:145
Definition: XrdOucIOVec.hh:65
Definition: XProtocol.hh:843
Definition: XProtocol.hh:878