///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1998, Microsoft Corp. All rights reserved.
//
// FILE
//
//    nap.idl
//
// SYNOPSIS
//
//    This IDL file describes the Network Access Policy interfaces.
//
// MODIFICATION HISTORY
//
//    02/04/1998    Original version.
//
///////////////////////////////////////////////////////////////////////////////

import "iascomp.idl";
import "iaspolcy.idl";

[
   helpstring("IAS Network Access Policy 1.0"),
   uuid(6BC098A0-0CE6-11D1-BAAE-00C04FC2E20D),
   version(1.0)
]
library NetworkPolicy
{
   typedef enum _IAS_LOGICAL_TOKEN
   {
      IAS_LOGICAL_TRUE = 0,
      IAS_LOGICAL_FALSE,
      IAS_LOGICAL_NOT,
      IAS_LOGICAL_AND,
      IAS_LOGICAL_OR,
      IAS_LOGICAL_XOR,
      IAS_LOGICAL_LEFT_PAREN,
      IAS_LOGICAL_RIGHT_PAREN,
      IAS_LOGICAL_NUM_TOKENS
   } IAS_LOGICAL_TOKEN;

   [
      object,
      oleautomation,
      uuid(6BC098A1-0CE6-11D1-BAAE-00C04FC2E20D)
   ]
   interface ICondition : IUnknown
   {
      HRESULT IsTrue([in] IRequest* pRequest, [out, retval] VARIANT_BOOL *pVal);
   };

   [
      object,
      oleautomation,
      uuid(6BC098A2-0CE6-11D1-BAAE-00C04FC2E20D)
   ]
   interface IConditionText : IUnknown
   {
      [propget]
      HRESULT ConditionText([out, retval] BSTR *pVal);
      [propput]
      HRESULT ConditionText([in] BSTR newVal);
   };

   [
      object,
      oleautomation,
      uuid(6BC098A3-0CE6-11D1-BAAE-00C04FC2E20D)
   ]
   interface IPolicyAction : IUnknown
   {
	  HRESULT InitializeAction(void);
	  HRESULT ShutdownAction(void);
      HRESULT DoAction([in] IRequest* pRequest);
   };

   [
      uuid(6BC098A4-0CE6-11D1-BAAE-00C04FC2E20D)
   ]
   coclass AttributeMatch
   {
      [default]
      interface ICondition;
      interface IConditionText;
   };

   [
      uuid(6BC098A5-0CE6-11D1-BAAE-00C04FC2E20D)
   ]
   coclass NTGroups
   {
      [default]
      interface ICondition;
      interface IConditionText;
   };

   [
      uuid(6BC098A6-0CE6-11D1-BAAE-00C04FC2E20D)
   ]
   coclass TimeOfDay
   {
      [default]
      interface ICondition;
      interface IConditionText;
   };

   [
      uuid(6BC098A7-0CE6-11D1-BAAE-00C04FC2E20D)
   ]
   coclass PolicyEnforcer
   {
      [default]
      interface IRequestHandler;
      interface IIasComponent;
      interface IQualityControl;
      interface IDispatch;
   };
};
