You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.3 KiB
56 lines
1.3 KiB
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) Microsoft Corporation
|
|
//
|
|
// SYNOPSIS
|
|
//
|
|
// Defines the class BaseCampHostBase.
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "Precompiled.h"
|
|
#include "ias.h"
|
|
#include "basecamp.h"
|
|
#include "ControlBlock.h"
|
|
|
|
STDMETHODIMP BaseCampHostBase::Initialize()
|
|
{
|
|
DWORD error = extensions.Load(point);
|
|
return HRESULT_FROM_WIN32(error);
|
|
}
|
|
|
|
STDMETHODIMP BaseCampHostBase::Shutdown()
|
|
{
|
|
extensions.Clear();
|
|
return S_OK;
|
|
}
|
|
|
|
IASREQUESTSTATUS BaseCampHostBase::onSyncRequest(IRequest* pRequest) throw ()
|
|
{
|
|
// Early return if there aren't any extensions,
|
|
if (extensions.IsEmpty())
|
|
{
|
|
return IAS_REQUEST_STATUS_CONTINUE;
|
|
}
|
|
|
|
try
|
|
{
|
|
IASRequest request(pRequest);
|
|
|
|
// Convert VSAs to RADIUS format.
|
|
filter.radiusFromIAS(request);
|
|
|
|
// Invoke the extensions.
|
|
extensions.Process(ControlBlock(point, request).Get());
|
|
|
|
// Convert VSAs back to internal format.
|
|
filter.radiusToIAS(request);
|
|
}
|
|
catch (const _com_error& ce)
|
|
{
|
|
IASTraceExcept();
|
|
pRequest->SetResponse(IAS_RESPONSE_DISCARD_PACKET, IAS_INTERNAL_ERROR);
|
|
}
|
|
|
|
return IAS_REQUEST_STATUS_CONTINUE;
|
|
}
|