/////////////////////////////////////////////////////////////////////////////
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// sdoias.idl : IDL source for IAS Server Data Object
//////////////////////////////////////////////////////////////////////////////
#ifndef __SDOIAS_IDL__
#define __SDOIAS_IDL__

import "oaidl.idl";
import "ocidl.idl";

//////////////////////////////////////////////////////////////////////////////
// Type Library
//////////////////////////////////////////////////////////////////////////////
[
	uuid(81DDF732-4AA8-4a35-BDFF-8B42EFE7C624),
	version(1.0),
	helpstring("IAS SDO 1.0 Type Library")
]
library SDOIASLib
{
	importlib("stdole2.tlb");

	//////////////////////////////////////////////////////////////////////////
	//
	// Name:	ATTRIBUTEID
	//
	// What:	IAS Dictionary attribute IDs
	//
	// Purpose:	Defines the set of IDs for IAS dictionary attributes
	//
	//////////////////////////////////////////////////////////////////////////
	typedef [public] enum _ATTRIBUTEID
	{
		ATTRIBUTE_UNDEFINED=0,
		ATTRIBUTE_MIN_VALUE=1,
		RADIUS_ATTRIBUTE_USER_NAME = ATTRIBUTE_MIN_VALUE,
		RADIUS_ATTRIBUTE_USER_PASSWORD,
		RADIUS_ATTRIBUTE_CHAP_PASSWORD,
		RADIUS_ATTRIBUTE_NAS_IP_ADDRESS,
		RADIUS_ATTRIBUTE_NAS_PORT,
		RADIUS_ATTRIBUTE_SERVICE_TYPE,
		RADIUS_ATTRIBUTE_FRAMED_PROTOCOL,
		RADIUS_ATTRIBUTE_FRAMED_IP_ADDRESS,
		RADIUS_ATTRIBUTE_FRAMED_IP_NETMASK,
		RADIUS_ATTRIBUTE_FRAMED_ROUTING,
		RADIUS_ATTRIBUTE_FILTER_ID,
		RADIUS_ATTRIBUTE_FRAMED_MTU,
		RADIUS_ATTRIBUTE_FRAMED_COMPRESSION,
		RADIUS_ATTRIBUTE_LOGIN_IP_HOST,
		RADIUS_ATTRIBUTE_LOGIN_SERVICE,
		RADIUS_ATTRIBUTE_LOGIN_TCP_PORT,
		RADIUS_ATTRIBUTE_UNASSIGNED1,
		RADIUS_ATTRIBUTE_REPLY_MESSAGE,
		RADIUS_ATTRIBUTE_CALLBACK_NUMBER,
		RADIUS_ATTRIBUTE_CALLBACK_ID,
		RADIUS_ATTRIBUTE_UNASSIGNED2,
		RADIUS_ATTRIBUTE_FRAMED_ROUTE,
		RADIUS_ATTRIBUTE_FRAMED_IPX_NETWORK,
		RADIUS_ATTRIBUTE_STATE,
		RADIUS_ATTRIBUTE_CLASS,
		RADIUS_ATTRIBUTE_VENDOR_SPECIFIC,
		RADIUS_ATTRIBUTE_SESSION_TIMEOUT,
		RADIUS_ATTRIBUTE_IDLE_TIMEOUT,
		RADIUS_ATTRIBUTE_TERMINATION_ACTION,
		RADIUS_ATTRIBUTE_CALLED_STATION_ID,
		RADIUS_ATTRIBUTE_CALLING_STATION_ID,
		RADIUS_ATTRIBUTE_NAS_IDENTIFIER,
		RADIUS_ATTRIBUTE_PROXY_STATE,
		RADIUS_ATTRIBUTE_LOGIN_LAT_SERVICE,
		RADIUS_ATTRIBUTE_LOGIN_LAT_NODE,
		RADIUS_ATTRIBUTE_LOGIN_LAT_GROUP,
		RADIUS_ATTRIBUTE_FRAMED_APPLETALK_LINK,
		RADIUS_ATTRIBUTE_FRAMED_APPLETALK_NET,
		RADIUS_ATTRIBUTE_FRAMED_APPLETALK_ZONE,
		RADIUS_ATTRIBUTE_ACCT_STATUS_TYPE,
		RADIUS_ATTRIBUTE_ACCT_DELAY_TIME,
		RADIUS_ATTRIBUTE_ACCT_INPUT_OCTETS,
		RADIUS_ATTRIBUTE_ACCT_OUTPUT_OCTETS,
		RADIUS_ATTRIBUTE_ACCT_SESSION_ID,
		RADIUS_ATTRIBUTE_ACCT_AUTHENTIC,
		RADIUS_ATTRIBUTE_ACCT_SESSION_TIME,
		RADIUS_ATTRIBUTE_ACCT_INPUT_PACKETS,
		RADIUS_ATTRIBUTE_ACCT_OUTPUT_PACKETS,
		RADIUS_ATTRIBUTE_ACCT_TERMINATE_CAUSE,
		RADIUS_ATTRIBUTE_ACCT_MULTI_SSN_ID,
		RADIUS_ATTRIBUTE_ACCT_LINK_COUNT,
		RADIUS_ATTRIBUTE_CHAP_CHALLENGE = 60,
		RADIUS_ATTRIBUTE_NAS_PORT_TYPE,
		RADIUS_ATTRIBUTE_PORT_LIMIT,
		RADIUS_ATTRIBUTE_LOGIN_LAT_PORT,
		RADIUS_ATTRIBUTE_TUNNEL_TYPE,
		RADIUS_ATTRIBUTE_TUNNEL_MEDIUM_TYPE,
		RADIUS_ATTRIBUTE_TUNNEL_CLIENT_ENDPT,
		RADIUS_ATTRIBUTE_TUNNEL_SERVER_ENDPT,
		RADIUS_ATTRIBUTE_ACCT_TUNNEL_CONN,
		RADIUS_ATTRIBUTE_TUNNEL_PASSWORD,
		RADIUS_ATTRIBUTE_ARAP_PASSWORD,
		RADIUS_ATTRIBUTE_ARAP_FEATURES,
		RADIUS_ATTRIBUTE_ARAP_ZONE_ACCESS,
		RADIUS_ATTRIBUTE_ARAP_SECURITY,
		RADIUS_ATTRIBUTE_ARAP_SECURITY_DATA,
		RADIUS_ATTRIBUTE_PASSWORD_RETRY,
		RADIUS_ATTRIBUTE_PROMPT = 76,
		RADIUS_ATTRIBUTE_CONNECT_INFO,
		RADIUS_ATTRIBUTE_CONFIGURATION_TOKEN,
		RADIUS_ATTRIBUTE_EAP_MESSAGE,
		RADIUS_ATTRIBUTE_SIGNATURE,
		RADIUS_ATTRIBUTE_TUNNEL_PVT_GROUP_ID,
		RADIUS_ATTRIBUTE_TUNNEL_ASSIGNMENT_ID,
		RADIUS_ATTRIBUTE_TUNNEL_PREFERENCE,
		RADIUS_ATTRIBUTE_ARAP_CHALLENGE_RESPONSE,
		// RADIUS_ATTRIBUTE_
		// New RADIUS Attribute IDs Here...

		IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_IP_ADDRESS = 0x1000,
		IAS_ATTRIBUTE_SAVED_RADIUS_CALLBACK_NUMBER,
		IAS_ATTRIBUTE_NP_CALLING_STATION_ID,
		IAS_ATTRIBUTE_SAVED_NP_CALLING_STATION_ID,
		IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_ROUTE,
		IAS_ATTRIBUTE_IGNORE_USER_DIALIN_PROPERTIES,
		IAS_ATTRIBUTE_NP_TIME_OF_DAY,
		IAS_ATTRIBUTE_NP_CALLED_STATION_ID,
		IAS_ATTRIBUTE_NP_ALLOWED_PORT_TYPES,
		IAS_ATTRIBUTE_NP_AUTHENTICATION_TYPE,
		IAS_ATTRIBUTE_NP_ALLOWED_EAP_TYPE,
		IAS_ATTRIBUTE_SHARED_SECRET,
		IAS_ATTRIBUTE_CLIENT_IP_ADDRESS,
		IAS_ATTRIBUTE_CLIENT_PACKET_HEADER,
		IAS_ATTRIBUTE_TOKEN_GROUPS,
		IAS_ATTRIBUTE_ALLOW_DIALIN,
		IAS_ATTRIBUTE_NP_CONSTRAINT,
		IAS_ATTRIBUTE_MANIPULATION_TARGET,
		IAS_ATTRIBUTE_MANIPULATION_RULE,
		IAS_ATTRIBUTE_ORIGINAL_USER_NAME,
		IAS_ATTRIBUTE_CLIENT_VENDOR_TYPE,
		IAS_ATTRIBUTE_CLIENT_UDP_PORT,
		MS_ATTRIBUTE_CHAP_CHALLENGE,
		MS_ATTRIBUTE_CHAP_RESPONSE,
		MS_ATTRIBUTE_CHAP_DOMAIN,
		MS_ATTRIBUTE_CHAP_ERROR,
		MS_ATTRIBUTE_CHAP_CPW1,
		MS_ATTRIBUTE_CHAP_CPW2,
		MS_ATTRIBUTE_CHAP_LM_ENC_PW,
		MS_ATTRIBUTE_CHAP_NT_ENC_PW,
		MS_ATTRIBUTE_CHAP_MPPE_KEYS,
		IAS_ATTRIBUTE_AUTHENTICATION_TYPE,
		IAS_ATTRIBUTE_CLIENT_NAME,
		IAS_ATTRIBUTE_NT4_ACCOUNT_NAME,
		IAS_ATTRIBUTE_FULLY_QUALIFIED_USER_NAME,
		IAS_ATTRIBUTE_NTGROUPS,
		IAS_ATTRIBUTE_EAP_FRIENDLY_NAME,
		IAS_ATTRIBUTE_AUTH_PROVIDER_TYPE,
		MS_ATTRIBUTE_ACCT_AUTH_TYPE,
		MS_ATTRIBUTE_ACCT_EAP_TYPE,
		IAS_ATTRIBUTE_PACKET_TYPE,
		IAS_ATTRIBUTE_AUTH_PROVIDER_NAME,
		IAS_ATTRIBUTE_ACCT_PROVIDER_TYPE,
		IAS_ATTRIBUTE_ACCT_PROVIDER_NAME,
		MS_ATTRIBUTE_MPPE_SEND_KEY,
		MS_ATTRIBUTE_MPPE_RECV_KEY,
		IAS_ATTRIBUTE_REASON_CODE,
		MS_ATTRIBUTE_FILTER,
		MS_ATTRIBUTE_CHAP2_RESPONSE,
		MS_ATTRIBUTE_CHAP2_SUCCESS,
		MS_ATTRIBUTE_CHAP2_CPW,
		MS_ATTRIBUTE_RAS_VENDOR,
		MS_ATTRIBUTE_RAS_VERSION,
		IAS_ATTRIBUTE_NP_NAME,
		MS_ATTRIBUTE_PRIMARY_DNS_SERVER,
		MS_ATTRIBUTE_SECONDARY_DNS_SERVER,
		MS_ATTRIBUTE_PRIMARY_NBNS_SERVER,
		MS_ATTRIBUTE_SECONDARY_NBNS_SERVER,
		IAS_ATTRIBUTE_PROXY_POLICY_NAME,
		IAS_ATTRIBUTE_PROVIDER_TYPE,
		IAS_ATTRIBUTE_PROVIDER_NAME,
		IAS_ATTRIBUTE_REMOTE_SERVER_ADDRESS,
		IAS_ATTRIBUTE_GENERATE_CLASS_ATTRIBUTE,
		MS_ATTRIBUTE_RAS_CLIENT_NAME,
		MS_ATTRIBUTE_RAS_CLIENT_VERSION,
		IAS_ATTRIBUTE_ALLOWED_CERTIFICATE_EKU,
		IAS_ATTRIBUTE_CERTIFICATE_EKU=8097,
		// IAS_ATTRIBUTE_
		// New IAS Attributes Here

		RAS_ATTRIBUTE_ENCRYPTION_TYPE = (0xFFFFFFFF-89),
		RAS_ATTRIBUTE_ENCRYPTION_POLICY,
		RAS_ATTRIBUTE_BAP_REQUIRED,
		RAS_ATTRIBUTE_BAP_LINE_DOWN_TIME,
		RAS_ATTRIBUTE_BAP_LINE_DOWN_LIMIT
		// RAS_ATTRIBUTE_
		// New RAS Attributes Here

	}	ATTRIBUTEID;


	//////////////////////////////////////////////////////////////////////////
	//
	// Name:	NEW_LOG_FILE_FREQUENCY
	//
	// What:	IAS Accounting Request Handler Log Frequency Values
	//
	// Purpose:	Defines the log frequency settings for the IAS accounting
	//			request handler.
	//
	//////////////////////////////////////////////////////////////////////////
	typedef [public] enum _NEW_LOG_FILE_FREQUENCY
	{
		IAS_LOGGING_UNLIMITED_SIZE=0,
		IAS_LOGGING_DAILY,
		IAS_LOGGING_WEEKLY,
		IAS_LOGGING_MONTHLY,
		IAS_LOGGING_WHEN_FILE_SIZE_REACHES

	}	NEW_LOG_FILE_FREQUENCY;


	//////////////////////////////////////////////////////////////////////////
	//
	// Name:	AUTHENTICATION_TYPE
	//
	// What:	IAS Authentication Type Values
	//
	//////////////////////////////////////////////////////////////////////////
	typedef [public] enum _AUTHENTICATION_TYPE
	{
		IAS_AUTH_INVALID,
		IAS_AUTH_PAP,
		IAS_AUTH_MD5CHAP,
		IAS_AUTH_MSCHAP,
		IAS_AUTH_MSCHAP2,
		IAS_AUTH_EAP,
		IAS_AUTH_ARAP,
		IAS_AUTH_NONE,
		IAS_AUTH_CUSTOM,
		IAS_AUTH_MSCHAP_CPW,
		IAS_AUTH_MSCHAP2_CPW

	}	AUTHENTICATION_TYPE;


	//////////////////////////////////////////////////////////////////////////
	//
	// Name:	ATTRIBUTESYNTAX
	//
	// What:	Attribute SDO syntax types
	//
	// Purpose:	Defines the set Attribute SDO syntaxes (attribute data types)
	//
	//////////////////////////////////////////////////////////////////////////
	typedef [public] enum _ATTRIBUTESYNTAX
	{
		IAS_SYNTAX_BOOLEAN = 1,
		IAS_SYNTAX_INTEGER,
		IAS_SYNTAX_ENUMERATOR,
		IAS_SYNTAX_INETADDR,
		IAS_SYNTAX_STRING,
		IAS_SYNTAX_OCTETSTRING,
		IAS_SYNTAX_UTCTIME,
		IAS_SYNTAX_PROVIDERSPECIFIC,
		IAS_SYNTAX_UNSIGNEDINTEGER

	} ATTRIBUTESYNTAX;

	//////////////////////////////////////////////////////////////////////////
	//
	// Name:	Dictionary Attriubutes Restrictions
	//
	// What:	IAS Dictionary Attribute IDs
	//
	// Purpose:	Defines the restrictions for the dictionary attributes
	//
	//////////////////////////////////////////////////////////////////////////
	typedef [public] enum _ATTRIBUTERESTRICTIONS
	{
		MULTIVALUED             = 0x01,
		ALLOWEDINPROFILE        = 0x02,
		ALLOWEDINCONDITION      = 0x04,
		ALLOWEDINPROXYPROFILE   = 0x08,
		ALLOWEDINPROXYCONDITION = 0x10

	} ATTRIBUTERESTRICTIONS;


	//////////////////////////////////////////////////////////////////////////
	//
	// Name:	Dictionary Attributes Info
	//
	// What:	IAS Dictionary Attribute Info IDS
	//
	// Purpose:	Defines the attribute info for the dictionary attributes
	//
	//////////////////////////////////////////////////////////////////////////
	typedef [public] enum _ATTRIBUTEINFO
	{
		NAME = 1,
		SYNTAX,
		RESTRICTIONS,
		DESCRIPTION,
		VENDORID,
		LDAPNAME,
		VENDORTYPE,

	} ATTRIBUTEINFO;


	//////////////////////////////////////////////////////////////////////////
	//
	// Name:	SDO Property Aliases
	//
	// What:	SDO Property Enumerations
	//
	// Purpose:	Property IDs used in conjunction with the ISdo and
	//		    ISdoDictionary interfaces.
	//
	//////////////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////////////
	//						 Common Properties
	//////////////////////////////////////////////////////////////////////////

	typedef [public] enum _IASCOMMONPROPERTIES
	{
		PROPERTY_SDO_RESERVED = 0,			//
		PROPERTY_SDO_CLASS,					// SDO class name
		PROPERTY_SDO_NAME,					// SDO name
		PROPERTY_SDO_DESCRIPTION,			// SDO description
		PROPERTY_SDO_ID,					// SDO instance id
		PROPERTY_SDO_DATASTORE_NAME,		// SDO name in data store
		// New Properties Here...

		PROPERTY_SDO_START= 0x00000400		// 1024 stock object properties

	}	IASCOMMONPROPERTIES;


	/////////////////////////////////////////////////////////////////////////
	//						User  Properties
	/////////////////////////////////////////////////////////////////////////

	typedef [public] enum _USERPROPERTIES
	{
		PROPERTY_USER_CALLING_STATION_ID = PROPERTY_SDO_START,
		PROPERTY_USER_SAVED_CALLING_STATION_ID,
		PROPERTY_USER_RADIUS_CALLBACK_NUMBER,
		PROPERTY_USER_RADIUS_FRAMED_ROUTE,
		PROPERTY_USER_RADIUS_FRAMED_IP_ADDRESS,
		PROPERTY_USER_SAVED_RADIUS_CALLBACK_NUMBER,
		PROPERTY_USER_SAVED_RADIUS_FRAMED_ROUTE,
		PROPERTY_USER_SAVED_RADIUS_FRAMED_IP_ADDRESS,
		PROPERTY_USER_ALLOW_DIALIN,
		PROPERTY_USER_SERVICE_TYPE
		// New Properties Here...

	}	USERPROPERTIES;


	/////////////////////////////////////////////////////////////////////////
	//						Dictionary  Properties
	/////////////////////////////////////////////////////////////////////////

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _DICTIONARYPROPERTIES
	{
		PROPERTY_DICTIONARY_ATTRIBUTES_COLLECTION = PROPERTY_SDO_START,
		PROPERTY_DICTIONARY_LOCATION

	}	DICTIONARYPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _ATTRIBUTEPROPERTIES
	{
		PROPERTY_ATTRIBUTE_ID = PROPERTY_SDO_START,
		PROPERTY_ATTRIBUTE_VENDOR_ID,
		PROPERTY_ATTRIBUTE_VENDOR_TYPE_ID,
		PROPERTY_ATTRIBUTE_IS_ENUMERABLE,
		PROPERTY_ATTRIBUTE_ENUM_NAMES,
		PROPERTY_ATTRIBUTE_ENUM_VALUES,
		PROPERTY_ATTRIBUTE_SYNTAX,
		PROPERTY_ATTRIBUTE_ALLOW_MULTIPLE,
		PROPERTY_ATTRIBUTE_ALLOW_LOG_ORDINAL,
		PROPERTY_ATTRIBUTE_ALLOW_IN_PROFILE,
		PROPERTY_ATTRIBUTE_ALLOW_IN_CONDITION,
		PROPERTY_ATTRIBUTE_DISPLAY_NAME,
		PROPERTY_ATTRIBUTE_VALUE,
		PROPERTY_ATTRIBUTE_ALLOW_IN_PROXY_PROFILE,
		PROPERTY_ATTRIBUTE_ALLOW_IN_PROXY_CONDITION
		// New Properties Here...

	}	ATTRIBUTEPROPERTIES;


	/////////////////////////////////////////////////////////////////////////
	//						IAS Service Properties
	/////////////////////////////////////////////////////////////////////////

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _IASPROPERTIES
	{
		PROPERTY_IAS_RADIUSSERVERGROUPS_COLLECTION = PROPERTY_SDO_START,
		PROPERTY_IAS_POLICIES_COLLECTION,
		PROPERTY_IAS_PROFILES_COLLECTION,
		PROPERTY_IAS_PROTOCOLS_COLLECTION,
		PROPERTY_IAS_AUDITORS_COLLECTION,
		PROPERTY_IAS_REQUESTHANDLERS_COLLECTION,
		PROPERTY_IAS_PROXYPOLICIES_COLLECTION,
		PROPERTY_IAS_PROXYPROFILES_COLLECTION
		// New Properties Here...

	}	IASPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _CLIENTPROPERTIES
	{
		PROPERTY_CLIENT_REQUIRE_SIGNATURE = PROPERTY_SDO_START,
		PROPERTY_CLIENT_UNUSED,
		PROPERTY_CLIENT_SHARED_SECRET,
		PROPERTY_CLIENT_NAS_MANUFACTURER,
		PROPERTY_CLIENT_ADDRESS,
		// New Properties Here...

	}   CLIENTPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _VENDORPROPERTIES
	{
		PROPERTY_NAS_VENDOR_ID = PROPERTY_SDO_START
		// New Properties Here...

	}   VENDORPROPERTIES;


	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _PROFILEPROPERTIES
	{
		PROPERTY_PROFILE_ATTRIBUTES_COLLECTION = PROPERTY_SDO_START
		// New Properties Here...

	}   PROFILEPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _POLICYPROPERTIES
	{
		PROPERTY_POLICY_CONSTRAINT = PROPERTY_SDO_START,
		PROPERTY_POLICY_MERIT,
		PROPERTY_POLICY_UNUSED0,
		PROPERTY_POLICY_UNUSED1,
		PROPERTY_POLICY_PROFILE_NAME,
		PROPERTY_POLICY_ACTION,
		PROPERTY_POLICY_CONDITIONS_COLLECTION,
		// New Properties Here...

	}   POLICYPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _CONDITIONPROPERTIES
	{
		PROPERTY_CONDITION_TEXT = PROPERTY_SDO_START,
		// New Properties Here...

	}	CONDITIONPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _RADIUSSERVERGROUPPROPERTIES
	{
		PROPERTY_RADIUSSERVERGROUP_SERVERS_COLLECTION = PROPERTY_SDO_START,
		// New Properties Here...

	}	RADIUSSERVERGROUPPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _RADIUSSERVERPROPERTIES
	{
		PROPERTY_RADIUSSERVER_AUTH_PORT   = PROPERTY_SDO_START,
		PROPERTY_RADIUSSERVER_AUTH_SECRET,
		PROPERTY_RADIUSSERVER_ACCT_PORT,
		PROPERTY_RADIUSSERVER_ACCT_SECRET,
		PROPERTY_RADIUSSERVER_ADDRESS,
		PROPERTY_RADIUSSERVER_FORWARD_ACCT_ONOFF,
		PROPERTY_RADIUSSERVER_PRIORITY,
		PROPERTY_RADIUSSERVER_WEIGHT,
		PROPERTY_RADIUSSERVER_TIMEOUT,
		PROPERTY_RADIUSSERVER_MAX_LOST,
		PROPERTY_RADIUSSERVER_BLACKOUT
		// New Properties Here...

	}	RADIUSSERVERPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	// Component Properties (components available from IAS service object)
	/////////////////////////////////////////////////////////////////////////

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _IASCOMPONENTPROPERTIES
	{
		PROPERTY_COMPONENT_ID = PROPERTY_SDO_START,
		PROPERTY_COMPONENT_PROG_ID,
		// New Properties Here...

		PROPERTY_COMPONENT_START

	}	IASCOMPONENTPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _PROTOCOLPROPERTIES
	{
		PROPERTY_PROTOCOL_REQUEST_HANDLER = PROPERTY_COMPONENT_START,
		// New Properties Here...

		PROPERTY_PROTOCOL_START

	}	PROTOCOLPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _RADIUSPROPERTIES
	{
		PROPERTY_RADIUS_ACCOUNTING_PORT = PROPERTY_PROTOCOL_START,
		PROPERTY_RADIUS_AUTHENTICATION_PORT,
		PROPERTY_RADIUS_CLIENTS_COLLECTION,
		PROPERTY_RADIUS_VENDORS_COLLECTION
		// New Properties Here...

	}	RADIUSPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _NTEVENTLOGPROPERTIES
	{
		PROPERTY_EVENTLOG_LOG_APPLICATION_EVENTS = PROPERTY_COMPONENT_START,
		PROPERTY_EVENTLOG_LOG_MALFORMED,
		PROPERTY_EVENTLOG_LOG_DEBUG
		// New Properties Here...

	}	NTEVENTLOGPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _NAMESPROPERTIES
	{
		PROPERTY_NAMES_REALMS = PROPERTY_COMPONENT_START
		// New Properties Here...

	}	NAMESPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _NTSAMPROPERTIES
	{
		PROPERTY_NTSAM_ALLOW_LM_AUTHENTICATION = PROPERTY_COMPONENT_START
		// New Properties Here...

	}	NTSAMPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _ACCOUNTINGPROPERTIES
	{
		PROPERTY_ACCOUNTING_LOG_ACCOUNTING = PROPERTY_COMPONENT_START,
		PROPERTY_ACCOUNTING_LOG_ACCOUNTING_INTERIM,
		PROPERTY_ACCOUNTING_LOG_AUTHENTICATION,
		PROPERTY_ACCOUNTING_LOG_OPEN_NEW_FREQUENCY,
		PROPERTY_ACCOUNTING_LOG_OPEN_NEW_SIZE,
		PROPERTY_ACCOUNTING_LOG_FILE_DIRECTORY,
		PROPERTY_ACCOUNTING_LOG_IAS1_FORMAT
		// New Properties Here...

	}	ACCOUNTINGPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _EAPWRAPPROPERTIES
	{
		PROPERTY_EAP_SESSION_TIMEOUT = PROPERTY_COMPONENT_START,
		PROPERTY_EAP_MAX_SESSIONS
		// New Properties Here...

	}	EAPWRAPPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _NAPPROPERTIES
	{
		PROPERTY_NAP_POLICIES_COLLECTION = PROPERTY_COMPONENT_START
		// New Properties Here...

	}	NAPPROPERTIES;

	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _RADIUSPROXYPROPERTIES
	{
		PROPERTY_RADIUSPROXY_SERVERGROUPS = PROPERTY_COMPONENT_START
		// New Properties Here...

	}	RADIUSPROXYPROPERTIES;

	//////////////////////////////////////////////////////////////////////////
	//
	// Name:	Service Type
	//
	// What:	Supported Service Types
	//
	// Purpose:	Defines the set of NT networking services supported by
	//          the IAS subsystem. Used by the ISdoService interface.
	//
	//////////////////////////////////////////////////////////////////////////
	typedef [public] enum _SERVICE_TYPE
	{
		SERVICE_TYPE_IAS = 0,
		SERVICE_TYPE_RAS,
		//
		// New service type here...

		SERVICE_TYPE_MAX

	}	SERVICE_TYPE;


	//////////////////////////////////////////////////////////////////////////
	//
	// Name:	Machine Information
	//
	// What:	Identifiers for Machine Information
	//
	// Purpose:	Defines the set of machine information available via the
	//          ISdoMachine interface.
	//
	//////////////////////////////////////////////////////////////////////////

	/////////////////////////////////////////////////////////////////////////
	// Operating System Types
	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _IASOSTYPE
	{
		SYSTEM_TYPE_NT4_WORKSTATION,
		SYSTEM_TYPE_NT5_WORKSTATION,
		SYSTEM_TYPE_NT4_SERVER,
		SYSTEM_TYPE_NT5_SERVER

	}	IASOSTYPE, *PIASOSTYPE;


	/////////////////////////////////////////////////////////////////////////
	// Domain Types
	/////////////////////////////////////////////////////////////////////////
	typedef [public] enum _DOMAINTYPE
	{
		DOMAIN_TYPE_NONE,	// Standalone
		DOMAIN_TYPE_NT4,
		DOMAIN_TYPE_NT5,
		DOMAIN_TYPE_MIXED

	}	IASDOMAINTYPE, *PIASDOMAINTYPE;


	//////////////////////////////////////////////////////////////////////////
	//
	// Name:	IASDATASTORE
	//
	// What:	Set of data stores available to SDO client applications
	//
	// Purpose:	Defines the set of set of data store via the
	//          ISdoMachine interface.
	//
	//////////////////////////////////////////////////////////////////////////
	typedef [public] enum _IASDATASTORE
	{
		DATA_STORE_LOCAL,
		DATA_STORE_DIRECTORY,

	}	IASDATASTORE, *PIASDATASTORE;


	//////////////////////////////////////////////////////////////////////////
	// ISdoMachine - Used to retrieve information from a Machine SDO
	//////////////////////////////////////////////////////////////////////////
	[
		object,
		uuid(479F6E75-49A2-11d2-8ECA-00C04FC2F519),
		dual,
		pointer_default(unique)
	]
	interface ISdoMachine: IDispatch
	{
		[id(1)]
		HRESULT Attach (
					[in] BSTR bstrComputerName
					   );

		[id(2)]
		HRESULT GetDictionarySDO (
					 [out, retval] IUnknown** ppDictionarySDO
								 );

		[id(3)]
		HRESULT GetServiceSDO (
						   [in] IASDATASTORE eDataStore,
						   [in] BSTR         bstrServiceName,
				  [out, retval] IUnknown**   ppServiceSDO
							  );

		[id(4)]
		HRESULT GetUserSDO (
						[in] IASDATASTORE eDataStore,
						[in] BSTR         bstrUserName,
			   [out, retval] IUnknown**   ppUserSDO
						   );

		[id(5)]
		HRESULT GetOSType (
			  [out, retval] IASOSTYPE* eOSType
						  );

		[id(6)]
		HRESULT GetDomainType(
				 [out, retval] IASDOMAINTYPE* eDomainType
							 );

		[id(7)]
		HRESULT IsDirectoryAvailable(
						[out, retval] VARIANT_BOOL* boolDirectoryAvailable
									);

		[id(8)]
		HRESULT GetAttachedComputer(
					   [out, retval] BSTR* bstrComputerName
								   );

		[id(9), hidden]
		HRESULT GetSDOSchema(
				[out, retval] IUnknown** ppSDOSchema
							);
	};


	//////////////////////////////////////////////////////////////////////////
	// ISdoServiceControl - Used to control a Service SDO
	//////////////////////////////////////////////////////////////////////////
	[
		object,
		uuid(479F6E74-49A2-11d2-8ECA-00C04FC2F519),
		dual,
		pointer_default(unique)
	]
	interface ISdoServiceControl: IDispatch
	{
		[id(1)]
		HRESULT StartService (void);

		[id(2)]
		HRESULT StopService (void);

		[id(3)]
		HRESULT GetServiceStatus ([out, retval] LONG* status);

		[id(4)]
		HRESULT ResetService (void);
	};


	//////////////////////////////////////////////////////////////////////////
	// ISdo - Used to store, retrieve and update SDO information
	//////////////////////////////////////////////////////////////////////////
	[
		object,
		uuid(56BC53DE-96DB-11D1-BF3F-000000000000),
		dual,
		pointer_default(unique)
	]
	interface ISdo : IDispatch
	{

		[id(1), hidden]
		HRESULT GetPropertyInfo ([in] LONG Id, [out, retval] IUnknown** ppPropertyInfo);

		[id(2)]
		HRESULT GetProperty ([in] LONG Id, [out, retval] VARIANT* pValue);

		[id(3)]
		HRESULT PutProperty ([in] LONG Id, [in] VARIANT* pValue);

		[id(4)]
		HRESULT ResetProperty ([in] LONG Id);

		[id(5)]
		HRESULT Apply (void);

		[id(6)]
		HRESULT Restore (void);

		[propget, id(DISPID_NEWENUM)]
		HRESULT _NewEnum ([out, retval] IUnknown** ppEnumVARIANT);	// Property enumerator
	};


	//////////////////////////////////////////////////////////////////////////
	// ISdoCollection - Used to manipulate the contents of a collection
	//////////////////////////////////////////////////////////////////////////
	[
		object,
		uuid(56BC53E2-96DB-11D1-BF3F-000000000000),
		dual,
		pointer_default(unique)
	]
	interface ISdoCollection : IDispatch
	{
		[propget, id(1)]
		HRESULT Count ([out, retval] long *pCount);

		[id(2)]
		HRESULT Add ([in] BSTR bstrName, [in, out] IDispatch** ppItem);

		[id(3)]
		HRESULT Remove ([in] IDispatch* pItem);

		[id(4)]
		HRESULT RemoveAll (void);

		[id(5)]
		HRESULT Reload (void);

		[id(6)]
		HRESULT IsNameUnique([in] BSTR bstrName, [out, retval] VARIANT_BOOL* pBool);

		[id(DISPID_VALUE)]
		HRESULT Item ([in] VARIANT* Name, [out, retval] IDispatch** pItem);

		[propget, id(DISPID_NEWENUM)]
		HRESULT _NewEnum ([out, retval] IUnknown** ppEnumVARIANT);
	};


	//////////////////////////////////////////////////////////////////////////
	// ISdoDictionaryOld - interface Used to access dictionary contents
	//////////////////////////////////////////////////////////////////////////
	[
		object,
		uuid(d432e5f4-53d8-11d2-9a3a-00c04fb998ac),
		dual,
		pointer_default(unique)
	]

	interface ISdoDictionaryOld : IDispatch
	{
		[id(1)]
		HRESULT EnumAttributes(
						[in, out] VARIANT* Id,
	  				 [out,retval] VARIANT* pValues
					);

		[id(2), hidden]
		HRESULT GetAttributeInfo(
								 [in] ATTRIBUTEID   Id,
								 [in] VARIANT*      pInfoIDs,
						 [out,retval] VARIANT*      pInfoValues
                  			 );

		[id(3)]
		HRESULT EnumAttributeValues(
							[in]  ATTRIBUTEID   Id,
			         		[out] VARIANT*      pValueIds,
					 [out,retval] VARIANT*      pValuesDesc
				   );

		[id(4)]
		HRESULT CreateAttribute(
								[in] ATTRIBUTEID Id,
						[out,retval] IDispatch** ppAttributeObject
				   );

		[id(5)]
		HRESULT GetAttributeID(
							[in] BSTR			bstrAttributeName,
					[out,retval] ATTRIBUTEID*   pId
				  );
	};

	///////////////
	// Machine SDO
	///////////////
	[
		uuid(E9218AE7-9E91-11D1-BF60-0080C7846BC0),
	]
	coclass SdoMachine
	{
		[default] interface ISdoMachine;
	};
};
#endif // __SDOIAS_IDL__
