xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
XrdOfs.hh
Go to the documentation of this file.
1 #ifndef __OFS_API_H__
2 #define __OFS_API_H__
3 /******************************************************************************/
4 /* */
5 /* X r d O f s . 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 <string.h>
33 #include <dirent.h>
34 #include <sys/types.h>
35 
36 #include "XrdOfs/XrdOfsEvr.hh"
37 #include "XrdOfs/XrdOfsHandle.hh"
38 #include "XrdSys/XrdSysPthread.hh"
40 #include "XrdCms/XrdCmsClient.hh"
41 
42 class XrdNetIF;
43 class XrdOfsEvs;
44 class XrdOfsPocq;
45 class XrdOss;
46 class XrdOssDF;
47 class XrdOssDir;
48 class XrdOucEnv;
49 class XrdSysError;
50 class XrdSysLogger;
51 class XrdOucStream;
52 class XrdSfsAio;
53 
54 struct XrdVersionInfo;
55 
56 /******************************************************************************/
57 /* X r d O f s D i r e c t o r y */
58 /******************************************************************************/
59 
60 class XrdOfsDirectory : public XrdSfsDirectory
61 {
62 public:
63 
64  int open(const char *dirName,
65  const XrdSecEntity *client,
66  const char *opaque = 0);
67 
68  const char *nextEntry();
69 
70  int close();
71 
72 inline void copyError(XrdOucErrInfo &einfo) {einfo = error;}
73 
74 const char *FName() {return (const char *)fname;}
75 
76  int autoStat(struct stat *buf);
77 
78  XrdOfsDirectory(const char *user, int MonID)
79  : XrdSfsDirectory(user, MonID)
80  {dp = 0;
81  tident = (user ? user : "");
82  fname=0; atEOF=0;
83  }
84 virtual ~XrdOfsDirectory() {if (dp) close();}
85 
86 protected:
87 const char *tident;
88 char *fname;
89 
90 private:
92 int atEOF;
93 char dname[MAXNAMLEN];
94 };
95 
96 /******************************************************************************/
97 /* X r d O f s F i l e */
98 /******************************************************************************/
99 
100 class XrdOfsTPC;
101 
102 class XrdOfsFile : public XrdSfsFile
103 {
104 public:
105 
106  int open(const char *fileName,
107  XrdSfsFileOpenMode openMode,
108  mode_t createMode,
109  const XrdSecEntity *client,
110  const char *opaque = 0);
111 
112  int close();
113 
114  using XrdSfsFile::fctl;
115 
116  int fctl(const int cmd,
117  const char *args,
118  XrdOucErrInfo &out_error);
119 
120  int fctl(const int cmd,
121  int alen,
122  const char *args,
123  const XrdSecEntity *client = 0);
124 
125  const char *FName() {return (oh ? oh->Name() : "?");}
126 
127  int getMmap(void **Addr, off_t &Size);
128 
129  int read(XrdSfsFileOffset fileOffset, // Preread only
130  XrdSfsXferSize amount);
131 
133  char *buffer,
134  XrdSfsXferSize buffer_size);
135 
137  int readCount);
138 
139  int read(XrdSfsAio *aioparm);
140 
142  const char *buffer,
143  XrdSfsXferSize buffer_size);
144 
145  int write(XrdSfsAio *aioparm);
146 
147  int sync();
148 
149  int sync(XrdSfsAio *aiop);
150 
151  int stat(struct stat *buf);
152 
153  int truncate(XrdSfsFileOffset fileOffset);
154 
155  int getCXinfo(char cxtype[4], int &cxrsz);
156 
157  XrdOfsFile(const char *user, int MonID);
158 
159  ~XrdOfsFile() {viaDel = 1; if (oh) close();}
160 
161 protected:
162  const char *tident;
163 
164 private:
165 
166 void GenFWEvent();
167 
171 char viaDel;
172 };
173 
174 /******************************************************************************/
175 /* C l a s s X r d O f s */
176 /******************************************************************************/
177 
178 class XrdAccAuthorize;
179 class XrdCks;
180 class XrdCmsClient;
181 class XrdOfsConfigPI;
182 class XrdOfsPoscq;
183 
184 class XrdOfs : public XrdSfsFileSystem
185 {
186 friend class XrdOfsDirectory;
187 friend class XrdOfsFile;
188 
189 public:
190 
191 // Object allocation
192 //
193  XrdSfsDirectory *newDir(char *user=0, int MonID=0)
194  {return (XrdSfsDirectory *)new XrdOfsDirectory(user,MonID);}
195 
196  XrdSfsFile *newFile(char *user=0,int MonID=0)
197  {return (XrdSfsFile *)new XrdOfsFile(user, MonID);}
198 
199 // Other functions
200 //
201  int chksum( csFunc Func,
202  const char *csName,
203  const char *Path,
204  XrdOucErrInfo &out_error,
205  const XrdSecEntity *client = 0,
206  const char *opaque = 0);
207 
208  int chmod(const char *Name,
209  XrdSfsMode Mode,
210  XrdOucErrInfo &out_error,
211  const XrdSecEntity *client,
212  const char *opaque = 0);
213 
214  int exists(const char *fileName,
215  XrdSfsFileExistence &exists_flag,
216  XrdOucErrInfo &out_error,
217  const XrdSecEntity *client,
218  const char *opaque = 0);
219 
220  int fsctl(const int cmd,
221  const char *args,
222  XrdOucErrInfo &out_error,
223  const XrdSecEntity *client);
224 
225  int getStats(char *buff, int blen);
226 
227 const char *getVersion();
228 
229  int mkdir(const char *dirName,
230  XrdSfsMode Mode,
231  XrdOucErrInfo &out_error,
232  const XrdSecEntity *client,
233  const char *opaque = 0);
234 
235  int prepare( XrdSfsPrep &pargs,
236  XrdOucErrInfo &out_error,
237  const XrdSecEntity *client = 0);
238 
239  int rem(const char *path,
240  XrdOucErrInfo &out_error,
241  const XrdSecEntity *client,
242  const char *info = 0)
243  {return remove('f', path, out_error, client, info);}
244 
245  int remdir(const char *dirName,
246  XrdOucErrInfo &out_error,
247  const XrdSecEntity *client,
248  const char *info = 0)
249  {return remove('d',dirName,out_error,client,info);}
250 
251  int rename(const char *oldFileName,
252  const char *newFileName,
253  XrdOucErrInfo &out_error,
254  const XrdSecEntity *client,
255  const char *infoO = 0,
256  const char *infoN = 0);
257 
258  int stat(const char *Name,
259  struct stat *buf,
260  XrdOucErrInfo &out_error,
261  const XrdSecEntity *client,
262  const char *opaque = 0);
263 
264  int stat(const char *Name,
265  mode_t &mode,
266  XrdOucErrInfo &out_error,
267  const XrdSecEntity *client,
268  const char *opaque = 0);
269 
270  int truncate(const char *Name,
271  XrdSfsFileOffset fileOffset,
272  XrdOucErrInfo &out_error,
273  const XrdSecEntity *client = 0,
274  const char *opaque = 0);
275 // Management functions
276 //
277 virtual int Configure(XrdSysError &); // Backward Compatability
278 
279 virtual int Configure(XrdSysError &, XrdOucEnv *);
280 
281  void Config_Cluster(XrdOss *);
282 
283  void Config_Display(XrdSysError &);
284 
285  XrdOfs();
286 virtual ~XrdOfs() {} // Too complicate to delete :-)
287 
288 /******************************************************************************/
289 /* C o n f i g u r a t i o n V a l u e s */
290 /******************************************************************************/
291 
292 // Configuration values for this filesystem
293 //
294 enum {Authorize = 0x0001, // Authorization wanted
295  XAttrPlug = 0x0002, // Extended Attribute Plugin
296  isPeer = 0x0050, // Role peer
297  isProxy = 0x0020, // Role proxy
298  isManager = 0x0040, // Role manager
299  isServer = 0x0080, // Role server
300  isSuper = 0x00C0, // Role supervisor
301  isMeta = 0x0100, // Role meta + above
302  haveRole = 0x01F0, // A role is present
303  Forwarding= 0x1000, // Fowarding wanted
304  ThirdPC = 0x2000, // This party copy wanted
305  SubCluster= 0x4000 // all.subcluster directive encountered
306  }; // These are set in Options below
307 
308 int Options; // Various options
309 int myPort; // Port number being used
310 
311 // TPC related things
312 //
313 char *tpcRdrHost; // TPC redirect target or null if none
314 int tpcRdrPort; // TPC redirect target port number
315 
316 // Networking
317 //
319 
320 // Forward options
321 //
322 struct fwdOpt
323  {const char *Cmd;
324  char *Host;
325  int Port;
326  void Reset() {Cmd = 0; Port = 0;
327  if (Host) {free(Host); Host = 0;}
328  }
329  fwdOpt() : Cmd(0), Host(0), Port(0) {}
330  ~fwdOpt() {}
331  };
332 
336 struct fwdOpt fwdMV;
337 struct fwdOpt fwdRM;
340 
341 static int MaxDelay; // Max delay imposed during staging
342 static int OSSDelay; // Delay to impose when oss interface times out
343 
344 char *ConfigFN; // ->Configuration filename
345 
346 /******************************************************************************/
347 /* P r o t e c t e d I t e m s */
348 /******************************************************************************/
349 
350 protected:
351 
352 XrdOfsEvr evrObject; // Event receiver
353 XrdCmsClient *Finder; // ->Cluster Management Service
354 
355 virtual int ConfigXeq(char *var, XrdOucStream &, XrdSysError &);
356 static int Emsg(const char *, XrdOucErrInfo &, int, const char *x,
357  XrdOfsHandle *hP);
358 static int Emsg(const char *, XrdOucErrInfo &, int, const char *x,
359  const char *y="");
360 static int fsError(XrdOucErrInfo &myError, int rc);
361 const char *Split(const char *Args, const char **Opq, char *Path, int Plen);
362  int Stall(XrdOucErrInfo &, int, const char *);
363  void Unpersist(XrdOfsHandle *hP, int xcev=1);
364  char *WaitTime(int, char *, int);
365 
366 /******************************************************************************/
367 /* P r i v a t e C o n f i g u r a t i o n */
368 /******************************************************************************/
369 
370 private:
371 
372 char *myRole;
373 XrdAccAuthorize *Authorization; // ->Authorization Service
374 XrdCmsClient *Balancer; // ->Cluster Local Interface
375 XrdOfsEvs *evsObject; // ->Event Notifier
376 
377 XrdOfsPoscq *poscQ; // -> poscQ if persist on close enabled
378 char *poscLog; // -> Directory for posc recovery log
379 int poscHold; // Seconds to hold a forced close
380 short poscAuto; // 1 -> Automatic persist on close
381 char poscRsvd;
382 
383 char ossRW; // The oss r/w capability
384 
385 XrdOfsConfigPI *ofsConfig; // Plugin configurator
386 XrdCks *Cks; // Checksum manager
387 bool CksPfn; // Checksum needs a pfn
388 bool CksRdr; // Checksum may be redirected (i.e. not local)
389 char Reserved; // Reserved for future checksum stuff
390 char OssIsProxy; // !0 if we detect the oss plugin is a proxy
391 char myRType[4]; // Role type for consistency with the cms
392 
393 XrdVersionInfo *myVersion; // Version number compiled against
394 
396 XrdSysMutex ocMutex; // Global mutex for open/close
397 
398 /******************************************************************************/
399 /* O t h e r D a t a */
400 /******************************************************************************/
401 
402 // Common functions
403 //
404  int remove(const char type, const char *path,
405  XrdOucErrInfo &out_error, const XrdSecEntity *client,
406  const char *opaque);
407 
408 // Function used during Configuration
409 //
410 int ConfigDispFwd(char *buff, struct fwdOpt &Fwd);
411 int ConfigPosc(XrdSysError &Eroute);
412 int ConfigRedir(XrdSysError &Eroute, XrdOucEnv *EnvInfo);
413 int ConfigTPC(XrdSysError &Eroute);
414 char *ConfigTPCDir(XrdSysError &Eroute, const char *xPath);
415 const char *Fname(const char *);
416 int Forward(int &Result, XrdOucErrInfo &Resp, struct fwdOpt &Fwd,
417  const char *arg1=0, const char *arg2=0,
418  XrdOucEnv *Env1=0, XrdOucEnv *Env2=0);
419 int Reformat(XrdOucErrInfo &);
420 const char *theRole(int opts);
421 int xcrds(XrdOucStream &, XrdSysError &);
422 int xexp(XrdOucStream &, XrdSysError &, bool);
424 int xmaxd(XrdOucStream &, XrdSysError &);
425 int xnmsg(XrdOucStream &, XrdSysError &);
426 int xnot(XrdOucStream &, XrdSysError &);
427 int xpers(XrdOucStream &, XrdSysError &);
428 int xrole(XrdOucStream &, XrdSysError &);
429 int xtpc(XrdOucStream &, XrdSysError &);
431 int xtpcr(XrdOucStream &, XrdSysError &);
433 };
434 #endif
int ConfigPosc(XrdSysError &Eroute)
int xtpcr(XrdOucStream &, XrdSysError &)
short poscAuto
Definition: XrdOfs.hh:380
Definition: XrdOfs.hh:297
XrdOfsPoscq * poscQ
Definition: XrdOfs.hh:377
Definition: XrdOfs.hh:303
bool CksPfn
Definition: XrdOfs.hh:387
int poscHold
Definition: XrdOfs.hh:379
void Unpersist(XrdOfsHandle *hP, int xcev=1)
int xforward(XrdOucStream &, XrdSysError &)
~fwdOpt()
Definition: XrdOfs.hh:330
char * WaitTime(int, char *, int)
int xmaxd(XrdOucStream &, XrdSysError &)
XrdSfsFile * newFile(char *user=0, int MonID=0)
Definition: XrdOfs.hh:196
Definition: XrdCks.hh:48
Definition: XrdOfs.hh:304
struct fwdOpt fwdTRUNC
Definition: XrdOfs.hh:339
Definition: XrdOfsPoscq.hh:38
const char * Fname(const char *)
int exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
const char * Split(const char *Args, const char **Opq, char *Path, int Plen)
char * poscLog
Definition: XrdOfs.hh:378
static int MaxDelay
Definition: XrdOfs.hh:341
void GenFWEvent()
Definition: XrdOfs.hh:302
int read(XrdSfsFileOffset fileOffset, XrdSfsXferSize amount)
int xcrds(XrdOucStream &, XrdSysError &)
int rename(const char *oldFileName, const char *newFileName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *infoO=0, const char *infoN=0)
struct fwdOpt fwdCHMOD
Definition: XrdOfs.hh:333
int fctl(const int cmd, const char *args, XrdOucErrInfo &out_error)
Definition: XrdOfs.hh:299
XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
char * ConfigTPCDir(XrdSysError &Eroute, const char *xPath)
int dorawio
Definition: XrdOfs.hh:170
char OssIsProxy
Definition: XrdOfs.hh:390
XrdNetIF * myIF
Definition: XrdOfs.hh:318
Definition: XrdOfsEvs.hh:120
int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecEntity *client)
Definition: XrdOfs.hh:295
struct fwdOpt fwdMV
Definition: XrdOfs.hh:336
Definition: XrdOucStream.hh:45
int XrdSfsXferSize
Definition: XrdSfsInterface.hh:122
const char * theRole(int opts)
XrdSfsFileExistence
Definition: XrdSfsInterface.hh:124
Definition: XrdOfsEvr.hh:42
virtual ~XrdOfs()
Definition: XrdOfs.hh:286
XrdSfsDirectory * newDir(char *user=0, int MonID=0)
Definition: XrdOfs.hh:193
int stat(struct stat *buf)
char poscRsvd
Definition: XrdOfs.hh:381
char * Host
Definition: XrdOfs.hh:324
Definition: XrdCmsClient.hh:115
Definition: XrdOfs.hh:301
Definition: XrdNetIF.hh:48
int xnmsg(XrdOucStream &, XrdSysError &)
int Stall(XrdOucErrInfo &, int, const char *)
Definition: XrdAccAuthorize.hh:64
struct fwdOpt fwdRM
Definition: XrdOfs.hh:337
XrdOfsHandle * oh
Definition: XrdOfs.hh:168
static int fsError(XrdOucErrInfo &myError, int rc)
int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client, const char *opaque=0)
friend class XrdOfsDirectory
Definition: XrdOfs.hh:186
virtual ~XrdOfsDirectory()
Definition: XrdOfs.hh:84
XrdCmsClient * Balancer
Definition: XrdOfs.hh:374
int truncate(const char *Name, XrdSfsFileOffset fileOffset, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
Definition: XrdSysError.hh:89
int autoStat(struct stat *buf)
int stat(const char *Name, struct stat *buf, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
Definition: XrdOfs.hh:305
const char * Cmd
Definition: XrdOfs.hh:323
Definition: XrdOfsTPC.hh:47
int Reformat(XrdOucErrInfo &)
XrdCmsClient * Finder
Definition: XrdOfs.hh:353
char * fname
Definition: XrdOfs.hh:88
virtual int ConfigXeq(char *var, XrdOucStream &, XrdSysError &)
int open(const char *dirName, const XrdSecEntity *client, const char *opaque=0)
const char * nextEntry()
XrdSysMutex ocMutex
Definition: XrdOfs.hh:396
Definition: XrdOfsHandle.hh:125
XrdOfsDirectory(const char *user, int MonID)
Definition: XrdOfs.hh:78
int xtpcal(XrdOucStream &, XrdSysError &)
Definition: XrdOfs.hh:298
Definition: XrdSysPthread.hh:165
const char * Name()
Definition: XrdOfsHandle.hh:148
char * ConfigFN
Definition: XrdOfs.hh:344
long long XrdSfsFileOffset
Definition: XrdSfsInterface.hh:119
void Reset()
Definition: XrdOfs.hh:326
int xtpc(XrdOucStream &, XrdSysError &)
XrdVersionInfo * myVersion
Definition: XrdOfs.hh:393
int mkdir(const char *dirName, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
const char * tident
Definition: XrdOfs.hh:162
int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition: XrdOfs.hh:239
XrdSfsXferSize readv(XrdOucIOVec *readV, int readCount)
char viaDel
Definition: XrdOfs.hh:171
int xnot(XrdOucStream &, XrdSysError &)
char Reserved
Definition: XrdOfs.hh:389
char ossRW
Definition: XrdOfs.hh:383
int truncate(XrdSfsFileOffset fileOffset)
Definition: XrdOucErrInfo.hh:97
~XrdOfsFile()
Definition: XrdOfs.hh:159
Definition: XrdOfsConfigPI.hh:53
Definition: XrdOucEnv.hh:41
XrdOfsTPC * myTPC
Definition: XrdOfs.hh:169
const char * getVersion()
Definition: XrdOucIOVec.hh:40
XrdOfsEvr evrObject
Definition: XrdOfs.hh:352
XrdCks * Cks
Definition: XrdOfs.hh:386
int chksum(csFunc Func, const char *csName, const char *Path, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
static int Emsg(const char *, XrdOucErrInfo &, int, const char *x, XrdOfsHandle *hP)
int ConfigDispFwd(char *buff, struct fwdOpt &Fwd)
int xpers(XrdOucStream &, XrdSysError &)
char dname[MAXNAMLEN]
Definition: XrdOfs.hh:93
int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition: XrdOfs.hh:245
Definition: XrdOfs.hh:184
char * myRole
Definition: XrdOfs.hh:372
Definition: XrdOssApi.hh:51
int getMmap(void **Addr, off_t &Size)
int getStats(char *buff, int blen)
struct fwdOpt fwdMKPATH
Definition: XrdOfs.hh:335
void copyError(XrdOucErrInfo &einfo)
Definition: XrdOfs.hh:72
int getCXinfo(char cxtype[4], int &cxrsz)
Definition: XrdSysLogger.hh:52
static int OSSDelay
Definition: XrdOfs.hh:342
int chmod(const char *Name, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
XrdOfsEvs * evsObject
Definition: XrdOfs.hh:375
XrdOfsFile(const char *user, int MonID)
char * tpcRdrHost
Definition: XrdOfs.hh:313
#define stat(a, b)
Definition: XrdPosix.hh:96
void Config_Cluster(XrdOss *)
int xexp(XrdOucStream &, XrdSysError &, bool)
int xtrace(XrdOucStream &, XrdSysError &)
const char * tident
Definition: XrdOfs.hh:87
Definition: XrdOfs.hh:102
int xrole(XrdOucStream &, XrdSysError &)
char myRType[4]
Definition: XrdOfs.hh:391
struct fwdOpt fwdMKDIR
Definition: XrdOfs.hh:334
int XrdSfsMode
Definition: XrdSfsInterface.hh:121
int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &out_error, const XrdSecEntity *client=0)
virtual int Configure(XrdSysError &)
Definition: XrdOss.hh:173
int ConfigTPC(XrdSysError &Eroute)
Definition: XrdOfs.hh:322
int myPort
Definition: XrdOfs.hh:309
Definition: XrdOss.hh:59
XrdOfsConfigPI * ofsConfig
Definition: XrdOfs.hh:385
Definition: XrdOfs.hh:60
Definition: XrdOfs.hh:296
bool CksRdr
Definition: XrdOfs.hh:388
int atEOF
Definition: XrdOfs.hh:92
int Forward(int &Result, XrdOucErrInfo &Resp, struct fwdOpt &Fwd, const char *arg1=0, const char *arg2=0, XrdOucEnv *Env1=0, XrdOucEnv *Env2=0)
Definition: XrdOfs.hh:294
friend class XrdOfsFile
Definition: XrdOfs.hh:187
int Options
Definition: XrdOfs.hh:308
Definition: XrdSecEntity.hh:51
XrdOssDF * dp
Definition: XrdOfs.hh:91
int tpcRdrPort
Definition: XrdOfs.hh:314
Definition: XrdSfsAio.hh:57
XrdAccAuthorize * Authorization
Definition: XrdOfs.hh:373
&lt; Prepare parameters
Definition: XrdSfsInterface.hh:157
void Config_Display(XrdSysError &)
struct fwdOpt fwdRMDIR
Definition: XrdOfs.hh:338
Definition: XrdOfs.hh:300
int XrdSfsFileOpenMode
Definition: XrdSfsInterface.hh:120
fwdOpt()
Definition: XrdOfs.hh:329
const char * FName()
Definition: XrdOfs.hh:125
int Port
Definition: XrdOfs.hh:325
static XrdOfsHandle * dummyHandle
Definition: XrdOfs.hh:395
const char * FName()
Definition: XrdOfs.hh:74
int ConfigRedir(XrdSysError &Eroute, XrdOucEnv *EnvInfo)