xrootd
XrdFrmConfig.hh
Go to the documentation of this file.
1 #ifndef _XRD_FRMCONFIG_H
2 #define _XRD_FRMCONFIG_H
3 /******************************************************************************/
4 /* */
5 /* X r d F r m C o n f i g . h h */
6 /* */
7 /* (C) 2009 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 Deprtment 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 <unistd.h>
34 
35 #include "XrdOss/XrdOssSpace.hh"
36 
37 class XrdCks;
38 class XrdNetCmsNotify;
39 class XrdOfsConfigPI;
40 class XrdOss;
41 class XrdOucMsubs;
42 class XrdOucName2Name;
43 class XrdOucProg;
44 class XrdOucStream;
45 class XrdOucTList;
46 class XrdSysLogger;
47 
48 class XrdFrmConfigSE;
49 
50 struct XrdVersionInfo;
51 struct stat;
52 
54 {
55 public:
56 
57 const char *myProg;
58 const char *myName;
59 const char *myInst;
60 const char *mySite;
61 const char *myFrmid;
62 const char *myFrmID;
63 const char *lockFN;
64 char *AdminPath;
65 char *QPath;
66 char *PidPath;
67 char *myInstance;
68 char *StopPurge;
69 char *MSSCmd;
71 
72 struct Cmd
73  {const char *Desc;
74  char *theCmd;
76  int TLimit;
77  int Opts;
78  } xfrCmd[4];
79 static const int cmdAlloc = 0x0001;
80 static const int cmdMDP = 0x0002;
81 static const int cmdStats = 0x0004;
82 static const int cmdXPD = 0x0008;
83 static const int cmdRME = 0x0010;
84 
85 int xfrIN;
86 int xfrOUT;
87 
88 XrdOfsConfigPI *OfsCfg; // -> Plugin Configurator
89 XrdCks *CksMan; // -> Checksum Manager
90 XrdOucName2Name *the_N2N; // -> File mapper object
93 uid_t myUid;
94 gid_t myGid;
95 long long cmdFree;
96 int cmdHold;
98 int isAgent;
99 int xfrMax;
106 int isOTO;
107 int Fix;
108 int Test;
111 int runOld; // Backward compatability
112 int runNew; // Forward compatability
113 int nonXA; // Backward compatability for noXA spaces
114 int hasCache; // Backward compatability for noXA spaces
115 char **vectArg;
118 
119 struct VPInfo
121  char *Name;
123  int Val;
124  VPInfo(char *n, int m=0, struct VPInfo *p=0)
125  : Next(p), Name(strdup(n)), Dir(0), Val(m) {}
126  ~VPInfo() {} // Deletes are not important
127  } *VPList;
128 VPInfo *pathList; // Migr/Purg list of paths
129 XrdOucTList *spacList; // Migr/Purg list of spaces
130 
131 struct Policy
132  {long long minFree;
133  long long maxFree;
134  int Hold;
135  int Ext;
138  Policy(const char *snv, long long minV, long long maxV,
139  int hV, int xV) : minFree(minV), maxFree(maxV),
140  Hold(hV), Ext(xV), Next(0) {strcpy(Sname, snv);}
141  ~Policy() {}
142  };
144 
146 int pVecNum; // Number of policy variables
147 static const int pVecMax=8;
148 char pVec[pVecMax];
149 char *pProg;
150 char *xfrFdir;
152 
155 
156 int Configure(int argc, char **argv, int (*ppf)());
157 
158 int LocalPath (const char *oldp, char *newp, int newpsz);
159 
160 int LogicalPath(const char *oldp, char *newp, int newpsz);
161 
162 int NeedsCTA(const char *Lfn);
163 
164 unsigned
165 long long PathOpts(const char *Lfn);
166 
167 int RemotePath (const char *oldp, char *newp, int newpsz);
168 
169 XrdOucTList *Space(const char *Name, const char *Path=0);
170 
171 int Stat(const char *xLfn, const char *xPfn, struct stat *buff);
172 
174 
175  XrdFrmConfig(SubSys ss, const char *vopts, const char *uinfo);
177 
178 private:
179 XrdOucMsubs *ConfigCmd(const char *cname, char *cdata);
180 int ConfigMum(XrdFrmConfigSE &theSE);
181 int ConfigN2N();
182 int ConfigMon(int isxfr);
183 int ConfigMP(const char *);
184 int ConfigMss();
185 int ConfigOTO(char *Parms);
186 int ConfigPaths();
187 void ConfigPF(const char *pFN);
188 int ConfigProc();
189 int ConfigXeq(char *var, int mbok);
190 int ConfigXfr();
191 int getTime(const char *, const char *, int *, int mnv=-1, int mxv=-1);
192 int Grab(const char *var, char **Dest, int nosubs);
193 XrdOucTList *InsertPL(XrdOucTList *pP, const char *Path, int Plen, int isRW);
194 void InsertXD(const char *Path);
195 void Usage(int rc);
196 int xapath();
197 int xcks();
198 int xcnsd();
199 int xcopy();
200 int xcopy(int &TLim);
201 int xcmax();
202 int xdpol();
203 int xitm(const char *What, int &tDest);
204 int xnml();
205 int xmon();
206 int xpol();
207 int xpolprog();
208 int xqchk();
209 int xsit();
210 int xspace(int isPrg=0, int isXA=1);
211 void xspaceBuild(char *grp, char *fn, int isxa);
212 int xxfr();
213 
214 char *ConfigFN;
215 char *LocalRoot;
218 XrdVersionInfo *myVersion;
219 
220 bool doStatPF;
221 int plnDTS;
222 const char *pfxDTS;
223 const char *vOpts;
224 const char *uInfo;
225 char *N2N_Lib; // -> Name2Name Library Path
226 char *N2N_Parms; // -> Name2Name Object Parameters
227 XrdOucName2Name *lcl_N2N; // -> File mapper for local files
228 XrdOucName2Name *rmt_N2N; // -> File mapper for remote files
230 };
231 namespace XrdFrm
232 {
233 extern XrdFrmConfig Config;
234 }
235 #endif
XrdOss
Definition: XrdOss.hh:173
XrdFrmConfig::VPInfo::Dir
XrdOucTList * Dir
Definition: XrdFrmConfig.hh:122
XrdFrmConfig::PP_ctime
@ PP_ctime
Definition: XrdFrmConfig.hh:153
XrdFrmConfig::NeedsCTA
int NeedsCTA(const char *Lfn)
XrdFrmConfig::cmdStats
static const int cmdStats
Definition: XrdFrmConfig.hh:81
XrdFrmConfig::ssXfr
@ ssXfr
Definition: XrdFrmConfig.hh:173
XrdFrm
Definition: XrdFrmAdmin.hh:245
XrdFrmConfig::InsertPL
XrdOucTList * InsertPL(XrdOucTList *pP, const char *Path, int Plen, int isRW)
XrdFrmConfig::VPInfo::~VPInfo
~VPInfo()
Definition: XrdFrmConfig.hh:126
XrdFrmConfig::PPVar
PPVar
Definition: XrdFrmConfig.hh:153
XrdFrmConfig::CksMan
XrdCks * CksMan
Definition: XrdFrmConfig.hh:89
XrdFrmConfig::cmdXPD
static const int cmdXPD
Definition: XrdFrmConfig.hh:82
XrdFrmConfig::myProg
const char * myProg
Definition: XrdFrmConfig.hh:57
XrdFrmConfig::FailHold
int FailHold
Definition: XrdFrmConfig.hh:100
XrdFrmConfig::PP_pfn
@ PP_pfn
Definition: XrdFrmConfig.hh:154
XrdFrmConfig::PP_fsize
@ PP_fsize
Definition: XrdFrmConfig.hh:153
XrdFrmConfig::cFile
XrdOucStream * cFile
Definition: XrdFrmConfig.hh:217
XrdOucProg
Definition: XrdOucProg.hh:37
XrdFrmConfig::LocalPath
int LocalPath(const char *oldp, char *newp, int newpsz)
XrdFrmConfig::Cmd::theCmd
char * theCmd
Definition: XrdFrmConfig.hh:74
XrdFrmConfig::ssMigr
@ ssMigr
Definition: XrdFrmConfig.hh:173
XrdOfsConfigPI
Definition: XrdOfsConfigPI.hh:55
XrdOssSpace.hh
XrdNetCmsNotify
Definition: XrdNetCmsNotify.hh:36
XrdFrmConfig::ConfigFN
char * ConfigFN
Definition: XrdFrmConfig.hh:214
XrdFrmConfig::lcl_N2N
XrdOucName2Name * lcl_N2N
Definition: XrdFrmConfig.hh:227
XrdFrmConfig::myGid
gid_t myGid
Definition: XrdFrmConfig.hh:94
XrdFrmConfig::ConfigPF
void ConfigPF(const char *pFN)
XrdFrmConfig::xapath
int xapath()
XrdFrmConfig::Usage
void Usage(int rc)
XrdFrmConfig::ConfigMon
int ConfigMon(int isxfr)
XrdFrmConfig::InsertXD
void InsertXD(const char *Path)
XrdFrmConfig::N2N_Lib
char * N2N_Lib
Definition: XrdFrmConfig.hh:225
XrdFrmConfig::isOTO
int isOTO
Definition: XrdFrmConfig.hh:106
XrdFrmConfig::hasCache
int hasCache
Definition: XrdFrmConfig.hh:114
XrdFrmConfig::Test
int Test
Definition: XrdFrmConfig.hh:108
XrdFrmConfig::ssAdmin
@ ssAdmin
Definition: XrdFrmConfig.hh:173
XrdFrm::Config
XrdFrmConfig Config
XrdFrmConfig::VPInfo::VPInfo
VPInfo(char *n, int m=0, struct VPInfo *p=0)
Definition: XrdFrmConfig.hh:124
XrdFrmConfig::RemoteRoot
char * RemoteRoot
Definition: XrdFrmConfig.hh:216
XrdFrmConfig::xcopy
int xcopy()
XrdFrmConfig::ConfigMss
int ConfigMss()
XrdFrmConfig::nonXA
int nonXA
Definition: XrdFrmConfig.hh:113
XrdFrmConfig::xitm
int xitm(const char *What, int &tDest)
XrdFrmConfig::ConfigN2N
int ConfigN2N()
XrdFrmConfig::myInst
const char * myInst
Definition: XrdFrmConfig.hh:59
XrdFrmConfig::RemotePath
int RemotePath(const char *oldp, char *newp, int newpsz)
XrdFrmConfig::ConfigMum
int ConfigMum(XrdFrmConfigSE &theSE)
XrdOucMsubs
Definition: XrdOucMsubs.hh:90
XrdFrmConfig::ossFS
XrdOss * ossFS
Definition: XrdFrmConfig.hh:91
XrdFrmConfig::pathList
VPInfo * pathList
Definition: XrdFrmConfig.hh:128
XrdFrmConfig::plnDTS
int plnDTS
Definition: XrdFrmConfig.hh:221
XrdFrmConfig::myFrmid
const char * myFrmid
Definition: XrdFrmConfig.hh:61
XrdFrmConfig::PP_sname
@ PP_sname
Definition: XrdFrmConfig.hh:154
XrdFrmConfig::Space
XrdOucTList * Space(const char *Name, const char *Path=0)
XrdFrmConfig::pProg
char * pProg
Definition: XrdFrmConfig.hh:149
XrdFrmConfig::xfrMax
int xfrMax
Definition: XrdFrmConfig.hh:99
XrdFrmConfig::Policy::Ext
int Ext
Definition: XrdFrmConfig.hh:135
XrdFrmConfig::LogicalPath
int LogicalPath(const char *oldp, char *newp, int newpsz)
XrdFrmConfig::numcArg
int numcArg
Definition: XrdFrmConfig.hh:117
XrdFrmConfig::Policy::Sname
char Sname[XrdOssSpace::minSNbsz]
Definition: XrdFrmConfig.hh:137
XrdFrmConfig::cmdMDP
static const int cmdMDP
Definition: XrdFrmConfig.hh:80
XrdFrmConfig::runNew
int runNew
Definition: XrdFrmConfig.hh:112
XrdFrmConfig::Cmd::theVec
XrdOucMsubs * theVec
Definition: XrdFrmConfig.hh:75
XrdFrmConfig::rmt_N2N
XrdOucName2Name * rmt_N2N
Definition: XrdFrmConfig.hh:228
XrdOucStream
Definition: XrdOucStream.hh:45
XrdFrmConfig::Policy::Policy
Policy(const char *snv, long long minV, long long maxV, int hV, int xV)
Definition: XrdFrmConfig.hh:138
XrdFrmConfig::SubSys
SubSys
Definition: XrdFrmConfig.hh:173
XrdFrmConfig::ConfigXeq
int ConfigXeq(char *var, int mbok)
XrdFrmConfig::xspaceBuild
void xspaceBuild(char *grp, char *fn, int isxa)
XrdFrmConfig::myFrmID
const char * myFrmID
Definition: XrdFrmConfig.hh:62
XrdCks
Definition: XrdCks.hh:48
XrdFrmConfig::xdpol
int xdpol()
XrdFrmConfig::StopPurge
char * StopPurge
Definition: XrdFrmConfig.hh:68
XrdFrmConfig::pfxDTS
const char * pfxDTS
Definition: XrdFrmConfig.hh:222
XrdFrmConfig::PP_fname
@ PP_fname
Definition: XrdFrmConfig.hh:153
XrdFrmConfig::VPInfo::Name
char * Name
Definition: XrdFrmConfig.hh:121
XrdFrmConfig::PidPath
char * PidPath
Definition: XrdFrmConfig.hh:66
XrdFrmConfig::Policy::Next
Policy * Next
Definition: XrdFrmConfig.hh:136
XrdFrmConfig::Cmd
Definition: XrdFrmConfig.hh:72
XrdOssSpace::minSNbsz
static const int minSNbsz
Definition: XrdOssSpace.hh:44
XrdFrmConfig::WaitMigr
int WaitMigr
Definition: XrdFrmConfig.hh:104
XrdFrmConfig::Fix
int Fix
Definition: XrdFrmConfig.hh:107
XrdFrmConfig::AdminPath
char * AdminPath
Definition: XrdFrmConfig.hh:64
XrdFrmConfig::xqchk
int xqchk()
XrdFrmConfig::xpol
int xpol()
XrdFrmConfig::xfrFdir
char * xfrFdir
Definition: XrdFrmConfig.hh:150
XrdFrmConfig::PP_usage
@ PP_usage
Definition: XrdFrmConfig.hh:154
XrdFrmConfig::ssPurg
@ ssPurg
Definition: XrdFrmConfig.hh:173
XrdFrmConfig::PP_fspace
@ PP_fspace
Definition: XrdFrmConfig.hh:153
XrdFrmConfig::cmdRME
static const int cmdRME
Definition: XrdFrmConfig.hh:83
XrdFrmConfig::xcmax
int xcmax()
XrdFrmConfig::ConfigCmd
XrdOucMsubs * ConfigCmd(const char *cname, char *cdata)
XrdFrmConfig::MSSCmd
char * MSSCmd
Definition: XrdFrmConfig.hh:69
XrdFrmConfig::Policy
Definition: XrdFrmConfig.hh:131
XrdFrmConfig::cmsPath
XrdNetCmsNotify * cmsPath
Definition: XrdFrmConfig.hh:92
XrdFrmConfig
Definition: XrdFrmConfig.hh:53
XrdFrmConfig::Verbose
int Verbose
Definition: XrdFrmConfig.hh:110
XrdFrmConfig::dfltPolicy
Policy dfltPolicy
Definition: XrdFrmConfig.hh:143
XrdSysLogger
Definition: XrdSysLogger.hh:52
XrdFrmConfig::VPInfo
Definition: XrdFrmConfig.hh:119
XrdFrmConfig::Cmd::TLimit
int TLimit
Definition: XrdFrmConfig.hh:76
XrdFrmConfig::PP_tspace
@ PP_tspace
Definition: XrdFrmConfig.hh:154
XrdFrmConfig::spacList
XrdOucTList * spacList
Definition: XrdFrmConfig.hh:129
XrdFrmConfig::ssPstg
@ ssPstg
Definition: XrdFrmConfig.hh:173
XrdFrmConfig::ConfigMP
int ConfigMP(const char *)
XrdFrmConfig::pVecNum
int pVecNum
Definition: XrdFrmConfig.hh:146
XrdFrmConfig::WaitPurge
int WaitPurge
Definition: XrdFrmConfig.hh:103
XrdFrmConfig::haveCMS
int haveCMS
Definition: XrdFrmConfig.hh:105
XrdFrmConfig::lockFN
const char * lockFN
Definition: XrdFrmConfig.hh:63
XrdFrmConfig::getTime
int getTime(const char *, const char *, int *, int mnv=-1, int mxv=-1)
XrdFrmConfig::cmdFree
long long cmdFree
Definition: XrdFrmConfig.hh:95
XrdFrmConfig::Grab
int Grab(const char *var, char **Dest, int nosubs)
XrdFrmConfig::xfrOUT
int xfrOUT
Definition: XrdFrmConfig.hh:86
XrdFrmConfig::myVersion
XrdVersionInfo * myVersion
Definition: XrdFrmConfig.hh:218
XrdFrmConfig::xspace
int xspace(int isPrg=0, int isXA=1)
XrdFrmConfig::cmdAlloc
static const int cmdAlloc
Definition: XrdFrmConfig.hh:79
XrdFrmConfig::ssID
SubSys ssID
Definition: XrdFrmConfig.hh:229
XrdFrmConfig::xfrIN
int xfrIN
Definition: XrdFrmConfig.hh:85
XrdFrmConfig::vOpts
const char * vOpts
Definition: XrdFrmConfig.hh:223
XrdFrmConfig::pVec
char pVec[pVecMax]
Definition: XrdFrmConfig.hh:148
XrdFrmConfig::N2N_Parms
char * N2N_Parms
Definition: XrdFrmConfig.hh:226
XrdOucName2Name
Definition: XrdOucName2Name.hh:48
XrdFrmConfig::LocalRoot
char * LocalRoot
Definition: XrdFrmConfig.hh:215
XrdFrmConfig::XrdFrmConfig
XrdFrmConfig(SubSys ss, const char *vopts, const char *uinfo)
XrdFrmConfig::xsit
int xsit()
XrdFrmConfig::Cmd::Desc
const char * Desc
Definition: XrdFrmConfig.hh:73
XrdFrmConfig::xfrFdln
int xfrFdln
Definition: XrdFrmConfig.hh:151
XrdFrmConfig::ConfigProc
int ConfigProc()
XrdFrmConfig::myName
const char * myName
Definition: XrdFrmConfig.hh:58
XrdFrmConfig::myUid
uid_t myUid
Definition: XrdFrmConfig.hh:93
XrdFrmConfig::xxfr
int xxfr()
XrdFrmConfig::cmdHold
int cmdHold
Definition: XrdFrmConfig.hh:96
XrdFrmConfig::Policy::maxFree
long long maxFree
Definition: XrdFrmConfig.hh:133
XrdFrmConfig::VPList
struct XrdFrmConfig::VPInfo * VPList
XrdFrmConfig::TrackDC
int TrackDC
Definition: XrdFrmConfig.hh:109
XrdFrmConfig::WaitQChk
int WaitQChk
Definition: XrdFrmConfig.hh:102
XrdFrmConfig::ConfigXfr
int ConfigXfr()
stat
#define stat(a, b)
Definition: XrdPosix.hh:96
XrdFrmConfig::Policy::Hold
int Hold
Definition: XrdFrmConfig.hh:134
XrdFrmConfig::uInfo
const char * uInfo
Definition: XrdFrmConfig.hh:224
XrdFrmConfig::xnml
int xnml()
XrdFrmConfig::AdminMode
int AdminMode
Definition: XrdFrmConfig.hh:97
XrdFrmConfig::Stat
int Stat(const char *xLfn, const char *xPfn, struct stat *buff)
XrdFrmConfig::isAgent
int isAgent
Definition: XrdFrmConfig.hh:98
XrdFrmConfig::ConfigOTO
int ConfigOTO(char *Parms)
XrdFrmConfig::xmon
int xmon()
XrdFrmConfig::the_N2N
XrdOucName2Name * the_N2N
Definition: XrdFrmConfig.hh:90
XrdFrmConfig::MSSProg
XrdOucProg * MSSProg
Definition: XrdFrmConfig.hh:70
XrdFrmConfig::Policy::~Policy
~Policy()
Definition: XrdFrmConfig.hh:141
XrdFrmConfig::ConfigPaths
int ConfigPaths()
XrdFrmConfig::VPInfo::Next
VPInfo * Next
Definition: XrdFrmConfig.hh:120
XrdFrmConfig::QPath
char * QPath
Definition: XrdFrmConfig.hh:65
XrdFrmConfig::Configure
int Configure(int argc, char **argv, int(*ppf)())
XrdFrmConfig::xpolprog
int xpolprog()
XrdFrmConfig::Policy::minFree
long long minFree
Definition: XrdFrmConfig.hh:132
XrdFrmConfig::nextArg
int nextArg
Definition: XrdFrmConfig.hh:116
XrdFrmConfig::PathOpts
unsigned long long PathOpts(const char *Lfn)
XrdFrmConfig::dirHold
int dirHold
Definition: XrdFrmConfig.hh:145
XrdFrmConfig::PP_atime
@ PP_atime
Definition: XrdFrmConfig.hh:153
XrdFrmConfig::runOld
int runOld
Definition: XrdFrmConfig.hh:111
XrdFrmConfig::doStatPF
bool doStatPF
Definition: XrdFrmConfig.hh:220
XrdFrmConfig::pVecMax
static const int pVecMax
Definition: XrdFrmConfig.hh:147
XrdFrmConfig::PP_mtime
@ PP_mtime
Definition: XrdFrmConfig.hh:154
XrdFrmConfig::mySite
const char * mySite
Definition: XrdFrmConfig.hh:60
XrdFrmConfig::xfrCmd
struct XrdFrmConfig::Cmd xfrCmd[4]
XrdFrmConfig::VPInfo::Val
int Val
Definition: XrdFrmConfig.hh:123
XrdFrmConfig::myInstance
char * myInstance
Definition: XrdFrmConfig.hh:67
XrdFrmConfig::xcnsd
int xcnsd()
XrdOucTList
Definition: XrdOucTList.hh:41
XrdFrmConfig::~XrdFrmConfig
~XrdFrmConfig()
Definition: XrdFrmConfig.hh:176
XrdFrmConfig::vectArg
char ** vectArg
Definition: XrdFrmConfig.hh:115
XrdFrmConfig::IdleHold
int IdleHold
Definition: XrdFrmConfig.hh:101
XrdFrmConfig::Cmd::Opts
int Opts
Definition: XrdFrmConfig.hh:77
XrdFrmConfig::OfsCfg
XrdOfsConfigPI * OfsCfg
Definition: XrdFrmConfig.hh:88
XrdFrmConfig::xcks
int xcks()