//#--------------------------------------------------------------
//        
//  File:       radius.idl
//        
//  Synopsis:   this is the IDL File for RADIUS Protocol Component
//              
//  History:     11/11/97  MKarki   Created
//
//    Copyright (C) 1997-98 Microsoft Corporation
//    All rights reserved.
//
//----------------------------------------------------------------

import "oaidl.idl";
import "ocidl.idl";
import "iaspolcy.idl";       
import "iascomp.idl";
import  "sdoias.idl";

//////////
// Events that trigger PerfMon/SNMP counters.
//////////
typedef enum {
    IAS_EVENT_RADIUS_AUTH_INVALID_CLIENT = 0x10001L,
    IAS_EVENT_RADIUS_AUTH_ACCESS_REQUEST,
    IAS_EVENT_RADIUS_AUTH_DUP_ACCESS_REQUEST,
    IAS_EVENT_RADIUS_AUTH_ACCESS_ACCEPT,
    IAS_EVENT_RADIUS_AUTH_ACCESS_REJECT,
    IAS_EVENT_RADIUS_AUTH_ACCESS_CHALLENGE,
    IAS_EVENT_RADIUS_AUTH_MALFORMED_PACKET,
    IAS_EVENT_RADIUS_AUTH_BAD_AUTHENTICATOR,
    IAS_EVENT_RADIUS_AUTH_DROPPED_PACKET,
    IAS_EVENT_RADIUS_AUTH_UNKNOWN_TYPE,
    IAS_EVENT_RADIUS_ACCT_INVALID_CLIENT,
    IAS_EVENT_RADIUS_ACCT_DROPPED_PACKET,
    IAS_EVENT_RADIUS_ACCT_REQUEST,
    IAS_EVENT_RADIUS_ACCT_DUP_REQUEST,
    IAS_EVENT_RADIUS_ACCT_RESPONSE,
    IAS_EVENT_RADIUS_ACCT_BAD_AUTHENTICATOR,
    IAS_EVENT_RADIUS_ACCT_MALFORMED_PACKET,
    IAS_EVENT_RADIUS_ACCT_NO_RECORD,
    IAS_EVENT_RADIUS_ACCT_UNKNOWN_TYPE
} IAS_EVENT_RADIUS;

	[
		object,
        uuid(6BC09893-0CE6-11D1-BAAE-00C04FC2E20D),
        dual,
		helpstring("IComponentNotify Interface"),
		pointer_default(unique)
	]
	interface IComponentNotify : IDispatch
	{
		[helpstring("method OnStart")] 
        HRESULT OnStart();
		[helpstring("method OnStop")] 
        HRESULT OnStop();
	};

	[
		object,
        uuid(6BC096D9-0CE6-11D1-BAAE-00C04FC2E20D),
		helpstring("IIasClient Interface"),
		pointer_default(unique)
	]
	interface IIasClient : IUnknown
    {
		[helpstring("method GetAddress")] 
        HRESULT GetAddress (
                    [out]  DWORD *pdwAddress
                   );

		[helpstring("method NeedSignatureCheck")] 
        HRESULT NeedSignatureCheck (
                    [out]       BOOL   *pbNeedCheck 
                    );

		[helpstring("method GetVendorType")] 
        HRESULT GetVendorType (
                    [out]       LONG   *plVendorType
                    );

		[local, helpstring("method GetClientNameW")] 
        LPCWSTR GetClientNameW();

		[helpstring("method GetSecret")] 
        HRESULT GetSecret (
                    [out]       BYTE   *pbySecret,
                    [in,out]    DWORD  *pdwSecretSize
                    );

		[helpstring("method Init")] 
        HRESULT Init (
                    [in]       ISdo *pISdo
                    );

		[helpstring("method ResolveAddress")] 
        HRESULT ResolveAddress  ();

	};


[
    uuid(6BC09890-0CE6-11D1-BAAE-00C04FC2E20D),
	version(1.0),
	helpstring(" IAS RADIUS Protocol 1.0 Type Library")
]
library IASRadiusLib
{
	importlib("stdole2.tlb");
	
	[
        uuid(6BC09894-0CE6-11D1-BAAE-00C04FC2E20D),
		helpstring("IAS RADIUS Protocol Class")
	]
	coclass RadiusProtocol
	{
        [default]  interface IIasComponent;
        interface IRequestSource;
        interface IPersistPropertyBag2;
	};

	[
        uuid(6BC096DA-0CE6-11D1-BAAE-00C04FC2E20D),
		helpstring("IAS Client Class")
	]
	coclass CClient
    {
        [default]  interface IIasClient;
	};

};