xrootd
|
#include <XrdSecTLayer.hh>
Classes | |
struct | TLayerRR |
Public Types | |
enum | Initiator { isClient = 0, isServer } |
Public Member Functions | |
XrdSecTLayer (const char *pName, Initiator who1st=isClient) | |
virtual void | secClient (int theFD, XrdOucErrInfo *einfo)=0 |
virtual void | secServer (int theFD, XrdOucErrInfo *einfo)=0 |
virtual void | Delete ()=0 |
virtual int | Authenticate (XrdSecCredentials *cred, XrdSecParameters **parms, XrdOucErrInfo *einfo=0) |
virtual XrdSecCredentials * | getCredentials (XrdSecParameters *parm=0, XrdOucErrInfo *einfo=0) |
void | secXeq () |
Protected Member Functions | |
virtual | ~XrdSecTLayer () |
Protected Attributes | |
pthread_t | secTid |
Private Member Functions | |
int | bootUp (Initiator Who) |
int | Read (int FD, char *Buff, int rdLen) |
int | secDone () |
void | secDrain () |
const char * | secErrno (int rc, char *buff) |
void | secError (const char *Msg, int rc, int iserrno=1) |
Private Attributes | |
XrdSysSemaphore | mySem |
Initiator | Starter |
Initiator | Responder |
int | myFD |
int | urFD |
int | Tmax |
int | Tcur |
int | eCode |
char * | eText |
XrdOucErrInfo * | eDest |
struct XrdSecTLayer::TLayerRR | Hdr |
Static Private Attributes | |
static const int | buffSz = 8192 |
static const int | hdrSz = sizeof(TLayerRR) |
static const int | dataSz = buffSz - hdrSz |
virtual XrdSecTLayer::~XrdSecTLayer | ( | ) | [inline, protected, virtual] |
int XrdSecTLayer::Authenticate | ( | XrdSecCredentials * | cred, |
XrdSecParameters ** | parms, | ||
XrdOucErrInfo * | einfo = 0 |
||
) | [virtual] |
Implements XrdSecProtocol.
References bootUp(), XrdSecBuffer::buffer, dataSz, ECONNRESET, eDest, XrdSecTLayer::TLayerRR::endData, Hdr, hdrSz, isServer, myFD, XrdSecTLayer::TLayerRR::protCode, Read(), secDone(), secError(), XrdSecBuffer::size, Tcur, Tmax, write(), and XrdSecTLayer::TLayerRR::xfrData.
int XrdSecTLayer::bootUp | ( | Initiator | Who | ) | [private] |
References close, F_SETFD, fcntl(), FD_CLOEXEC, myFD, Responder, XrdSysThread::Run(), secError(), secTid, urFD, XrdSecTLayerBootUp(), and XRDSYSTHREAD_HOLD.
Referenced by Authenticate(), and getCredentials().
virtual void XrdSecTLayer::Delete | ( | ) | [pure virtual] |
Implements XrdSecProtocol.
Implemented in XrdSecProtocolssl.
XrdSecCredentials * XrdSecTLayer::getCredentials | ( | XrdSecParameters * | parm = 0 , |
XrdOucErrInfo * | einfo = 0 |
||
) | [virtual] |
Implements XrdSecProtocol.
References bootUp(), XrdSecBuffer::buffer, dataSz, ECONNRESET, eDest, XrdSecTLayer::TLayerRR::endData, Hdr, hdrSz, isClient, isServer, myFD, XrdSecTLayer::TLayerRR::protCode, Read(), secDone(), secError(), XrdSecBuffer::size, Starter, Tcur, Tmax, write(), and XrdSecTLayer::TLayerRR::xfrData.
int XrdSecTLayer::Read | ( | int | FD, |
char * | Buff, | ||
int | rdLen | ||
) | [private] |
References poll(), POLLHUP, POLLIN, POLLRDNORM, read(), and Tcur.
Referenced by Authenticate(), and getCredentials().
virtual void XrdSecTLayer::secClient | ( | int | theFD, |
XrdOucErrInfo * | einfo | ||
) | [pure virtual] |
Implemented in XrdSecProtocolssl.
Referenced by secXeq().
int XrdSecTLayer::secDone | ( | ) | [private] |
References eCode, eText, secDrain(), and secError().
Referenced by Authenticate(), and getCredentials().
void XrdSecTLayer::secDrain | ( | ) | [private] |
References close, myFD, mySem, and XrdSysSemaphore::Wait().
Referenced by secDone(), and secError().
const char * XrdSecTLayer::secErrno | ( | int | rc, |
char * | buff | ||
) | [private] |
Referenced by secError().
void XrdSecTLayer::secError | ( | const char * | Msg, |
int | rc, | ||
int | iserrno = 1 |
||
) | [private] |
References eDest, Hdr, XrdSecTLayer::TLayerRR::protName, secDrain(), secErrno(), and XrdOucErrInfo::setErrInfo().
Referenced by Authenticate(), bootUp(), getCredentials(), and secDone().
virtual void XrdSecTLayer::secServer | ( | int | theFD, |
XrdOucErrInfo * | einfo | ||
) | [pure virtual] |
Implemented in XrdSecProtocolssl.
Referenced by secXeq().
void XrdSecTLayer::secXeq | ( | ) |
References close, eCode, eText, XrdOucErrInfo::getErrText(), isClient, mySem, XrdSysSemaphore::Post(), Responder, secClient(), secServer(), and urFD.
Referenced by XrdSecTLayerBootUp().
const int XrdSecTLayer::buffSz = 8192 [static, private] |
const int XrdSecTLayer::dataSz = buffSz - hdrSz [static, private] |
Referenced by Authenticate(), and getCredentials().
int XrdSecTLayer::eCode [private] |
XrdOucErrInfo* XrdSecTLayer::eDest [private] |
Referenced by Authenticate(), getCredentials(), and secError().
char* XrdSecTLayer::eText [private] |
Referenced by secDone(), secXeq(), and ~XrdSecTLayer().
struct XrdSecTLayer::TLayerRR XrdSecTLayer::Hdr [private] |
Referenced by Authenticate(), getCredentials(), secError(), and XrdSecTLayer().
const int XrdSecTLayer::hdrSz = sizeof(TLayerRR) [static, private] |
Referenced by Authenticate(), and getCredentials().
int XrdSecTLayer::myFD [private] |
Referenced by Authenticate(), bootUp(), getCredentials(), secDrain(), and ~XrdSecTLayer().
XrdSysSemaphore XrdSecTLayer::mySem [private] |
Referenced by secDrain(), and secXeq().
Initiator XrdSecTLayer::Responder [private] |
pthread_t XrdSecTLayer::secTid [protected] |
Referenced by bootUp(), and XrdSecProtocolssl::Delete().
Initiator XrdSecTLayer::Starter [private] |
Referenced by getCredentials().
int XrdSecTLayer::Tcur [private] |
Referenced by Authenticate(), getCredentials(), and Read().
int XrdSecTLayer::Tmax [private] |
Referenced by Authenticate(), and getCredentials().
int XrdSecTLayer::urFD [private] |