00001 #ifndef __SEC_PMANAGER_HH__
00002 #define __SEC_PMANAGER_HH__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <sys/socket.h>
00016
00017 #include "XrdSec/XrdSecInterface.hh"
00018 #include "XrdSys/XrdSysPthread.hh"
00019
00020 class XrdOucErrInfo;
00021 class XrdSecProtList;
00022 class XrdSecProtocol;
00023
00024 typedef int XrdSecPMask_t;
00025
00026 #define PROTPARMS const char, const char *, const struct sockaddr &, \
00027 const char *, XrdOucErrInfo *
00028
00029 class XrdSecPManager
00030 {
00031 public:
00032
00033 XrdSecPMask_t Find(const char *pid,
00034 char **parg=0);
00035
00036 XrdSecProtocol *Get(const char *hname,
00037 const sockaddr &netaddr,
00038 const char *pname,
00039 XrdOucErrInfo *erp);
00040
00041 XrdSecProtocol *Get (const char *hname,
00042 const struct sockaddr &netaddr,
00043 XrdSecParameters &secparm);
00044
00045 int Load(XrdOucErrInfo *eMsg,
00046 const char pmode,
00047 const char *pid,
00048 const char *parg,
00049 const char *path)
00050 {return (0 != ldPO(eMsg, pmode, pid, parg, path));}
00051
00052 void setDebug(int dbg) {DebugON = dbg;}
00053
00054 XrdSecPManager(int dbg=0)
00055 {First = Last = 0; DebugON = dbg; protnum = 1;}
00056 ~XrdSecPManager() {}
00057
00058 private:
00059
00060 XrdSecProtList *Add(XrdOucErrInfo *eMsg, const char *pid,
00061 XrdSecProtocol *(*ep)(PROTPARMS), const char *parg);
00062 XrdSecProtList *ldPO(XrdOucErrInfo *eMsg,
00063 const char pmode,
00064 const char *pid,
00065 const char *parg=0,
00066 const char *spath=0);
00067 XrdSecProtList *Lookup(const char *pid);
00068
00069 XrdSecPMask_t protnum;
00070 XrdSysMutex myMutex;
00071 XrdSecProtList *First;
00072 XrdSecProtList *Last;
00073 int DebugON;
00074 };
00075 #endif