1 #ifndef __XROOTD_PROTOCOL_H__ 2 #define __XROOTD_PROTOCOL_H__ 34 #include <sys/types.h> 55 #define XRD_LOGGEDIN 1 56 #define XRD_NEED_AUTH 2 57 #define XRD_BOUNDPATH 8 60 #define __attribute__(x) 79 class XrdSfsFileSystem;
128 void SetFD(
int fildes);
130 int Stats(
char *buff,
int blen,
int do_sync=0);
155 int do_CKsum(
char *algT,
const char *Path,
char *Opaque);
166 int do_Offload(
int pathID,
bool isWrite,
bool ispgio=
false);
208 int aio_Error(
const char *op,
int ecode);
217 static int Config(
const char *fn);
221 const char *Path,
char *Cgi);
222 int fsOvrld(
char opc,
const char *Path,
char *Cgi);
223 int fsRedirNoEnt(
const char *eMsg,
char *Cgi,
int popt);
225 char *
getCksType(
char *opaque,
char *cspec=0,
int cslen=0);
226 int getData(
const char *dtype,
char *buff,
int blen);
228 const char *dtype,
struct iovec *
iov,
int iovn);
234 static int rpCheck(
char *fn,
char **opaque);
235 int rpEmsg(
const char *op,
char *fn);
236 int vpEmsg(
const char *op,
char *fn);
237 static int CheckTLS(
const char *tlsProt);
241 static int Squash(
char *);
242 int StatGen(
struct stat &buf,
char *xxBuff,
int xxLen,
bool xa=
false);
248 static int xexpdo(
char *path,
int popt=0);
256 static char *
xmondest(
const char *what,
char *val);
259 int &opt,
int &fmt,
int &hdr);
261 static bool xred_php(
char *val,
char *hP[2],
int rPort[2]);
263 static bool xred_xok(
int func,
char *rHost[2],
int rPort[2]);
270 int ProcFAttr(
char *faPath,
char *faCgi,
char *faArgs,
271 int faALen,
int faCode,
bool doAChk);
283 static unsigned int getSID();
int do_QconfCX(XrdOucTokenizer &qcargs, char *val)
static char JobLCL
Definition: XrdXrootdProtocol.hh:330
static int mapMode(int mode)
int cumSegsW
Definition: XrdXrootdProtocol.hh:395
static const char Req_TLSLogin
Definition: XrdXrootdProtocol.hh:355
unsigned char kXR_char
Definition: XPtypes.hh:65
static char tlsCap
Definition: XrdXrootdProtocol.hh:359
XrdXrootdResponse Response
Definition: XrdXrootdProtocol.hh:510
static int as_force
Definition: XrdXrootdProtocol.hh:371
static bool xmongsend(XrdOucStream &Config, char *val, char *&dest, int &opt, int &fmt, int &hdr)
int cumSegsV
Definition: XrdXrootdProtocol.hh:393
static int xfsl(XrdOucStream &Config)
XrdSysMutex streamMutex
Definition: XrdXrootdProtocol.hh:470
char * AppName
Definition: XrdXrootdProtocol.hh:418
static int as_miniosz
Definition: XrdXrootdProtocol.hh:367
long long totReadP
Definition: XrdXrootdProtocol.hh:397
static XrdOucTList * JobCKTLST
Definition: XrdXrootdProtocol.hh:334
XrdXrootdMonitor::User Monitor
Definition: XrdXrootdProtocol.hh:404
static int as_maxperlnk
Definition: XrdXrootdProtocol.hh:364
XrdSecProtect * Protect
Definition: XrdXrootdProtocol.hh:417
int hcNext
Definition: XrdXrootdProtocol.hh:464
static int as_maxperreq
Definition: XrdXrootdProtocol.hh:365
bool isActive
Definition: XrdXrootdProtocol.hh:474
Definition: XrdXrootdProtocol.hh:145
short rdType
Definition: XrdXrootdProtocol.hh:408
static int xfsL(XrdOucStream &Config, char *val, int lix)
bool sigNeed
Definition: XrdXrootdProtocol.hh:423
XrdBuffer * argp
Definition: XrdXrootdProtocol.hh:402
bool isDead
Definition: XrdXrootdProtocol.hh:475
int fsOvrld(char opc, const char *Path, char *Cgi)
struct iovec * iovVec
Definition: XrdXrootdProtocol.hh:444
XrdSfsXioHandle Swap(const char *buff, XrdSfsXioHandle h=0)
static int Quantum
Definition: XrdXrootdAio.hh:146
static XrdXrootdFileLock * Locker
Definition: XrdXrootdProtocol.hh:296
bool do_PgWIOSetup(XrdXrootdPgwCtl *pgwCtl)
short iovNum
Definition: XrdXrootdProtocol.hh:443
bool sigWarn
Definition: XrdXrootdProtocol.hh:426
static XrdXrootdXPath RQList
Definition: XrdXrootdProtocol.hh:289
static XrdBuffManager * BPool
Definition: XrdXrootdProtocol.hh:298
static const char Req_TLSSess
Definition: XrdXrootdProtocol.hh:356
char * getCksType(char *opaque, char *cspec=0, int cslen=0)
char * myBuff
Definition: XrdXrootdProtocol.hh:435
int hcNow
Definition: XrdXrootdProtocol.hh:465
Definition: XrdXrootdProtocol.hh:147
int do_DirStat(XrdSfsDirectory *dp, char *pbuff, char *opaque)
bool do_PgClose(XrdXrootdFile *fP, int &rc)
int cumWrites
Definition: XrdXrootdProtocol.hh:396
static int hcMax
Definition: XrdXrootdProtocol.hh:462
Definition: XrdXrootdProtocol.hh:145
Definition: XrdXrootdProtocol.hh:144
static XrdSecProtector * DHS
Definition: XrdXrootdProtocol.hh:294
void Recycle(XrdLink *lp, int consec, const char *reason)
static bool OD_Redir
Definition: XrdXrootdProtocol.hh:345
Definition: XrdXrootdProtocol.hh:145
Definition: XrdXrootdProtocol.hh:340
XrdLink * Link
Definition: XrdXrootdProtocol.hh:401
ClientRequest Request
Definition: XrdXrootdProtocol.hh:509
static bool ConfigGStream(XrdOucEnv &myEnv, XrdOucEnv *urEnv)
Definition: XrdSecInterface.hh:551
int do_ReadAll(int asyncOK=1)
XrdXrootdWVInfo * wvInfo
Definition: XrdXrootdProtocol.hh:451
RD_func
Definition: XrdXrootdProtocol.hh:144
bool doPgIO
Definition: XrdXrootdProtocol.hh:488
bool doWriteC
Definition: XrdXrootdProtocol.hh:490
static char * Notify
Definition: XrdXrootdProtocol.hh:326
static int OD_Stall
Definition: XrdXrootdProtocol.hh:343
static int xtlsr(XrdOucStream &Config)
int clientPV
Definition: XrdXrootdProtocol.hh:405
int getBuff(const int isRead, int Quantum)
static int as_nosf
Definition: XrdXrootdProtocol.hh:373
bool do_PgWIORetry(int &rc)
XrdSfsXioHandle Claim(const char *buff, int datasz, int minasz=0)
static int xsecl(XrdOucStream &Config)
static XrdXrootdJob * JobCKS
Definition: XrdXrootdProtocol.hh:332
Definition: XrdOucSFVec.hh:43
Definition: XrdXrootdProtocol.hh:146
int Stats(char *buff, int blen, int do_sync=0)
bool isNOP
Definition: XrdXrootdProtocol.hh:477
int aio_Error(const char *op, int ecode)
Definition: XrdOucStream.hh:46
static int hailWait
Definition: XrdXrootdProtocol.hh:321
XrdXrootdPio * pioLast
Definition: XrdXrootdProtocol.hh:481
Definition: XrdXrootdPgwCtl.hh:40
Definition: XrdSecInterface.hh:130
static char * JobCKT
Definition: XrdXrootdProtocol.hh:333
static int as_maxpersrv
Definition: XrdXrootdProtocol.hh:366
int myIOLen
Definition: XrdXrootdProtocol.hh:457
char miscrsv[4]
Definition: XrdXrootdProtocol.hh:430
int SetSF(kXR_char *fhandle, bool seton=false)
static bool PrepareAlt
Definition: XrdXrootdProtocol.hh:500
static int xapath(XrdOucStream &Config)
Definition: XrdXrootdWVInfo.hh:34
short PathID
Definition: XrdXrootdProtocol.hh:486
static void Reclaim(XrdSfsXioHandle h)
int(XrdXrootdProtocol::* Resume)()
Definition: XrdXrootdProtocol.hh:449
unsigned char CapVer
Definition: XrdXrootdProtocol.hh:410
static int Squash(char *)
static bool ConfigMon(XrdProtocol_Config *pi, XrdOucEnv &xrootdEnv)
static uid_t myUID
Definition: XrdXrootdProtocol.hh:308
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:425
static int RQLxist
Definition: XrdXrootdProtocol.hh:302
int XeqFASet(XrdSfsFACtl &ctl, char *faVars, int faVLen)
static XrdSysError & eDest
Definition: XrdXrootdProtocol.hh:299
int numReadV
Definition: XrdXrootdProtocol.hh:383
void Assign(const XrdXrootdProtocol &rhs)
static gid_t myGID
Definition: XrdXrootdProtocol.hh:307
int getData(const char *dtype, char *buff, int blen)
Definition: XrdXrootdProtocol.hh:96
static int maxBuffsz
Definition: XrdXrootdProtocol.hh:375
static int Port
Definition: XrdXrootdProtocol.hh:323
static int myPID
Definition: XrdXrootdProtocol.hh:303
int numFiles
Definition: XrdXrootdProtocol.hh:388
Definition: XrdSecProtect.hh:55
Definition: XrdOucReqID.hh:41
int clientRN
Definition: XrdXrootdProtocol.hh:406
~XrdXrootdProtocol()
Definition: XrdXrootdProtocol.hh:136
static XrdObjectQ< XrdXrootdProtocol > ProtStack
Definition: XrdXrootdProtocol.hh:278
Definition: XrdXrootdMonitor.hh:75
static int xtls(XrdOucStream &Config)
bool sigHere
Definition: XrdXrootdProtocol.hh:424
Definition: XrdXrootdPio.hh:38
static XrdNetSocket * AdminSock
Definition: XrdXrootdProtocol.hh:317
Definition: XrdBuffer.hh:71
Definition: XrdSfsFAttr.hh:72
static char * xmondest(const char *what, char *val)
static int xasync(XrdOucStream &Config)
static XrdSecService * CIA
Definition: XrdXrootdProtocol.hh:293
static bool xred_xok(int func, char *rHost[2], int rPort[2])
Definition: XrdOucTrace.hh:35
Definition: XrdSysError.hh:89
Definition: XrdXrootdProtocol.hh:144
unsigned char rvSeq
Definition: XrdXrootdProtocol.hh:491
int numWrites
Definition: XrdXrootdProtocol.hh:387
static int xlimit(XrdOucStream &Config)
int cumReadP
Definition: XrdXrootdProtocol.hh:391
int myBlast
Definition: XrdXrootdProtocol.hh:437
XrdSecProtocol * AuthProt
Definition: XrdXrootdProtocol.hh:415
Definition: XrdScheduler.hh:44
Definition: XrdSfsInterface.hh:238
long long myWVBytes
Definition: XrdXrootdProtocol.hh:454
static int myRole
Definition: XrdXrootdProtocol.hh:304
static int tlsPort
Definition: XrdXrootdProtocol.hh:325
Definition: XrdXrootdMonitor.hh:169
Definition: XrdXrootdFile.hh:99
Definition: XrdSysPthread.hh:165
SecurityRequest sigReq
Definition: XrdXrootdProtocol.hh:421
int(XrdXrootdProtocol::* CallBk)()
Definition: XrdXrootdProtocol.hh:446
Definition: XrdXrootdProtocol.hh:146
bool ableTLS
Definition: XrdXrootdProtocol.hh:495
Definition: XrdOucIOVec.hh:65
static int usxMaxVsz
Definition: XrdXrootdProtocol.hh:350
Definition: XrdXrootdFile.hh:150
Definition: XrdXrootdAdmin.hh:43
XrdXrootdReqID ReqID
Definition: XrdXrootdProtocol.hh:508
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:301
int myEInfo[2]
Definition: XrdXrootdProtocol.hh:455
static int xprep(XrdOucStream &Config)
char sigBuff[64]
Definition: XrdXrootdProtocol.hh:422
int vpEmsg(const char *op, char *fn)
bool isTLS
Definition: XrdXrootdProtocol.hh:496
Definition: XrdLink.hh:51
static bool LimitError
Definition: XrdXrootdProtocol.hh:501
Definition: XrdXrootdProtocol.hh:146
static int readWait
Definition: XrdXrootdProtocol.hh:322
static XrdXrootdXPath RPList
Definition: XrdXrootdProtocol.hh:288
static int as_segsize
Definition: XrdXrootdProtocol.hh:369
Definition: XrdXrootdAio.hh:98
bool isBound
Definition: XrdXrootdProtocol.hh:476
int numSegsV
Definition: XrdXrootdProtocol.hh:384
static bool OD_Bypass
Definition: XrdXrootdProtocol.hh:344
long long bytes2recv
Definition: XrdXrootdProtocol.hh:483
Definition: XrdOucErrInfo.hh:100
static char * Buffer(XrdSfsXioHandle h, int *bsz)
int lenPart
Definition: XrdXrootdProtocol.hh:441
static int xdig(XrdOucStream &Config)
Definition: XrdSecProtector.hh:72
Definition: XProtocol.hh:871
short iovNow
Definition: XrdXrootdProtocol.hh:442
Definition: XrdSysPthread.hh:405
int cumWritV
Definition: XrdXrootdProtocol.hh:394
int myBlen
Definition: XrdXrootdProtocol.hh:436
XErrorCode
Definition: XProtocol.hh:980
int numReadP
Definition: XrdXrootdProtocol.hh:382
Definition: XrdProtocol.hh:55
int numSegsW
Definition: XrdXrootdProtocol.hh:386
Definition: XrdOucEnv.hh:41
unsigned int mySID
Definition: XrdXrootdProtocol.hh:473
static int maxTransz
Definition: XrdXrootdProtocol.hh:376
static int xlog(XrdOucStream &Config)
static const char * myInst
Definition: XrdXrootdProtocol.hh:300
static int Config(const char *fn)
static int xexp(XrdOucStream &Config)
static int xmongs(XrdOucStream &Config)
char doTLS
Definition: XrdXrootdProtocol.hh:494
static int as_minsfsz
Definition: XrdXrootdProtocol.hh:368
static unsigned int getSID()
static int xexpdo(char *path, int popt=0)
int cumReads
Definition: XrdXrootdProtocol.hh:390
int numReads
Definition: XrdXrootdProtocol.hh:381
XrdXrootdFileTable * FTab
Definition: XrdXrootdProtocol.hh:403
unsigned short Port[2]
Definition: XrdXrootdProtocol.hh:341
short RDSz[2]
Definition: XrdXrootdProtocol.hh:342
int ProcFAttr(char *faPath, char *faCgi, char *faArgs, int faALen, int faCode, bool doAChk)
static const int maxPio
Definition: XrdXrootdProtocol.hh:479
int XeqFALst(XrdSfsFACtl &ctl)
const char * iovType
Definition: XrdXrootdProtocol.hh:445
static int xred(XrdOucStream &Config)
Definition: XrdOucTList.hh:41
static XrdXrootdStats * SI
Definition: XrdXrootdProtocol.hh:380
static int CheckSum(XrdOucStream *, char **, int)
static int xfso(XrdOucStream &Config)
Definition: XrdXrootdProtocol.hh:147
static XrdSfsFileSystem * osFS
Definition: XrdXrootdProtocol.hh:291
unsigned short myFlags
Definition: XrdXrootdProtocol.hh:487
int do_ReadNone(int &retc, int &pathID)
static XrdSfsFileSystem * digFS
Definition: XrdXrootdProtocol.hh:292
Definition: XrdXrootdProtocol.hh:144
Definition: XrdXrootdReqID.hh:35
XrdSecEntity Entity
Definition: XrdXrootdProtocol.hh:416
static int myCNlen
Definition: XrdXrootdProtocol.hh:328
static int CheckTLS(const char *tlsProt)
Definition: XProtocol.hh:1016
static int as_maxstalls
Definition: XrdXrootdProtocol.hh:370
static int xgpf(XrdOucStream &Config)
static int myGNLen
Definition: XrdXrootdProtocol.hh:309
#define stat(a, b)
Definition: XrdPosix.hh:96
Definition: XrdXrootdProtocol.hh:145
static int as_noaio
Definition: XrdXrootdProtocol.hh:372
XrdSecEntity * Client
Definition: XrdXrootdProtocol.hh:414
Definition: XrdTlsContext.hh:36
static XrdXrootdXPath XPList
Definition: XrdXrootdProtocol.hh:290
static int PrepareLimit
Definition: XrdXrootdProtocol.hh:504
Definition: XrdXrootdResponse.hh:48
Definition: XrdXrootdProtocol.hh:145
static int Window
Definition: XrdXrootdProtocol.hh:324
int rpEmsg(const char *op, char *fn)
static int xmon(XrdOucStream &Config)
int PrepareCount
Definition: XrdXrootdProtocol.hh:503
int hcPrev
Definition: XrdXrootdProtocol.hh:463
Definition: XrdXrootdProtocol.hh:439
int do_Offload(int pathID, bool isWrite, bool ispgio=false)
static int myRolf
Definition: XrdXrootdProtocol.hh:305
Definition: XrdXrootdStats.hh:39
XrdSysSemaphore * reTry
Definition: XrdXrootdProtocol.hh:471
int cumReadV
Definition: XrdXrootdProtocol.hh:392
Definition: XrdXrootdProtocol.hh:147
Definition: XrdXrootdXPath.hh:42
int getPathID(bool isRead)
static const char * myCName
Definition: XrdXrootdProtocol.hh:327
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:354
XrdXrootdProtocol * Stream[maxStreams]
Definition: XrdXrootdProtocol.hh:472
static int as_syncw
Definition: XrdXrootdProtocol.hh:374
static XrdTlsContext * tlsCtx
Definition: XrdXrootdProtocol.hh:295
char Status
Definition: XrdXrootdProtocol.hh:409
static int xcksum(XrdOucStream &Config)
XrdXrootdPio * pioFirst
Definition: XrdXrootdProtocol.hh:480
static char JobCKCGI
Definition: XrdXrootdProtocol.hh:331
int halfBSize
Definition: XrdXrootdProtocol.hh:466
int do_Prepare(bool isQuery=false)
int numWritV
Definition: XrdXrootdProtocol.hh:385
static const char * myGName
Definition: XrdXrootdProtocol.hh:311
Definition: XrdOucTokenizer.hh:32
static bool xred_php(char *val, char *hP[2], int rPort[2])
static char * usxParms
Definition: XrdXrootdProtocol.hh:351
XrdObject< XrdXrootdProtocol > ProtLink
Definition: XrdXrootdProtocol.hh:279
XrdXrootdFile * myFile
Definition: XrdXrootdProtocol.hh:450
Definition: XrdSfsDio.hh:46
XrdXrootdPio * pioFree
Definition: XrdXrootdProtocol.hh:482
char * Host[2]
Definition: XrdXrootdProtocol.hh:340
bool logLogin(bool xauth=false)
Definition: XrdSecEntity.hh:63
Definition: XProtocol.hh:836
Definition: XrdXrootdProtocol.hh:147
static char isRedir
Definition: XrdXrootdProtocol.hh:329
static uint64_t fsFeatures
Definition: XrdXrootdProtocol.hh:336
Definition: XrdXrootdProtocol.hh:147
static XrdScheduler * Sched
Definition: XrdXrootdProtocol.hh:297
int myStalls
Definition: XrdXrootdProtocol.hh:458
XrdXrootdAioReq * myAioReq
Definition: XrdXrootdProtocol.hh:434
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:453
void DoIt()
Definition: XrdXrootdProtocol.hh:108
static void xred_set(RD_func func, char *rHost[2], int rPort[2])
Definition: XrdXrootdJob.hh:51
static const int maxStreams
Definition: XrdXrootdProtocol.hh:138
int fsRedirNoEnt(const char *eMsg, char *Cgi, int popt)
ClientRequest sigReq2Ver
Definition: XrdXrootdProtocol.hh:420
Definition: XrdXrootdFileLock.hh:32
static time_t keepT
Definition: XrdXrootdProtocol.hh:313
int XeqFALsd(XrdSfsFACtl &ctl)
static XrdOucReqID * PrepID
Definition: XrdXrootdProtocol.hh:335
static const char * myUName
Definition: XrdXrootdProtocol.hh:312
unsigned char wvSeq
Definition: XrdXrootdProtocol.hh:492
static const char Req_TLSTPC
Definition: XrdXrootdProtocol.hh:357
static const char Req_TLSData
Definition: XrdXrootdProtocol.hh:353
static char tlsNot
Definition: XrdXrootdProtocol.hh:360
int XeqFADel(XrdSfsFACtl &ctl, char *faVars, int faVLen)
int do_Set_Mon(XrdOucTokenizer &setargs)
XrdXrootdProtocol operator=(const XrdXrootdProtocol &rhs)=delete
struct XrdXrootdProtocol::GetDataCtl gdCtl
int reserved
Definition: XrdXrootdProtocol.hh:407
class XrdBuffer * XrdSfsXioHandle
Definition: XrdSfsXio.hh:46
Definition: XrdXrootdProtocol.hh:144
long long bytes2send
Definition: XrdXrootdProtocol.hh:484
Definition: XrdXrootdProtocol.hh:144
Definition: XrdBuffer.hh:41
bool doWrite
Definition: XrdXrootdProtocol.hh:489
Definition: XrdSfsXio.hh:54
XrdProtocol * Match(XrdLink *lp)
static int usxMaxNsz
Definition: XrdXrootdProtocol.hh:349
static int myUNLen
Definition: XrdXrootdProtocol.hh:310