1 #ifndef __XROOTD_PROTOCOL_H__
2 #define __XROOTD_PROTOCOL_H__
34 #include <sys/types.h>
57 #define XRD_LOGGEDIN 1
58 #define XRD_NEED_AUTH 2
59 #define XRD_BOUNDPATH 8
62 #define __attribute__(x)
175 char *buff,
int blen);
178 struct iovec *
iov,
int iovn);
180 int getDump(
const char *dtype,
int dlen);
192 void Recycle(
XrdLink *lp,
int consec,
const char *reason)
override;
200 void SetFD(
int fildes)
override;
202 int Stats(
char *buff,
int blen,
int do_sync=0)
override;
237 enum RD_func {RD_chmod = 0, RD_chksum, RD_dirlist, RD_locate, RD_mkdir,
238 RD_mv, RD_prepare, RD_prepstg, RD_rm, RD_rmdir,
239 RD_stat, RD_trunc, RD_ovld, RD_client,
240 RD_open1, RD_open2, RD_open3, RD_open4, RD_Num};
247 int do_CKsum(
int canit);
248 int do_CKsum(
char *algT,
const char *
Path,
char *Opaque);
266 bool do_PgWAIO(
int &rc);
268 int do_PgWIO(
bool isFresh);
269 bool do_PgWIORetry(
int &rc);
272 int do_Prepare(
bool isQuery=
false);
277 int do_Qopaque(
short);
284 int do_ReadNone(
int &retc,
int &pathID);
301 int do_WriteNoneMsg();
305 int gdDone()
override {
return do_PgWIO(
false);}
310 static int Config(
const char *fn);
312 static int ConfigSecurity(
XrdOucEnv &xEnv,
const char *cfn);
314 const char *
Path,
char *Cgi);
315 int fsOvrld(
char opc,
const char *
Path,
char *Cgi);
316 int fsRedirNoEnt(
const char *
eMsg,
char *Cgi,
int popt);
317 int getBuff(
const int isRead,
int Quantum);
318 char *getCksType(
char *opaque,
char *cspec=0,
int cslen=0);
319 int getData(
const char *dtype,
char *buff,
int blen);
321 int getDataIovCont();
323 bool logLogin(
bool xauth=
false);
324 static int mapMode(
int mode);
326 static int rpCheck(
char *fn,
char **opaque);
327 int rpEmsg(
const char *op,
char *fn);
328 int vpEmsg(
const char *op,
char *fn);
329 static int CheckTLS(
const char *tlsProt);
330 static bool ConfigFS(
XrdOucEnv &xEnv,
const char *cfn);
331 static bool ConfigFS(
const char *path,
XrdOucEnv &xEnv,
const char *cfn);
333 static int Squash(
char *);
334 int StatGen(
struct stat &buf,
char *xxBuff,
int xxLen,
bool xa=
false);
341 static int xexpdo(
char *path,
int popt=0);
349 static char *xmondest(
const char *what,
char *val);
352 int &opt,
int &fmt,
int &hdr);
355 static bool xred_php(
char *val,
char *hP[2],
int rPort[2],
const char *what,
357 static void xred_set(RD_func func,
char *rHost[2],
int rPort[2]);
358 static bool xred_xok(
int func,
char *rHost[2],
int rPort[2]);
365 int ProcFAttr(
char *faPath,
char *faCgi,
char *faArgs,
366 int faALen,
int faCode,
bool doAChk);
367 int XeqFADel(
XrdSfsFACtl &ctl,
char *faVars,
int faVLen);
368 int XeqFAGet(
XrdSfsFACtl &ctl,
char *faVars,
int faVLen);
371 int XeqFASet(
XrdSfsFACtl &ctl,
char *faVars,
int faVLen);
378 static unsigned int getSID();
555 union {
struct iovec *iovVec;
int stat(const char *path, struct stat *buf)
int emsg(int rc, char *msg)
class XrdBuffer * XrdSfsXioHandle
static XrdXrootdStats * SI
static const char * myInst
int SendFile(int fildes) override
XrdXrootdProtocol * VerifyStream(int &rc, int pID, bool lok=true)
static XrdSfsFileSystem * digFS
int SetSF(kXR_char *fhandle, bool seton=false)
int getData(gdCallBack *gdcbP, const char *dtype, struct iovec *iov, int iovn)
XrdNetPMark::Handle * pmHandle
static XrdNetPMark * PMark
XrdXrootdProtocol * Stream[maxStreams]
static short as_okstutter
static XrdXrootdXPath RPList
static XrdNetSocket * AdminSock
static const char Req_TLSGPFile
XrdProtocol * Match(XrdLink *lp) override
struct XrdXrootdProtocol::GetDataCtl gdCtl
void SetFD(int fildes) override
static const char Req_TLSSess
static void Reclaim(XrdSfsXioHandle h)
XrdXrootdFileTable * FTab
static XrdXrootdJob * JobCKS
static XrdSysError & eDest
static unsigned int getSID()
XrdSecProtocol * AuthProt
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
static const char * myCName
static const char Req_TLSData
XrdSfsXioHandle Swap(const char *buff, XrdSfsXioHandle h=0) override
static XrdXrootdFileLock * Locker
int(XrdXrootdProtocol::* Resume)()
static const char Req_TLSTPC
static XrdTlsContext * tlsCtx
static XrdXrootdXPath XPList
static XrdScheduler * Sched
static struct XrdXrootdProtocol::RC_Table RouteClient
int Process(XrdLink *lp) override
void Recycle(XrdLink *lp, int consec, const char *reason) override
static char * Buffer(XrdSfsXioHandle h, int *bsz)
static const char * myUName
static const char Req_TLSLogin
XrdXrootdResponse Response
int(XrdXrootdProtocol::* ResumePio)()
static const char * TraceID
static int Configure(char *parms, XrdProtocol_Config *pi)
int Stats(char *buff, int blen, int do_sync=0) override
static const int maxStreams
int getDump(const char *dtype, int dlen)
static XrdOucTList * JobCKTLST
static XrdXrootdXPath RQList
static XrdSecProtector * DHS
static XrdBuffManager * BPool
static XrdSecService * CIA
static RAtomic_int srvrAioOps
static const char * myGName
static uint64_t fsFeatures
static XrdOucReqID * PrepID
static struct XrdXrootdProtocol::RD_Table Route[RD_Num]
static XrdSfsFileSystem * osFS
XrdXrootdProtocol operator=(const XrdXrootdProtocol &rhs)=delete
XrdXrootd::gdCallBack * CallBack
static const int Terminate
static const int inCallBk
static const int inDataIov
static const int useBasic