131 lines
3.4 KiB
C++
131 lines
3.4 KiB
C++
//#--------------------------------------------------------------
|
|
//
|
|
// 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_
|