windows-nt/Source/XPSP1/NT/net/ias/protocol/radius/recvfrompipe.h

131 lines
3.4 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//#--------------------------------------------------------------
//
// File: recvfrompipe
//
// Synopsis: This file holds the declarations of the
// CRecvFromPipe class
//
//
// History: 10/22/97 MKarki Created
//
// Copyright (C) 1997-98 Microsoft Corporation
// All rights reserved.
//
//----------------------------------------------------------------
#ifndef _RECVFROMPIPE_H_
#define _RECVFROMPIPE_H_
#include "vsafilter.h"
#include "packetradius.h"
#include "clients.h"
#include "tunnelpassword.h"
#include "reportevent.h"
class CPreProcessor;
class CRecvFromPipe
{
public:
//
// processess the outbound RADIUS packet received from the
// pipeline
//
HRESULT Process (
/*[in]*/ IRequest *pIRequest
);
//
// constructor
//
CRecvFromPipe(
/*[in]*/ CPreProcessor *pCPreProcessor,
/*[in]*/ CHashMD5 *pCHashMD5,
/*[in]*/ CHashHmacMD5 *pCHashHmacMD5,
/*[in]*/ CClients *pCClients,
/*[in]*/ VSAFilter *pCVSAFilter,
/*[in]*/ CTunnelPassword *pCTunnelPassword,
/*[in]*/ CReportEvent *pCReportEvent
);
//
// destructor
//
virtual ~CRecvFromPipe();
private:
HRESULT GeneratePacketRadius (
/*[out]*/ CPacketRadius **ppCPacketRadius,
/*[in]*/ IAttributesRaw *pIAttributesRaw
);
HRESULT GetOutPacketInfo (
/*[out]*/ PDWORD pdwIPAddress,
/*[out]*/ PWORD pwPort,
/*[out]*/ IIasClient **ppClient,
/*[out]*/ PBYTE pPacketHeader,
/*[in]*/ IAttributesRaw *pIAttributesRaw
);
HRESULT InjectSignatureIfNeeded (
/*[in]*/ PACKETTYPE ePacketType,
/*[in]*/ IAttributesRaw *pIAttributesRaw,
/*[in]*/ CPacketRadius *pCPacketRadius
);
//
// converts the IAS response code to RADIUS packet type
//
HRESULT ConvertResponseToRadiusCode (
LONG iasResponse,
PPACKETTYPE pPacketType,
CPacketRadius *pCPacketRadius
);
//
// split the specific attribute into multiple ones that
// can fit in a packet
//
HRESULT SplitAndAdd (
/*[in]*/ IAttributesRaw *pIAttributesRaw,
/*[in]*/ PIASATTRIBUTE pIasAttribute,
/*[in]*/ IASTYPE iasType,
/*[in]*/ DWORD dwAttributeLength,
/*[in]*/ DWORD dwMaxLength
);
//
// carries out splitting of attributes if required
//
HRESULT SplitAttributes (
/*[in]*/ IAttributesRaw *pIAttributesRaw
);
//
// converts IAS reason code to RADIUS error codes
//
HRESULT CRecvFromPipe::ConvertReasonToRadiusError (
/*[in]*/ LONG iasReason,
/*[out]*/ PRADIUSLOGTYPE pRadError
);
CPreProcessor *m_pCPreProcessor;
CHashMD5 *m_pCHashMD5;
CHashHmacMD5 *m_pCHashHmacMD5;
CClients *m_pCClients;
VSAFilter *m_pCVSAFilter;
CTunnelPassword *m_pCTunnelPassword;
CReportEvent *m_pCReportEvent;
};
#endif // ifndef _RECVFROMPIPE_H_